谁对谁说了什么

发布: (2026年2月22日 GMT+8 21:03)
8 分钟阅读
原文: Dev.to

Source: Dev.to

《谁对谁说了什么》封面图片

Daniel Nwaneri

事件概述

2023 年 2 月 20 日,一位开发者在 X 上发布了一张截图。

他向 Claude Code 提交了一个错误信息。Claude 回答道:“提交这些更改吗?”
他不知道哪些更改。他询问道,“哪些更改?”
Claude 开始提交。

这并不是一种明显的故障;而是因为 Claude 失去了 谁对谁说了什么 的追踪——它把自己的问题误读为开发者的指令并执行。当被停止时,它弹出了一个批准模态框。他拒绝了,但它仍然继续询问。

在展示了自己行为的截图后,Claude 解释说它混淆了回合顺序——这是子代理异步更新对话历史的副作用。

该解释已有文档记录:

开发者的经历并非个例;它是架构在设计未预见的情形下按预期运行的结果。

这不是错误报告。 它展示了当责任追溯在结构上变得不可能时会发生的情况。

这是一系列关于 AI 实际上在软件开发中带来何种变化的文章之一。前作:The Gatekeeping PanicThe Meter Was Always Running

责任假设

在这个领域的论证是 责任是答案——不是 AI 检测器,不是守门机制,也不是放慢生成速度。责任意味着要知道是谁做出的决定,谁拥有提交,谁会在凌晨 3 点被叫醒。

当满足以下条件时,这种论点成立:

  • 环路中只有一个人类。
  • 只有一个代码库。
  • 只有一段提交历史。

责任之所以可能,是因为决策链是可追溯的。

而具备代理性的系统会打破这条链。

当子代理异步写入共享状态、会话 ID 无法区分是哪一个代理执行了哪个操作、以及编排器在任务进行中失去连贯性时,“谁决定的?” 这个问题就不再有明确答案。这不是因为没有人想承担责任,而是系统在 架构上使得责任不可实现

在我关于守门的文章评论中,Apogee Watcher 正好点名了这一点:风险不仅在于责任被规避——更在于责任沦为 仪式性。你可以在提交上写上名字,但无法保证那个名字背后的人真正理解他们批准的内容。

正是这种缺口将导致下一波生产故障的出现。

跟踪问题

LangChain 联合创始人 Harrison Chase 提出了一个值得认真对待的论点。

在代理系统中,代码只是脚手架。真正的决策发生在运行时,模型内部。传统的调试假设你可以阅读代码并理解其行为。而在使用代理时,你做不到。

他的结论是:跟踪成为真相的唯一来源——工具调用的顺序、输入输出、推理步骤——即你的审计轨迹。

这是一个有说服力的论点。Burkov 的截图恰好展示了问题出现的地方。

当子代理异步写入共享对话历史时,跟踪本身变得不可靠。Issue #22900 证实 VS Code 扩展仅保留子代理的记录——而不是主对话。编排器的推理、轮次顺序的混乱、系统将自己的问题误读为用户指令的那一刻——这些都无法保证在跟踪中保存。

  • 你无法审计未被记录的内容。
  • 你无法从缺失关键决策的跟踪中追究责任。

Chase 的观点是正确的,跟踪应该是唯一的真相来源。问题在于当前的架构尚未能够让跟踪可信。审计轨迹存在缺口,而审计轨迹的缺口正是责任消失的所在。

谁对谁说了什么

责任论点并非错误;它不完整

  • 知道谁拥有提交很重要。
  • 知道谁会在凌晨 3 点被叫醒也很重要。
  • 建立有文档记录的拒绝文化、公开问责、在发布前进行验证——所有这些都很重要。

但它假设系统能够告诉你到底发生了什么。

该假设成立之前,具备自主性的系统已经被部署到生产环境:

  • 子代理共享会话 ID。
  • 对话记录未持久化。
  • 轮次顺序混乱导致系统自行执行其提问。
  • 子代理绕过权限规则。
  • 追踪架构尚未可靠到可以作为真相来源。

理解这些的开发者并没有因为 AI 取代他们而惊慌失措。他们在提出更难的问题:

  1. 这个代理实际做了什么?
  2. 是哪一个子代理做出了这个决定?
  3. 出错的那部分的追踪记录在哪里?
  4. 我能重建推理过程吗,还是已经消失了?

这些问题需要判断、验证和组织记忆——正是本系列一直在倡导的技能。但它们同样需要新技能:足够了解自主体系结构,以识别盲点并进行补偿。

Enough to know where the accountability gaps live before something fails in production.

There's a kind of accountability that works — one human, one codebase, one commit history, receipts that are fully yours. A nine‑day timeline you can reconstruct. A public reckoning you can point to.

That worked because there was one human in the loop.

Add subagents. Share the session ID. Let the transcripts fail to persist.

Now try to produce the receipt.
0 浏览
Back to Blog

相关文章

阅读更多 »