工具

minacode 使用工具检查项目并执行操作。你描述目标,由 agent 选择工具。工具调用会在运行时显示在终端中,它们与你输入的 / 命令不同。只读工具可以并发运行;可能改变系统的操作会请求确认,除非已启用 --yolo/yolo

内置工具

工具

作用

Read

读取一个或多个 UTF-8 文件中的指定行范围。返回的每一行都有可供后续编辑验证的锚点。

缩短后的结果如下:

<Read path="minacode.py">
  <file_stat mtime_ns="..." size="222039"/>
  <total_lines>5031</total_lines>
  <range>684:687</range>
  <content hashline-numbered>
    anchor=684:234ew | class Tool:
    anchor=685:7xy0d |     NAME: ClassVar[str] = ""
    anchor=686:5exvk |     DESCRIPTION: ClassVar[str] = ""
  </content>
</Read>

684:234ew 中,684 是从零开始的行号,234ew 是该行内容的短 hash。行号用于定位编辑位置,hash 用于确认该行自读取后没有变化。

Search

使用不区分大小写的正则表达式搜索文本,也可限制路径或文件名模式。它会跳过隐藏文件、二进制文件和被 gitignore 的文件,并返回可编辑锚点。

InspectCode

通过代码索引查找定义、引用、实现、调用者、被调用者和文件 outline。它适合分析代码结构,而不是精确文本搜索。

Edit

通过插入、替换或删除内容来创建或修改一个 UTF-8 文件。执行锚点编辑时,Edit 会回传 ReadSearchInspectCode 返回的 line:hash。minacode 会在写入前立即检查当前行;如果 hash 不再匹配,编辑会被拒绝。成功的编辑会出现在 /diff 中。

Edit 确认界面预览拟议 diff

确认前,Edit 会预览拟议修改。

Bash

在项目中运行一条 shell 命令,并实时显示输出。运行超过 runtime.bash_wait_timeout 的命令会自动转为后台任务

Bash 工具调用在 minacode 中流式显示命令输出

Bash 输出会随命令运行实时出现。

Job

启动或管理后台命令:查看输出、等待、列出或停止。相同任务也可通过 /ps 查看。

Recall

当对话中只有缩短结果时,取回完整的早期工具结果或指定行范围。

RecallContext

当早期细节被 compaction 淘汰后,按 seg.N 键取回已存储的压缩对话摘录。也可以用不区分大小写的正则(如 cache prefix|task memory)搜索 segment 的标题和正文,并可限定在选中的键内。搜索结果按匹配行数设上限;segment 键列在 history index 中。

Note

维护任务 goal、plan、成功检查和已知事实。它帮助组织长任务,但不会编辑项目文件。

Plan 条目使用 [x] 表示完成、[~] 表示进行中、[ ] 表示等待、[-] 表示阻塞。

Ask

在确实需要用户决定时暂停。问题可以包含选项和推荐项。

Esc 可拒绝问题;直接输入文字可自由回答,而不必选择预设项。

Skill

按需加载已安装 skill 的完整指令。仅当存在已安装 skill 时才会出现;见 Skills

MCP

描述或调用已连接 MCP server 的工具,并读取其资源。仅在 server 连接后出现;见 MCP

代码符号索引

minacode 内置代码符号索引,用于结构化导航:无需外部 language server 即可查找定义、调用者、引用和实现。索引会按项目分别构建

它是什么

索引是从项目源文件中提取的符号(function、class、method、variable 等)静态数据库。它由 code-symbol-index 构建,支持多种语言。

索引可用时,InspectCode 可以:

  • 按名称进行模糊匹配,查找符号

  • 检查符号 — 显示其定义和成员

  • 列出引用 — 项目中的 call、read、write 和 type 引用

  • 遍历调用链 — 递归查找调用者和被调用者

  • 文件 outline — 显示单个文件的符号树

询问 MCPManager 在哪里定义时,返回的是符号本身,而不是所有提到该单词的行:

每个结果都包含文件和行范围,因此 agent 可以只打开准确位置。同一索引也可以回答“谁调用它”和“谁实现它”。

备注

没有索引时,InspectCode 会报告索引不可用。在项目中运行一次 /index 即可构建。

构建与同步

运行 /index 构建或重建索引。首次构建会扫描所有源文件;后续构建会基于之前的快照同步,因此快得多。加上 force 可从头重建。

索引已存在时,minacode 会在启动时后台刷新。Agent 完成一轮后,会自动更新少量已修改的源文件;如果大量改动导致索引过期,请运行 /index/status 会显示当前状态:

状态

含义

synced

索引已同步,可以使用

stale

索引已过期;等待后台刷新或运行 /index

syncing

正在后台刷新

missing

索引尚未创建;运行 /index

error

索引构建或同步失败;/status 会显示详情

项目索引保存在 .code-symbol-index/index.sqlite。支持 Python、JavaScript、TypeScript、Go、Rust、C、C++、Java 等语言。