[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fRmhFi-ali7rnMQyWim9sy27rFHg3vroirKGNjPtrXoU":3},{"item":4,"related":51},{"id":5,"type":6,"title":7,"slug":8,"summary":9,"body":10,"coverUrl":11,"productScreenshots":12,"productLinks":13,"authorName":14,"authorUrl":15,"authorSubject":16,"category":17,"tags":22,"sourceLabel":39,"sourceName":40,"sourceUrl":41,"status":42,"seoTitle":43,"seoDescription":44,"canonicalUrl":45,"isFeatured":46,"sno":47,"sortOrder":48,"publishedAt":49,"updatedAt":50,"createdAt":50},"3e2a7e9e-a123-4ed6-b886-455e76649df1","article","AI 编程为什么需要“证据链”？","ai-coding-evidence-chain-logs-tests","AI 说“功能已完成”只是声明，真正可靠的结果还需要 diff、终端日志、测试结果和真实操作共同证明。本文解释不同证据能说明什么，以及如何设计任务收尾模板。","AI 编程 Agent 完成任务后，常常会给出一段很有把握的总结：“功能已实现，测试已通过。”但这句话本身只是声明，不是证据。真正值得信任的结果，应该能沿着一条证据链回看：它改了什么文件，执行了哪些命令，测试覆盖了什么，哪些步骤没有完成，最终行为是否符合需求。\n\n## 证据链解决的是“它真的做了吗”\n\n代码 diff 能证明文件发生了什么变化，却不能证明功能在真实环境中可用；终端日志能证明命令执行过，却不一定证明命令检查了正确路径；测试结果能证明断言通过，却不一定覆盖用户真正关心的行为。不同证据解决不同问题，不能用一类证据替代全部。\n\n可以把结果拆成四层：\n\n| 证据 | 能说明什么 | 不能单独说明什么 |\n| --- | --- | --- |\n| 文件与 diff | 修改了哪些内容 | 修改是否符合需求 |\n| 命令与日志 | 做过哪些执行 | 目标环境是否完全一致 |\n| 测试与检查 | 某些条件下结果通过 | 未覆盖场景是否安全 |\n| 真实操作与截图 | 用户路径是否可用 | 代码长期可维护 |\n\n只有把这些信息放在一起，人才能判断“完成”是不是有充分依据。\n\n## 为什么模型总结容易过度自信\n\n模型倾向于把当前轨迹整理成一个连贯故事。如果某个命令超时、测试没有被发现，或者只运行了局部检查，它可能仍然把结果描述成“已验证”。这不一定是有意欺骗，而是语言生成天然倾向于给出完整结论。\n\n因此，工作流要让工具返回结构化状态：命令退出码、测试数量、失败用例、修改文件、网络调用和等待中的任务。让 AI 引用这些结果，而不是让它凭记忆写总结。\n\n## 一份适合 Vibe Coding 的任务收尾模板\n\n任务结束时要求 Agent 回答：\n\n1. 需求中哪些部分已经完成？对应哪些文件和行为？\n2. 运行了哪些构建、类型检查、单元测试或浏览器测试？结果是什么？\n3. 哪些验证没有运行，原因是什么？\n4. 还存在什么假设、风险和待人工确认事项？\n5. 如果需要回滚，应该回退哪个提交或删除哪一组变更？\n\n这份模板不等于质量保证，但能让不确定性显形。一个明确写出“没有运行生产数据迁移测试”的结果，通常比一句笼统的“全部完成”更有价值。\n\n## 证据也可能被伪造或污染\n\n测试日志可能来自错误的分支，截图可能展示了假数据，模型还可能修改测试让结果变绿。高风险任务需要把检查放在 Agent 难以随意改动的环境中，并由独立流水线重新运行。证据最好由工具直接产生，关键结论要能被人复现。\n\nOpenAI 对 coding agent 的设计强调终端日志、文件引用和测试结果，就是为了让用户可以验证过程，而不是只接受最终文本。对任何工具都适用的原则是：声明要有证据，证据要能复现，无法验证的部分要明确标记为未知。\n\n## 来源\n\n- [OpenAI：Introducing Codex](https:\u002F\u002Fopenai.com\u002Findex\u002Fintroducing-codex\u002F)\n- [OpenAI：Running Codex Safely](https:\u002F\u002Fopenai.com\u002Findex\u002Frunning-codex-safely\u002F)","\u002Fuploads\u002F2026-09-14\u002F34be8dc4-3692-47ab-8f7c-226dd203c805.jpg",[],[],"Foundit","https:\u002F\u002Ffoundit.cn","foundit-ai-editorial",{"id":18,"name":19,"slug":20,"description":21},"6179d3b6-dc34-4483-9ded-3cd9f1b37a47","科普","abbreviation","介绍各领域新兴概念",[23,27,31,35],{"id":24,"name":25,"slug":26},"0848beb4-db26-4fb8-b391-f852a11be192","AI编程","ai-coding",{"id":28,"name":29,"slug":30},"144abe77-0dc6-4f66-a176-20bddb1c0bfa","编程","coding",{"id":32,"name":33,"slug":34},"4c2bbea6-eab7-40a8-8447-1de478ff7749","分析","analyse",{"id":36,"name":37,"slug":38},"68cedb55-2cac-412f-8f81-fda8c7d686dd","思考","thought","OpenAI 官方资料","Running Codex Safely","https:\u002F\u002Fopenai.com\u002Findex\u002Frunning-codex-safely\u002F","published","AI 编程证据链：如何验证 Agent 真的完成了任务","从 diff、终端日志、测试和真实操作出发，解释 AI 编程 Agent 的完成声明为什么需要可复现证据。",null,false,44,0,"2026-09-14T00:00:00.000Z","2026-09-14T11:00:03.458Z",[52,61,69],{"id":53,"type":6,"title":54,"slug":55,"summary":56,"coverUrl":57,"authorName":14,"sno":58,"publishedAt":59,"createdAt":60},"ef4aef3e-8062-42e4-88b5-68e42424c3a3","Vibe Coding 最适合做什么，最不适合做什么","vibe-coding-best-and-worst-tasks","Vibe Coding 最适合边界清楚、反馈快速、失败可恢复的任务，最不适合模糊决策和不可逆的高风险操作。本文用任务三问帮助读者判断何时放手让 AI 执行、何时必须人工把关。","\u002Fuploads\u002F2026-09-13\u002Fea45cd7c-a127-4f9e-90db-35cf41ef08bc.jpg",48,"2026-09-13T00:00:00.000Z","2026-09-13T11:56:03.397Z",{"id":62,"type":6,"title":63,"slug":64,"summary":65,"coverUrl":66,"authorName":14,"sno":67,"publishedAt":59,"createdAt":68},"8413c906-e655-4395-9135-ae1eacc96f98","AI 编程为什么第一版很快，第二版却越来越难改","vibe-coding-first-version-fast-second-hard","AI 能迅速做出第一版，却不一定自动带来可维护的第二版。本文解释原型速度为何会转化为结构复杂度，并给出识别重复状态、安排重构和控制 AI 改动范围的实用方法。","\u002Fuploads\u002F2026-09-13\u002Fe68b1156-67d0-47f9-99fc-efeb38aacdc9.jpg",58,"2026-09-13T11:55:45.373Z",{"id":70,"type":6,"title":71,"slug":72,"summary":73,"coverUrl":74,"authorName":14,"sno":75,"publishedAt":49,"createdAt":76},"80b0007b-7e95-4f63-b885-28600d2d95ad","AI 编程为什么要先 Plan 再 Edit？","ai-coding-plan-mode-before-edit","Plan mode 给 AI 编程增加了一个先理解、再修改的阶段。本文解释计划如何提前暴露需求误解、遗漏边界和过大改动范围，并给出适合普通用户的计划、执行、验证节奏。","\u002Fuploads\u002F2026-09-14\u002Ffa3dbbc4-77bd-4abf-8618-252d72ddd849.jpg",59,"2026-09-14T10:59:52.791Z"]