OpenCode 核心模块梳理总结

0 阅读4分钟

本系列文章皆基于开源 Vibecoding 工具 Opencode 源码进行详细拆解。
源码链接:github.com/anomalyco/o…


写在前面

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

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

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


一句话概括

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


二、四大模块全景图

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

graph TB
    subgraph OpenCode 核心
        S[Session<br/>会话管理]
        P[Prompt<br/>提示词]
        A[Agent<br/>代理]
        T[Tool<br/>工具]
    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<br/>权限] --> T[工具调用]
        S[Prompt<br/>提示词] --> T
        M[Model Config<br/>模型配置] --> 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<br/>描述]
        P[parameters<br/>参数]
        E[execute<br/>执行]
        R[permission<br/>权限]
    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 等),也可以在评论区告诉我!!!

❤️❤️❤️