> For the complete documentation index, see [llms.txt](https://tinyhumans.gitbook.io/openhuman/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tinyhumans.gitbook.io/openhuman/zh/gong-neng/native-tools/coder.md).

# 编码器

coder 家族正是让 OpenHuman 成为一个可行的编码伙伴，而不是一个聊天窗口，后者 *假装* 了解代码库。

## 该家族中的工具

| 工具               | 功能                         |
| ---------------- | -------------------------- |
| `file_read`      | 读取文件（带行号，例如 `cat -n`).     |
| `file_write`     | 写入新文件。                     |
| `edit_file`      | 定向编辑——通过匹配并替换，并进行严格的唯一性检查。 |
| `apply_patch`    | 应用统一 diff。                 |
| `glob_search`    | 按 glob 模式查找文件。             |
| `grep`           | 全树范围的 Ripgrep 风格搜索。        |
| `list_files`     | 遍历目录树。                     |
| `read_diff`      | 两个文件或版本之间的 diff。           |
| `git_operations` | 状态、diff、日志、blame、分支、提交。    |
| `run_linter`     | 运行项目的 linter。              |
| `run_tests`      | 运行项目的测试命令。                 |
| `csv_export`     | 将查询结果导出为 CSV。              |

## 为什么这些是原生工具，而不是仅靠 shell

一个 shell 工具再加上 `cat`/`sed`/`awk` 本可以 *技术上* 完成所有这些工作。之所以存在这些原生工具，是因为：

* 编辑会经过唯一性检查，因此代理不会不小心覆盖错误的行。
* 读取结果会带回行号，方便代理在后续操作中引用。
* Git 操作会把输出解析为结构化数据，而不是让代理去抓取底层 porcelain 输出。
* linter 和测试运行都接入了项目的实际命令，而不是泛泛的猜测。

## 工作区范围限制

文件系统工具遵守工作区边界——没有明确许可，代理无法在其外部读取或写入。应用其余部分也使用同一边界，用于 `OPENHUMAN_WORKSPACE`.

## 另请参阅

* [系统与实用工具](/openhuman/zh/gong-neng/native-tools/system-and-utilities.md) - `shell`, `node_exec`, `npm_exec`, `python_exec` 开发循环的其余部分。
* [智能体协作](/openhuman/zh/gong-neng/native-tools/agent-coordination.md) - `todo_write`, `spawn_subagent` 用于更大规模的重构。
