ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

learn-claude-code 技术拆解:一个 Loop 加 17 个 Harness 机制如何撑起一个编码 Agent

learn-claude-code 技术拆解:一个 Loop 加 17 个 Harness 机制如何撑起一个编码 Agent learn-claude-code 技术拆解一个 Loop 加 17 个 Harness 机制如何撑起一个编码 Agent【免费下载链接】learn-claude-codeBash is all you need - A nano claude code–like 「agent harness」, built from 0 to 1项目地址: https://gitcode.com/GitHub_Trending/an/learn-claude-codelearn-claude-code 是从 0 到 1 构建 Claude Code 同款「agent harness」的课程仓库。本文以当前 17 课版本s01–s17为准拆解它的三个核心机制agent 主循环与工具调度、子代理上下文隔离、四层上下文压缩并给出可运行的验证路径。问题起点一个编码 agent 凭什么决定该停了工具调用的结果凭什么不会撑爆上下文两个 agent 共用一个目录凭什么对话互不污染多数框架把这些问题藏在黑盒里而这个仓库把每个机制单独做成一个可运行的code.py可以逐行验证。核心机制拆解Agent Loop 与工具调度循环不动只长注册表一句话原理while True里反复调模型用stop_reason判断是否执行工具结果写回messages。触发条件是模型响应的stop_reason tool_use。触发后系统分三步把 assistant 回复写入历史 → 逐个取出tool_use块查 handler 执行 → 把tool_result打包追加回对话。stop_reason不再是tool_use循环立刻退出——停止权在模型代码只负责执行。关键设计点s01 只有一个 bash 工具且直接硬编码调用s02 把调用改成TOOL_HANDLERS字典分发。新增一个工具等于往字典加一项循环代码零改动。同一行TOOL_HANDLERSblock.name支撑任意数量的工具。证据s01_agent_loop/code.py 的agent_loop函数s02_tool_use/code.py 的TOOL_HANDLERS定义第 139 行起。子代理上下文隔离新 messages终文返回一句话原理task工具是一个带独立messages列表的嵌套 agent loop只有最终文本以一条tool_result回到父对话。父代理调用task后run_subagent新建只含 prompt 的messages最多跑 30 轮「模型调用 → 工具执行」。结果上中间过程全部留在子列表里父对话只收到一段结论。边界有两条子代理工具池不含task不能再委派杜绝无限递归子代理与父代理共享工作目录但系统提示词不同父代理管规划子代理只负责给答案。证据s06_subagent/code.py 的run_subagent与SUB_TOOLS定义。四层上下文压缩先归档后摘要一句话原理每次模型调用前prepare()按固定顺序跑四道工序预算仍超才动 LLM 摘要。触发与处理步骤①tool_result_budget——最近一批tool_result总量超 20 万字符时把最大的单条超 3 万字符落盘到.task_outputs/tool-results/上下文里换成 2000 字符预览②snip_compact——消息数超 50 条中段归档到.transcripts/原位留一行标记③micro_compact——除最近 3 条外的旧tool_result替换为一行「已存于…」。到这里还没够④compact_history才把整体写盘并让模型总结。另有被动入口API 报prompt_too_long时reactive_compact保留最近 5 条消息、摘要其余、只重试一次。设计逻辑无损操作在前有损摘要殿后且摘要前原文已落盘压缩可审计。证据s08_context_compact/code.py 的ContextCompactor类与prepare方法。最小验证路径克隆仓库、装依赖、配好 key按章节顺序运行git clone https://gitcode.com/GitHub_Trending/an/learn-claude-code cd learn-claude-code pip install -r requirements.txt cp .env.example .env # 配置 ANTHROPIC_API_KEY 与 MODEL_ID python s01_agent_loop/code.py验证 s01给任务后观察终端打印$ 命令与输出模型停止调工具时循环退出。切到s08_context_compact/code.py给一个会产生大量输出的任务如递归搜索并读取多文件观察[auto compact]与[transcript saved: ...]打印并检查.transcripts/目录下的归档文件。tests/目录的断言可直接跑作交叉验证。可借鉴的思路新增工具只在调度字典加一项主循环不动这是扩展 agent 能力的最低成本方式。任何有损压缩前先把原文写盘压缩服务上下文归档服务审计。子代理上下文用独立messages列表、只回传最终文本是成本最低的上下文隔离手段。收尾learn-claude-code 把「agent harness」拆成 17 个独立可跑的code.py循环永远在那里机制长在循环之上每一层都能单独验证。【免费下载链接】learn-claude-codeBash is all you need - A nano claude code–like 「agent harness」, built from 0 to 1项目地址: https://gitcode.com/GitHub_Trending/an/learn-claude-code创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表