
Open Agents工具系统全解析11个内置工具逐一拆解【免费下载链接】open-agentsAn open source template for building cloud agents.项目地址: https://gitcode.com/GitHub_Trending/op/open-agentsOpen Agents 是一个开源的云端 AI 智能体cloud agents构建模板其核心价值在于一套精心设计、开箱即用的内置工具系统。本文带你完整拆解 packages/agent/tools/ 目录下全部 11 个内置工具从文件读取、代码搜索到命令执行、子智能体委派逐个讲清它们的用途、使用边界与安全机制帮你快速理解云端 Agent 的工作方式。一图看懂工具全景11个内置工具速览所有工具都在 packages/agent/tools/index.ts 中统一导出可分为四大类类别工具对应文件 文件操作读文件、写文件、编辑文件read.ts、write.ts 代码搜索内容搜索、文件定位grep.ts、glob.ts⚙️ 系统执行命令执行、网络请求bash.ts、fetch.ts 智能协作任务清单、问用户、技能、子智能体todo.ts、ask-user-question.ts、skill.ts、task.ts 每个工具的源码中都写了一份详细的工具说明书description明确告诉模型何时该用、何时不该用——这是 Open Agents 值得学习的设计把使用规范直接嵌入工具定义中。文件三件套read、write、edit1. 读文件工具readFileTool定义于 packages/agent/tools/read.ts是 Agent 理解代码的第一步工作区相对路径如src/index.ts路径统一从工作区根目录解析且被严格限制在工作区内分段读取默认从第 1 行读起、最多 2000 行长文件可用offset起始行和limit行数切片读取带行号输出结果以N: 内容格式返回行号方便后续精确编辑只读不写读取目录会返回错误并提示改用 glob 或 ls一个值得注意的细节读取任何.env开头的敏感文件时工具会自动触发人工审批needsApproval机制防止密钥被意外读入对话上下文。2. 写文件工具writeFileTool同样在 packages/agent/tools/write.ts 中定位为整文件级别的写入适用于新建文件或整体重写已读过的文件父目录不存在时自动创建官方规范明确重写前必须先读一次原文件不得写入密钥、凭证等敏感内容3. 编辑文件工具editFileTool与 write 同文件导出定位是外科手术式的精准修改通过oldString要替换的原文newString替换后的内容完成替换唯一性校验原文在文件中出现多处且未开启replaceAll时工具会直接失败并提示补充上下文避免误改支持replaceAll: true做文件内批量重命名自动计算并返回修改起始行号便于前端展示 diff⚠️ 工具描述中反复强调oldString必须与 read 输出中的缩进、空白完全一致且不能带入行号前缀——这是新手写 Agent 工具时最常踩的坑。搜索双子星grep 与 glob4. 内容搜索grepToolpackages/agent/tools/grep.ts 基于 POSIX 扩展正则ERE在文件内容中查找模式可指定path文件或目录和glob文件过滤器如*.ts支持大小写不敏感结果有上限总计最多 100 条、单文件最多 10 条、单行截断 200 字符——防止搜索结果撑爆模型上下文自动跳过隐藏文件和node_modules无结果时返回_debug调试信息含实际执行的命令方便排查5. 文件定位globToolpackages/agent/tools/glob.ts 按文件名模式查找文件如**/*.ts、src/**/*.test.ts返回文件列表非目录按修改时间倒序排列——最新改动的文件排最前每个结果附带大小和修改时间默认最多 100 条底层是find命令封装兼容 Linux 与 macOS 两种find语法组合使用套路先用 glob 缩小候选文件范围再用 grep 定位内容最后用 read 精读——三步走是 Agent 探索陌生代码库的标准动作。系统与网络bash 与 webFetch6. 命令执行bashToolpackages/agent/tools/bash.ts 让 Agent 在沙箱里运行真实命令也是安全设计最重的一个工具危险命令拦截内置正则清单命中curl、rm -rf、find -delete、dd、mkfs等模式即强制人工审批见 bash.ts 中的DANGEROUS_COMMAND_PATTERNS敏感文件保护命令中引用.env、id_rsa、.ssh等敏感路径时同样触发审批2 分钟超时输出超过 5 万字符自动截断后台模式detached: true可启动npm run dev这类常驻进程并立即返回进程 ID适合在云端沙箱里跑开发服务器规范上明确禁止用cat/sed/touch等曲线球绕过文件三件套每个逻辑步骤应独立调用一次工具7. 网页抓取webFetchToolpackages/agent/tools/fetch.ts 支持 GET/POST/PUT/PATCH/DELETE/HEAD 六种 HTTP 方法最大特色是多层 SSRF 防护只允许http/https协议拦截localhost、私有 IPv410.x、192.168.x 等和私有 IPv6 地址域名解析后还会二次校验真实 IP 是否指向内网防止 DNS 重绑定攻击响应体截断在 1 万字符30 秒超时且每次调用都需要审批needsApproval: true智能协作三件套todo、ask、skill、task8. 任务清单todoWriteToolpackages/agent/tools/todo.ts 让 Agent 像人一样列 TODO适用于 3 步以上的复杂任务接收完整列表整体替换式更新三种状态todo待办、in-progress进行中同时只能有一个、completed已完成规范要求开工前标记进行中、完成后立刻标记前端如聊天界面顶部的待办面板可以实时渲染进度9. 询问用户askUserQuestionToolpackages/agent/tools/ask-user-question.ts 是唯一的客户端工具——没有服务端 execute 逻辑由前端弹窗让用户作答一次可问 1~4 个问题每题 2~4 个选项支持多选用户还能输入自定义答案Other若用户拒答工具会返回明确提示模型会继续推进而不是卡死10. 技能调用skillToolpackages/agent/tools/skill.ts 是 Agent 的快捷键机制用户输入/commit、/review-pr这类斜杠命令时模型会立即调用该工具加载对应技能技能本质是带 frontmatter 的 Markdown 文件加载时自动注入目录路径、替换$args参数技能可设置disableModelInvocation禁止模型主动调用只能用户显式触发技能发现与加载逻辑位于 packages/agent/skills/ 目录11. 子智能体委派taskToolpackages/agent/tools/task.ts 是最高级的工具——让主 Agent 派出专职子智能体subagent干活内置子智能体类型见 packages/agent/subagents/ 目录如 explorer 探索型子智能体自主执行、不可追问因此要求指令必须写清目标、步骤、约束和验收标准有步数上限防止无限循环内部工具调用对父级隔离只返回最终摘要——这是控制上下文膨胀的关键设计执行过程是流式的UI 可实时显示当前正在调用的工具 已耗时 token 用量安全底座所有工具共享的路径防护文件类工具都依赖同一套安全模块 packages/agent/tools/path-security.ts工作区围栏所有路径解析后必须仍在工作区内../越狱直接失败符号链接穿透检测通过realpath解析真实路径防止用软链接指向工作区外的敏感文件.env审批任何读/写/编辑涉及.env*文件的操作都需要人工确认总结Open Agents 工具系统的设计启示拆解完 11 个工具可以提炼出三个新手最值得借鉴的设计原则边界清晰各司其职—— 读用 read、改一小处用 edit、整体重写用 write、查内容用 grep、查文件名用 glob、跑命令用 bash工具描述里互相点名减少模型误用安全内建于工具而非外挂—— 危险命令正则、SSRF 双重解析、路径围栏、敏感文件审批全部写死在工具实现层上下文经济—— 读取限 2000 行、搜索限 100 条、抓取限 1 万字符、子智能体只回摘要处处在保护有限的模型上下文完整实现可在 packages/agent/tools/ 目录逐文件阅读每个工具都配有description使用说明inputSchema参数校验execute沙箱执行三段式结构是学习构建云端 Agent 工具系统的高质量开源范例。【免费下载链接】open-agentsAn open source template for building cloud agents.项目地址: https://gitcode.com/GitHub_Trending/op/open-agents创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考