Files
ai-agent-deep-dive/docs/01-system-prompt-and-orchestration.md
2026-04-02 10:09:34 +00:00

144 lines
3.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 01. 系统提示词与 Agent 编排需求文档
## 1. 系统提示词为什么不是一段固定文案
从源码结构可以反推,这个产品要求系统提示词具备“动态拼装”能力,而不是固定模板。
### 需求原因
用户环境、工具集、语言、输出风格、会话状态、MCP 连接状态都可能变化。如果系统提示词不能动态组装,就会出现:
- 规则不匹配当前会话
- 工具说明失效
- 记忆无法注入
- token 成本失控
## 2. 系统提示词层的核心需求
### 2.1 基础身份定义
系统需要明确告诉模型:
- 你是执行型协作者
- 你的主要任务是软件工程支持
- 你的输出直接给用户看
### 2.2 做任务规范
系统需要内建一套工程行为规范,例如:
- 不要乱加功能
- 不要过度抽象
- 不要假装验证过
- 先读代码再改代码
- 不要随意创建文件
这不是“风格偏好”,而是稳定性需求。
### 2.3 风险动作规范
系统需要明确哪些操作有 blast radius需要额外确认。例如
- 删除
- 推送
- 外部可见动作
- 修改共享状态
### 2.4 工具使用语法
系统不仅要告诉模型“有什么工具”,还要告诉它:
- 什么时候读文件
- 什么时候搜索
- 什么时候编辑
- 什么时候用 shell
- 什么时候并行调用
## 3. 动态区块需求
系统提示词至少需要支持以下动态区块:
1. 环境信息
2. 当前语言偏好
3. 输出风格
4. 会话局部规则
5. 记忆内容
6. MCP 指令
7. scratchpad / 临时工作区规则
8. token budget 提示
## 4. 为什么要有 Prompt cache boundary
如果每次请求都完全重造提示词,会带来两个问题:
- 成本上升
- 缓存命中下降
因此产品需要把系统提示词分成:
- 稳定前缀
- 动态后缀
这样才能兼顾灵活性与成本控制。
## 5. Agent 编排的需求本质
系统需要支持把复杂任务拆给不同角色,而不是只依赖一个万能主 agent。
### 必须支持的角色至少包括
- 通用执行角色
- 探索角色
- 规划角色
- 验证角色
### 需求原因
不同任务阶段对行为模式要求不同:
- 探索需要只读
- 规划需要结构化输出
- 实施需要可执行
- 验证需要对抗性检查
如果用一个 agent 混合承担所有角色,稳定性会下降。
## 6. 子 Agent 设计需求
### 6.1 fork 子任务
系统需要支持:
- 子任务继承上下文
- 子任务尽量共享缓存前缀
- 子任务减少主线程污染
### 6.2 background 子任务
系统需要支持:
- 后台执行
- 进度跟踪
- 结果通知
- 可恢复输出
### 6.3 isolation 子任务
系统需要支持:
- worktree 隔离
- remote 隔离(如果启用)
## 7. Prompt 写给子 Agent 的需求
主 agent 必须能够给子 agent 交接充分背景,不能只丢一个模糊命令。产品层面要明确要求:
- 写清任务目标
- 写清已知背景
- 写清约束
- 写清期望输出
## 8. 伪代码表达
```python
class SystemPromptBuilder:
def build(self, env, tools, memory, output_style, language, mcp_info):
static_sections = [
intro(),
system_rules(),
task_rules(),
action_safety(),
tool_usage_rules(),
]
dynamic_sections = [
env_section(env),
language_section(language),
output_style_section(output_style),
memory_section(memory),
mcp_section(mcp_info),
]
return static_sections + dynamic_sections
```
## 9. 产品经理视角下的总需求句
> 系统提示词层的核心需求,是把产品规则、工具语法、会话状态和环境约束组装成一套可动态生成、可缓存优化、可支持多角色协作的运行时控制平面。