概述
Zeus 为每次 Agent 调用构建自定义系统提示词。该提示词由多个固定模块和动态注入部分组装而成,定义了 Agent 的身份、能力边界、工具使用规范和行为准则。 系统提示词是上下文(Context)中最复杂的组件 — 即每次调用时发送给模型的完整输入。结构
系统提示词由以下部分按顺序组装:| 部分 | 类型 | 说明 |
|---|---|---|
| CORE | 固定 | 核心身份、技术能力、通用能力、限制声明 |
| SOUL | 固定 | 人格特征、价值观、沟通风格规则 |
| TOOLS | 固定+动态 | 工具层级描述,动态替换当前可用工具列表 |
| WORKFLOW | 固定 | 快速响应 vs 复杂任务判断、write_todos 使用规则 |
| MEMORY | 固定 | 记忆触发词、工具用法、类型/范围选择 |
| MODE | 按模式选择 | Agent / Ask / Plan 行为规范 |
| 当前时间 | 动态 | 日期、时区,让 Agent 感知时间 |
| Skills | 动态 | 可用技能名称 + 描述(渐进式披露) |
| Connector | 动态 | Browser / Desktop 操控指令(按连接状态) |
| MCP Prompts | 动态 | 用户选择的提示词模板 |
| Profile | 动态 | 用户偏好/技能/习惯 + 项目技术栈/约束 |
| Memories | 动态 | 与当前对话相关的历史记忆 |
| Resources | 动态 | 用户通过 @ 引用的上下文文件 |
| Sandbox | 动态 | 沙盒中已有的文件列表 |
| Attachments | 动态 | 用户上传的图片、文档 |
构建流程
System Prompt 由BaseService._build_system_prompt() 在每次 Agent 调用时重新构建。完整的组装流程:
加载方法
| 方法 | 来源 | 说明 |
|---|---|---|
_load_prompt(name) | 核心提示词目录 | 加载核心提示词文件 |
_load_mode_prompt(mode) | 模式提示词目录 | 加载模式提示词 |
_build_connector_skills_prompt() | Skills 目录 | 加载 Connector Skills |
_build_tools_description() | 运行时生成 | 动态生成工具名称、描述、参数 Schema |
CORE
核心身份声明。定义 Zeus 是什么、能做什么、不能做什么。技术能力
- 前端: TypeScript, JavaScript, React, Vue, Next.js
- 后端: Python, Node.js, Go, Java
- 数据库: PostgreSQL, MySQL, MongoDB, Redis
- 基础设施: Docker, Kubernetes, AWS, GCP
- AI/ML: 大语言模型集成、RAG、Agent 框架
通用能力
代码生成与解释、架构设计与评审、问题诊断与调试、文档编写。限制声明
- 无法访问互联网实时信息(除非使用搜索工具)
- 无法执行需要物理交互的任务
- 无法保证代码 100% 正确,建议用户测试验证
- 知识截止日期存在限制
SOUL
人格与沟通风格。确保 Agent 在所有交互中保持一致的专业形象。人格特征
| 特征 | 表现 |
|---|---|
| 专业性 | 深入理解技术问题,提供准确可靠的解决方案 |
| 友好性 | 耐心解答,鼓励学习,尊重用户技术水平 |
| 诚实性 | 坦诚局限性,不确定时主动说明,避免过度承诺 |
沟通规则
- 不使用表情符号 — 除非用户明确要求
- 使用纯文本 — 避免过度格式化
- 专业简洁 — 避免冗余和废话
- 语言一致 — 用户用什么语言,就用什么语言回复
TOOLS
工具使用指南。描述五层工具体系的优先级和选择规则。 工具按优先级分层:Middleware 层 → Filesystem 层 → External MCP 层 → Sandbox 层 → Knowledge Base 层。{tools_description} 占位符在运行时被替换为当前可用的工具列表和描述。系统遍历所有启用的工具,提取名称、描述和参数 Schema,生成格式化的工具描述列表。
关键区分
| 工具 | 用途 | 持久性 |
|---|---|---|
write_todos | 任务规划和进度跟踪 | 会话级 |
save_memory | 用户偏好和重要信息 | 永久 |
工具系统
工具层级体系、模式过滤规则和完整工具列表
WORKFLOW
任务处理方法论。指导 Agent 如何判断任务复杂度并选择执行策略。快速响应 vs 复杂任务
| 类型 | 特征 | 是否使用 write_todos |
|---|---|---|
| 快速响应 | 简单问答、代码片段解释、小修改 | 否 |
| 复杂任务 | 多步骤、需要规划、可能失败需跟踪 | 是 |
执行流程
Markdown 报告
用户明确要求或复杂分析任务完成后生成报告。简单问答、代码修改后不主动生成。MEMORY
记忆系统指令。该模块告诉 Agent 何时保存记忆、如何选择类型和范围。它是系统提示词固定模块的一部分,提供记忆操作的行为规则。高优先级触发词
当用户消息包含「记住」「remember」「我喜欢」「I like」「我不喜欢」「我的偏好」「以后」「总是」「从不」等关键词时,Agent 应立即调用save_memory。
快速参考
| 类型 | 说明 | 示例 |
|---|---|---|
preference | 用户偏好 | ”喜欢简洁的代码” |
fact | 事实信息 | ”是前端工程师” |
skill | 技能水平 | ”熟悉 React” |
habit | 使用习惯 | ”常用 TypeScript” |
constraint | 约束条件 | ”项目需要支持 IE11” |
| 范围 | 生命周期 |
|---|---|
user | 跨所有项目 |
project | 当前项目 |
session | 当前会话 |
记忆系统 — 完整架构
四层记忆模型、memU 数据架构、Memory Gate、检索排序、画像生成与 API 参考
模式提示词
根据当前模式注入不同的行为提示词,限定 Agent 的工具集和行为边界:| 模式 | 权限 | 行为 |
|---|---|---|
| Agent | 完全 | 完整工具访问,自主规划执行,支持 HITL 审批 |
| Ask | 只读 | 分析与问答,不修改文件,引导切换到 Agent 模式 |
| Plan | 只读 | 研究与规划,输出结构化方案,询问用户是否执行 |
渐进式披露
Ask 模式下写操作工具被替换为占位符 — Agent 知道工具存在但无法调用,会说明当前模式无法修改并建议切换模式。Skills 注入
当存在可用 Skills 时,Zeus 注入一个紧凑的技能元数据列表(名称 + 描述),不包含完整内容。Agent 通过load_skill 工具按需加载完整指令。
| 阶段 | 注入内容 | Token 消耗 |
|---|---|---|
| 启动 | 技能名称 + 一行描述 | 极低 |
| 按需加载 | 完整 SKILL.md 内容 | 按需 |
技能系统
SKILL.md 定义、管理 API、内置技能和渐进式加载策略
Profile 与记忆注入
系统提示词在末尾注入用户画像和相关记忆,让 Agent 无需主动检索即可感知用户上下文:- User Profile — 用户偏好、技能、习惯的聚合摘要
- Project Profile — 当前项目的技术栈、约束、目标
- Related Memories — 与当前对话内容匹配的历史记忆
_init_context() 在上下文组装阶段完成。Profile 数据来自记忆系统的 Layer 3(Profile Layer),是由记忆条目聚合而成的结构化画像。
时间处理
系统提示词包含当前日期与时间部分,让 Agent 感知时间。当 Agent 需要精确时间时,可通过工具获取。安全机制
系统提示词中的安全防护是指导性的 — 它们引导模型行为但不强制执行策略。硬性执行通过以下机制保障:| 机制 | 说明 |
|---|---|
| HITL 审批 | 敏感工具执行前必须获得用户确认 |
| 模式过滤 | Ask/Plan 模式下写操作工具不可用 |
| 工具白名单 | Auto-Run Allowlist 控制自动执行范围 |
| 沙盒隔离 | 代码在隔离环境中执行 |
设计原则
| 原则 | 说明 |
|---|---|
| 模块化 | 每个文件负责单一职责,便于独立更新和测试 |
| 动态注入 | 根据用户设置和上下文动态选择模块 |
| 渐进式披露 | Agent 模式拥有全部权限,其他模式逐级限制 |
| 紧凑高效 | 最小化固定 token 消耗,动态内容按需注入 |