Skip to content

All-in-one codegraph_explore performs worse than seperate tools #1064

Description

@wauxhall

I've tested on GLM-5.1 on real task and observed that explore results were too poor, so that agent fallback to grep.
Investigated and tried to turn off explore but enable 7 other tools.
Here's summary of agent feedback:


Problem

codegraph_explore combines search, blast radius, and source code into a single response. This sounds convenient but fails in practice for three reasons:

  1. Misses critical results due to vague query matching
    When asked "what do I need to change if I add a new parameter to ListObjects", explore matched on the method ListObjects but missed the struct ListObjectsCfg — the most important file (options.go) for this task. The same query against codegraph_search ListObjectsCfg + codegraph_impact ListObjectsCfg immediately found it.
    Natural language queries are ambiguous. A single combined tool picks one interpretation silently and the user never knows what was missed.

  2. Floods context with irrelevant source code
    A single explore call returned ~440 lines of source code. Only ~15 lines were actually needed.
    With separate tools, the agent gets structure only (file + line numbers), then does targeted Read calls for the ~15 lines it actually needs.

  3. Silent truncation hides results
    On larger codebases, explore truncates blast radius results with "+N more". The agent has no way to know what was hidden or to request more. With separate tools, limit parameters are explicit and controllable — the agent sees it got 10/20 results and can increase the limit.

What works instead

Separate tools give the agent control over each step:

  • codegraph_search → where is the symbol defined
  • codegraph_impact → what will be affected (blast radius)
  • codegraph_node → source of a specific symbol (on demand)
  • codegraph_callers/callees → call chain navigation

Each step is intentional. The agent gets structure first, then reads only the files it needs. No 440-line dumps, no silent truncation, no missed files due to ambiguous query interpretation.


So I don't know why you refused tool separation model, seems this is your experience, but please don't remove it completely in future releases, separate tool really worked better for me. I think explore is tradeoff for cheaper usage, but quality suffers.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions