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

Harness Engineering

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

维度Claude Code 主入口Codex 主入口DeepSeek Harness 主入口工程验证抓手
Harnessquery.ts、toolOrchestration.tssession/turn.rs、tools/router.rsbundle/base/cordis.patch.yml、boot/app-boot六个平面与可替换组装
RuntimeStreamingToolExecutor.tstasks/regular.rs、session/turn.rscore/agent-loop/src/agent.ts状态机、取消、并发
Multi-AgentAgentTool/*、teammateMailbox.tsagent/control/*、agent_communication.rssubagent/*、tool-subagent*路由、血缘、任务所有权
Agent Loopquery.tssession/turn.rscore/agent-loop/src/agent.tsTurn/Step 与 sample-act-observe-stop
SkillSkillTool.ts、skills/*ext/skills、skills.rsskill/skill、skill-filesystem、tool-skill发现、加载、调用权限、Scope
MCPservices/mcp/client.tsmcp_tool_call.rs、session/mcp.rsmcp/mcp-client/src/{connection,tools}.ts连接代际、命名、超时、原子换代
长期记忆extractMemories.tsmemories/*session-query/*(只是可检索基础)抽取、验证、索引、缺口边界
短期记忆Session Memory、CompactContextManager、TurnStatecore/agent/src/inbox.ts、session-projectionWorking Memory 与事实日志
上下文压缩services/compact/*compact.rscompaction-basic、compaction-tool-result-pruner压力触发、Surface replacement、有界重试
上下文窗口token 预算与 Compactsession/context_window.rsllm/token-meter、llm.resolveModelInfo请求包络、容量、模型特定策略
Prompt EngineeringPrompt 常量与 Tool promptprompt templates/speccore/system-prompt、core/tools带顺序、Scope 与生命周期的编译
Context Engineeringattachments、fork contextcontext_manager/*、WorldStatecontext/*、agent.inject()来源、排序、注入、可重建
交互体验Streaming executor、审批 UIProtocol Event、TUI/App Serverhost/apiproxy、client/ui-*事件投影、断线恢复、可操作终态
Tool UsetoolExecution.tstools/*core/tools、agent-loop/tool-calls.ts校验、策略、有界并发、有序提交
MemoryMemory + Skill + TranscriptMemories + RolloutSession Log/Surface/Projection/Query类型、写入权、失效与 provenance
PlanningPlanMode、Task toolsPlan mode、update_planplan-mode、goal、tool-todo、workflow协作模式、目标、清单、执行分离
SessionsessionStorage.tssession/*、rollout/*core/session、session-persistence、session-projectionTurn/Step、barrier、恢复、投影
可观测utils/telemetry/*otel/*、turn_timing.rssession-telemetry、session-telemetry-otelLedger/Ops、脱敏、共享策略
权限utils/permissions/*PermissionProfile、Approvaluser-approval、permission-presets失败关闭、审计对、委派递减
沙箱sandbox-adapter.tssandboxing/*、linux-sandbox/*sandbox-policy、sandbox-local、fs/bash-sandboxPolicy 编译、共享根目录、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 → 下一次 query、Session JSONL → Recovery → query、Permission 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 把三条链重新连接。

21.4 DeepSeek Harness:从 Profile 组装到可恢复 Session

图表加载中…

这张图的核心是两类可替换边界:Cordis 插件树决定“当前组装了什么”,Capability seam 决定“同一能力由哪个 Provider 实施”。Agent Loop 只依赖 Session、System Prompt、LLM 和 Tool Runtime 主干;文件系统、Shell、MCP、Subagent、安全、界面和遥测都在事件或 Service 扩展点上组合,避免为每项产品功能修改循环。

详细阅读应从第 27 章开始:先用 Bundle 确认产品实际组装,再沿 Agent Loop 追一次 Turn,沿 Tool Runtime 追一次受控副作用,最后沿 Session Event 分别追到 Persistence、Projection、UI 和 Telemetry。若只阅读某个包 README,尚不能证明它已进入当前 Profile 的实际运行链。

最后更新 8/17/2026, 6:27:24 PM