Skip to content

章节检查点

规则:每章先完成 5 个口述、2 个状态追踪、1 个调试、1 个代码任务,再展开“答案标准”。答案必须包含推理和证据,不能只报最终结果。

第 0 章:Agent 全景

口述(5)

  1. 用自己的话解释 Agent = LLM + 上下文 + 工具,Harness 在公式外承担什么?
  2. 为什么“会调用工具”仍不足以称为可靠 Agent?
  3. 从用户输入到最终产物,列出最小闭环。
  4. 课程中的 Skill、MCP、RAG、Hook、Goal 分别位于哪一层?
  5. 为什么可观察性、安全和评估不是最后再加的功能?

状态追踪(2)

  1. 用户请求客服退款,画出模型、上下文、检索、工具、事件和回答的状态流。
  2. 工具执行成功但最终回答无引用,指出哪一层“成功”、哪一层仍失败。

调试

一个 Agent 最终回答正确,却无法复现过程。先列缺失证据,再设计最小事件记录。

小代码任务

定义 AgentEvent(type, data, id),写一个三事件脚本表示开始、工具完成、任务完成。

答案标准

应明确模型负责推理,上下文提供当前可见信息,工具改变或读取外部世界,Harness 编排循环、权限、状态、恢复和评估;状态题须区分局部成功与端到端验收;代码须有稳定事件类型和关联 ID。

第 1 章:什么是 Agent

口述(5)

  1. 普通 LLM 调用与 Agent Loop 的本质差异是什么?
  2. Tool schema 为什么同时是接口合同和上下文成本?
  3. 模型返回工具调用后,Harness 必须做哪几步?
  4. 为什么工具结果要作为新消息回送模型?
  5. 什么时候应该停止循环,什么时候应该报错终止?

状态追踪(2)

  1. 追踪“2+3”从 user message、tool call、tool result 到 final answer 的消息序列。
  2. 模型连续请求工具直到超过迭代上限,写出最后事件和终止原因。

调试

工具实际算出 5,但模型下一轮看不到结果。检查消息 role、tool call ID 和结果回填位置。

小代码任务

实现一个只支持 add(a,b)、最多两轮的 Agent Loop,并记录结构化事件。

答案标准

需画出“模型提议—Harness 校验—工具执行—结果回填—模型继续”的闭环;停止条件必须显式;代码至少测试正常回答和迭代上限两个分支。

第 2 章:百行 Agent Loop

口述(5)

  1. 百行 Loop 中哪些代码属于协议适配,哪些属于 Harness?
  2. 工具注册表为什么比大量 if/elif 更易演进?
  3. 同步与异步工具在调用边界上如何统一?
  4. 为什么未知工具和参数错误要变成可观察失败?
  5. CapabilityPolicy 应在模型前、工具前还是两处都生效?

状态追踪(2)

  1. 一次工具抛异常后,追踪 tool.started → tool.failed → model.completed
  2. 模型请求未授权工具,说明 handler 是否应被调用以及模型收到什么。

调试

工具异常被吞掉,最终只看到空回答。为调用边界补事件、错误类型和关联 call ID。

小代码任务

给 ToolRegistry 增加重复注册拒绝、未知工具拒绝和异步 handler 测试。

答案标准

回答需把模型输出视为不可信提议;权限检查必须发生在副作用之前;代码应证明危险 handler 没有被执行,而非只断言出现错误文字。

第 3 章:记忆与 Skill 进化

口述(5)

  1. 用户记忆、知识库、运行经验和 Skill 为什么必须分开?
  2. 什么信息适合跨会话记忆,什么信息只能留在轨迹?
  3. RAG 与记忆的写入者、时效和权威性有什么不同?
  4. Skill 候选为何不能直接覆盖稳定版?
  5. 轨迹如何脱敏、聚类、评估并变成候选方法?

状态追踪(2)

  1. 用户偏好与企业退货政策冲突时,追踪信息来源、优先级和回答。
  2. 候选 Skill 从 draft 到 published,写出每一步证据与人工动作。

调试

一条轨迹含凭据样式文本,候选 Skill 把它复制进说明。定位脱敏边界并增加回归测试。

小代码任务

实现 propose(base, trajectories):去重经验、脱敏敏感片段,只返回候选对象。

答案标准

必须指出企业知识不能被用户偏好覆盖;候选发布须满足效果、成本、安全、确定性测试和人工批准;代码不能修改原 Skill,也不能扩大权限。

第 4 章:任务规划

口述(5)

  1. Plan 与 Goal 有什么不同?
  2. 好步骤怎样做到可执行、可验证、可重排?
  3. 什么时候使用静态计划,什么时候根据新证据重规划?
  4. 依赖关系为什么比简单序号更重要?
  5. 规划失败常见的“过细”和“过粗”分别是什么?

状态追踪(2)

  1. “发布客服 Skill”中评估失败,指出哪些步骤保持、哪些步骤重排。
  2. 两个无依赖任务并行,一个失败,追踪父计划状态和剩余任务。

调试

计划每一步都写“完善系统”,无法判断进度。把它改成带输入、动作、产物和验收的步骤。

小代码任务

定义 PlanStep(id, depends_on, status, evidence),实现只返回依赖已完成的 ready steps。

答案标准

答案应强调 Plan 是可变路径而非完成证据;状态追踪需保留失败证据并避免重做已验证步骤;代码要覆盖依赖未满足和并行 ready 两种情况。

第 5 章:Subagent

口述(5)

  1. Subagent 解决上下文容量还是模型能力问题?
  2. 什么任务适合委派,什么任务应留在主 Agent?
  3. 委派合同至少要包含哪些字段?
  4. 为什么 Subagent 返回摘要仍需要证据链接?
  5. 多个 Subagent 写同一文件会产生什么风险?

状态追踪(2)

  1. 主 Agent 分派两个只读研究任务,追踪父任务、子任务和聚合状态。
  2. 子任务需要用户授权,说明请求应如何回到主任务而不是静默等待。

调试

子 Agent 报告“测试通过”,但没有命令和输出。设计父 Agent 的验收与退回规则。

小代码任务

实现一个 SubtaskResult(status, summary, evidence, blockers) 校验器,拒绝 completed 但无 evidence 的结果。

答案标准

必须说明隔离上下文、明确产物、单一写入者和父级验证;代码任务要让失败结果可诊断,不能只返回布尔值。

第 6 章:Agent Team

口述(5)

  1. Agent Team 与多个独立 Subagent 的差别是什么?
  2. 共享上下文和隔离上下文各自的风险是什么?
  3. Team 中如何分配所有权,避免重复工作和写冲突?
  4. 消息、事件和共享产物分别适合传递什么?
  5. 何时并行反而比串行更慢?

状态追踪(2)

  1. 研究、实现、验证三个角色并行协作,画出依赖和汇合点。
  2. 两个成员结论冲突,追踪仲裁需要的原始证据与最终决策。

调试

三个 Agent 都在修改同一模块并互相覆盖。重构任务边界、所有权和集成顺序。

小代码任务

实现一个只允许文件 owner 提交变更的简化协调器,并测试冲突拒绝。

答案标准

回答需区分协作协议、共享状态与代码所有权;并行必须建立在真正独立的任务上;冲突解决要回到证据而非多数投票。

第 7 章:Tool、Skill 与 MCP

口述(5)

  1. Tool、Skill、MCP 分别解决执行、方法和互操作中的什么问题?
  2. SKILL.md 为什么采用渐进披露?
  3. skill.web.json 为什么不能破坏标准 Skill 的可移植性?
  4. MCP 的 tools、resources、prompts 各适合什么?
  5. 远程 MCP 为什么既需要 Bearer 鉴权又需要 scope?

状态追踪(2)

  1. 从客户端 initialize 到 tools/list、tools/call,追踪会话与权限。
  2. 只读 Key 请求创建工单,写出鉴权通过但授权失败的路径。

调试

MCP 客户端能发现工具,却在调用时报 401。区分 URL、Header、Token Verifier 与 scope 的检查顺序。

小代码任务

实现两个工具:知识检索需 kb:read,工单创建需 ticket:write,并写越权测试。

答案标准

需说清协议连接不等于授权;Skill 是给 Agent 的方法说明,Tool 是可执行能力,MCP 是暴露能力的协议;代码必须验证 handler 在缺少 scope 时未产生副作用。

第 8 章:Hooks 与评估

口述(5)

  1. Hook 为什么是生命周期控制面,而不是普通日志函数?
  2. before 与 after Hook 的能力边界是什么?
  3. 轨迹怎样从事件集合变成可验证证据?
  4. Result Verifier、Process Verifier 与质量判断分别验证什么?
  5. 为什么发布门禁不能只看一个综合分数?

状态追踪(2)

  1. before_tool_call 返回 deny,追踪后续 Hook、工具 handler、轨迹和终态。
  2. 候选成功率提升但有一个安全回退,追踪 evaluate、approve、publish 的状态。

调试

安全 Hook 抛异常后危险动作被放行。判断 fail-open/fail-closed,并补异常事件与门禁测试。

小代码任务

实现按注册顺序运行、非 allow 短路的 HookRegistry,测试 deny 后后续 Hook 不执行。

答案标准

必须给出 Event → Matcher → Handler → Decision → trajectory → verifier → gate;安全指标不可被质量抵消;代码须证明短路和安全 Hook 异常策略。

第 9 章:Goal 目标驱动

口述(5)

  1. 分别定义 turn、run、task、plan、Goal。
  2. Goal Contract 为什么要包含结果、范围、检查与边界?
  3. 如何判断“有进展”,为什么输出更多不算证据?
  4. 三个连续无进展周期后为什么应暂停?
  5. pause、waiting、resume、cancel、terminate 的语义差异是什么?

状态追踪(2)

  1. Goal 连续两次无进展、一次有进展、再两次无进展,写出计数和状态。
  2. 等待批准时收到无关事件,再收到批准事件,追踪恢复条件和 run ID。

调试

Goal 在成功检查缺证据时仍被标记 completed。定位完成前置条件并增加状态不变量。

小代码任务

为 GoalTracker 增加 checks 与 evidence,只有全部检查通过且有证据时才允许 complete。

答案标准

五个术语必须无重叠;Goal 稳定、Plan 可改;恢复要核验关联事件;代码至少拒绝证据缺失和错误恢复事件。

第 10 章:Mini Emperor 综合项目

口述(5)

  1. 一个客服请求如何经过 Web、API、RAG、引用与 SSE?
  2. SSE 恢复和 run 创建幂等为什么是两层?
  3. Skill ZIP 的下载、校验、解压和原子更新如何防攻击?
  4. Skill 自进化如何保证候选不能自行上线或扩大权限?
  5. feature/* → master 的 MR 为什么要确定性检查、Reviewer 和 Verifier 三层?

状态追踪(2)

  1. 候选从 proposal 到 publish,再 quarantine 和 rollback,列出版本状态与默认 resolve。
  2. MR 同时含 P1 与 P3,追踪报告、Artifact、MR Note、退出码和合并门禁。

调试

浏览器断线重连后重复展示已收到事件。检查 event ID、Last-Event-ID、服务端过滤和前端去重,并说明这不等于重复执行。

小代码任务

写一个端到端测试:运行客服 Skill、断言引用、从事件 1 续传、下载 ZIP 并在临时目录验证安装。

答案标准

答案必须引用真实 API、状态、文件或测试;要区分课程 v1 的内存实现与生产能力;代码不能写真实目录或暴露任何凭据,且必须包含失败断言。

总体评分记录

章节口述 /10状态 /6调试 /5代码 /6总分 /27证据位置
00
01
02
03
04
05
06
07
08
09
10

复习系统说明 · 间隔复习卡 · 教材目录

Markdown 是唯一内容源,HTML 由构建流程生成。