1. 本地环境搭建
这个开源项目的github链接:https://github.com/SWE-agent/mini-swe-agent
然后安装docker desktop,最好买点儿docker的加速包,不然下载镜像的速度是真捉急,我买的轩辕镜像的。
2. 用deepseekv4.1flash运行test测试集
我先把test数据集需要的docker镜像先下载,让ai根据镜像的命名规则写的个脚本,量还是比较大的

执行test测试集:
mini-extra swebench --subset lite --split test --model deepseek/deepseek-chat --workers 4 --slice 0:300 --output ./test_full_300
执行后在本地会有执行log和模型给出来的答案。
模型执行的具体log:

所有题目的答案汇总:

然后在wsl环境运行测评,直接用windows的环境运行会报错,测评就是用llm输出的修改问答去修改代码,然后用pytest做判断、验证有没有改成功。
bash
source venv_swe/bin/activate
cp /mnt/d/code/learn_swe/mini-swe-agent/test_full_300/preds.json ~/swe_eval/
HF_ENDPOINT=https://hf-mirror.com python -m swebench.harness.run_evaluation \
--dataset_name SWE-bench/SWE-bench_Lite \
--predictions_path ./preds.json \
--max_workers 2 \
--run_id deepseek_300_wsl
cp ~/swe_eval/logs/evaluation/deepseek_lite_run01/results.json /mnt/d/code/learn_swe/deepseek_lite_run01_results.json
评测结果:
300个测试case,2个没跑出来、234个通过、64个失败,正确率在78%。

分析了一下失败的case,模型给出的答案:有的是找对地方了,但是改的和需求不一样;有的是漏改了等等。
3. agent执行流程分析
3.1. 【Agent AI 侧】:Docker容器内执行
输入给Agent:
- bug issue描述(pr_description):bug现象、修复目标
- system提示词:
- 在 /testbed 操作源码
- 禁止修改测试文件,只改业务源码、文档
- 只能执行bash命令
- 修复完成用 git diff 生成patch
- 固定提交命令:echo COMPLETE_TASK_AND_SUBMIT_FINAL_OUTPUT && cat patch.txt
- 容器环境:已经 git checkout base_commit(带bug的干净基线代码)
Agent执行步骤:
- bash命令 ls / git log / grep / sed 浏览、搜索、阅读源码,定位bug根因
- 修改业务源代码、配套文档(不碰tests目录)
- 写简易脚本在容器内验证业务修复效果
- 即使看到单元测试会失效,遵守指令:不去修改测试文件
- git diff 生成 patch.txt (agent补丁)
- 执行规定提交命令输出补丁
Agent产出物:
- agent patch (保存在 trajectory.json 的 submission字段)
- 内容:业务代码改动 + 可选文档改动;不含test_patch的测试修改
- Agent完全看不到数据集里的 test_patch
3.2. 【Harness评测框架侧】:独立评测流水线
评测不对比文本和gold patch,只看测试运行结果
评测流水线每一个instance执行:
- 初始化干净docker环境,git checkout base_commit,无任何改动
- git apply agent.patch # 打上AI输出的业务/文档补丁
- git apply test_patch.diff # 【数据集元数据,框架自动做!不是AI输出】修改单元测试断言
- 执行测试,两个条件必须同时全部满足:
✅ 所有 FAIL_TO_PASS 测试:必须全部由失败变为 PASS
✅ 所有 PASS_TO_PASS 测试:必须全部保持 PASS,不能回归失败
判定:
- 全部满足 → resolved: true,进入resolved_ids
- 任意不满足:测试失败 / git apply冲突 → resolved: false
4. 小结
其实吧,这个结果我还是很惊讶的,因为agent侧几乎没有做什么,就是模型自己用grep等方式搜,然后把这些代码直接塞进上下文来分析,得出修改哪些内容。相当于只考基模的能力。agent侧提供的能力很基础。
然后也想了下为什么用grep而不是用向量,因为向量表示的是相似度关系,用在代码搜索里不合适。