LLM Agents Can See Code Repositories

July 2, 2026 Β· View on GitHub

Logo of SeeRepo

LLM Agents Can See Code Repositories

arXiv Accepted: ASE 2026 Python 3.10+ SWE-bench Verified Docker Static Analysis Built on mini-swe-agent GitHub stars License

SeeRepo extends mini-swe-agent with a pre-built repository structure graph, enabling agents to navigate large codebases efficiently and resolve GitHub issues on SWE-bench.

Overview of SeeRepo

πŸ’‘ Core Innovation

Standard coding agents rely entirely on shell commands (grep, find, ls) to explore a codebaseβ€”costing many steps before any edit is made. SeeRepo provides each agent with a pre-built repository graph that encodes the structural relationships of every file, class, and function in the target repository.

πŸ•ΈοΈ Repository Graph

The graph is built offline per repository (stored as a .pkl file) and contains four edge types:

Edge TypeDirectionUse Case
containsdirectory β†’ file β†’ class/functionVerify file paths, visualize directory layout
importsimporter β†’ imported module/symbolFind all files related to a concept
invokescaller β†’ calleeTrace execution flow to localize a bug
inheritssubclass β†’ base classUnderstand class hierarchy

Agents query the graph at inference time via a CLI tool:

python -m minisweagent.run.extra.utils.graph_visualization \
  --pkl repo_graph.pkl \
  --node "path/to/file.py" \
  --edge-type imports \
  --up-depth 1 --down-depth 1

πŸ”¨ Graph Building

The graph is constructed entirely from static analysis of Python source files using the ast moduleβ€”no execution needed. See src/minisweagent/run/extra/utils/build_graph.py.

πŸš€ Installation

git clone <this-repo-url>
cd SeeRepo
pip install -r requirements.txt
pip install -e .
  • License: Apache-2.0 (see LICENSE).
  • System: Docker for SWE-bench; for graph PNG rendering, install the Graphviz dot binary (e.g. apt install graphviz).
  • Optional LiteLLM model registry: if your provider uses custom model ids, set LITELLM_MODEL_REGISTRY_PATH to a JSON file (see LiteLLM register_model docs).

πŸ—‚οΈ Building the Graph Index

Before running on SWE-bench, build (or download) a graph indexβ€”a directory of {instance_id}.pkl files, one per benchmark instance.

export SEEREPO_GRAPH_INDEX_DIR=/path/to/your/graph_index

python scripts/build_graph_index.py \
  --dataset princeton-nlp/SWE-Bench_Verified \
  --split test \
  --output-dir $SEEREPO_GRAPH_INDEX_DIR \
  --workers 8

The script starts each SWE-bench Docker image, extracts the repository from /testbed, builds the graph, and saves {instance_id}.pkl to the output directory.

▢️ Running on SWE-bench

1. Set the graph index path

export SEEREPO_GRAPH_INDEX_DIR=/path/to/your/graph_index

2. Run the agent

python -m minisweagent.run.extra.swebench \
  --subset verified \
  --split test \
  --config src/minisweagent/config/extra/SeeRepo.yaml \
  --workers 4 \
  --output trajectories/seerepo_verified

See scripts/run_swebench.sh for a complete example.

βš™οΈ Configuration files

ConfigGraph Strategy
SeeRepo.yamlAlways query graph first
SeeRepo_smart.yamlSmart: query graph only when the file path is not already known

The default model is openai/gpt-5-mini. Override via --model:

python -m minisweagent.run.extra.swebench \
  --config src/minisweagent/config/extra/SeeRepo.yaml \
  --model openai/gpt-5-mini \
  ...

πŸ“ Repository Structure

SeeRepo/
β”œβ”€β”€ src/minisweagent/
β”‚   β”œβ”€β”€ agents/                 # Agent loop (DefaultAgent)
β”‚   β”œβ”€β”€ models/                 # Model interfaces (LiteLLM, Anthropic, ...)
β”‚   β”œβ”€β”€ environments/           # Execution environments (Docker, local, ...)
β”‚   β”œβ”€β”€ run/
β”‚   β”‚   β”œβ”€β”€ mini.py             # Interactive CLI (mini / mini -v)
β”‚   β”‚   └── extra/
β”‚   β”‚       β”œβ”€β”€ swebench.py     # SWE-bench batch runner (SeeRepo entry point)
β”‚   β”‚       └── utils/
β”‚   β”‚           β”œβ”€β”€ build_graph.py          # Static graph construction
β”‚   β”‚           └── graph_visualization.py  # Graph query CLI (usedu by agents)
β”‚   └── config/extra/
β”‚       β”œβ”€β”€ SeeRepo.yaml         # Main config (always query graph first)
β”‚       └── SeeRepo_smart.yaml   # Smart graph usage variant
└── scripts/
    β”œβ”€β”€ build_graph_index.py    # Build graph index for SWE-bench instances
    └── run_swebench.sh         # Example run script

πŸ™ Acknowledgements

SeeRepo is built on top of mini-swe-agent and evaluated on SWE-bench. We thank the respective authors for open-sourcing their work.

Citation

If you find this work helpful for your research or development, please consider citing our paper:

@misc{ma2026llmagentscoderepositories,
      title={LLM Agents Can See Code Repositories}, 
      author={Dongjian Ma and Silin Chen and Yufei Yang and Yuling Shi and Yanfu Yan and Xiaodong Gu},
      year={2026},
      eprint={2606.14061},
      archivePrefix={arXiv},
      primaryClass={cs.SE},
      url={https://arxiv.org/abs/2606.14061}, 
}