工具
ORG-2 智能体可以调用的内置工具——文件、shell、git、浏览器、计算机操作、代码智能——以及时间线、代码查看器和 Diff 查看器。
内置的 ORG-2 智能体不会直接碰你的机器。它调用的是一份注册表里的具名工具,这份注册表由应用为每个会话单独组装,而每一次调用都会写进该会话的事件记录。本页列出这套工具面、说明智能体分别在什么时候会去用哪一个,并标明相应的权限与平台限制。外部 CLI 智能体自带各自的工具——见智能体。
工具集是怎么组装出来的
注册表由四道互相独立的关卡逐层收窄,一个工具必须全部通过,模型才看得到它:
- 能力。 每个工具都声明一种能力——coding、desktop、browser、data、management、orchestration。如果某个智能体的能力集合里没有它,就永远拿不到这个工具。
- 智能体定义。 每个智能体都带一份负面清单,写法可以是单个工具名,也可以是
group:web、group:fs、group:runtime、group:browser、group:lsp这样的分组。 - 运行时依赖。 后端服务缺失的工具会被跳过——LSP 相关工具需要语言服务器管理器,
inspect_terminals需要活跃的终端会话。 - 模式。 会话模式只会减少工具,从不增加。Plan、Ask 和 Debug 会拿掉那组「写入与执行」的工具(
run_shell、await_output、edit_file、delete_file、apply_patch、worktree、manage_code_map、manage_lsp、setup_repo)。Review 则保留run_shell和await_output,因为审阅本身就意味着要跑git diff。
被拒绝的工具会从模型收到的 schema 里过滤掉,所以处在 Ask 模式的智能体绝不会先被告知 edit_file 存在、然后再挨一次拒绝。另有一个 tool_search 元工具,让智能体按关键词查找工具;对于被策略拒绝的工具,它不是藏起来,而是连同原因一起报告为不可用——MCP 工具也正是通过它按需引入的。
文件
read_file 返回文件内容并带上行号。默认最多读取 2000 行;超过 256 KB 的文件必须显式给出 offset 和 limit。offset 从 1 开始计数,并且接受负数,因此 -20 表示最后二十行。它还能抽取 PDF 文本、渲染 .ipynb 单元格,并把 JPEG、PNG、GIF 和 WebP 图片内联返回给视觉模型。
edit_file 既是写入工具,也是打补丁工具。传 file_path 加 content 用于创建或覆写;传 old_string 和 new_string 则是打补丁。如果查找串不存在,或者匹配到不止一处,这次编辑就会失败——正是这一点逼着智能体把周围足够多的上下文一起引用进来。list_dir 和 delete_file 补齐了这组工具,而 write_env_file 的存在,是为了让通过其他渠道拿到的密钥能进到 dotenv 文件里,而明文不进入对话记录。每一次写入都会留下快照;manage_file_history 让智能体自己列出、回退和重做这些快照,而下文的审阅界面给你的是同样的能力。
终端与 shell
run_shell 是大多数编码会话里最忙的工具。有两个维度值得留意。terminal_target 默认是 integrated——一个能干净地捕获输出的子进程——也可以是 external,它会打开你操作系统的终端,但无法捕获输出。mode 分 blocking 和 background;阻塞式命令超时后会被转入后台,而不是被杀掉,后台模式则立即返回一个 PID 和一个日志路径。终止一个句柄时先发 SIGTERM,等两秒,再发 SIGKILL。默认超时是 60 秒,除非智能体定义把它调高。
注意:
run_shell有两道关卡。会话的工具策略决定智能体是否可以调用它,而针对单条命令的安全检查仍然可能弹出审批提示。terminal_target: "external"一定会提示,哪怕这个工具你已经标记为始终允许。
await_output 监视后台任务——shell 的 PID 和子智能体的会话 id 都算——提供 wait_for、monitor 和 list、一个可选的等待用正则,以及最近若干行输出。inspect_terminals 则伸进 ORG-2 自己托管的终端里,列出它们、读取输出、写入输入或关闭其中一个。子进程的运行同样会按工作区写进日志文件,其中记录 PID、工作目录、命令、状态和退出码。
Git
没有专门的 git 工具。智能体通过 run_shell 来跑 git——Review 模式的提示词就要求智能体执行 git diff <base_branch>..HEAD。唯一的例外是 worktree:它可以创建一个隔离的检出(add)、回到主工作树(leave),或者列出已有的工作树,并在创建时切换该会话的工作目录。manage_workspace 负责注册和取消注册仓库,但不做克隆。
再往上的能力都归应用所有,而不归智能体。ORG-2 会监视每个已注册的仓库、维护它的分支和状态,并把分支、提交、暂存、贮藏、远程、合并、diff 和 blame 暴露给界面——源代码管理侧边栏标签页、分支选择器,以及使用 AI 生成 commit message。实际结果是:智能体的提交会以带完整命令行的 shell 调用形式出现在轨迹里,而你自己的提交根本不会出现在那儿。
代码智能
| 工具 | 作用 |
|---|---|
code_search | 基于 ripgrep 的 grep、模糊的 find_files、glob 模式、tree-sitter 的 symbols |
query_lsp | diagnostics、definition、references、hover、document_symbol、workspace_symbol,位置从 1 开始计数 |
manage_lsp | 列出、启用、启动、停止语言服务器,并返回安装命令 |
use_code_map | 查询一张持久化的符号图:search、node、callers、callees、impact、explore |
manage_code_map | 构建、重建、取消或清除该索引 |
ORG-2 内置了 28 个语言服务器的定义,从 rust-analyzer、gopls、Pyright 一直到 Marksman 和 Bash language server。manage_lsp 刻意不去执行安装命令——它把命令返回出来,把执行留给 run_shell,这样一次安装就仍然是一个你可以审批、看得见的 shell 调用。代码地图是一份持久化的符号与关系索引,这也正是 callers 和 impact 能回答 grep 答不了的问题的原因。
浏览器操作
智能体对浏览器的控制走 agent-browser sidecar,按你的操作系统和 CPU 从 vercel-labs/agent-browser 的 release 下载。对应的工具是 control_browser_with_agent_browser:智能体传入一条裸子命令,比如 open https://example.com、snapshot、screenshot /tmp/page.png 或 close,ORG-2 再补上可执行文件路径、固定的 orgii 会话、--json,以及以有头模式运行 Chrome 所需的环境。每个会话只注册一个浏览器服务商;改选 Playwright 服务商会隐藏这个工具,并注册 control_browser_with_playwright。
web_search 和 web_fetch 是另外两个工具,代价也低得多——一个是返回标题、URL 和描述的搜索,一个是把 HTML 剥成可读文本的抓取。只有配置了 Brave Search API 密钥时,web_search 才会被注册。
警告: 如果你是从源码构建、并且跳过了
pnpm run download:sidecars,那么这个 sidecar 只是个占位文件,浏览器控制不会生效。工作站(Workstation)里内嵌的浏览器面板是给人用的界面,智能体无法驱动它。
计算机操作
control_desktop_with_peekaboo 通过随应用附带的 peekaboo CLI 来操作 macOS 桌面,这个 CLI 从 steipete/peekaboo 的 release 下载。智能体传入一条子命令——see --app Safari --json、click --on "Reload this page"、type --text "hello"、hotkey cmd,shift,t、image --mode screen --path /tmp/screen.png——由 ORG-2 提供二进制路径,并对观察类命令强制要求 JSON 输出。
它是应用里管控最严的工具:
- 仅限 macOS。 在 Windows 和 Linux 上根本不会注册。
- 需要 desktop 能力。 不具备这项能力的智能体永远拿不到它。
- 两项系统权限。 macOS 的「屏幕录制」和「辅助功能」必须都已授予;ORG-2 会在启动前检查它们,并且不会触发系统弹窗。
- 中止键。 在系统任意位置真实按下 Escape,都会中止正在进行的桌面操作;ORG-2 自己合成的 Escape 不会触发它。
输入类命令会合成带有类人节奏的真实 HID 事件,而 ORG-2 窗口会在自动化期间自行隐藏,以免出现在截图里或者截走点击。
数据库与 SQL
没有面向智能体的 SQL 工具。数据库工作是一块给人用的界面:数据库面板,带连接和查询历史两个标签页、一个数据网格和一个 SQL 编辑器。本地 SQLite 文件以原生方式打开;PostgreSQL 和 MySQL 通过网络连接;Supabase、Neon 和 Turso 则作为托管版本提供。通过添加数据库连接加一个,或者在 Spotlight 里用扫描文件夹、打开文件或输入路径。需要 SQL 的智能体只能用 run_shell 走 shell。
轨迹会记录什么
每一次工具调用都会连同它的名称、完整参数、完整结果和文本内容一起持久化,参数文本还会建立全文索引——所以几个月之后,你依然能找到某个智能体跑过某条特定命令的那次会话。除此之外,每个轮次还会物化一份它碰过的文件清单,带每个文件的状态和新增、删除行数;只有真正的写入、打补丁和删除工具才计入,因此读取不会把它撑大。这份记录正是轨迹面板和回放控件读取的数据;回放讲了播放与筛选。
时间线、代码查看器与 Diff 查看器
时间线是资源管理器侧边栏里针对当前选中文件的一个区块。它把该文件的 git 提交历史和 .orgtrack 的会话谱系合并到一起,所以每一行要么是一次提交——消息、相对时间、作者、短 SHA——要么是一次动过该文件的智能体会话,显示所用的智能体、受影响的行区间,以及这份工作有没有被提交。点击某一行会打开对应的 diff。
代码查看器就是那个 CodeMirror 6 编辑器:语法高亮、自动补全、缩略图、查找替换、跳转到行、git blame、脏改动 diff 边栏,以及由语言服务器送进问题面板的内联诊断。智能体运行时不会有任何东西锁住它——冲突通过脏改动 diff 边栏和一个「从磁盘重新加载」的提示来暴露。
Diff 查看器有一个统一 / 分屏切换,而且 diff 在 Rust 里计算,所以大文件也能直接打开,不需要分批渲染。你可以从每个聊天轮次末尾那张「本轮更改了 N 个文件」卡片进到智能体的改动,它会打开范围限定在该轮次的 Diff 应用。审阅基于快照而不是基于 hunk:保留、全部保留、全部撤销和全部重做作用于每次编辑前后所取的快照,而回退一个轮次会回退在该时间点及之后的所有快照。恢复一个聊天检查点时,会另外询问你要回退还是保留自那以后改动过的文件。
下一步
有问题?欢迎到 ORG-2 Discord 提问。 Discord。