本系列文章皆基于开源 Vibecoding 工具 Opencode 源码进行详细拆解。
源码链接:github.com/anomalyco/o…
上次咱们聊完了 Tool 工具系统,兄弟们是不是觉得 AI 终于能”动手”干活了?
!但是!光能动手也不行啊,兄弟们有没有想过这个问题:AI 是怎么”理解”自己是谁的?它怎么知道自己是 OpenCode 而不是 Claude?它怎么知道要在当前项目根目录工作而不是别的地方?
今天咱们就来看看,AI 背后的”灵魂”到底是咋构建的!这个 Prompt 系统,简直就是 OpenCode 的大脑中枢!
兄弟们,这个问题太关键了!Prompt 模块就是给 AI 灌输”世界观”的存在!
你跟 AI 说一句话,它不是直接就把那句话发出去了,它得先给自己”叠甲”:
- 我是谁?
- 我在什么地方?
- 我有什么能力?
- 我要注意什么?
这些信息从哪来?就是 Prompt 模块给的!
Prompt 解决了什么问题?
你说这些重要吗?简直不要太重要!没有 Prompt,AI 就是一个没有记忆、没有身份的”无头苍蝇”!
看图!这四个东西就是 Prompt 模块的核心组件:
2.1 各组件职责
兄弟们,1968 行的 prompt.ts 是整个模块的大本营,里面逻辑那是相当的复杂!咱们后面会细讲!!
这个设计面试官特别喜欢问!!!问到你头皮发麻都有可能!!!
3.1 为什么需要区分模型?
兄弟们,这个设计太真实了。不同模型的”性格”完全不同!
- Claude: 擅长思考,需要详细角色定义
- GPT: 擅长执行,需要强调行动
- Gemini: 有自己的特定优化方向
- Qwen: 中文模型,不需要 TODO 功能
你说,你能让一个”思考型”模型去干”执行型”的活吗?能,但是效果不好。
所以 OpenCode 选择因材施教,给每个模型准备特定的提示词!这就是大厂的设计水平吗???简直离谱!!!
3.2 选择逻辑
面试官可能会问:如果我要添加一个新模型,比如 DeepSeek,怎么做?
答案简直不要太简单!在这个函数里加一个判断,然后提供一个对应的提示词模板文件就行!就这???对,就这!!!
3.3 各模型提示词模板
这个是面试重灾区,一定要搞懂!!!面试官问到你怀疑人生!!!
4.1 支持的指令文件
4.2 多层级查找(核心亮点!!!)
兄弟们,这个设计简直是太香了!!!香到爆!!!
想象一下这个场景:
当你在 目录下工作时,OpenCode 会自动向上查找所有 AGENTS.md!
这就是传说中的”继承”机制!太牛逼了!!!
4.3 向上查找算法
面试官可能会问:这个设计有什么好处?
- 子目录自动继承父目录指令:不用每个子项目都配一遍
- 就近优先:子目录的指令会覆盖父目录的
- 去重机制:不会重复加载同一个文件
就问你香不香???香爆了!!!
4.4 远程指令支持
在配置文件里可以这样用:
这样团队成员就能共享一份在线指令文档了!分布式团队开发,简直不要太爽!!!
这个是 OpenCode 的一个特色功能!让你的 AI 会”技能召唤”!!!
5.1 Skill 是什么?
兄弟们,Skill 就像是一个可插拔的能力包。
5.2 Skill 的好处
- 按需加载:AI 根据任务自己决定要不要加载
- 权限控制:可以禁用某些 Skill
- 可扩展:任何人都可以添加新的 Skill
这不就是程序员梦寐以求的”插件系统”吗???太香了!!!
每次对话都会自动注入当前环境信息,AI 简直就是一个”环境感知大师”!
这些信息帮助 AI 做出更准确的决策,比如:
- 知道在哪个目录工作
- 知道是什么平台(Windows/Linux/Mac)
- 知道是不是 git 仓库
这不比某些 AI 连自己在哪都不知道强???甩它们十条街!!!
Q1: Prompt 模块的核心职责是什么?
答:负责构建 AI 每次对话的完整提示词,包括角色定义、模型特定指令、指令文件、Skill、环境信息等。这就是 AI 的”灵魂”!
Q2: 为什么需要模型特定的 Prompt?
答:不同模型的”性格”和擅长领域不同。Claude 擅长思考,GPT 擅长执行,Gemini 有自己的优化方向。通过模型特定的 Prompt 可以最大化每个模型的效果。这就跟”因材施教”一个道理!!!
Q3: AGENTS.md 的向上查找机制是怎么工作的?
答:从当前目录开始,逐层向上查找 AGENTS.md、CLAUDE.md 等指令文件,直到找到为止。所有找到的指令文件都会被加载,靠近当前目录的优先级更高。,简直就是”继承”机制的完美实现!
Q4: 如何添加对新模型的支持?
答:在 的 函数中添加模型判断逻辑,然后创建一个对应的提示词模板文件(.txt)。简单到爆!!!
Q5: 远程指令是怎么实现的?
答:通过 API 加载配置中指定的 URL,5秒超时,返回内容作为指令追加到 Prompt 中。团队协作神器!!!
兄弟们,今天咱们聊的 Prompt 模块,简直就是 OpenCode 的”大脑中枢”!它负责:
- 因材施教:为不同模型准备特定提示词
- 指令管理:自动加载和合并项目指令
- 技能扩展:支持动态加载 specialized 能力
- 环境感知:注入工作环境上下文
这个设计让 OpenCode 能够灵活适应不同模型和项目需求,是整个系统的核心基础设施。
兄弟们,这个设计你们觉得怎么样???是不是香到爆???
- 面试官:OpenCode Tool 工具系统详解
- 面试官:OpenCode Session 会话机制了解吗?
- 面试官:说说 Cookie 和 Token 的区别?
- Vue3 原理解析之响应系统的实现
兄弟们,如果文章对您有帮助麻烦亲点赞、收藏 + 关注和博主一起成长哟!!! 也欢迎在评论区留言讨论,说说你们觉得 Prompt 模块哪个设计最牛逼!!!
咱们下期再见!!!❤️❤️❤️
发布者:Ai探索者,转载请注明出处:https://javaforall.net/282659.html原文链接:https://javaforall.net
