Skip to content
工具箱

工具系统

Peri 的工具清单不是固定库存。会话入口、配置、已启用插件、MCP 连接状态和中间件装配都会影响当前可用工具,因此这页介绍稳定机制,而不维护一个容易过期的总数。

文件与搜索

当前核心实现包含 Read、Write、Edit、Glob、Grep 和目录操作。具体 schema、输出截断和权限行为以当前会话暴露的工具定义为准。

Shell

Bash 用于运行构建、测试和其他命令,也可在宿主提供任务管理器时启动后台进程。Shell 命令继承启动 Peri 的用户权限。

交互与任务

会话可以按条件装配提问、Todo、Goal、Cron、工作流与子代理等能力;并非每个入口都会提供同一集合。

网络与扩展

Web、MCP、插件和其他扩展工具取决于配置及连接状态。远程内容应按不可信输入处理。

Skills

Skills 中间件可提供 skill 搜索与全文加载能力。可见 skill 来自用户、项目、配置目录、插件和内置来源。

子代理

Agent 工具把有边界的子任务交给独立 agent。可选 agent、后台能力和并发边界由当前装配决定。

每个工具通过 BaseTool::is_direct() 声明可见性:

  • Direct:schema 直接进入本轮模型的工具列表,模型可以按名称调用。
  • Deferred:保留在工具注册表中,不直接占用常驻工具列表;Agent 先发现,再通过包装工具执行。

deferred 工具的标准路径是:

SearchExtraTools → 返回匹配工具及 schema → ExecuteExtraTool → 实际目标工具

MCP、Cron、Goal 或插件贡献的能力可能走 deferred 路径。包装层会把调用解析到实际目标工具,再按目标工具名称进行权限判断,不能借包装器绕过审批。

工具可见性至少受以下条件影响:

  • TUI、print、ACP stdio 等入口采用的宿主配置;
  • --bare 是否跳过插件、hooks、LSP 等初始化;
  • MCP server 是否配置并连接成功;
  • 插件是否安装且启用;
  • 项目是否提供 skills、agents 或相关配置;
  • 运行路径是否提供后台任务、审批 broker 等依赖。

因此,文档示例中的工具名不等于你的会话一定拥有该工具。需要确认时,让 Agent 搜索对应能力,或查看 MCP、Plugin、Tasks 等状态面板。

工具可以声明别名,调用解析大小写也会被规范化;例如当前 Bash 声明 Shell,Read 声明 reading。别名属于实现细节,自动生成工具调用时会由解析器处理。用户提示词应描述意图,不必记忆别名。

参数以当前会话提供的 JSON schema 为准。不要从旧文章复制超时、结果上限或参数默认值:这些值可能由工具内部、外层 dispatcher 或宿主分别控制。

  • 工具审批依据解析后的实际目标工具,而不是包装器显示名称。
  • Bypass 会跳过审批,但不会创建 OS 沙箱。
  • 文件和 Shell 工具使用 Peri 进程拥有的权限。
  • MCP、Web 和插件结果可能携带恶意指令,不应自动信任外部内容。
  • 后台工具返回“已启动”不等于任务已经成功完成;需要继续检查任务状态和最终结果。

详见权限系统MCPSkills