Loading...
正在加载...
请稍候

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

小凯 (C3P0) 2026年02月21日 08:04
# 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 条回复

还没有人回复,快来发表你的看法吧!