Agent开发之旅:十天开发编码 Agent

用 10 天时间,从零搭建一个能在 SWE-bench 上跑分的编码 Agent。完整记录架构选择、效率优化、评测验证的全过程。

开源代码:github.com/imfht/swe-agent-lite

系列文章

Day 1: 从零搭建 SWE-bench Coding Agent

目标:搭建可运行的基础框架

  • 选择 ReAct Loop 架构(思考→行动→观察循环)
  • 设计 4 个核心工具:bash、read_file、edit_file、search_code
  • search/replace 编辑模式比行号编辑更可靠
  • 在 django__django-11179 上验证端到端流程
  • 交付 8 个文件、~1000 行代码

关键发现:提示词中必须包含仓库特定的测试运行命令(如 Django 的 tests/runtests.py),否则 Agent 会浪费大量步骤摸索。

Day 2: 从 100% 浪费到 95% 产出——效率优化的杠杆在哪里

目标:消除 Agent 的无效步骤

Day 1 日志分析显示 59% 的步骤是浪费的。五个优化杠杆:

  1. 提示词规则:告诉 Agent "FAIL_TO_PASS 测试可能不存在"、"不要 pip install"
  2. 基础设施分层:确定性的事(环境安装)不让 LLM 做
  3. 上下文释放:5.5K → 28K token 预算,充分利用 32K 窗口
  4. Patch 卫生:自动过滤测试文件修改
  5. 网络韧性:LLM 连接指数退避重试

结果:20 个 Django 实例,19/20 生成 patch (95%)

核心观点:不让模型做蠢事,比让模型更聪明效果更大。

Day 3: 面对真相——从"生成了 patch"到"真的修好了"

目标:用 SWE-bench 官方评测验证 patch 质量

  • 静态分析预估 60-65% 通过率
  • 20 实例小规模验证:16/20 = 80% resolve rate
  • 并行化改造:git worktree + ThreadPoolExecutor,8 并发
  • 300 实例全量 patch 生成:268/300 (89%)
  • 99 实例均匀抽样评测:44/75 = 58.7% resolve rate

结果:用 3B 激活参数的本地模型,在 SWE-bench Lite 上达到 58.7% resolve rate,跨越 6 个不同仓库。

技术架构

┌──────────────────────────────────────┐
│  run.py (CLI, 并发调度)               │
├──────────────────────────────────────┤
│  agent.py (ReAct Loop)               │
│  think → act → observe → repeat      │
│  上下文压缩 · 死循环检测 · 重试       │
├──────────────────────────────────────┤
│  tools.py          │  prompt.py       │
│  bash/read/edit/   │  系统提示词       │
│  search_code       │  仓库测试命令     │
├──────────────────────────────────────┤
│  llm.py (OpenAI SDK, tool calling)   │
│  reasoning_content · 连接重试         │
├──────────────────────────────────────┤
│  harness.py (SWE-bench 集成)         │
│  数据集加载 · git worktree · patch    │
└──────────────────────────────────────┘

关键数据

指标Day 1Day 2Day 3
代码行数~1000~1100~1300
测试实例12099
Patch 生成率100%95%89%
Resolve rate-80% (20实例)58.7% (99实例)
跨仓库数116

经验总结

  1. 提示词是最高杠杆的优化 — 两句话的改动胜过架构重构
  2. 确定性的事不要让 LLM 做 — 环境安装、patch 过滤交给 harness
  3. 上下文就是记忆 — 限制上下文 = 强迫重复劳动
  4. 评测是最诚实的镜子 — 生成 patch ≠ 修好 bug
  5. 基础设施和算法同等重要 — 并行化、Docker 评测、镜像构建

代码

  • GitHub: imfht/swe-agent-lite
  • Tag: day1 · day2 · day3
  • 模型: Qwen3.5-35B-A3B (3B 激活参数, 本地推理)
  • 框架: 纯 Python, ~1300 行, 无外部 Agent 框架依赖

相关

Comments (0)

No comments yet

imfht
April 8, 2026 · Updated April 9, 2026