核心提示词
📋 概述
OpenCode 使用分层提示词系统,根据不同阶段和模型类型组合多个提示词片段,为 AI 代理提供精确的行为指导。
提示词架构:
最终系统提示词 = 基础提示词 + 环境提示词 + 指令提示词 + 工具描述
+ 状态提醒 + 模型特定提示词
🔑 提示词组成
1. 基础提示词
核心原则:
- 简洁明了(CLI 环境)
- 优先使用专用工具而非 Bash
- 频繁使用 TodoWrite 进行任务管理
- 专业客观,不迎合用户
关键指令:
- 短暂简洁的回复
- 优先编辑现有文件而非创建新文件
- 专注于技术准确性和事实性
- 使用 TodoWrite 工具跟踪任务进度
2. 环境提示词
提供的关键信息:
- 模型 ID 和提供商
- 工作目录路径
- Git 仓库状态
- 平台信息
- 当前日期
- 项目目录树结构
这些信息帮助 AI 理解当前上下文,做出更准确的决策。
3. 指令提示词
加载优先级:
- 项目级
.opencode/AGENTS.md - 全局级
~/.claude/CLAUDE.md - 全局级
~/.opencode/AGENTS.md - 配置文件中的 URL
用途:
- 自定义项目特定的编码规范
- 添加团队约定和最佳实践
- 覆盖默认行为
4. 模型特定提示词
Claude (Anthropic)
核心特点:
- 极端简洁(少于 4 行,除非复杂任务)
- 强调安全:仅协助防御性安全任务
- 最小化输出 token
- 避免不必要的序言和后记
使用场景:
- 需要快速响应的任务
- 对 token 成本敏感的场景
- 需要严格安全约束的任务
GPT (OpenAI)
核心特点:
- 严格遵守项目约定
- 验证库/框架可用性
- 模拟现有代码风格
- 使用绝对路径
- 执行测试和标准检查
使用场景:
- 需要深度代码理解的任务
- 复杂的项目集成
- 需要严格遵守约定的场景
Gemini
核心特点:
- 持续迭代直到问题解决
- 必须进行广泛的互联网研究
- 使用 WebFetch 搜索 Google
- 10 步骤工作流
- 验证所有检查项
使用场景:
- 需要自主研究的任务
- 新技术栈的探索
- 需要外部信息验证的场景
5. 工具描述
动态加载可用工具:
bash- 执行 shell 命令edit- 编辑文件read- 读取文件write- 写入/创建文件glob- 文件模式匹配grep- 内容搜索webfetch- HTTP 请求task- 委托子代理question- 向用户提问todoWrite- 任务管理snapshot- 快照管理
6. 状态提醒
计划模式(Plan Mode)
关键约束:
- 严格只读模式
- 禁止任何文件编辑
- 只能使用观察工具(read, glob, grep)
- 允许向用户提问或征求意见
使用场景:
- 需要先规划再执行的任务
- 复杂任务的拆分
- 用户想要预先审查计划
构建模式(Build Mode)
切换通知:
- 退出只读模式
- 允许文件编辑
- 启用所有工具
最大步骤限制
严格要求:
- 禁用所有工具调用
- 必须提供文本摘要
- 列出未完成的任务
- 提供下一步建议
使用场景:
- 控制 token 使用
- 防止无限循环
- 强制用户反馈
📊 提示词优先级
当提示词冲突时,优先级从高到低:
| 优先级 | 提示词类型 | 说明 |
|---|---|---|
| 1 | 状态提醒 | 如 <system-reminder> 标签 |
| 2 | 用户指令 | AGENTS.md 或 URL |
| 3 | 模型特定 | Claude/GPT/Gemini 专用提示词 |
| 4 | 基础提示词 | 通用指令 |
| 5 | 工具描述 | 可用工具列表 |
冲突示例:
如果用户指令说"可以自由编辑任何文件",但状态提醒说"严格禁止任何文件编辑",状态提醒获胜(优先级 1)。
💡 最佳实践
提示词文件组织
~/.opencode/AGENTS.md # 全局指令
~/.claude/CLAUDE.md # Claude 特定指令
~/.opencode/AGENTS.md # 项目级指令
project/.opencode/AGENTS.md # 项目覆盖全局
自定义项目指令
创建 .opencode/AGENTS.md:
# 项目特定约定
- 使用 TypeScript 严格模式
- 所有组件必须有 PropTypes
- 遵循 Material Design 风格
- 运行 `npm run test` 验证更改
配置 URL 指令
在配置文件中添加:
{
"instructions": ["https://company.com/style-guide.md", "~/my-custom-rules.md"]
}
🎯 选择合适的提示词策略
根据任务类型选择
快速问答:
- 使用 Claude 模型
- 简洁提示词
- 最小化输出
代码开发:
- 使用 GPT 或 Claude
- 完整的上下文
- 包含项目约定
复杂研究:
- 使用 Gemini 模型
- 启用互联网研究
- 多步骤工作流
根据团队需求选择
标准化团队:
- 使用项目级 AGENTS.md
- 统一编码规范
- 共享最佳实践
灵活团队:
- 使用全局级指令
- 允许项目覆盖
- 个性化配置
📝 总结
OpenCode 的提示词系统具有以下特点:
| 特性 | 说明 |
|---|---|
| 分层组合 | 基础 + 环境 + 指令 + 工具 + 模型特定 |
| 动态加载 | 支持用户自定义指令和 URL |
| 模型适配 | 不同模型使用不同的提示词策略 |
| 状态管理 | 通过 <system-reminder> 动态调整行为 |
| 优先级系统 | 状态 > 用户 > 模型 > 基础 |
| 安全第一 | Claude 强调防御性安全、GPT 强调验证 |