Skip to content

Kiro CLI 内置了一套开箱即用的工具集,涵盖文件读写(read/write)、内容搜索(grep/glob)、Shell 命令执行(shell)、AWS CLI 调用(aws)、网页访问(web_search/web_fetch)、代码智能(code)、任务委托(delegate/subagent)等。每个工具都支持在 Agent 配置的 toolsSettings 字段中设置允许路径、拒绝路径或命令白名单,精确控制 AI 的访问边界。本文逐一介绍各工具的名称、别名、配置项,以及实际使用示例。

read — 读取文件与目录

工具名:read

别名:fs_readfsRead

功能:读取文件、目录及图片内容。

> what dependencies does my application have

Reading file: src/snake/package.json, all lines (using tool: read)
 ✓ Successfully read 1417 bytes from src/snake/package.json
 - Completed in 0.86s

> Your application has:
Runtime Dependencies:
- typescript (^3.5.1)
- gh-pages (^2.0.1)
Dev Dependencies:
- sass (^1.20.3)
- eslint (^5.16.0)
- jest (^29.5.0) + ts-jest

可在 Agent 配置中限定读取范围:

json
{
  "toolsSettings": {
    "read": {
      "allowedPaths": ["~/projects", "./src/**"],
      "deniedPaths": ["d1/denied/path/", "d2/denied/path/**/file.txt"]
    }
  }
}

配置项

选项类型必填说明
allowedPaths路径数组无需提示即可读取的路径,支持 glob 模式
deniedPaths路径数组明确拒绝的路径

路径支持类似 gitignore 的 glob 语法,例如 ~/temp 会匹配 ~/temp/child 及其所有子目录。

glob — 快速文件发现

工具名:glob

功能:使用 glob 模式快速查找文件,自动遵守 .gitignore。建议用此工具替代 bash 中的 find 命令。

> find all TypeScript test files in my project

Finding files matching pattern: **/*.test.ts (using tool: glob)
 ✓ Found 8 files
 - Completed in 0.12s

配置示例:

json
{
  "toolsSettings": {
    "glob": {
      "allowedPaths": ["~/projects", "./src/**"],
      "deniedPaths": ["/etc", "/var"],
      "allowReadOnly": true
    }
  }
}

配置项

选项类型默认值说明
allowedPaths字符串数组[]无需提示即可搜索的路径,支持 glob
deniedPaths字符串数组[]拒绝的路径,优先级高于允许规则
allowReadOnlybooleanfalse允许在任何路径搜索而不弹出提示

grep — 正则内容搜索

工具名:grep

功能:使用正则表达式快速搜索文件内容,自动遵守 .gitignore。建议用此工具替代 bash 中的 greprgag 命令。

> find all TODO comments in my project

Searching for pattern: TODO (using tool: grep)
 ✓ Found 12 matches across 5 files
 - Completed in 0.34s

配置选项与 glob 工具相同,支持 allowedPathsdeniedPathsallowReadOnly

write — 创建与编辑文件

工具名:write

别名:fs_writefsWrite

功能:创建新文件或编辑现有文件。

默认情况下,write 工具以内置 inline diff 展示代码变更。如需对接外部 diff 工具,参见 自定义 diff 工具

配置示例:

json
{
  "toolsSettings": {
    "write": {
      "allowedPaths": ["~/projects/output.txt", "./src/**"],
      "deniedPaths": ["/d1/denied/path/", "/d2/denied/path/**/file.txt"]
    }
  }
}

shell — 执行 Shell 命令

工具名:shell

别名:execute_bashexecute_cmd

功能:执行指定的 bash 命令。

json
{
  "toolsSettings": {
    "shell": {
      "allowedCommands": ["git status", "git fetch"],
      "deniedCommands": ["git commit .*", "git push .*"],
      "autoAllowReadonly": true
    }
  }
}

配置项

选项类型默认值说明
allowedCommands字符串数组[]无需提示即可执行的命令(支持正则)
deniedCommands字符串数组[]拒绝的命令,优先级高于允许规则
autoAllowReadonlybooleanfalse只读命令自动放行,不限制写操作
denyByDefaultbooleanfalse为 true 时,不在白名单且未自动放行的命令一律拒绝

注意:allowedCommandsdeniedCommands 使用正则语法,自动添加 \A\z 锚点,不支持 lookaround 语法。

aws — 执行 AWS CLI 操作

工具名:aws

别名:use_aws

功能:使用指定的服务名、操作名及参数调用 AWS CLI。

json
{
  "toolsSettings": {
    "aws": {
      "allowedServices": ["s3", "lambda", "ec2"],
      "deniedServices": ["eks", "rds"],
      "autoAllowReadonly": true
    }
  }
}

web_search / web_fetch — 网页访问

两个工具的功能:

工具说明
web_search搜索互联网
web_fetch从指定 URL 抓取内容

web_fetch 支持三种抓取模式,以便灵活管理上下文窗口:

模式行为适用场景
selective(默认)在搜索词匹配处前后各返回 10 句;无匹配时返回 20 句精准提取
truncated前 8000 个字符快速预览
full完整内容(最大 10MB)全面分析

URL 权限配置

json
{
  "toolsSettings": {
    "web_fetch": {
      "trusted": [".*docs\\.aws\\.amazon\\.com.*", ".*github\\.com.*"],
      "blocked": [".*pastebin\\.com.*"]
    }
  }
}
选项类型说明
trusted正则数组自动放行的 URL 模式,无需提示
blocked正则数组拒绝的 URL 模式,优先级高于 trusted

限制

  • 单页最大 10MB
  • 请求超时 30 秒
  • 最多跟随 10 次重定向
  • 仅支持 text/html 类型页面
  • 失败时自动重试 3 次

introspect — 自我感知

工具名:introspect

功能:让 Kiro CLI 回答关于自身功能、命令、设置的问题,使用官方文档作为知识源。

当你问 Kiro CLI 关于它自己的问题时,introspect 工具会自动激活:

> How do I save conversations?

Introspecting to get you the right information (using tool: introspect)

> You can save conversations using `/chat save <PATH>`.

在企业环境中如果模型下载受限,可开启 progressive 模式:

kiro-cli settings set introspect.progressiveMode true

开启后跳过模型下载,改为返回文档索引,由 LLM 按需加载。

code — 代码智能

工具名:code

功能:提供符号搜索、LSP 集成、基于模式的代码搜索与重写等代码智能能力。

> Find the UserRepository class

Searching for symbols matching: "UserRepository" (using tool: code)
 ✓ Found 1 match
 - Completed in 0.45s

> Found: Class UserRepository at src/repositories/user.repository.ts:15:1

详细文档参见 代码智能。此工具无额外配置项。

tool_search — 按需加载 MCP 工具

工具名:tool_search

功能:按需查找并加载 MCP 工具,避免每次请求都发送全量工具定义,节省上下文 token。

此工具默认自动放行(只读操作)。参数如下:

参数类型必填说明
tool_idstring二选一精确工具标识,格式 server_name::tool_name
querystring二选一搜索关键词
max_resultsinteger返回结果上限(默认 5)

delegate — 委托后台 Agent

工具名:delegate

功能:将任务委托给后台异步运行的 Agent,适合耗时较长、不需要立即结果的任务。此工具无额外配置项。

subagent — 子 Agent 并行执行

工具名:subagent

别名:use_subagent

功能:将复杂任务分解,委托给拥有独立上下文的专用子 Agent 并行执行,防止主对话上下文膨胀。

  • 最多同时启动 4 个子 Agent
  • 每个子 Agent 拥有独立上下文
  • 实时显示所有子 Agent 的运行状态

配置项

设置类型说明
availableAgentsstring[]限定可用作子 Agent 的 Agent 名称,支持 glob
trustedAgentsstring[]指定无需权限提示即可运行的 Agent
json
{
  "toolsSettings": {
    "subagent": {
      "availableAgents": ["reviewer", "tester", "analyzer", "docs-*"],
      "trustedAgents": ["reviewer", "tester"]
    }
  }
}

详细文档参见 子 Agent

其他内置工具

工具名功能配置
report打开浏览器提交 GitHub Issue 或功能请求
knowledge(实验性)跨会话存储与检索知识,支持语义搜索
thinking(实验性)将复杂任务拆解为原子步骤的内部推理机制
todo(实验性)创建和管理多步任务的 ToDo 列表
session临时覆盖当前会话的 CLI 设置,会话结束后自动重置

工具权限概述

在 Agent 配置的 allowedTools 中显式列出工具,可跳过单次确认:

json
{
  "allowedTools": [
    "read",
    "knowledge",
    "@git/git_status"
  ]
}

默认行为:

  • report 默认信任
  • readgrepglob 在当前工作目录下默认信任
  • shellwriteaws 默认需要每次确认,但可通过 toolsSettings 配置白名单放行

MCP 服务器工具在 toolsSettings 中使用 @server_name/tool_name 格式作为键:

json
{
  "toolsSettings": {
    "@git/git_status": {
      "git_user": "$GIT_USER"
    }
  }
}

常见问题

Q:如何让 shell 工具只允许只读命令,禁止所有写操作?

A:将 autoAllowReadonly 设为 true,同时将 denyByDefault 设为 true,并在 deniedCommands 中用正则匹配所有写操作命令(如 rm .*git push .*)。这样只读命令自动放行,写命令一律拒绝。

Q:web_fetch 的 selective 模式和 full 模式有什么区别,应该如何选择?

A:selective 模式(默认)只返回与搜索词匹配处附近的片段,最多几十句,适合目标明确的信息提取,可大量节省上下文 token。full 模式返回完整页面(最大 10MB),适合需要全文分析的场景,但会消耗大量上下文窗口。日常使用建议保持 selective 模式。

Q:在 Agent 配置中,allowedToolstoolsSettings 有什么区别?

A:allowedTools 是工具白名单——列出的工具在使用时不弹出确认框。toolsSettings 是细粒度权限配置——可以为特定工具设定允许路径、拒绝路径、命令白名单等规则,即使工具未在 allowedTools 中也可以通过路径/命令级别的规则自动放行部分操作。