Skip to content

架构概览

相关文档: 处理管道 — 请求处理流程与阶段分解 | 服务架构 — 11 个核心服务的依赖关系 | 运行时行为 — 运行时行为详解

角色引导生命周期

rolebox 作为 opencode 插件启动后,每个角色(Role)经历以下生命周期:

速查建议

如果你是首次阅读架构文档,建议先浏览下方的30+ 模块地图了解各模块的职责和文件结构,再回到上方的生命周期序列图理解启动流程。这样可以先建立整体认知,再深入细节。

生命周期阶段详解

阶段关键文件说明
Initsrc/index.ts:21-66插件入口 RoleboxPlugin(ctx),配置日志、发现 rolebox 目录
Discoversrc/loader/role-loader.ts:45-85扫描 role.yaml 文件,按目录名作为 roleId 解析
Resolvesrc/resolver/bootstrap.ts:56-83src/resolver/orchestrator.ts解析技能、引用、函数、子代理、协作图
Injectsrc/core/composition.ts:50-103创建 PluginCore,注册 11 个服务,拓扑排序初始化
Activatesrc/core/plugin-core.ts:63-107按依赖顺序调用各服务的 init();失败时可降级
Runtimesrc/hooks/chat-message.ts:16-257消息处理、函数激活、循环调用、校正注入

行引用: src/index.ts:21-66 — 插件入口及 bootstrapRoles 调用
src/resolver/bootstrap.ts:56-83 — 统一的角色发现与解析流程
src/core/composition.ts:64-75 — 11 个服务的注册
src/core/plugin-core.ts:63-107 — 拓扑排序初始化(含 StartupCheck)
src/hooks/chat-message.ts:108-131 — 函数激活解析核心逻辑


30+ 模块地图

src/ 目录下包含 30+ 个一级模块,按功能分类。各模块的详细文档:

核心层 (Core)

模块文件数职责文档
core/10PluginCore、服务注册、事件总线、状态注册表、工具注册表、ServiceSupervisor插件接口
composition.ts1组合根,组装所有服务 → 返回 opencode hook 处理器

调度层 (Dispatch)

模块文件数职责文档
dispatch/17DispatchManager、工厂、并发控制、预算、检查点、持久化、查询调度配置
loop/9循环协调器、工作器调度、取消、参数解析、持久化循环系统
recovery/11恢复引擎、链执行器、错误检测、7 种内置策略恢复系统

Hook 与函数系统 (Hooks & Functions)

模块文件数职责文档
hooks/12Chat message、system.transform、tool.before/after、compaction、event-handler、stateHook 参考
function/16函数解析器、运行时状态、会话状态、阶段机、门控、观察、处理器函数指南

加载与解析 (Loader & Resolver)

模块文件数职责文档
loader/3角色发现、子代理加载子代理
resolver/7引导、环境变量、frontmatter、编排器、引用/技能解析技能系统引用文档

平台适配层 (Platform)

模块文件数职责文档
platform/7适配器、端口定义、工具装配、能力声明工具目录
extensions/7扩展点加载器、注册表、能力桥接扩展系统

服务模块 (Services)

模块文件数职责文档
notifications/16多通道通知、调度器、节流、静默时段、平台格式化通知系统
lsp/8LSP 客户端管理器、服务器、工具、RPC
session/7+会话工具、分析、导出、搜索、链接会话工具
memory/3+记忆存储、工具、搜索记忆系统
asset/7热重载、搜索、检查、验证、技能组合
web/16Web 抓取、搜索、浏览器检测、SSRF 防护、可读性提取

辅助模块 (Utilities)

模块文件数职责文档
graph/15协作图模板、边解析、验证、状态、推进、终止协作图
signal/2信号账本、信号工具信号系统
sync/2代理文件同步、技能符号链接
tui/7终端 UI 组件、状态、逻辑、事件
cli/2+CLI 路径工具CLI 参考
prompt/3+提示构建器、代理配置
hashline/1+行哈希编辑引擎Hashline 编辑
utils/6路径、超时、状态路径、显示帮助

入口文件

文件职责
index.tsopencode 插件入口点
pi-extension.tsPi 平台扩展入口点
constants.ts全局常量定义
types.ts / types.*.ts类型定义文件
logger.ts日志系统
project-config.ts项目级配置加载

60 秒理解数据流

rolebox 的核心数据流可概括为 5 个生命周期阶段:

  1. 加载 — opencode 启动时,插件入口 src/index.ts 发现 rolebox 目录,加载所有 role.yaml
  2. 解析 — Resolver 对每个角色解析其技能、引用、函数、子代理和协作图
  3. 初始化 — PluginCore 按拓扑序初始化 11 个服务,注册事件总线和工具
  4. 拦截 — 5 个 hook 回调拦截用户消息、系统提示构建、工具执行等管道阶段
  5. 执行 — chat.message hook 解析函数激活,dispatch 引擎调度子代理,recovery 层处理失败

详见处理管道了解各阶段的完整流程。


在 opencode 生态系统中的定位

rolebox 在 opencode 生态中扮演三种角色:

1. 插件协议适配器

src/index.ts:21-66 实现了 @opencode-ai/pluginPlugin 接口,通过 PluginInput 提供的 ctx.client(session 创建 API)与 opencode 核心交互。同时 src/pi-extension.ts 为 Pi IDE 提供独立的适配器路径(PiLightweightServiceStackPiEventBridge)。

2. 工具注入层

通过 src/core/composition.ts:64-75 注册的 ToolServicesrc/core/services/tool-service.ts:28-104),rolebox 将 dispatch、session、LSP、memory、function 等 30+ 工具注入到 opencode 的工具链中。buildCanonicalToolssrc/platform/tool-assembly.ts)跨平台统一工具定义格式。

3. 拦截层

rolebox 通过 opencode 的 5 个 hook 回调拦截和增强消息处理管道:

event         → src/hooks/event-handler.ts    — 会话生命周期事件
config        → src/core/services/hook-service.ts:167-206 — 代理配置注入
chat.message  → src/hooks/chat-message.ts     — 函数激活解析 + 循环调度
tool.execute.before → src/hooks/tool-before.ts — 参数验证 + 守卫
tool.execute.after  → src/hooks/tool-after.ts  — 结果捕获 + 图推进 + 观测
system.transform    → src/hooks/system-transform.ts — 系统提示构建
session.compacting  → src/hooks/compaction.ts  — 会话压缩

这种拦截模式使 rolebox 无需修改 opencode 核心代码即可实现函数系统、dispatch、协作图、恢复引擎等高级功能。


入口文件总览

入口点平台核心流程
src/index.ts:21-66opencode (Plugin)bootstrapRoles()createPluginHooks() → 返回 handlers
src/pi-extension.ts:72-371Pi IDE (Extension)同上 + Pi 特定适配器 + 事件桥接 + 系统提示注入

模块依赖概览

以下 Mermaid 图展示了各层模块之间的依赖与协作关系(箭头表示数据流方向):

以下文本图展示了 src/ 下主要模块之间的依赖关系(箭头表示依赖方向):

src/core/          ← 核心层:PluginCore、服务注册、事件总线

src/dispatch/      ← 调度层:DispatchManager、并发控制、持久化

src/loop/          ← 循环协调器:LoopCoordinator、参数解析

src/recovery/      ← 恢复层:RecoveryEngine、策略链、错误检测

src/hooks/         ← Hook 系统:chat.message、system.transform、tool.before/after

src/function/      ← 函数系统:解析器、运行时状态、阶段机、门控

src/graph/         ← 协作图:模板、边解析、状态推进、终止条件

src/resolver/      ← 解析层:skill-resolver、reference-resolver、orchestrator

src/loader/        ← 加载层:role-loader、子代理发现

核心层(core/)是所有服务的注册中心。调度层(dispatch/)、循环层(loop/)和恢复层(recovery/)依赖核心层的事件总线和服务注册表。Hook 系统(hooks/)是执行入口,调用函数系统(function/)进行激活解析,再通过调度层分配任务。图系统(graph/)为协作图提供状态推进与终止检测。解析层(resolver/)和加载层(loader/)仅在启动阶段使用,运行时不依赖。

下一步

基于 MIT 许可协议发布