AI Agent 写完巡检工具,扫描自己源码,DeepSeek‑Harness 给自己打出 23 分
摘要:拒绝“脑补代码”!让 AI Agent 跑完“写‑测‑改”完整闭环。本次实验,Agent 独立开发一套 Python 工程巡检工具,讽刺的是这套工具给自己打分仅有 23 分。聊聊 Agent 真实能力天花板,附完整任务配置。
⚠️ 阅读提示: DeepSeek-Harness(dsh)为开发者预览开源版本,支持命令行、WebUI,第三方也提供桌面客户端;需要 Node 环境 + DeepSeek API Key,普通非开发用户上手有一定门槛,API 会产生调用费用。Demo 仅供学习实验,不要直接用于线上生产项目。
接手祖传 Python 老项目,是很多开发者的噩梦:文档残缺,大量模块缺少单元测试;到处是硬编码密钥与 URL;裸 except 泛滥,故障发生连有效报错都拿不到;不少废弃 API 依旧残留在代码中。
人工完成一次完整 Code Review,耗时耗力。市面上专业静态扫描工具配置复杂、体量笨重,小项目用上显得大材小用。
平时我们使用对话式 AI,遇到这类需求,AI 会直接输出一段代码片段。复制粘贴到本地后,你还要自己创建项目目录、补齐依赖、调试报错、编写测试用例,大量脏活累活依然压在开发者身上。
那有没有一类 Agent,不止输出文字,而是完整走完一套软件开发闭环:新建项目 ➔ 编写源码 ➔ 自动写单元测试 ➔ 安装依赖 ➔ 运行程序 ➔ 读取报错 ➔ 迭代修复 Bug?
本次实验,我借助 DeepSeek-Harness(dsh),仅提供一份任务配置,全程无需人工介入,让 AI 独立开发一套叫 py_health_check 的 Python 工程健康巡检 CLI 工具。本文完整 YAML 约束配置文末可以自取,可直接复现本次实验。
本次实验最有意思的名场面:AI 生成完巡检工具之后,直接拿这个工具扫描刚刚自己产出的源代码,检测出自身代码的工程缺陷,再尝试自动完成修复。
我不会神化 AI。整篇文章会完整展示真实过程,包括 AST 分析误报、迭代上限触发终止、跨平台兼容 Bug 等大量翻车现场。全部任务配置可参考,看完你可以理解 Agent 任务该如何设计。
一、普通对话 AI 和 DeepSeek-Harness 的区别
很多人分不清普通对话大模型和 Agent 框架,这里简单做个区分:
普通 Chat-AI: 只输出文本,没有本地运行环境,不能读写磁盘文件,不能执行代码,所有调试工作交给人。
DeepSeek-Harness: 开源 Agent 运行框架,加载 yaml 任务配置,内置系统约束与业务任务,自动完成新建文件、编写源码、执行 pytest、安装依赖、读取报错、修改代码,循环迭代完成开发任务。
本次实验做了严格的任务约束:
工作模式为代码模式,最大迭代 20 轮,防止无限死循环; 定制任务终止规则:连续 3 次修改无进展,必须输出失败反思、更换实现路线,4 次失败强制终止; 强制使用 pytest 做单元测试,要求 PEP8 规范、类型提示、Docstring; 优先使用 Python 标准库 ast 实现静态分析,减少重型第三方依赖; Agent 必须主动执行 pip install 安装依赖,不假设环境已经就绪。
实验执行命令(本次实验 profile,复现需要适配你的环境):
harness run --config harness-auto-py-health-check.yaml --no-interactive--no-interactive 代表全自动模式,不需要人工中途输入提示词。

二、实验全过程:AI 全自动开发 py_health_check
我没有手动写一行业务代码,全部交给 Agent 自动执行,完整流程如下:
初始化项目目录: Agent 自动创建标准化项目结构,区分源码目录、测试目录,生成依赖声明文件。 编写静态分析核心逻辑: 基于 Python 内置 ast 语法树模块,实现 5 类工程质量检测规则(缺失单测、魔法数字/硬编码、废弃 API、裸 except、缺失 Docstring)。 实现命令行 CLI 与 Markdown 报告: 处理目录不存在、权限不足等边界情况,输出包含风险分级、百分制加权健康评分的报告。 编写 pytest 测试夹具: 生成缺陷样例和正常样例,验证不会产生误报。 自动安装依赖 + 循环迭代修复 Bug: 生成 requirements.txt 后自动执行安装,运行 pytest 读取真实输出,测试失败就定位代码反复修改。 编写 README 文档: 写明安装、运行示例,强制加入免责声明。

✨ 高光名场面:工具扫描自己的源码
全部开发完成后,调用刚刚生成好的 py_health_check,扫描 Agent 自己产出的整套源代码。
得到一份自巡检报告,健康分数仅有 23 /100。
一个很有意思的洞察:模型擅长拿规则去检查别人写的代码,轮到自己生成代码时,却丢掉了自己定下的编码约束。
报告关键统计信息: 扫描文件:10个,总代码行数:575行,发现问题:23个。高风险:2个,中风险:5个,低风险:16个


而测试夹具 bad_code.py 里面预埋的缺陷:硬编码密钥、裸 except、废弃 API、魔法数字全部被精准命中。
这说明检测逻辑本身是有效的,但是 Agent 写自己代码的时候,会忽略自己制定的编码约束。
Agent 读取这份 Markdown 报告,回头尝试修复自身代码。但受最大 20 轮迭代上限约束,并不能一次性把 23 个问题全部解决,不少缺陷依旧遗留,这正是当前 Agent 真实能力的写照。
三、现实翻车:AI Agent 并不是万能
很多 AI 宣传文案会营造一种错觉:Agent 可以完美完成一切开发任务。但本次实验出现不少真实问题,也是这篇文章最有价值的部分:
AST 静态分析天然存在误报、漏报:魔法数字很难做到 100% 精准区分,代码里自定义的 deprecated 装饰器无法识别;这点工业级 SAST 工具同样无法完全规避。 迭代轮次上限触发任务终止: 20 轮迭代耗尽之后,框架会主动触发终止规则。终止之后 Agent 会输出失败反思,给出人工接手的修改建议。这不是实验失败,是框架的保护机制。 路径兼容小 Bug: Windows 环境生成的报告中,会混杂绝对路径和相对路径,生产版本需要做路径归一化处理。 评分规则偏严苛: 本次 Demo 扣分规则权重很高,少量问题就会把分数压到很低,适合学习演示,不建议直接拿来给生产项目打分。
总结: Agent 可以完成脚手架、基础检测逻辑、测试用例;但复杂静态分析距离商用工具还有很大差距。
四、工具能力边界与重要免责
✅ py_health_check 可以做什么
快速扫描中小型 Python 项目,做工程质量初筛; 快速发现缺少单元测试、裸 except、明显硬编码等问题; 输出结构化 Markdown 报告与健康评分,作为人工 Code Review 的辅助参考。
❌ py_health_check 不能做什么
它不是专业安全漏洞扫描器,不能替代商用 SAST 工具; 报告存在误报、漏报,绝对不能替代人工代码评审; 不适合大型超大规模项目,原生 AST 静态分析性能有限。
📢 重要声明: py_health_check 属于 AI Agent 实验室 Demo,仅供学习研究,禁止直接在生产环境使用。DeepSeek-Harness 目前为开发者预览版,不建议作为生产环境依赖。
五、如何复现本次实验
DeepSeek-Harness 已经开源,开发者可以自行安装复现本次实验。 前置条件: 安装 Node 环境,部署 DeepSeek-Harness,准备 DeepSeek API Key。
项目扫描示例命令:
python src/py_health_check.py --dir ./py_health_check --ignore venv,.git --output self_check_report.md提醒:实际运行时路径会随你的工作目录变化,仅作参考
核心任务设计思路:
给 Agent 完整的工程约束(目录规范、异常处理、测试规范); 强制闭环:写完代码必须真实执行单元测试,读取真实报错; 设置合理终止条件,防止无限无效迭代; 强制产出文档与风险说明,不允许 Agent 掩盖问题。
六、结尾思考
普通对话 AI,是 “人主导,AI 输出片段,人负责调试”。 而 DeepSeek-Harness 这类本地 Agent,形成了写代码 ➔ 执行 ➔ 看报错 ➔ 修复的闭环。
但我们也必须认清现实:Agent 擅长脚手架、简单工具、重复机械工作;面对复杂逻辑,幻觉、漏判、迭代上限都是绕不开的天花板。
未来不是 AI 取代程序员,而是程序员把大量重复、机械的基础工作交给 Agent,人聚焦业务逻辑、架构设计、最终评审。
💬 今日互动: 你觉得 AI Agent 最大短板是什么?你希望 Agent 帮你开发什么小工具?欢迎在评论区聊聊!
🎁 完整任务配置获取 完整 YAML 配置较长,公众号正文粘贴会造成手机端缩进错乱。 需要完整配置文件,评论区回复:agent,我把配置文本发给你。
夜雨聆风