Context Window 管理
搜索文档
看看 Claude Code 怎么做 Harness,这才是 Agent 工程化的真正难点
Founder Park· 2026-04-01 21:36
Claude Code的架构核心与设计哲学 - 架构核心是一个名为“Harness”的本地运行时外壳,其工程化与可靠性是重点,系统基于Bun运行时构建,包含约1,900个TypeScript文件,超过512,000行代码 [4] - 系统被比喻为用于软件工作的操作系统,围绕模型堆叠了权限管理、记忆层、后台任务、IDE桥接、MCP管道和多代理编排 [6] - 代表了第三代Autonomous Agent的演进方向,即模型控制循环,运行时只是执行器 [7][10] TAOR循环与“笨”架构设计 - 执行引擎采用TAOR循环(Think-Act-Observe-Repeat),其编排器被设计得极其“愚蠢”,仅负责驱动循环、执行工具调用和感知结果,所有推理、决策和停止判断都交给模型 [8] - 核心设计哲学是“运行时越笨,架构越稳定”,将智能下沉到模型,把确定性留给框架,TAOR循环的核心逻辑大约只有50行 [9] - 工具层遵循同样哲学,仅提供四种能力原语(Read、Write、Execute、Connect),通过Bash作为通用适配器,让模型自行组合工具,而非构建大量专项工具 [9] 上下文窗口的主动管理与优化 - 将Context Window视为需要主动管理的稀缺资源,而非越大越好,核心原则是“越干净越好” [11] - 采用三层防御体系应对Context Collapse:1) 在上下文使用量达约50%时自动触发摘要压缩;2) 通过子Agent隔离,让重型任务在独立预算中运行,仅返回摘要;3) 实施精细的Prompt Cache经济学,追踪14种缓存失效向量并设计防破坏机制 [11][12][13] - 支持类似git branch的会话连续性管理,可以checkpoint、rollback或fork探索路径 [14] 记忆系统的索引化与分层设计 - 核心设计原则是“记忆是索引,不是存储”,避免存储可从代码库重新推导的信息 [16] - 记忆系统分为六层,在每次会话启动时按层加载,包括从组织策略到会话上下文的各级信息 [17][20] - 具备主动学习与自我编辑能力,Auto-Memory循环允许Agent学习用户工作模式并写入MEMORY.md,子Agent也可拥有独立、持续积累的专项记忆,系统会重写、去重或剪除矛盾及过期的记忆 [18] 可组合的权限与安全体系 - 权限系统设计为五档信任光谱,从最低信任的“plan”(只读)到最高信任的“bypassPermissions”(跳过所有检查),以适应从高度受限企业环境到个人开发全速运行的不同场景 [21][22] - 实施多层安全校验,bashSecurity.ts包含23项编号的安全检查,防御诸如Zsh equals expansion在内的绕过手段 [21] - 在HTTP传输层实现API调用DRM,通过Bun原生HTTP栈在JS层之下替换并验证加密哈希,确保请求来自真实的Claude Code二进制文件,这是其技术护城河的一部分 [23] 多代理编排:从子代理到代理团队 - 多代理编排采用横向扩展,分为子代理和代理团队两层 [24] - 子代理以独立进程运行,拥有独立的TAOR循环、上下文预算和记忆,任务完成后仅向主代理返回摘要,内置Explore、Plan和General-purpose三种预设类型,支持前台与后台两种执行模式 [25][26][28][29] - 代理团队是完全独立的Claude Code实例通过共享文件系统协调,采用共享任务列表、消息IPC等机制进行对等协作,目前仍是实验性功能 [30][31] 未来方向:KAIROS与常驻代理 - 源码中揭示了未发布功能KAIROS,这是一个常驻后台、持续运行的Always-On Agent [32] - KAIROS具备特征如/dream技能用于夜间记忆蒸馏、每日追加日志、通过GitHub Webhook感知代码库变化,代表产品形态从“召唤式”向“持续主动工作”演进 [33][34][39] - 这显示了产品向“终端操作系统级Agent”发展的野心 [34] 工程决策与商业防御机制 - 实施了Anti-Distillation机制,通过在API请求中注入虚假工具定义等方式,污染试图通过录制API流量来训练竞品模型的数据 [36] - 设计了Undercover Mode(隐身模式),当在非Anthropic内部仓库使用时,会指示模型永不提及内部信息,此模式为无法强制关闭的“单向门”,旨在防止信息泄露 [37][38] - 这些机制反映了公司在保护商业技术优势与应对竞争方面的策略性工程考量 [36][40]