新闻详情

新闻详情

首页 / 资讯中心 / 详情

一个Agent上下文不够用?claude-code-from-scratch多Agent架构(Sub-Agent fork-return)深度解析

发布时间:2026/10/2 12:12:46来源:尧图网络
一个Agent上下文不够用?claude-code-from-scratch多Agent架构(Sub-Agent fork-return)深度解析
一个Agent上下文不够用claude-code-from-scratch多Agent架构Sub-Agent fork-return深度解析【免费下载链接】claude-code-from-scratchBuild your own Claude Code from scratch. Claude Code 开源了 50 万行代码读不动用 ~5000 行 TypeScript / Python 从零复现核心架构11 章分步教程带你理解 coding agent 精髓项目地址: https://gitcode.com/gh_mirrors/cl/claude-code-from-scratch用claude-code-from-scratch这个项目只需约 5000 行 TypeScript / Python 代码就能看懂多 Agent 架构的核心玩法——Sub-Agent fork-return 模式。当主 Agent 的上下文快被大任务撑爆时它会把子任务「fork」出去让一个拥有全新上下文窗口的Sub-Agent独立执行干完只把一份精简结论「return」回来。本文带你看懂这套机制的设计思想、三种内置子 Agent 类型和关键实现代码。为什么「上下文不够用」是单 Agent 的死穴先搞清楚问题出在哪。一个 Coding Agent 的本质是一个循环调用模型 → 执行工具 → 把结果塞回消息数组 → 重复。每读一个文件、每跑一次命令上下文都在膨胀。跑几十轮后会发生三件事窗口爆满API 直接报错对话中断这也是第 7 章 docs/07-context.md 做四层压缩的原因信噪比下降大量中间搜索过程淹没关键信息模型「看花了眼」成本失控每轮请求都要把全部历史重发一遍。压缩compact能治标但治不了根大任务的中间过程本就不该灌回主对话。解法只有一个字——分。这就是多 Agent 架构登场的原因。核心理解fork-return 模式的「分而治之」fork-return分叉-返回是最朴素也最实用的多 Agent 模式整个流程只有四步阶段发生了什么上下文视角Fork主 Agent 调用agent工具传入一个 task 描述主对话里只多了一条工具调用记录Execute子 Agent 用自己的干净上下文跑完整工具循环可多轮几十次搜索、读取都发生在「沙箱」里Return子 Agent 把最终文本结论作为tool_result交回主对话只增加一段摘要Forget子 Agent 实例销毁中间过程全部丢弃主上下文保持干净关键洞察主 Agent 的上下文里没有子 Agent 的搜索过程只有一份结论。子 Agent 读 50 个文件产生的噪音被天然隔离了——这不是压缩是「物理隔离」。三种内置子 Agent 类型explore / plan / general项目用一套配置文件就定义了三种职责不同的子 Agent源码见 src/subagent.ts类型工具权限职责典型场景explore只读三件套read_file、list_files、grep_search快速代码搜索尽快返回「这个函数在哪被调用」plan同 explore只读输出结构化实现方案「先别动手给我一份改造计划」️general除agent外的全部工具独立完成一个完整任务「把这段代码的测试补全」两个细节很值得品味1. 连 shell 都不给 explore。探索只需要读和搜索性不放run_shell——从工具层面直接断掉跑破坏性命令的可能比在 prompt 里叮嘱「请只跑只读命令」可靠得多。2. 子 Agent 不能再创建子 Agent。general类型的工具列表里过滤掉了agent工具防止 A 建 B、B 建 C 的递归嵌套指数级消耗 token——每层都有自己的系统提示词和消息历史实践中 1 层委派已覆盖绝大多数场景。实现关键代码走读简单到令人惊讶教学版实现里fork-return 的全部核心就两处改动。① 主循环里把agent工具单独拦下来steps/canonical/ts/agent.ts// The agent tool forks a read-only sub-agent with its own context. if (tu.name agent) { const summary await runSubAgent(task, this.client, MODEL); results.push({ type: tool_result, tool_use_id: tu.id, content: summary }); continue; }对主 Agent 来说agent就是一个返回字符串的普通工具——它甚至不知道也不需要知道背后跑了多长的循环。② 子 Agent 本体一个带新消息数组的迷你循环steps/canonical/ts/subagent.tsexport async function runSubAgent(task: string, client: Anthropic, model: string): Promisestring { const messages: Anthropic.MessageParam[] [{ role: user, content: task }]; // 全新上下文 const tools toolDefinitions.filter((t) EXPLORE_TOOLS.includes(t.name)); // 只读工具 while (true) { const reply await client.messages.create({ model, system: You are an explore sub-agent..., tools, messages }); // ...执行工具、回填结果直到没有 tool_use 为止 if (toolUses.length 0) return /* 拼接最终文本 */; } }注意这个while循环和主 Agent 的 agent loop结构完全一样——这正是整个项目的精髓Sub-Agent 本质上就是一个配置不同的 Agent 实例不同 system prompt、不同工具集、不同消息数组而不是另一套代码。生产版还加了一个优雅的outputBuffer设计子 Agent 的文本输出不直接打印而是收集到缓冲区runOnce执行完统一取走返回token 消耗也用「运行后 - 运行前」的增量汇总到父 Agent 的账本上避免重复计费。详见 docs/11-multi-agent.md。fork-return 为什么是学习多 Agent 的最佳起点生产环境的多 Agent 体系如 Claude Code 的 Coordinator 协调者、Swarm 蜂群模式允许 Agent 间对等通信、并行探索但复杂度是指数级上升的。fork-return 的优势恰好相反它把一切都简化到最坏情况也简单✅无共享状态子 Agent 上下文独立物理上不可能污染主对话✅控制流确定发任务 → 等结果没有消息队列、没有并发协调✅容错免费子 Agent 出错时返回一段错误字符串父 Agent 的 LLM 看到后自行决定重试或换策略不会崩溃。这也是为什么该项目选它作为「第 11 章」——在上下文管理、权限、Plan Mode 之后它是第一个让你感受到「架构 算法」的章节。动手跑起来一条命令看委派全过程无需 API key项目自带本地 mock 模型直接运行第 11 章 demosteps/run.mjsnode steps/run.mjs 11你会看到这样的输出you: Use a sub-agent to find out what greeting.txt says. → agent({task:Read greeting.txt and report its contents.}) The sub-agent reports greeting.txt says: hello from the subagent demo.主 Agent 没有自己读文件——它派了个子 Agent 去查拿回结论后作答。整个委派过程对应场景文件 steps/scenarios/delegate-to-subagent.json想改场景做实验可以直接对照它。进阶玩法在项目的.claude/agents/目录下放一个.md文件frontmatter 写name、description、allowed-tools正文写 prompt就能定义自定义子 Agent 类型项目级优先于用户级~/.claude/agents/——和 Claude Code 的扩展方式完全一致。写在最后回到标题的问题一个 Agent 上下文不够用怎么办claude-code-from-scratch 给出的答案是——不要试图塞进去fork 出去、拿回结论、忘掉过程。这个不足 200 行实现的模式浓缩了多 Agent 架构最本质的三件事上下文隔离、职责划分工具权限即职责、以及「子 Agent 只是一个配置不同的 Agent」的复用思想。想动手复现整个教程把仓库拉下来跟着 13 章走一遍即可git clone https://gitcode.com/gh_mirrors/cl/claude-code-from-scratch想深入理解上下文压缩如何与 fork-return 配合、或者 Coordinator 模式的 4 阶段工作流可以从 docs/11-multi-agent.md 和 docs/07-context.md 继续读起。【免费下载链接】claude-code-from-scratchBuild your own Claude Code from scratch. Claude Code 开源了 50 万行代码读不动用 ~5000 行 TypeScript / Python 从零复现核心架构11 章分步教程带你理解 coding agent 精髓项目地址: https://gitcode.com/gh_mirrors/cl/claude-code-from-scratch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Playwright实战指南:从零搭建到自动化测试进阶 2026/10/2 19:00:06

Playwright实战指南:从零搭建到自动化测试进阶

1. 前端自动化测试的痛点与Playwright的破局思路1.1 曾经那些让人头大的自动化测试问题做了几年测试开发,前端自动化这条路我是一路踩坑踩过来的。早年团队用的是Selenium WebDriver,配合各种语言绑定和驱动管理,光是环境搭建就能折腾大半天。…

阅读更多 →
OpenShell:用命令面板和插件重塑终端工作流,告别长命令 2026/10/2 19:00:00

OpenShell:用命令面板和插件重塑终端工作流,告别长命令

如果你也是那种每天在终端里进进出出的人,大概率跟我一样,天天被长命令、多工具切换搞得头晕。OpenShell这个开源终端增强工具就是冲这个问题来的——它是在Shell之外加的一层交互增强层,核心思路很简单:把常用命令沉淀成可检索、…

阅读更多 →
文本LLM动画创作:中间件跨越语义鸿沟的工程实践 2026/10/2 19:00:00

文本LLM动画创作:中间件跨越语义鸿沟的工程实践

从“文本LLM驱动动画创作工具”这几个词拆开看,你会发现它其实聚拢了三类完全不同的受众:做视频生成的、做3D资产的、做分镜编排的。这个赛道声量最大的是第一类,但真正想把它接进生产流程的团队,十有八九会卡在同一条沟里——模型…

阅读更多 →
Codex 安装配置与模型接入实战:从登录报错到 DeepSeek 接入的完整避坑指南 2026/10/2 18:59:53

Codex 安装配置与模型接入实战:从登录报错到 DeepSeek 接入的完整避坑指南

1. 从重度使用者的角度重新认识 Codex1.1 为什么我最终把 Codex 留在了主力工具链里我大概是从 Codex 刚开放命令行形态的时候就开始折腾的那批人。中间换过不少同类工具,也试过把 Codex 和编辑器插件、终端、桌面端来回组合,最后稳定下来的方案其实很朴…

阅读更多 →
AI机器人PPT模板:从内容骨架到演示落地的实战方法论 2026/10/2 18:59:52

AI机器人PPT模板:从内容骨架到演示落地的实战方法论

简介:这是一套聚焦人工智能与机器人主题的幻灯片模板,共二十三页,适合科技产品发布、行业分享、教学汇报等场景使用。模板以蓝色曲线与机器人元素构建科技视觉风格,既便于技术团队讲解人工智能基础概念,也适合职场人士…

阅读更多 →
模型文件5.9GB显存仅占2.7GB?低显存跑Agent的部署实战解析 2026/10/2 18:59:46

模型文件5.9GB显存仅占2.7GB?低显存跑Agent的部署实战解析

Agent项目跑了一个多月,最近调部署方案的时候发现一个挺有意思的现象:一个模型文件 5.9GB,推理时显存却只占了 2.7GB。群里好几个搞 Agent 开发的朋友都来问这是怎么做到的,我干脆把整套思路、踩坑记录和监控数据都整理出来&#…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉