词元之母TOK.MOM - 平台充值汇率 1:1 即 1 人民币充值到账 1 美元,支持一个 Key 调用近 600+ 海内外模型,限时特价模型低至 1 折,欢迎上岸!

| 工具 | 干什么 | 类比 |
|---|---|---|
| read | 读取文件或目录 | 打开文件看内容 |
| write | 创建或覆盖文件 | 另存为 |
| edit | 精确替换文件中的文本 | 查找替换 |
| bash | 执行 Shell 命令 | 在终端敲命令 |
| grep | 按内容搜索文件 | 全局搜索 |
| glob | 按文件名搜索文件 | 文件管理器里搜文件名 |
| 工具 | 作用 | 教程位置 |
|---|---|---|
| Task | 创建子 Agent 处理复杂任务 | Agent 权限与安全 |
| WebFetch | 获取网页内容 | 联网搜索 |
| TodoWrite | 任务清单管理(AI 自动使用) | — |
| Skill | 加载专业知识包 | Skill 系列 |
1. [ ] 分析代码结构
2. [x] 读取配置文件
3. [ ] 修改入口文件
4. [ ] 运行测试验证cat、sed、grep)来做文件操作。专用工具有权限检查、智能容错、性能优化,bash 命令没有这些保护。帮我看看 package.json 里有什么filePath:文件的绝对路径offset:从第几行开始读(默认第 1 行)limit:最多读多少行(默认 2000 行)packge.json,它会建议 package.json。@目录名 提及一个目录,AI 会用 read 工具获取目录内容(列出子目录和文件),输出格式友好易读。这在你想让 AI 了解项目结构时很有用。帮我创建一个 hello.txt,内容写 "Hello OpenCode"把 hello.txt 里的 "Hello OpenCode" 改成 "Hello World"oldString: "Hello OpenCode" 和 newString: "Hello World" 完成替换。| 策略 | 说明 | 例子 |
|---|---|---|
| 精确匹配 | 完全一致 | foo 匹配 foo |
| 行首尾空白忽略 | 忽略每行开头结尾的空格 | foo 匹配 foo |
| 首尾行锚点 | 用第一行和最后一行定位代码块 | 函数开头和结尾匹配 |
| 空白规范化 | 多个空格当一个 | a b 匹配 a b |
| 缩进容错 | 忽略整体缩进差异 | 2 空格缩进匹配 4 空格 |
| 转义字符处理 | 处理 \n、\t 等 | a\nb 匹配实际换行 |
| 边界修剪 | 去掉首尾空白后匹配 | 前后有空行也能匹配 |
| 上下文感知 | 用首尾行 + 中间内容相似度 | 代码块略有变化也能匹配 |
| 多处匹配 | 找到所有精确匹配 | 配合 replaceAll 使用 |
oldString 在文件中出现了多次,edit 会报错:Found multiple matches for oldString.
Provide more surrounding lines in oldString to identify the correct match.replaceAll 参数一次性替换所有匹配帮我运行一下 git status| ❌ 不要这样 | ✅ 应该这样 |
|---|---|
用 cat 读文件 | 用 read 工具 |
用 echo > file 写文件 | 用 write 工具 |
用 sed 编辑文件 | 用 edit 工具 |
用 find 搜文件 | 用 glob 工具 |
用 grep 搜内容 | 用 grep 工具 |
rm、cp、mv 等文件操作命令检查路径是否在项目目录内帮我找出项目里所有用到 console.log 的地方帮我找出所有的测试文件**/*.test.ts 之类的模式搜索。| 你想做什么 | AI 会用什么 | 示例提示词 |
|---|---|---|
| 找某个函数在哪里用了 | grep | "搜索所有调用 getUserData 的地方" |
| 找某个文件在哪 | glob | "找到所有配置文件" |
| 找某个字符串 | grep | "搜索所有 TODO 注释" |
| 列出某类文件 | glob | "列出 src 下所有 .tsx 文件" |
你:把所有 getUserData 改成 fetchUserInfo
AI 的操作流程:
1. grep 搜索 "getUserData" → 找到 20 个文件
2. 逐个文件 read 读取
3. edit + replaceAll 替换
4. bash 运行测试验证你:给 User 组件添加 email 字段
AI 的操作流程:
1. glob 搜索 "User.tsx" → 找到文件
2. read 读取文件内容
3. edit 修改接口定义和组件代码
4. 自动 LSP 检查类型错误你:登录后没有跳转到首页,帮我查一下
AI 的操作流程:
1. grep 搜索 "login" 相关代码
2. read 读取登录逻辑
3. grep 搜索 "redirect" 或 "navigate"
4. 分析代码逻辑,找到问题全部通过才能继续
| 现象 | 原因 | 解决 |
|---|---|---|
| AI 说"File not found" | 文件路径错误或拼写错误 | read 会提示相似文件名,按提示修正 |
| AI 说"Found multiple matches" | edit 的 oldString 在文件中出现了多次 | 让 AI 提供更多上下文,或用 replaceAll |
| AI 说"Output truncated" | 文件或命令输出太大 | 正常现象,AI 会自动分段读取 |
AI 用 cat 读文件 | AI 没有遵守工具分工 | 提醒它"用 read 工具读取" |
| bash 命令超时 | 默认 2 分钟超时 | 告诉 AI "这个命令可能需要 10 分钟" |
| write 报错"must read first" | 覆盖已有文件前没有先读取 | AI 会自动先 read 再 write,如果报错可以提醒它 |
| 工具 | 作用 | 记忆点 |
|---|---|---|
| read | 读取文件/目录 | 大文件自动分段,支持图片和 PDF,可用 @ 提及目录 |
| write | 创建/覆盖文件 | 必须先读后写,写完自动 LSP 检查 |
| edit | 精确字符串替换 | 9 层智能匹配,不怕缩进差异 |
| bash | 执行 Shell 命令 | 有超时和安全检查,别用它操作文件 |
| grep | 搜索文件内容 | 正则表达式,最多 100 条结果 |
| glob | 搜索文件名 | glob 模式,最多 100 条结果 |
下一课我们学习 使用图片与 AI 对话。 你会学到: 如何把截图直接粘贴给 AI Linux 上配置图片粘贴支持 引用本地图片文件让 AI 分析
更新时间:2026-02-14
| 功能 | 文件路径 | 行号 |
|---|---|---|
| 工具注册表(完整列表) | src/tool/registry.ts | 98-119 |
| read 工具定义和参数 | src/tool/read.ts | 17-204 |
| read 默认限制常量 | src/tool/read.ts | 13-15 |
| read 二进制文件检测 | src/tool/read.ts | 206-261 |
| read 图片/PDF 处理 | src/tool/read.ts | 113-139 |
| read 文件名建议 | src/tool/read.ts | 49-67 |
| write 工具定义 | src/tool/write.ts | 19-85 |
| write LSP 诊断 | src/tool/write.ts | 56-73 |
| edit 工具定义和参数 | src/tool/edit.ts | 27-155 |
| edit 9 层匹配策略 | src/tool/edit.ts | 184-580 |
| edit replace 核心函数 | src/tool/edit.ts | 618-655 |
| bash 工具定义 | src/tool/bash.ts | 55-269 |
| bash 默认超时 | src/tool/bash.ts | 22 |
| bash 命令解析 | src/tool/bash.ts | 93-145 |
| bash 输出截断常量 | src/tool/truncation.ts | 10-11 |
| bash 输出截断逻辑 | src/tool/truncation.ts | 50-105 |
| grep 工具定义 | src/tool/grep.ts | 12-150 |
| grep 结果限制 | src/tool/grep.ts | 100-101 |
| glob 工具定义 | src/tool/glob.ts | 9-80 |
| glob 结果限制 | src/tool/glob.ts | 35 |
DEFAULT_READ_LIMIT = 2000:read 工具默认读取行数MAX_LINE_LENGTH = 2000:单行最大字符数MAX_BYTES = 50 * 1024:read 工具和通用输出截断的最大字节数 50KBDEFAULT_TIMEOUT = 2 * 60 * 1000:bash 工具默认超时 2 分钟MAX_METADATA_LENGTH = 30_000:bash 工具元数据最大长度limit = 100:grep/glob 工具结果上限replace():edit 工具的核心替换逻辑,依次尝试 9 种 ReplacerisBinaryFile():检测文件是否为二进制(扩展名 + 字节分析)Ripgrep.files():glob 工具底层使用 ripgrep 搜索文件Truncate.output():bash 输出截断逻辑,超限后保存完整输出到文件