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% 的步骤是浪费的。五个优化杠杆:
- 提示词规则:告诉 Agent "FAIL_TO_PASS 测试可能不存在"、"不要 pip install"
- 基础设施分层:确定性的事(环境安装)不让 LLM 做
- 上下文释放:5.5K → 28K token 预算,充分利用 32K 窗口
- Patch 卫生:自动过滤测试文件修改
- 网络韧性: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 1 | Day 2 | Day 3 |
|---|---|---|---|
| 代码行数 | ~1000 | ~1100 | ~1300 |
| 测试实例 | 1 | 20 | 99 |
| Patch 生成率 | 100% | 95% | 89% |
| Resolve rate | - | 80% (20实例) | 58.7% (99实例) |
| 跨仓库数 | 1 | 1 | 6 |
经验总结
- 提示词是最高杠杆的优化 — 两句话的改动胜过架构重构
- 确定性的事不要让 LLM 做 — 环境安装、patch 过滤交给 harness
- 上下文就是记忆 — 限制上下文 = 强迫重复劳动
- 评测是最诚实的镜子 — 生成 patch ≠ 修好 bug
- 基础设施和算法同等重要 — 并行化、Docker 评测、镜像构建
代码
- GitHub: imfht/swe-agent-lite
- Tag: day1 · day2 · day3
- 模型: Qwen3.5-35B-A3B (3B 激活参数, 本地推理)
- 框架: 纯 Python, ~1300 行, 无外部 Agent 框架依赖
相关
- SWE-bench — 编码 Agent 评测基准
- Harness Engineering — 围绕 AI Agent 构建约束机制的工程实践
- Agent Harness — Agent 运行环境框架