@Salad95238547: https://x.com/Salad95238547/status/2072971194165563600
摘要
深入解析ClaudeCode的工具系统设计,将文件读取、Shell命令、子Agent等统一为Tool接口,并介绍了并发批处理、异步任务和MessageQueueManager的实现机制。
查看缓存全文
缓存时间: 2026/07/03 14:39
ClaudeCode 的工具系统:一切皆 Tool
设计思想
无论是读一个文件、执行一条 shell 命令、还是派出一个能自主运行几十步的子 agent,对 LLM 来说都一样:输出一个 tool_use block,等待一个 tool_result。
三行,三个工具调用,LLM 视角完全对称。
Tool接口,统一的合约
每个tool实现同一套接口,核心是:
call() 返回什么无关紧要。Read 返回文件内容,Bash 返回 stdout,AgentTool 返回子 agent 的最终回复。。对调用方而言都是一个字符串。
LLM一次可以请求多个工具,系统把他分成几个批次。
-
对于连续的只读工具(isConcurrencySafe = true),合并为并发批次
-
任何的写操作,独立为串行批次
这里有人就要问了,如果其中有一个后台的toolcall怎么办??
事实上,后台 tool 对 batch 来说是个“瞬间完成的工具“
一旦调用了异步tool,会瞬间返回一个{ status: ‘async_launched’, agent_id: ‘…’ }。当后台任务真正跑完的时候,会将结果存入messageQueueManager;
这里来打岔简单说两嘴messageQueueManager。简单来说可以把他理解成“claudecode的输入队列,存放那些还没来得及处理的 事件”;
一共有几种优先级:1. now,这种事件会立刻终止当前turn;例如用户输出了esc;2. next, 当前 turn 结束后、下一次 LLM 调用前,比如用户正常输入消息,会在下一个turn触发。3.later,等本轮完全空闲再处理,例如后台任务的完成通知等。
出队列时按优先级高低取,同优先级内 FIFO。
简单说在claudecode的用户中的任意输入其实都会经过Messagequeuemanager做一下管理。(除了slash command)
回到之前的异步tool,当异步任务派出后,llm会立即收到“后台任务已派出!任务号为xxxx”的消息,如果llm忍不住了也可以提早去看;当任务结束后,结果会以later的优先级存储在messageQueueManager中,在当前turn结束的时候会被注入到上下文[以<task_notification>…</task_notification>的方式]
Agent tool,最重的tool,但也是tool
AgentTool 是整个系统里最“重“的 Tool,但它遵循完全相同的接口。
它的 call() 内部做的事情是:启动一个全新的 QueryEngine,配备自己的消息历史、工具池、权限上下文,然后独立运行完整的 agent loop(LLM → 工具 → LLM → 工具…),直到任务完成。
从外面看,它和 Read 没有任何区别,进去一个 input,出来一个结果字符串。
那么当然,他也就是同步和异步的处理方案,和上述过程完全一致。
相似文章
@thinkszyg: https://x.com/thinkszyg/status/2066837941477920993
一篇面向开发者(尤其是AI编码工具使用者)的实用指南,介绍如何安全高效地使用Claude Code、Codex等工具进行多Agent并行开发,重点包括任务拆解、文件隔离(worktree)、边界控制、顺序合并等最佳实践,避免文件冲突和混乱。
@spandan_madan: https://x.com/spandan_madan/status/2067320100911493454
对Claude Code工具架构的详细技术分析,涵盖工具接口、注册表、调度管道和并发调度器,这些使AI能够执行43+种工具,如文件读取、shell命令和网络搜索。
@yaohui12138: 已看完,整理一些精华分享给大家: 他在这场分享里主要拆解了一个被90%用户忽略的核心机制,也就是:CLAUDE.md的上下文注入系统 这套系统分三个层级: 企业级:组织强制规则,任何个人设置无法排除 项目级:团队共享的代码规范和工作流 本…
The article shares key insights from a workshop by Boris on using CLAUDE.md for context injection in Claude, highlighting three usage levels, specific commands like /loop, and plan mode to improve developer workflows.
@Khazix0918: https://x.com/Khazix0918/status/2070403772703285575
本文介绍了在Claude Code中使用Hook的六种玩法,包括权限弹窗、开机日程播报、摘要卡片、文件自动整理、久坐提醒和长任务推送,展示了如何通过事件驱动自动化来提升AI工作流的效率。
@vincemask: Claude 的高级用法,在于搭建一套能够自动拆解任务、生成提示词、分配角色并审查结果的 Agent 系统。 一套高效的 Claude 工作流通常包括: 1、使用 CLAUDE.md 等文件沉淀长期项目上下文 2、让多个 Agent 分别…
介绍了Claude的高级用法,即搭建自动拆解任务、生成提示词、分配角色并审查结果的Agent系统,包括使用CLAUDE.md等文件沉淀上下文,多Agent协作构建自动化工作流。