附录 B:综合练习、参考答案与研究课题
B.1 入门自检
问题一:模型输出一条读取请求,是否已看到文件?
参考答案:还没有。宿主需要执行读取、取得真实结果,并把必要内容加入后续模型视图。工具请求只是提出动作。
问题二:一次用户任务使用了五次模型请求,是否一定有五个用户轮次?
参考答案:不是。轮次由框架定义;一个任务可以包含多次请求和工具步骤。应依据实际打开与关闭边界计数。
问题三:能在 UI 翻到一条消息,模型当前就一定看到它吗?
参考答案:不一定。历史存储、UI 展示和模型上下文是不同视图,可能受分支、压缩和转换影响。
问题四:工具返回文件不存在,整个会话一定失败吗?
参考答案:不一定。错误可以作为工具结果进入下一步,模型可能改正路径。是否继续由任务状态和宿主策略决定。
问题五:脚本模型通过测试,说明真实模型效果好吗?
参考答案:不能。脚本模型主要验证宿主契约。真实任务完成能力需要单独模型评估。
B.2 协议与执行
问题六:工具参数已经能解析 JSON,还需要等待结束吗?
参考答案:需要。整个响应仍可能被截断或失败。必须按接口的完整性与停止原因判断,不能只检查局部语法。
问题七:一个模型回复请求三个工具,结果按乙、甲、丙完成,模型一定也应按这个顺序接收吗?
参考答案:不一定。可以即时发布真实完成事件,同时按原调用顺序提交模型结果。具体协议必须明确。
问题八:schema 合法的 ../secret 是否应允许读取?
参考答案:结构合法不代表资源范围合法。还需要规范化路径、范围检查与实际执行限制。
问题九:读取后取得旧哈希,写入前比较通过,能否声称是原子事务?
参考答案:不能。普通检查与写入之间仍有竞争窗口。需要更强的锁、事务或资源版本协议。
问题十:同一调用 ID 的两个参数片段,应记录两次执行吗?
参考答案:不应。片段是一次调用的组装过程。调用身份与执行次数需由完整协议确定。
B.3 恢复与权限
问题十一:写入已开始,结果没有保存,能否当作失败重试?
参考答案:不能仅凭缺少结果决定。需要查外部状态、幂等键或事务记录;无法判断就进入 unknown 核查。
问题十二:恢复到旧会话分支,会回滚磁盘吗?
参考答案:不会自动回滚。对话历史和文件状态属于不同系统,除非另有明确快照或版本恢复机制。
问题十三:沙箱拒绝后能否继承原审批扩大权限?
参考答案:不能直接推断。原审批针对原动作范围,扩大权限需要根据实际策略重新审查。
问题十四:锁文件很旧,是否可以立即删除?
参考答案:不可以只按时间判断。需确认所有者和实际进程状态,并保留现场。锁年龄不能证明执行已停止。
问题十五:取消信号已发出,是否等于全部工具结束?
参考答案:不是。需要执行端响应、停止新工作、等待已启动工作收尾,并记录已知结果。
B.4 实作项目与验收
项目一:增加一个只读目录工具。
要求:限制最大条目数;拒绝越界与保留目录;输出明确是否截断;不给目录中的文本更高指令权限。验收应包含空目录、非目录、符号链接和超限结果。参考设计是先解析范围,再执行受限枚举,最后用标准工具结果返回。
项目二:增加一次有界模型重试。
要求:只重试适配器认定的临时错误;每次尝试计入预算;不重复已经接受的工具。参考答案应保留 model.started 与 retryable_error 的关联,避免把所有协议错误也当临时网络故障。
项目三:为未知结果增加人工裁决。
要求:不修改旧事件,追加裁决;引用 call ID 与核查证据;区分已执行、未执行和仍未知;恢复时不扩大权限。参考答案应把裁决纳入投影,而不是删除 unknown 结果。
项目四:实现两个读取的并行批次。
要求:限制并发数;完成事件可以先到先展示;模型结果按调用顺序;取消后不启动新任务。若增加写入,必须设计屏障。参考答案要说明线程或进程取消的限制,不能只用 Promise.all 或 gather 当作全部调度协议。
项目五:接入一项真实模型服务。
要求:保持宿主验收不变;按当前官方协议转换消息;单独测试认证失败、流截断和错误分类;不把密钥写进日志。参考答案应优先做只读任务,再启用明确写权限。这个项目不属于本书已执行的测试范围。
B.5 架构研究课题
课题一:同一任务的请求可重建性。
选择一个固定上游快照,列出构造模型请求需要的所有事实。检查持久日志、配置与能力快照是否足以重建,记录不可重建的外部条件。不要因为保存了一份 transcript 就直接判定可重现。
课题二:扩展事件的异常语义。
找一条通知链、一条准入链和一条执行包装链,分别注入同步异常与异步失败,观察后续监听者与主流程。记录哪些行为来自接口契约,哪些只是当前实现。
课题三:并发的收益与代价。
用相同任务比较顺序、有界并行和无界并行,记录总时间、排队时间、内存、错误率和取消清理时间。若结果只给平均耗时,没有任务分布与故障条件,结论应视为不完整。
课题四:摘要后的约束保留。
设计带关键限制的长任务,对比压缩前后模型视图与实际完成情况。把信息保留、token 成本与目标成功分开评分,避免用摘要流畅度代替任务可靠性。
完成研究课题时,报告至少包括代码提交、实验输入、运行环境、观测证据和限制。一个谨慎但可复核的结论,远比不受版本与条件约束的排名有用。