Skip to content

Agent 与子 Agent

Agent 定义了 AI 的行为方式,包括系统提示词、可用工具和子 Agent。你可以使用内置 Agent,也可以创建自定义 Agent。

内置 Agent

Kimi Code CLI 提供两个内置 Agent。启动时可以通过 --agent 参数选择:

sh
kimi --agent okabe

default

默认 Agent,适合通常情况使用。启用的工具:

AgentAskUserQuestionSetTodoListShellReadFileReadMediaFileGlobGrepWriteFileStrReplaceFileSearchWebFetchURLEnterPlanModeExitPlanModeTaskListTaskOutputTaskStop

okabe

实验性 Agent,用于实验新的提示词和工具。在 default 的基础上额外启用 SendDMail

自定义 Agent 文件

Agent 使用 YAML 格式定义。通过 --agent-file 参数加载自定义 Agent:

sh
kimi --agent-file /path/to/my-agent.yaml

基本结构

yaml
version: 1
agent:
  name: my-agent
  system_prompt_path: ./system.md
  tools:
    - "kimi_cli.tools.shell:Shell"
    - "kimi_cli.tools.file:ReadFile"
    - "kimi_cli.tools.file:WriteFile"

继承与覆盖

使用 extend 可以继承其他 Agent 的配置,只覆盖需要修改的部分:

yaml
version: 1
agent:
  extend: default  # 继承默认 Agent
  system_prompt_path: ./my-prompt.md  # 覆盖系统提示词
  exclude_tools:  # 排除某些工具
    - "kimi_cli.tools.web:SearchWeb"
    - "kimi_cli.tools.web:FetchURL"

extend: default 会继承内置的默认 Agent。你也可以指定相对路径继承其他 Agent 文件。

配置字段

字段说明是否必填
extend继承的 Agent,可以是 default 或相对路径
nameAgent 名称是(继承时可省略)
system_prompt_path系统提示词文件路径,相对于 Agent 文件是(继承时可省略)
system_prompt_args传递给系统提示词的自定义参数,继承时会合并
tools工具列表,格式为 模块:类名是(继承时可省略)
exclude_tools要排除的工具
subagents子 Agent 定义

系统提示词内置参数

系统提示词文件是一个 Markdown 模板,可以使用 ${VAR} 语法引用变量,也支持 Jinja2 的 {% include %} 指令来引入其他文件。内置变量包括:

变量说明
${KIMI_NOW}当前时间(ISO 格式)
${KIMI_WORK_DIR}工作目录路径
${KIMI_WORK_DIR_LS}工作目录文件列表
${KIMI_AGENTS_MD}从项目根目录到工作目录逐层合并的 AGENTS.md 内容(包括 .kimi/AGENTS.md
${KIMI_SKILLS}加载的 Skills 列表
${KIMI_ADDITIONAL_DIRS_INFO}通过 --add-dir/add-dir 添加的额外目录信息

你也可以通过 system_prompt_args 定义自定义参数:

yaml
agent:
  system_prompt_args:
    MY_VAR: "自定义值"

然后在提示词中使用 ${MY_VAR}

系统提示词示例

markdown
# My Agent

You are a helpful assistant. Current time: ${KIMI_NOW}.

Working directory: ${KIMI_WORK_DIR}

${MY_VAR}

在 Agent 文件中定义子 Agent

子 Agent 可以处理特定类型的任务。在 Agent 文件中定义子 Agent 后,主 Agent 可以通过 Agent 工具启动它们:

yaml
version: 1
agent:
  extend: default
  subagents:
    coder:
      path: ./coder-sub.yaml
      description: "处理编码任务"
    reviewer:
      path: ./reviewer-sub.yaml
      description: "代码审查专家"

子 Agent 文件也是标准的 Agent 格式,通常会继承主 Agent:

yaml
# coder.yaml
version: 1
agent:
  extend: ./agent.yaml  # 继承主 Agent
  system_prompt_args:
    ROLE_ADDITIONAL: |
      你现在作为子 Agent 运行...

内置子 Agent 类型

默认 Agent 配置包含三种内置子 Agent 类型,各自有不同的工具策略和适用场景:

类型用途可用工具
coder通用软件工程:读写文件、运行命令、搜索代码ShellReadFileGlobGrepWriteFileStrReplaceFileSearchWebFetchURL
explore快速只读代码探索:搜索、阅读、总结ShellReadFileGlobGrepSearchWebFetchURL(无写入工具)
plan实现规划与架构设计:分析文件、制定方案ReadFileGlobGrepSearchWebFetchURL(无 Shell、无写入工具)

所有子 Agent 类型均不可嵌套使用 Agent 工具(即子 Agent 不能创建自己的子 Agent)。Agent 工具仅在根 Agent 中可用。

子 Agent 的运行方式

通过 Agent 工具启动的子 Agent 会在独立的上下文中运行,完成后将结果返回给主 Agent。每个子 Agent 实例在会话目录的 subagents/<agent_id>/ 下维护独立的上下文历史和元数据,可以被多次恢复继续使用。这种方式的优势:

  • 隔离上下文,避免污染主 Agent 的对话历史
  • 可以并行处理多个独立任务
  • 子 Agent 可以有针对性的系统提示词
  • 持久实例可跨多次调用保留上下文

内置工具列表

以下是 Kimi Code CLI 内置的所有工具。

Agent

  • 路径kimi_cli.tools.agent:Agent
  • 描述:启动或恢复子 Agent 实例处理聚焦任务。内置三种子 Agent 类型:coder(通用软件工程)、explore(快速只读代码探索)、plan(实现规划与架构设计)。每个实例维护独立的上下文历史,支持前台或后台运行。
参数类型说明
descriptionstring任务简短描述(3-5 词)
promptstring任务详细描述
subagent_typestring内置子 Agent 类型,默认 coder
modelstring可选的模型覆盖
resumestring可选的 Agent 实例 ID,用于恢复现有实例
run_in_backgroundbool是否在后台运行,默认 false

AskUserQuestion

  • 路径kimi_cli.tools.ask_user:AskUserQuestion
  • 描述:在执行过程中向用户展示结构化问题和选项,收集用户偏好或决策。适用于需要用户在多个方案中做出选择、解决模糊指令或收集需求信息的场景。不应过度使用——只在用户的选择真正影响后续操作时才调用。
参数类型说明
questionsarray问题列表(1–4 个问题)
questions[].questionstring问题文本,以 ? 结尾
questions[].headerstring短标签,最多 12 字符(如 AuthStyle
questions[].optionsarray可选项(2–4 个),系统会自动添加 "Other" 选项
questions[].options[].labelstring选项标签(1–5 词),推荐选项可追加 (Recommended)
questions[].options[].descriptionstring选项说明
questions[].multi_selectbool是否允许多选,默认 false

SetTodoList

  • 路径kimi_cli.tools.todo:SetTodoList
  • 描述:管理待办事项列表,跟踪任务进度
参数类型说明
todosarray待办事项列表
todos[].titlestring待办事项标题
todos[].statusstring状态:pendingin_progressdone

Shell

  • 路径kimi_cli.tools.shell:Shell
  • 描述:执行 Shell 命令。需要用户审批。根据操作系统使用对应的 Shell(Unix 使用 bash/zsh,Windows 使用 PowerShell)。
参数类型说明
commandstring要执行的命令
timeoutint超时时间(秒),默认 60,前台最大 300 / 后台最大 86400
run_in_backgroundbool是否作为后台任务运行,默认 false
descriptionstring后台任务的简短描述,run_in_background=true 时必填

设置 run_in_background=true 后,命令会作为后台任务启动,工具立即返回任务 ID,AI 可以继续执行其他操作。任务完成时系统自动发送通知。适用于耗时的构建、测试、监控等场景。

ReadFile

  • 路径kimi_cli.tools.file:ReadFile
  • 描述:读取文本文件内容。单次最多读取 1000 行,每行最多 2000 字符。工作目录外的文件需使用绝对路径。每次读取都会在消息中返回文件总行数。
参数类型说明
pathstring文件路径
line_offsetint起始行号,默认 1。支持负数表示从文件末尾读取(如 -100 读取最后 100 行),绝对值不超过 1000
n_linesint读取行数,默认/最大 1000

ReadMediaFile

  • 路径kimi_cli.tools.file:ReadMediaFile
  • 描述:读取图片或视频文件。文件最大 100MB。仅当模型支持图片/视频输入时可用。工作目录外的文件需使用绝对路径。
参数类型说明
pathstring文件路径

Glob

  • 路径kimi_cli.tools.file:Glob
  • 描述:按模式匹配文件和目录。最多返回 1000 个匹配项,不允许以 ** 开头的模式。支持搜索已发现的 Skill 根目录,路径中的 ~ 会自动展开为用户主目录。
参数类型说明
patternstringGlob 模式(如 *.pysrc/**/*.ts
directorystring搜索目录,默认工作目录
include_dirsbool是否包含目录,默认 true

Grep

  • 路径kimi_cli.tools.file:Grep
  • 描述:使用正则表达式搜索文件内容,基于 ripgrep 实现
参数类型说明
patternstring正则表达式模式
pathstring搜索路径,默认当前目录
globstring文件过滤(如 *.js
typestring文件类型(如 pyjsgo
output_modestring输出模式:files_with_matches(默认)、contentcount_matches
-Bint显示匹配行前 N 行
-Aint显示匹配行后 N 行
-Cint显示匹配行前后 N 行
-nbool显示行号
-ibool忽略大小写
multilinebool启用多行匹配
head_limitint限制输出行数

WriteFile

  • 路径kimi_cli.tools.file:WriteFile
  • 描述:写入文件。写入操作需要用户审批。写入工作目录外文件时,必须使用绝对路径。
参数类型说明
pathstring绝对路径
contentstring文件内容
modestringoverwrite(默认)或 append

StrReplaceFile

  • 路径kimi_cli.tools.file:StrReplaceFile
  • 描述:使用字符串替换编辑文件。编辑操作需要用户审批。编辑工作目录外文件时,必须使用绝对路径。
参数类型说明
pathstring绝对路径
editobject/array单个编辑或编辑列表
edit.oldstring要替换的原字符串
edit.newstring替换后的字符串
edit.replace_allbool是否替换所有匹配项,默认 false

SearchWeb

  • 路径kimi_cli.tools.web:SearchWeb
  • 描述:搜索网页。需要配置搜索服务(Kimi Code 平台自动配置)。
参数类型说明
querystring搜索关键词
limitint结果数量,默认 5,最大 20
include_contentbool是否包含页面内容,默认 false

FetchURL

  • 路径kimi_cli.tools.web:FetchURL
  • 描述:抓取网页内容,返回提取的主要文本内容。如果配置了抓取服务会优先使用,否则使用本地 HTTP 请求。
参数类型说明
urlstring要抓取的 URL

Think

  • 路径kimi_cli.tools.think:Think
  • 描述:让 Agent 记录思考过程,适用于复杂推理场景
参数类型说明
thoughtstring思考内容

SendDMail

  • 路径kimi_cli.tools.dmail:SendDMail
  • 描述:发送延迟消息(D-Mail),用于检查点回滚场景
参数类型说明
messagestring要发送的消息
checkpoint_idint要发送回的检查点 ID(>= 0)

EnterPlanMode

  • 路径kimi_cli.tools.plan.enter:EnterPlanMode
  • 描述:请求进入 Plan 模式。调用后会向用户展示审批请求,用户可以选择同意或拒绝进入 Plan 模式。在 YOLO 模式下,仅在用户明确要求规划或存在重大架构歧义时使用。详见 Plan 模式

此工具不接受参数。

ExitPlanMode

  • 路径kimi_cli.tools.plan:ExitPlanMode
  • 描述:在 Plan 模式下完成方案后提交审批。调用前需先将方案写入 plan 文件,此工具会读取 plan 文件内容并展示给用户审批。用户可以选择某个实施路径(退出 Plan 模式并开始执行)、拒绝(保持 Plan 模式等待反馈)或提供修改意见。详见 Plan 模式
参数类型说明
optionslist | null当方案包含多个可选实施路径时,列出 2–3 个选项供用户选择。每个选项有 label(1–8 个词的简短标签,可附加 "(Recommended)")和可选的 description(方案摘要)。不可使用 "Approve"、"Reject"、"Revise" 作为标签名。

TaskList

  • 路径kimi_cli.tools.background:TaskList
  • 描述:列出当前会话中的后台任务。适用于上下文压缩后重新获取任务 ID,或检查哪些任务仍在运行。
参数类型说明
active_onlybool是否仅列出活跃任务,默认 true
limitint返回的最大任务数(1–100),默认 20

TaskOutput

  • 路径kimi_cli.tools.background:TaskOutput
  • 描述:获取后台任务的输出和状态。默认为非阻塞查询,返回当前状态和输出快照;如果输出被截断,可使用 ReadFile 分页读取完整日志。
参数类型说明
task_idstring要查询的任务 ID
blockbool是否等待任务完成,默认 false
timeoutintblock=true 时的最大等待秒数(0–3600),默认 30

TaskStop

  • 路径kimi_cli.tools.background:TaskStop
  • 描述:停止正在运行的后台任务。需要用户审批。仅在任务必须取消时使用;对于正常完成的任务,应等待自动通知。在 Plan 模式下不可用。
参数类型说明
task_idstring要停止的任务 ID
reasonstring停止原因(可选),默认 "Stopped by TaskStop"

工具安全边界

工作区范围

  • 文件读写通常在工作目录(及通过 --add-dir/add-dir 添加的额外目录)内进行
  • 读取工作区外文件需使用绝对路径
  • 写入和编辑操作都需要用户审批;操作工作区外文件时,必须使用绝对路径

审批机制

以下操作需要用户审批:

操作审批要求
Shell 命令执行每次执行
文件写入/编辑每次操作
MCP 工具调用每次调用
停止后台任务每次停止