# 21. 二十个知识维度的源码索引

维度 Claude Code 主入口 Codex 主入口 面试抓手
Harness query.tstoolOrchestration.ts session/turn.rstools/router.rs 六个平面与治理闭环
Runtime StreamingToolExecutor.ts tasks/regular.rssession/turn.rs 状态机、取消、并发
Multi-Agent AgentTool/*teammateMailbox.ts agent/control/*agent_communication.rs 路由、Mailbox、任务所有权
Agent Loop query.ts session/turn.rs sample-act-observe-stop
Skill SkillTool.tsskills/* ext/skillsskills.rs 发现、加载、权限、版本
MCP services/mcp/client.ts mcp_tool_call.rssession/mcp.rs 协议、路由、审批、边界
长期记忆 extractMemories.ts memories/* 抽取、验证、索引、使用反馈
短期记忆 Session Memory、Compact ContextManager、TurnState Working Memory 与证据窗口
上下文压缩 services/compact/* compact.rs 触发、摘要、重注入、验证
上下文窗口 token 预算与 Compact session/context_window.rs 预算、保留策略、缓存稳定性
Prompt Engineering Prompt 常量与 Tool prompt prompt templates/spec 指令层级、结构化输出
Context Engineering attachments、fork context context_manager/*、WorldState 来源、排序、去重、预算
交互体验 Streaming executor、审批 UI Protocol Event、TUI/App Server 可见、可控、断线恢复
Tool Use toolExecution.ts tools/* 校验、Hook、权限、执行、结果
Memory Memory + Skill + Transcript Memories + Rollout 五类 Memory 与生命周期
Planning PlanMode、Task tools Plan mode、update_plan 执行产物、任务依赖图、审批、重新规划
Session sessionStorage.ts session/*rollout/* Thread/Turn/Step、恢复、幂等
可观测 utils/telemetry/* otel/*turn_timing.rs Trace+Metric+Rollout+Eval
权限 utils/permissions/* PermissionProfile、Approval 委托、交集、Deny、可解释性
沙箱 sandbox-adapter.ts sandboxing/*linux-sandbox/* Policy 编译、OS enforcement

# 21.1 如何用索引追踪端到端原理

索引不是“建议阅读的文件列表”,而是调用链起点。选择一个真实问题,例如“用户批准 Bash 后命令怎样执行并恢复”,先从 Loop 找到 ToolCall 创建点,再追 Router、参数规范化、Permission Decision、Sandbox backend、ToolResult、Rollout 和 UI Event;每跳记录输入类型、输出类型、稳定 ID、失败分支和所有者。若只读 permissions 目录,就无法验证批准的参数是否与沙箱执行参数相同。

推荐为每个维度画一张五列证据表:领域对象 | 创建/迁移点 | 持久化事实 | 强制边界 | 用户可见事件。例如 MCP Tool 的领域对象由连接快照创建,迁移点在 Tool Handler,持久化事实是调用及结果,强制边界是权限与远端认证,用户事件是进度/审批/终态。两套源码若对象名称不同,就比较不变量而不是强行一一对应。

源码演进后先用 rg 搜索类型和事件名,再重新确认相邻调用。文档中的行号只用于当前快照定位;面试真正应记住的是“哪一层拥有状态、哪一层实施约束、失败后从哪条持久化记录恢复”。

# 21.2 Claude Code:从产品入口到持久化与安全边界

阅读这张图时不要把箭头理解成唯一函数调用;它表示稳定职责链。最值得追踪的三个闭环是:ToolUse → ToolResult → 下一次 querySession JSONL → Recovery → queryPermission Decision → Sandbox Execution → Audit Event。若某个实现改名,只要这三个闭环仍存在,整体原理就没有改变。

# 21.3 Codex:从 RegularTask 到 Tool Handler 与 Rollout

Codex 需要重点区分 History 与 Rollout:History 服务当前模型采样,可以裁剪和压缩;Rollout 服务恢复与回放,不能因为 Context 窗口不足而删除关键事件。源码追踪时可从 run_turn 分别沿“模型输入链、工具执行链、持久化链”向下阅读,再用相同的 turn_id/step_id/call_id 把三条链重新连接。

最后更新: 2026/8/5 22:05:21