acp-agent-client-protocol — 本课题摘录
读了哪几篇: 01-lifecycle(会话生命周期与回合)、03-content-and-tools(内容块、工具调用状态机与权限)。
其余三篇(角色与路由、能力协商、巧妙之处)本轮没读。
这一家在本课题里的位置:它给了"停止原因"和"工具调用状态"两套现成的枚举——我们不用自己发明。
它对本课题回答了什么
决定四:一轮一定带一个"为什么停了" —— 五种取值
一轮对话不会无限 跑;结束时一定带一个停止原因。
| 停止原因 | 含义 |
|---|---|
| 正常结束 | 模型说完了 |
| 触到 token 上限 | 被截断 |
| 触到"一轮里自发请求次数"的上限 | 防失控自循环 |
| 拒绝继续 | agent 主动拒绝;这条 prompt 及其之后的内容不会进下一轮,界面应反映这点 |
| 被取消 | 调用方主动取消 |
(依据:协议库 · ACP (Agent Client Protocol) · 会话生命周期与 prompt 回合 —— PromptResponse 一定带一个 stop_reason,五种取值是 end_turn / max_tokens / max_turn_requests / refusal / cancelled;refusal 注释强调这条 prompt 及其之后的内容不会进下一轮)
对比 fara 的"步数耗尽也标成完成":这里把"上限"和"正常结束"明确分开了,而且分得更细—— token 上限和轮数上限是两回事,拒绝又是第三回事。 这五种是我们可以直接抄的枚举。
"拒绝"那一条的注释很值得记: 拒绝不只是"这次不做",而是这条输入及其之后的内容不进下一轮——历史要被截断,而不是把拒绝当成一条普通回复留在那里。