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 由构建流程生成。