OpenCode 核心模块梳理总结

本系列文章皆基于开源 Vibecoding 工具 Opencode 源码进行详细拆解。

源码链接:github.com/anomalyco/o...


写在前面

兄弟们!咱们前几期分别聊了 Session、Tool、Prompt、Agent 这四大核心模块,有没有一种"原来 AI 编程助手是这样工作的"的感觉?

!但是!有没有觉得缺点什么?对,兄弟们说得对!咱们缺一个总结

今天咱们就来做个大盘点,把这四个模块串起来讲讲!让兄弟们彻底搞懂 OpenCode 是怎么工作的!!!


一句话概括

OpenCode = Session(记忆) + Tool(手脚) + Prompt(灵魂) + Agent(角色),四位一体,缺一不可!


二、四大模块全景图

先来看图!这四个模块的关系一目了然:

graph TB subgraph OpenCode 核心 S[Session
会话管理] P[Prompt
提示词] A[Agent
代理] T[Tool
工具] end S -->|提供上下文| P P -->|组装提示词| A A -->|权限控制| T T -->|执行结果| S S -->|消息历史| S P -->|模型选择| P A -->|任务分发| A T -->|能力扩展| T

各模块职责一览

模块 比喻 核心职责
Session 大脑 记忆管理、消息历史、状态维护
Prompt 灵魂 构建提示词、加载指令、环境感知
Agent 角色 权限控制、行为指导、任务分发
Tool 手脚 执行命令、读写文件、能力扩展

三、模块详解(快速回顾)

3.1 Session - 会话管理

一句话:Session 是 AI 的"记忆系统",负责管理对话历史、消息版本、状态维护。

sequenceDiagram participant U as 用户 participant S as Session participant M as Message participant P as Prompt U->>S: 用户发送消息 S->>M: 创建新消息 M-->>S: 返回消息ID S->>P: 组装上下文 P-->>S: 完整Prompt S->>S: 调用LLM S->>S: 保存响应到历史

核心功能

  • 消息历史管理
  • 会话压缩(对话太长自动摘要)
  • 多版本消息支持
  • 上下文窗口管理

3.2 Prompt - 提示词系统

一句话:Prompt 是 AI 的"灵魂",负责构建系统提示词。

graph LR subgraph Prompt 构建 A[模型选择] --> B[角色定义] B --> C[加载指令] C --> D[注入环境] D --> E[Skill技能] end E --> F[完整Prompt]

核心功能

  • 模型特定提示词(Claude/GPT/Gemini/Qwen)
  • 指令文件加载(AGENTS.md 层级查找)
  • 远程指令支持(URL 加载)
  • Skill 技能系统

3.3 Agent - 代理机制

一句话:Agent 是 AI 的"角色卡",决定 AI 能做什么、怎么做。

graph TB subgraph Agent 三要素 P[Permission
权限] --> T[工具调用] S[Prompt
提示词] --> T M[Model Config
模型配置] --> T end T -->|allow| E[执行] T -->|deny| D[拒绝] T -->|ask| C[请求确认]

内置 Agent

Agent 用途
build 默认,执行任务
explore 只读探查
plan 规划模式
compaction 压缩历史

3.4 Tool - 工具系统

一句话:Tool 是 AI 的"手脚",让 AI 能够执行操作。

graph TB subgraph Tool 四要素 D[description
描述] P[parameters
参数] E[execute
执行] R[permission
权限] end D --> P P --> E E --> R R -->|检查| E

核心工具

工具 功能
read 读取文件
write 写入文件
edit 编辑文件
bash 执行命令
grep 搜索代码
glob 查找文件

四、数据流转

一条用户消息在 OpenCode 中的完整旅程:

sequenceDiagram participant U as 用户 participant S as Session participant P as Prompt participant A as Agent participant T as Tool participant LLM as LLM U->>S: "帮我写个函数" S->>S: 创建消息 + 历史 S->>P: 请求组装Prompt P->>P: 加载 AGENTS.md P->>P: 选择模型提示词 P->>P: 注入环境信息 P-->>S: 返回完整Prompt S->>A: 获取 Agent 配置 A-->>S: 返回权限规则 S->>LLM: 发送 Prompt LLM-->>S: 返回 "调用 read 工具" S->>T: 检查权限 T-->>S: 允许执行 T->>T: 读取文件 T-->>S: 返回文件内容 S->>LLM: 继续对话 LLM-->>S: 返回 "调用 write 工具" S->>T: 检查权限 T-->>S: 允许执行 T->>T: 写入文件 T-->>S: 返回成功 S-->>U: 显示结果

五、面试常见问题

Q1: OpenCode 的核心架构是什么?

:OpenCode 由四大核心模块组成:Session(会话管理)、Prompt(提示词)、Agent(代理)、Tool(工具)。它们相互配合,Session 管理历史,Prompt 构建提示词,Agent 控制权限,Tool 执行操作。

Q2: Session 和 Message 是什么关系?

:Session 是会话容器,管理多个 Message;Message 是消息单元,包含用户输入和 AI 响应。Session 通过消息历史为 Prompt 提供上下文。

Q3: Prompt 模块如何支持多模型?

:通过模型特定提示词系统,不同模型(Claude/GPT/Gemini/Qwen)使用不同的提示词模板,最大化每个模型的效果。

Q4: Agent 的权限系统是怎么工作的?

:使用规则链匹配,从上往下遍历,第一个匹配的规则就是最终结果。可以控制文件读写、命令执行等一切行为。

Q5: Tool 和 Agent 是什么关系?

:Agent 通过权限控制 Tool 的使用,Tool 是 Agent 的"手脚"。Agent 决定能不能做,Tool 负责具体执行。


六、设计模式总结

设计模式 在 OpenCode 中的体现
职责分离 Session/Prompt/Agent/Tool 各司其职
权限控制 Agent 权限规则链
层级查找 Prompt 指令文件向上查找
动态加载 Tool 注册表、Skill 系统
状态管理 Session 消息历史、会话压缩
策略模式 多模型提示词策略

七、总结

兄弟们!今天咱们把 OpenCode 的四大核心模块来了个一锅端

总结一下

  1. Session - AI 的记忆,管理对话历史和状态
  2. Prompt - AI 的灵魂,构建提示词和加载指令
  3. Agent - AI 的角色,控制权限和行为
  4. Tool - AI 的手脚,执行具体操作

这四个模块缺一不可,完美配合,才让 OpenCode 能够帮你高效地写代码!


往期好文推荐


写在最后

兄弟们!咱们这个 OpenCode 核心模块系列终于完结了!!! 从 Session 到 Tool,从 Prompt 到 Agent,再到今天的总结篇,兄弟们是不是收获满满???

你们觉得哪个模块最有趣???是自动向上查找的 AGENTS.md,还是权限规则链???

欢迎在评论区留言讨论!也请点赞、收藏 + 关注,咱们下期再见!!!

如果兄弟们想看其他模块的分析(比如 MCP、Plugin 等),也可以在评论区告诉我!!!

❤️❤️❤️

相关推荐
郝学胜-神的一滴2 小时前
一序平衡,括号归真:单括号匹配算法的优雅美学
java·前端·数据结构·c++·python·算法
wangruofeng2 小时前
ripgrep 完全指南:比 grep 快 100 倍的命令行搜索利器
前端·devops
尼尼爱睡觉2 小时前
Harness Engineering 笔记(一):从官方定义到核心类比——理解 Agent 的"控制层"
agent
恋猫de小郭2 小时前
Flutter 鸿蒙 2026 路线发布,加速同步官方生态,进一步优化体验
前端·flutter·harmonyos
. . . . .2 小时前
CSS三大主流方案深度解析
前端·css·tensorflow
小码哥_常2 小时前
Android开发告别findViewById!DataBinding从入门到实战,一篇吃透
前端
北寻北爱2 小时前
面试题- html篇
前端
麦麦鸡腿堡2 小时前
JavaWeb_HTML/CSS快速入门
前端·css·html
小碗细面2 小时前
5 分钟上手 Google Stitch:AI 时代的 UI 设计新范式
前端·aigc·ai编程