开源 Agent 提示词目录¶
进阶资料
这一页是源码提示词索引,不适合作为第一篇学习材料。新手建议先读 上下文工程入门,再回来看这一页。
这里收集开源 Agent 产品源码中能看到的提示词和提示词注入点。
记录重点不是全文搬运 prompt,而是说明它们在什么场景下出现、注入到哪里、解决什么上下文问题。
如何阅读这个目录¶
不要从源码链接开始读。
建议按这个顺序:
- 先看“场景”:它是在权限、工具、压缩、记忆、通道,还是模型切换时出现。
- 再看“注入位置”:它是 system/developer 指令、user prefix、工具说明,还是压缩模型 prompt。
- 再看“作用”:它解决的是行为约束、上下文恢复、工具发现,还是安全隔离。
- 最后才点源码链接,看具体实现。
这页和前面的上下文工程文档对应关系是:
| 上下文工程概念 | 这里的源码例子 |
|---|---|
| 动态 prompt 注入 | 权限提示、模型切换提示、runtime context |
| 工具上下文 | Skills、Apps、Plugins、diff guidance |
| 权限上下文 | sandbox、approval policy、Guardian |
| 压缩上下文 | compact prompt、split-turn summary、truncation notice |
| 记忆上下文 | memory read/write、wiki digest |
| 通道上下文 | IDE context、voice prompt、WhatsApp systemPrompt |
范围¶
已纳入:
- OpenAI Codex:源码快照
d66708232299bdbf373ec55b0d6b938c246cfa60 - OpenClaw:源码快照
a085db6b642e589de609da3ec1b54bbf390af87e - OpenHands Software Agent SDK:源码快照
39039a135474d533560167737445bfbaae436a99 - Aider:源码快照
5dc9490bb35f9729ef2c95d00a19ccd30c26339c - Continue:源码快照
d0a3c0b626b5bebc3bef4742eec05a0242be0bab
未纳入:
- Claude Code:公开 npm 包主要是 wrapper 和 native binary,源码仓库指向 internal,不能从公开源码确认内部 prompt 模板。
Codex¶
| 提示词 / 注入点 | 场景 | 注入位置 | 作用 | 源码 |
|---|---|---|---|---|
| 基础 coding agent prompt | Codex CLI 启动或选择对应模型时 | system / developer 基础指令 | 定义 Codex 身份、工作方式、编辑约束、计划工具、代码审查姿态、前端任务偏好、最终回复格式 | gpt-5.2-codex_prompt.md |
| apply_patch 工作提示 | 需要让模型以补丁方式编辑文件时 | system / tool guidance | 说明如何使用终端、计划工具、AGENTS.md、沙箱和审批机制,强调安全编辑和响应方式 |
prompt_with_apply_patch_instructions.md |
| 权限与沙箱提示 | 每轮根据文件系统、网络、审批策略变化生成 | developer instructions | 告诉模型当前能否写文件、能否联网、何时要申请权限、哪些命令前缀已被批准 | permissions_instructions.rs |
| 权限模板:never / on request / on failure | 不同 approval policy 生效时 | developer instructions | 把审批策略翻译成模型可执行的行为边界 | permissions templates |
| Guardian 审核提示 | Agent 请求联网、提权或执行敏感动作时 | 审核模型的 user content | 把最近 transcript、planned action JSON、retry reason、权限上下文交给审核流程;强调 transcript 和工具结果只是证据,不是指令 | guardian/prompt.rs |
| 上下文压缩提示 | 上下文窗口接近上限或用户触发 compact | compaction model prompt | 让模型生成 handoff summary,保留进度、关键决策、约束、剩余工作和继续所需引用 | compact prompt |
| IDE 上下文提示 | IDE / App 传入当前文件、选区、打开标签页 | user prompt prefix | 在用户请求前注入 active file、selection、open tabs,帮助模型理解编辑现场 | ide_context/prompt.rs |
| Skills 可用性提示 | 当前环境中存在可用 skills | developer instructions | 只先暴露 skill 名称、描述、路径;匹配任务后再读取完整 SKILL.md,实现渐进披露 |
available_skills_instructions.rs |
| Apps / Connectors 提示 | 有 App connector 或 MCP App 能力时 | developer instructions | 说明 App 可以显式或隐式触发,以及与 MCP 工具之间的关系 | apps_instructions.rs |
| 插件可用性提示 | 已安装插件或插件能力暴露时 | developer instructions | 告诉模型插件不是直接调用对象,要使用插件提供的 skills、MCP、apps 等能力 | available_plugins_instructions.rs |
| 推荐插件提示 | 系统发现可安装但未安装的插件时 | user context fragment | 当用户请求可能受益于插件时,引导模型使用安装建议工具 | recommended_plugins_instructions.rs |
| 模型切换提示 | 会话从一个模型切到另一个模型时 | developer instructions | 告诉新模型“用户之前使用了不同模型”,并附上继续对话的模型指令 | model_switch_instructions.rs |
| Realtime 后端提示 | 实时语音 / 对话表层与执行后端协同时 | realtime backend prompt | 定义对话表层身份、语气、后端委托策略、如何处理 backend 输出和用户输入 | backend_prompt.md |
| Realtime start / end 提示 | 进入或退出实时会话 | developer instructions | 在会话状态变化时注入开始、结束和原因说明 | realtime_start_instructions.rs |
| 多 agent 模式提示 | 用户或配置切换多 agent 行为 | developer instructions | 控制是否只能显式请求时派生子 agent,或允许主动并行委托 | multi_agent_mode_instructions.rs |
| 记忆读取提示 | Codex memory 已启用且存在 memory summary | developer instructions | 告诉模型何时查 memory、查哪些文件、如何轻量检索、何时声明记忆可能过期 | read_path.md |
| 记忆写入 Phase 1 | 从单次 rollout 提炼 raw memory | memory writing agent system prompt | 把原始 rollout 转成有价值的 raw memories 和 rollout summaries,强调证据、隐私和 no-op gate | stage_one_system.md |
| 记忆写入 Phase 2 | 合并 raw memories 和 rollout summaries | memory writing agent prompt | 把原始记忆整理成渐进披露的本地 memory 文件夹 | consolidation.md |
Codex 观察¶
Codex 的提示词设计重点在“编码任务执行闭环”:
- 基础 prompt 定义通用工作纪律。
- 权限 prompt 把沙箱和审批策略转成模型行为约束。
- IDE / Skills / Apps / Plugins prompt 让模型按需获得上下文。
- Compaction 和 memory prompt 负责跨长任务、跨会话保留上下文。
- Guardian prompt 把安全审核从普通对话中分离出来,形成独立的评估上下文。
OpenClaw¶
| 提示词 / 注入点 | 场景 | 注入位置 | 作用 | 源码 |
|---|---|---|---|---|
| Skills 系统提示片段 | Agent runtime 中存在可见 skills | system prompt section | 把 skill 名称、描述、路径、版本渲染进 <available_skills>,提醒模型匹配时读取完整 skill |
system-prompt.ts |
| Prompt templates | 用户或应用调用 prompt 模板 | prompt template runtime | 从 Markdown 文件加载模板,解析 frontmatter,支持参数替换 | prompt-templates.ts |
| Compaction system prompt | 历史会话需要压缩 | summarization system prompt | 指定模型只做结构化摘要,不继续对话 | compaction.ts |
| 初次 compaction prompt | 没有 previous summary 时 | summarization user prompt | 生成包含目标、约束、进展、决策、下一步、关键上下文的 checkpoint summary | compaction.ts |
| 更新 compaction prompt | 已有 previous summary 时 | summarization user prompt | 把新消息合并进旧 summary,保留已有信息并更新进度、决策、下一步 | compaction.ts |
| Split-turn prefix summary | 一个 turn 太大,只能保留后半段时 | summarization user prompt | 单独总结被截掉的 turn 前缀,让保留的后缀仍有上下文 | compaction.ts |
| Compaction safeguard instructions | 压缩时需要额外质量约束 | custom compaction instructions | 保留对话主要语言、事实内容、章节结构、代码路径和错误信息 | compaction-instructions.ts |
| 标识符保留提示 | 压缩包含 UUID、hash、URL、文件名等 | compaction additional focus | 要求原样保留不透明标识符,避免摘要破坏可恢复性 | compaction.ts |
| Context engine -> Codex projection | OpenClaw 使用 Codex harness 运行时 | Codex prompt prefix / developer addition | 把 OpenClaw context engine 组装的上下文投影给 Codex,并标注为引用数据而非新指令 | context-engine-projection.ts |
| Runtime context hidden message | 下一轮、运行时事件或内部上下文需要进入模型但不展示给用户 | hidden custom message / runtime system context | 把运行时上下文包装成内部块,避免泄露到用户可见 transcript | runtime-context-prompt.ts |
| Context truncation notice | 上下文因预算或工具限制被截断 | prompt notice | 告诉模型有字符被截断,并建议必要时缩小参数重跑 | context-truncation-notice.ts |
| GPT-5 behavior contract | 模型属于 GPT-5 系列且 overlay 开启 | system prompt stable prefix | 注入 persona latch、执行策略、工具纪律、输出契约、完成契约 | gpt5-prompt-overlay.ts |
| GPT-5 friendly chat overlay | GPT-5 overlay 为 friendly 模式 | system prompt section override | 调整交互风格,让回复更自然、协作、简洁 | gpt5-prompt-overlay.ts |
| GPT-5 heartbeat overlay | heartbeat 触发或显式包含 heartbeat 指导 | system prompt section override | 让 agent 在定时唤醒时少说空话,优先做有价值行动,只在值得打扰时通知用户 | gpt5-prompt-overlay.ts |
| Memory prompt section | memory_search / memory_get 工具可用 | prompt section | 告诉模型涉及 prior work、dates、people、preferences、todos 时先查 memory | memory-core prompt-section.ts |
| Wiki prompt section | wiki 工具或 compiled digest 可用 | prompt section | 引导模型在需要长期项目知识、实体页、source-backed notes 时查 wiki | memory-wiki prompt-section.ts |
| Wiki compiled digest | wiki 配置允许注入 digest 且 digest 存在 | prompt section | 把高信号页面、claims、open questions、contradictions 的小摘要放进上下文 | memory-wiki prompt-section.ts |
| Voice consult policy prompt | 实时语音 agent 决定是否调用 consult tool | realtime model instructions | 指导何时直接回答,何时调用 openclaw_agent_consult 获取事实、工具、memory 或 workspace 上下文 |
agent-consult-tool.ts |
| Delegated voice consult prompt | 语音场景把问题委托给 OpenClaw agent | delegated agent prompt | 包含语音场景、最近 transcript、额外上下文和用户请求;要求只返回可朗读的简洁结果 | agent-consult-tool.ts |
| Fast voice context prompt | 语音快速检索 memory/session 命中或未命中 | realtime response prompt | 快速把少量记忆命中包装给语音模型;未命中时要求简短说明没有相关上下文 | fast-context-runtime.ts |
| WhatsApp group/direct system prompt | WhatsApp 群聊或私聊配置了 systemPrompt |
channel system prompt | 按 group/direct 或通配配置注入会话级行为说明 | whatsapp/system-prompt.ts |
| Discord voice spoken-output contract | Discord voice 转录进入 agent | prompt prefix | 要求只返回适合朗读的简洁文本,避免 markdown、表格、代码块和视觉格式 | discord voice prompt.ts |
| Teams feedback reflection prompt | 用户对 Teams 回复点踩并可附评论 | reflection prompt | 让模型输出单个 JSON,记录内部 learning,并决定是否需要给用户 follow-up | feedback-reflection-prompt.ts |
| Diff guidance | 可用 diffs 工具且需要展示真实 diff | tool guidance | 引导模型使用 diffs 工具,而不是手写 diff 摘要 |
diffs prompt-guidance.ts |
| Bootstrap workflow prompt | 存在 BOOTSTRAP.md 工作流交接 |
startup / bootstrap prompt | 要求优先处理 bootstrap,不要假装完成;无法完成时说明阻塞并给下一步 | bootstrap-prompt.ts |
OpenClaw 观察¶
OpenClaw 的提示词设计重点在“多渠道常驻 Agent 的运行时适配”:
- 同一个 agent 可能来自 WebChat、WhatsApp、Discord voice、Teams feedback、heartbeat、cron 或 Codex harness。
- 因此 prompt 不只是任务说明,而是把渠道、运行状态、记忆、工具、模型族、安全边界一起翻译成上下文。
- OpenClaw 把很多 prompt 做成插件化或配置化机制,例如 prompt templates、context engine、systemPrompt、memory/wiki prompt section、model overlay。
OpenHands Software Agent SDK¶
| 提示词 / 注入点 | 场景 | 注入位置 | 作用 | 源码 |
|---|---|---|---|---|
system_prompt.j2 基础模板 |
Agent 会话初始化 | system prompt template | 用 XML 风格章节组织身份、记忆、效率、文件系统、代码质量、版本控制、PR、问题解决流程、安全、浏览器和外部服务规则 | system_prompt.j2 |
| 静态 system message | 多会话复用基础 prompt | cached system content | 把不随会话变化的基础 prompt 单独计算,利于 prompt caching | base.py |
| 动态 context | skills、secrets、时间、用户后缀等变化时 | dynamic system content | 把每个会话变化的仓库技能、secret、当前时间、custom suffix 等拆成动态块,不污染可缓存前缀 | base.py |
| 自定义 system prompt / filename | 用户或子类需要替换默认 prompt | prompt override | 支持内联 system prompt、相对/绝对 Jinja 模板、模板参数,方便不同 agent 复用同一运行框架 | base.py |
Skills 与 system_message_suffix |
AgentContext 提供 skills 或额外说明 | dynamic system suffix | OpenHands 文档说明可用相对/绝对模板路径、system_prompt_kwargs,并把 system_message_suffix 自动追加到自定义 prompt 后 |
OpenHands Skills 文档 |
AGENTS.md 记忆说明 |
仓库级长期知识 | system prompt memory section | 要求把仓库特定知识放进 AGENTS.md,作为跨会话复用的 repository skill |
system_prompt.j2 |
| Browser tools 条件块 | agent 有浏览器工具时 | conditional system prompt section | 只有启用浏览器工具时才注入浏览器操作纪律、动作上限、CAPTCHA/login 处理边界 | system_prompt.j2 |
| model-specific include | 不同模型族或变体生效时 | conditional template include | 根据 model_family / model_variant 追加模型特定说明,避免一个 prompt 试图适配所有模型 |
system_prompt.j2 |
OpenHands 观察¶
OpenHands 的重点是“可缓存的基础 prompt + 可变的运行时上下文”。
它给 Agent 产品设计一个很好的启发:
稳定前缀:身份、工作流、安全、代码质量
↓
动态后缀:skills、secrets、当前时间、仓库信息、用户补充规则
这样做有两个好处:
- 稳定前缀更容易命中 prompt cache。
- 动态信息不会混在基础 prompt 里,调试时更容易看清哪一段导致行为变化。
Aider¶
| 提示词 / 注入点 | 场景 | 注入位置 | 作用 | 源码 |
|---|---|---|---|---|
| Whole-file edit prompt | 使用整文件编辑格式时 | system prompt + examples | 要求模型返回完整文件内容,适合需要重写文件的模型/场景 | wholefile_prompts.py |
| Search/Replace edit block prompt | 使用 diff/search-replace 编辑格式时 | system prompt + examples | 要求模型用 SEARCH/REPLACE block 描述改动,适合减少整文件输出和降低误改风险 | editblock_prompts.py |
| System reminder | 每轮或统计上下文时 | system reminder | 强化当前 edit format 的输出约束,防止模型脱离编辑协议 | wholefile_prompts.py |
| Edit format 切换时摘要历史 | 从一个 coder/edit format 切到另一个时 | chat history summarization | 如果旧 assistant 消息采用不同编辑格式,Aider 会尝试摘要旧历史,避免模型模仿旧格式而违背新 system prompt | base_coder.py |
| Repo map 上下文 | 处理大型仓库时 | context block | 把仓库关键类、函数、签名和重要定义压缩成 repo map,随请求发送给模型 | Aider Repo Map 文档 |
/tokens 上下文拆解 |
用户想知道上下文占用时 | diagnostic output | 把 system messages、chat history、repository map、文件内容、只读文件分别统计 token,帮助定位上下文预算花在哪里 | commands.py |
| Prompt 模块化 | 用户想改系统 prompt 或编辑格式时 | coder class / prompt class | Aider FAQ 说明不同 coder 有不同 base prompts 和 edit formats,可用 conventions file 添加自定义说明 | Aider FAQ |
Aider 观察¶
Aider 的重点是“编辑协议就是 prompt 协议”。
它不是只告诉模型“你是程序员”,而是强制模型按某种可解析格式输出:
whole-file:输出完整文件
search/replace:输出可应用的替换块
repo map:给模型仓库级结构摘要
token report:让用户看到上下文预算消耗
这说明 coding agent 的 prompt 设计必须和编辑器、patch parser、上下文预算一起设计。
Continue¶
| 提示词 / 注入点 | 场景 | 注入位置 | 作用 | 源码 |
|---|---|---|---|---|
| 默认 Chat system message | Chat 模式 | system message | 告诉模型处在 chat mode,代码块要包含语言和文件名,修改请求可建议切 Agent Mode | defaultSystemMessages.ts |
| 默认 Agent system message | Agent 模式 | system message | 告诉模型处在 agent mode,可以并行调用多个只读工具,真正修改应使用 edit tools | defaultSystemMessages.ts |
| 默认 Plan system message | Plan 模式 | system message | 要求只使用只读工具,不写非临时文件;需要实现时让用户切换 Agent Mode | defaultSystemMessages.ts |
| No-tool warning | Agent/Plan 模式但没有可用工具 | system message suffix | 当没有工具时追加警告,防止模型假装调用工具 | getBaseSystemMessage.ts |
| Rules + conversation summary | 构造最终 messages 时 | system message augmentation | 把匹配规则和 previous conversation summary 合并进最终 system message | constructMessages.ts |
| 多模型 edit templates | 编辑选区或代码块 | prompt template | 针对 Zephyr、OpenChat、CodeLlama、Claude 等模型使用不同编辑模板和输出约束 | edit.ts |
| Prompt marketplace / slash prompt | 用户显式选择可复用 prompt | prompt resource | Continue 文档支持在 Chat / Agent / Edit 里用 / 选择 prompt,也可用 cn --prompt 启动工作流 |
Continue Prompts 文档 |
| 系统 prompt 组装债务 | 项目维护者讨论重构 | architecture issue | Continue issue 记录当前 system prompt 由多个文件拼接,缺少模板系统、模型感知和分层边界 | Issue #11671 |
Continue 观察¶
Continue 的重点是“同一个产品里有多种模式”:
Chat:解释、建议、给代码块
Plan:只读理解和规划
Agent:可以用工具和 edit tools 执行
Edit:按选区/代码块模板重写
它的源码和 issue 也说明一个现实问题:
当 prompt 片段长期散落在多个文件里,后面会很难统一维护、测试和灰度。
这正好反过来证明:Agent 产品应该尽早把 prompt 当成可组合、可版本化、可测试的工程资产。
分类总结¶
| 分类 | 典型场景 | 代表例子 |
|---|---|---|
| 基础行为 | Agent 启动、模型选择 | Codex base prompt、OpenHands system_prompt.j2、Continue default system messages |
| 权限安全 | 联网、写文件、提权、审核 | Codex permissions / Guardian、OpenHands security section、Continue no-tool warning |
| 工具发现 | Skills、插件、Apps、MCP | Codex available skills/apps/plugins、OpenClaw skills section、OpenHands dynamic skills |
| 编辑协议 | 代码修改、patch、diff、整文件输出 | Aider whole-file / SEARCH-REPLACE prompts、Continue edit templates、Codex apply_patch guidance |
| 压缩恢复 | 长会话、上下文溢出、模式切换 | Codex compact、OpenClaw compaction、Aider edit format 切换摘要、Continue previous summary |
| 记忆召回 | 历史经验、偏好、项目知识 | Codex memory、OpenClaw memory/wiki、OpenHands AGENTS.md |
| 仓库上下文 | 大型代码库理解 | Aider repo map、Codex IDE context、OpenHands repository skills |
| 通道适配 | IDE、实时语音、聊天应用 | Codex realtime backend、OpenClaw Discord/WhatsApp/voice、Continue Chat/Plan/Agent modes |
| 模式切换 | 模型切换、realtime、multi-agent、heartbeat | Codex model switch / multi-agent、OpenClaw GPT-5 heartbeat、Continue mode-specific prompts |
对产品设计的启发¶
这些源码里的提示词说明:成熟 Agent 产品的 prompt 不应该是一段大字符串。
更好的设计是:
- 把 prompt 拆成独立片段。
- 每个片段有触发场景和优先级。
- 每轮运行时根据上下文动态组装。
- 对组装结果做审计、测试和预算控制。
- 对外部内容加安全边界,明确它是“引用数据”而不是“新指令”。
这正是上下文工程在产品层面的体现。