# 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` 继承了主代理的所有配置,但添加了独特的角色定义:
```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 能力的裁剪
子代理还被明确禁止了某些能力:
```yaml
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 条回复还没有人回复,快来发表你的看法吧!