Failures and authority
This page has not been translated yet. It is shown in Chinese.
这一篇的收获遇到失败时,能够区分“需要查状态”“需要授权”和“需要结束工作”,不凭一条报错猜测远端发生了什么。
一个没有收到结果的命令
设备已经给文件追加了一行,返回结果时网络断开。调用方只知道自己没收到回复,不能因此断言命令没运行。如果换一个新编号再提交,追加动作可能发生第二次。
工作区为命令保存请求编号和执行记录。账本仍在时,相同编号与相同输入会对应原任务;相同编号却换了命令内容会被拒绝。重连后应先查询原编号。项目实现:请求登记与冲突检查
调用方知道的事没有收到结果。执行是否完成仍然未知。
设备可能知道的事原请求已登记,正在运行或已有最终结果。
恢复的第一步是对齐已有记录,不是猜测并重做。
这不是跨设备重启的“恰好执行一次”保证。agent 重启丢失账本后,不能用新建的空记录假装记得旧任务。命令编号也不同于 JSON-RPC 用来匹配请求与响应的消息 ID,不能直接拿会变化的通信编号代替。原始资料:JSON-RPC 请求对象
按失败类型选择下一步
| 观察到的情况 |
下一步 |
| 网络中断,命令结果未知 |
用原工作区与命令编号查询;不换新编号盲目重做 |
| 文件写入结果未知 |
读取文件、核对内容和摘要,再决定是否重试 |
| 文件摘要冲突 |
重新读当前文件,再基于它准备修改 |
| 权限被拒绝、撤销或到期 |
按拒绝来源取得必要授权;不换工具绕过 |
| 设备身份与已固定指纹不一致 |
停止并核实设备身份 |
| 工作区已关闭或设备端状态丢失 |
明确结束旧工作;不悄悄回退本地或另一设备 |
文件写入的未知结果与命令去重不是同一种机制:不能假定给所有文件操作加一个相同编号,就自动拥有命令账本的保证。文件操作的未知结果处理
等待、取消、退出是三件事
停止等待只表示调用方暂时不再接收结果。cancel 要求终止命令;当前工作区实现会使相应 shell 失效,不能承诺保留它的全部环境。exit 则明确结束整个工作区。
此外,宿主的工具审批、wanctl 的身份与访问检查、设备的执行策略位于不同位置。一个层面的允许不能替代另一个层面的检查。工作区根目录只帮助解释路径,也不是限制任意程序访问整个系统的沙箱。MCP 宿主职责 · 项目权限边界
自检:先判断,再看解释
命令提交后连接断开,你还保存着原请求编号。最合适的第一步是什么?
查看解释(可以跳过作答)
先查询原任务才能区分正在执行、已经完成和记录不可用。换新编号可能重复副作用;切回本地则可能换了工作地点。
带着什么进入下一篇
每一种恢复动作都应依据已知事实。下一篇把这些边界变成可核验的验收条件。
如果这一点还不清楚,可以把本篇的问题和你自己的项目场景交给协作 agent,请它换一个例子解释。自检只提供即时反馈,不代表已经掌握;隔一段时间,不看答案再解释一次更有价值。
术语速查 · 架构卡片 · 课程目录
05|故障与权限:结果不明时,先做什么
这一篇的收获遇到失败时,能够区分“需要查状态”“需要授权”和“需要结束工作”,不凭一条报错猜测远端发生了什么。
一个没有收到结果的命令
设备已经给文件追加了一行,返回结果时网络断开。调用方只知道自己没收到回复,不能因此断言命令没运行。如果换一个新编号再提交,追加动作可能发生第二次。
工作区为命令保存请求编号和执行记录。账本仍在时,相同编号与相同输入会对应原任务;相同编号却换了命令内容会被拒绝。重连后应先查询原编号。项目实现:请求登记与冲突检查
调用方知道的事没有收到结果。执行是否完成仍然未知。
设备可能知道的事原请求已登记,正在运行或已有最终结果。
恢复的第一步是对齐已有记录,不是猜测并重做。
这不是跨设备重启的“恰好执行一次”保证。agent 重启丢失账本后,不能用新建的空记录假装记得旧任务。命令编号也不同于 JSON-RPC 用来匹配请求与响应的消息 ID,不能直接拿会变化的通信编号代替。原始资料:JSON-RPC 请求对象
按失败类型选择下一步
| 观察到的情况 |
下一步 |
| 网络中断,命令结果未知 |
用原工作区与命令编号查询;不换新编号盲目重做 |
| 文件写入结果未知 |
读取文件、核对内容和摘要,再决定是否重试 |
| 文件摘要冲突 |
重新读当前文件,再基于它准备修改 |
| 权限被拒绝、撤销或到期 |
按拒绝来源取得必要授权;不换工具绕过 |
| 设备身份与已固定指纹不一致 |
停止并核实设备身份 |
| 工作区已关闭或设备端状态丢失 |
明确结束旧工作;不悄悄回退本地或另一设备 |
文件写入的未知结果与命令去重不是同一种机制:不能假定给所有文件操作加一个相同编号,就自动拥有命令账本的保证。文件操作的未知结果处理
等待、取消、退出是三件事
停止等待只表示调用方暂时不再接收结果。cancel 要求终止命令;当前工作区实现会使相应 shell 失效,不能承诺保留它的全部环境。exit 则明确结束整个工作区。
此外,宿主的工具审批、wanctl 的身份与访问检查、设备的执行策略位于不同位置。一个层面的允许不能替代另一个层面的检查。工作区根目录只帮助解释路径,也不是限制任意程序访问整个系统的沙箱。MCP 宿主职责 · 项目权限边界
自检:先判断,再看解释
命令提交后连接断开,你还保存着原请求编号。最合适的第一步是什么?
查看解释(可以跳过作答)
先查询原任务才能区分正在执行、已经完成和记录不可用。换新编号可能重复副作用;切回本地则可能换了工作地点。
带着什么进入下一篇
每一种恢复动作都应依据已知事实。下一篇把这些边界变成可核验的验收条件。
如果这一点还不清楚,可以把本篇的问题和你自己的项目场景交给协作 agent,请它换一个例子解释。自检只提供即时反馈,不代表已经掌握;隔一段时间,不看答案再解释一次更有价值。
术语速查 · 架构卡片 · 课程目录