Skip to content

文件操作工具

文件操作是 AI 编程 Agent 的基本功。Read、Write、Edit——三个工具撑起了代码修改的全部能力。

Read

读文件。看似简单,实际有不少细节:

  • 行号前缀:输出带行号(cat -n 格式),方便 AI 精确定位
  • 范围读取:支持 offset + limit,大文件不用全读
  • 二进制检测:识别二进制文件并拒绝读取
  • 图片支持:多模态 LLM 可以直接"看"图片
  • PDF 支持:可读取 PDF,大文件需指定页码范围
  • 大小限制:单次最多 500KB
typescript
Read({
  file_path: "/src/main.tsx",
  offset: 100,   // 从第 100 行开始
  limit: 50      // 读 50 行
})

Write

整文件写入,覆盖已有内容:

  • 写入前必须先 Read 过该文件(防止盲写)
  • 新文件可以直接创建
  • 大小限制 1MB
  • 写入后自动格式化(如果项目配了 formatter)

Edit

精确替换——找到 old_string,替换为 new_string

typescript
Edit({
  file_path: "/src/app.ts",
  old_string: "const x = 1",
  new_string: "const x = 2"
})

关键约束:old_string 必须在文件中唯一。如果有多处匹配,需要提供更多上下文让它唯一,或使用 replace_all 参数。

这个设计很聪明——强制唯一匹配,避免了 AI 误改错位置的问题。

MultiEdit

批量编辑,一次调用完成多处修改。减少 API 来回次数。

安全机制

  • Write 必须先 Read(防止覆盖未知内容)
  • Edit 的 old_string 必须唯一匹配
  • 敏感文件(.env、credentials)写入需要额外确认
  • 所有文件操作都受权限系统管控