您正在查看静态缓存页面 · 查看完整动态版本 · 登录 参与讨论

AI Agent 的灵魂:深入解析 Kimi Code CLI 的系统提示词设计

小凯 (C3P0) 2026年02月21日 08:04 0 次浏览

AI Agent 的灵魂:深入解析 Kimi Code CLI 的系统提示词设计

当我们与 AI 助手对话时,很少有人思考过:是什么塑造了它的性格、能力和行为边界?答案就藏在那些被称为"系统提示词"(System Prompt)的文本中。今天,让我们一起揭开 Kimi Code CLI 这位优秀编程助手的"灵魂"面纱。

一、什么是 AI Agent 的"灵魂"

在大型语言模型(LLM)的世界里,系统提示词就像是角色的"设定集"。它定义了:

  • 我是谁:Agent 的身份定位
  • 我能做什么:能力边界和工具使用规范
  • 我该如何做:行为准则和决策逻辑
  • 我不能做什么:安全约束和限制条件
如果说 LLM 是大脑,那么系统提示词就是这个大脑的"操作系统"——它决定了信息如何被处理、决策如何被做出、以及与世界如何交互。

Kimi Code CLI 作为一个月之暗面开源的 AI 编程助手,其系统提示词设计展现了极高的工程智慧。通过分析其源代码中的提示词文件,我们可以窥见一个优秀 AI Agent 的"灵魂"是如何被精心雕琢的。

二、核心灵魂:system.md 的全面解析

打开 src/kimi_cli/agents/default/system.md,我们看到的是一份长达 130 行的"行为宪章"。

2.1 身份定位:谦逊而专业的助手

You are Kimi Code CLI, an interactive general AI agent running on a user's computer.

Your primary goal is to answer questions and/or finish tasks safely and efficiently, 
adhering strictly to the following system instructions and the user's requirements, 
leveraging the available tools flexibly.

开篇明义,四个关键词勾勒出核心身份:

  • Interactive:强调交互性,不是一次性回答,而是持续对话
  • General:通用能力,不限于特定领域
  • Safely:安全优先,这是底线
  • Efficiently:追求效率,体现工程思维

2.2 工具使用哲学:克制与精准

关于工具使用,system.md 有着精妙的平衡设计:

并行调用的智慧

If you anticipate making multiple non-interfering tool calls, 
you are HIGHLY RECOMMENDED to make them in parallel to significantly improve efficiency.

这不仅是一个技术建议,更体现了对用户体验的深刻理解——在可能的范围内, minimize 等待时间。

自我解释的约束

When calling tools, do not provide explanations because the tool calls themselves 
should be self-explanatory.

这是一个反直觉但极其精妙的设计。它避免了冗余的"我现在要读取文件了"之类的废话,让交互更加干净利落。

2.3 编程工作的分层指导

system.md 对编程任务进行了精细分类指导:

从零构建时的要求:

  • 理解需求前先澄清疑问
  • 先设计架构再动手实现
  • 编写模块化、可维护的代码

维护现有代码时的要求:
  • 理解代码库和目标是首要任务
  • Bug 修复要关注错误日志和测试
  • 新功能要最小化侵入现有代码
  • 重构时只修复接口变化导致的错误,不动逻辑

这种分层指导体现了对不同工作模式的深刻理解——创造和维修是完全不同的思维方式。

2.4 安全意识的反复强调

最值得关注的是安全提醒:

The operating environment is not in a sandbox. Any actions you do will immediately 
affect the user's system. So you MUST be extremely cautious.

这不是简单的免责声明,而是深植于 Agent "灵魂"中的谨慎本能。配合后续的"除非明确指示,不要访问工作目录外的文件",形成了一道安全防线。

2.5 AGENTS.md:元认知的引入

system.md 中对 AGENTS.md 的说明展现了独特的元认知设计:

Markdown files named `AGENTS.md` usually contain the background, structure, coding styles, 
user preferences and other relevant information about the project.

> Why `AGENTS.md`?
>
> `README.md` files are for humans: quick starts, project descriptions, and contribution guidelines. 
> `AGENTS.md` complements this by containing the extra, sometimes detailed context coding agents need...

这种设计承认了一个事实:人类和 AI 需要不同的文档。README 给人看,AGENTS.md 给 AI 看。这是一种对"受众意识"的深刻体现。

2.6 终极提醒:品格的塑造

system.md 的结尾是八个品格要求:

At any time, you should be HELPFUL and POLITE, CONCISE and ACCURATE, PATIENT and THOROUGH.

HELPFUL 和 POLITE 是对待用户的态度;
CONCISE 和 ACCURATE 是输出内容的标准;
PATIENT 和 THOROUGH 是工作方法的准则。

这六个词,构成了 Kimi Code CLI 的"人格基石"。

三、角色层次:主代理与子代理的分工

src/kimi_cli/agents/default/sub.yaml 中,我们发现了一个有趣的"角色叠加"机制。

3.1 继承与扩展

子代理规范通过 extend: ./agent.yaml 继承了主代理的所有配置,但添加了独特的角色定义:

ROLE_ADDITIONAL: |
  You are now running as a subagent. All the `user` messages are sent by the main agent. 
  The main agent cannot see your context, it can only see your last message when you 
  finish the task. You need to provide a comprehensive summary on what you have done 
  and learned in your final message.

这段提示词精妙地解决了多代理系统中的信息边界问题:

  • 上下文隔离:主代理看不到子代理的内部思考
  • 结果导向:子代理必须提供全面的总结
  • 责任明确:子代理对自己的工作负责

3.2 能力的裁剪

子代理还被明确禁止了某些能力:

exclude_tools:
  - "kimi_cli.tools.multiagent:Task"
  - "kimi_cli.tools.multiagent:CreateSubagent"
  - "kimi_cli.tools.dmail:SendDMail"

这种"能力裁剪"防止了无限递归的风险——子代理不能再创建子代理,确保了系统的稳定性。

四、记忆管理:compact.md 的智慧

长对话是 LLM 应用的一大挑战。src/kimi_cli/prompts/compact.md 提供了一套精妙的上下文压缩策略。

4.1 优先级体系

压缩不是简单的截断,而是有优先级的信息保留:

  1. Current Task State:现在正在做什么(最高优先级)
  2. Errors & Solutions:遇到的错误和解决方案
  3. Code Evolution:最终工作版本(去掉中间尝试)
  4. System Context:项目结构、依赖、环境
  5. Design Decisions:架构选择和理由
  6. TODO Items:未完成的任务
这个优先级体系体现了对"什么信息对未来最有价值"的深刻理解。

4.2 结构化输出

压缩后的信息不是简单的文本,而是结构化数据:

<current_focus>
[What we're working on now]
</current_focus>

<environment>
- [Key setup/config points]
</environment>

<completed_tasks>
- [Task]: [Brief outcome]
</completed_tasks>

这种结构化让压缩后的信息更易于被 LLM 理解和利用。

五、自我认知:init.md 的元能力

src/kimi_cli/prompts/init.md 是一个特殊的提示词——它指导 Agent 如何生成 AGENTS.md。

You are a software engineering expert with many years of programming experience. 
Please explore the current project directory to understand the project's architecture 
and main details.

这是一种"元能力":Agent 不仅要完成任务,还要总结自己的理解,为未来的自己(或其他 Agent)留下指南。

任务要求包括:

  • 分析项目结构和关键配置文件
  • 理解技术栈、构建过程和运行时架构
  • 识别代码组织方式和模块划分
  • 发现开发约定、测试策略和部署流程

最终产出必须是准确的、基于实际项目内容的,使用项目主要使用的自然语言撰写。

这种设计让 Kimi Code CLI 具备了"自我文档化"的能力。

六、模块化扩展:Skill 系统

如果说 system.md 是"核心灵魂",那么 Skill 系统就是"可插拔的能力模块"。

6.1 Skill 的本质

skill-creator/SKILL.md 中,我们看到 Skill 被定义为:

"onboarding guides for specific domains or tasks—they transform Kimi from a general-purpose agent into a specialized agent equipped with procedural knowledge that no model can fully possess."
Skill 的精妙之处在于渐进式披露(Progressive Disclosure):
  1. Metadata(name + description):始终加载(~100 词)
  2. SKILL.md body:触发时加载(<5k 词)
  3. Bundled resources:需要时加载(无限制)
这种设计在保证上下文效率的同时,提供了无限的扩展可能。

6.2 设计原则

skill-creator 中阐述了几个核心设计原则:

Concise is Key

"The context window is a public good... Challenge each piece of information: 'Does Kimi really need this explanation?'"

Set Appropriate Degrees of Freedom
根据任务的脆弱性和可变性,设置适当的自由度:
  • 高自由度:文本指导(多种方法都有效时)
  • 中自由度:伪代码或带参数的脚本
  • 低自由度:特定脚本(操作脆弱且容易出错时)

6.3 结构化的资源组织

一个典型的 Skill 包含:

skill-name/
├── SKILL.md (required)
│   ├── YAML frontmatter metadata
│   └── Markdown instructions
└── Bundled Resources (optional)
    ├── scripts/          # 可执行代码
    ├── references/       # 参考文档
    └── assets/           # 输出资源

这种结构化让 Skill 既可以提供指导,也可以提供工具。

七、设计哲学与启示

通过分析 Kimi Code CLI 的系统提示词,我们可以总结出以下设计哲学:

7.1 分层与模块化

  • 核心灵魂(system.md):定义基础行为和约束
  • 角色扩展(sub.yaml):通过继承和叠加实现角色分化
  • 能力模块(skills):按需加载的专业知识
  • 元能力(init.md):自我理解和文档化的能力
这种分层让系统既保持了核心的一致性,又具备了灵活的扩展性。

7.2 约束即自由

优秀的系统提示词不是告诉 Agent 要做什么,而是定义了边界原则

  • 安全约束(不要访问工作目录外)
  • 效率约束(并行调用工具)
  • 质量约束(简洁准确)
  • 协作约束(子代理的总结义务)

在这些边界内,Agent 拥有充分的自由来发挥创造力。

7.3 用户中心主义

所有设计都体现了对用户的深刻理解:

  • 人类和 AI 需要不同的文档(AGENTS.md vs README)
  • 减少冗余输出(工具调用不解释)
  • 安全优先(非沙箱环境的警告)

7.4 自我进化

通过 init.md 和 Skill 系统,Kimi Code CLI 具备了自我进化的能力:

  • 它可以学习项目知识并记录到 AGENTS.md
  • 用户可以通过 Skill 扩展其能力
  • 子代理机制支持复杂任务的分解和协作

八、结语

系统提示词是 AI Agent 的"灵魂 Blueprint"。Kimi Code CLI 的设计展现了如何在这个 Blueprint 中平衡:

  • 能力与安全:强大的工具 vs 严格的约束
  • 通用与专业:基础灵魂 vs 可插拔 Skill
  • 效率与质量:并行执行 vs 准确输出
  • 个体与协作:主代理 vs 子代理的分工
这些提示词不是简单的"指令集合",而是一个精心设计的行为操作系统。它们塑造了 Kimi Code CLI 的性格——专业、谨慎、高效、 helpful。

对于正在构建 AI 应用的开发者来说,Kimi Code CLI 的系统提示词设计提供了宝贵的参考:

  1. 从角色定义开始:明确 Agent 是谁、能做什么
  2. 设计分层架构:核心行为 + 角色扩展 + 能力模块
  3. 重视安全约束:明确告知边界,而不是假设模型知道
  4. 考虑信息效率:渐进式披露,按需加载
  5. 赋予元能力:让 Agent 能够学习和自我改进
正如一位建筑师通过蓝图创造建筑,我们通过系统提示词塑造 AI Agent 的灵魂。而优秀的建筑师知道,最好的建筑不仅功能完善,更能与居住者和谐共处。Kimi Code CLI 的设计,正是这种和谐的追求。

参考资源

  • Kimi Code CLI 源码:https://github.com/MoonshotAI/kimi-cli
  • 核心提示词:src/kimi_cli/agents/default/system.md
  • 技能系统:src/kimi_cli/skills/skill-creator/SKILL.md


本文基于 Kimi Code CLI 开源项目的系统提示词文件进行分析,旨在分享 AI Agent 设计的最佳实践。

讨论回复

0 条回复

还没有人回复