Skip to content

feat: opencode2 (V2) 适配壳 —— 共享核心 + 双入口架构 - #26

Open
Hotakus wants to merge 14 commits into
masterfrom
refactor/v2-dual-entry
Open

feat: opencode2 (V2) 适配壳 —— 共享核心 + 双入口架构#26
Hotakus wants to merge 14 commits into
masterfrom
refactor/v2-dual-entry

Conversation

@Hotakus

@Hotakus Hotakus commented Aug 16, 2026

Copy link
Copy Markdown
Owner

功能

为 opencode2(V2 TUI)提供适配壳,采用「共享核心 + 双入口」架构,V1 行为保持不变:

  1. 共享核心src/core/):纯逻辑抽取(格式化 / 颜色 / token 估算 / 货币),V1/V2 复用
  2. 共享面板组件src/panel/):TokenCachePanel 单一组件 + PanelApi 契约
  3. V1/V2 统一入口tui/index.js 双格式:{id, tui, setup})——同一包、同一 package.json 服务两端:
    • V1(opencode)读 tui 字段(V1 面板)
    • V2(opencode2)读 setup 字段(V2 面板)——exports["./tui"] 指向该入口,V2 的 npm 包名方式可直接加载
  4. V2 适配壳src/v2/):context → PanelApi 适配、{id, setup} 入口、完整面板/底部栏/10 命令/余额/分布/技能/单价/主题自适应
  5. 构建双入口:dist/tui.js(V1)、dist/v2.js(V2,external 用宿主依赖)

验证

  • tsc --noEmit 通过、npm run build 通过
  • V1(1.18.18):面板/底部栏/命令/余额无回归(统一版本实测)
  • V2(beta-17498):npm 包名方式(beta 通道)完整可用——面板/命令/余额实测正常
  • 统一版本(1.7.0-beta.3,beta 通道)V1/V2 双端验证通过

TODO(全部已实现)

  • 共享核心 / 共享面板 / V2 适配壳 / 双入口构建
  • V1/V2 统一入口(双格式 tui/index.js——同一包两端)
  • 10 斜杠命令完整对齐 V1(含 i18n、嵌套对话框、子代理扫描)
  • token 分布与已加载技能(V2 消息 content 归一化)
  • 余额查询与轮询(手动 key 优先)
  • 模型单价与累计节省(V2 模型列表组装)
  • 偏好持久化 + 语言恢复 + CACHE_TUI_LANG
  • 主题色自适应(V1 primary → V2 hue.interactive 官方映射)

发布策略

  • 当前以统一版本 beta 通道发布,引导 V2 用户安装测试
  • 待 opencode2 正式上线后合并本 PR 并发布正式版

@Hotakus Hotakus added the feat new feature label Aug 16, 2026
- 10 个斜杠命令完整移植 V1 行为(currency/rate/section/config/lang/balance/balance-key/debug-skills/session/session-back),V2 Promise 对话框形态
- 4 语言 i18n 共用 src/i18n.ts;part adapter 替代 V2 缺失的 state.part
- 补余额轮询 pollBalance(手动 key + OpenCode 自动复用 + 缓存 + 超时 + 防竞态)
- 修 router 会话判断(Route = {type: session, sessionID})
- 底部栏 i18n + 余额真实数据 + unsupported 隐藏余额段;颜色经共享 mapTheme 与侧边栏同源
- 主题 primary → hue.interactive[300](v1-migrate 官方映射 + 亮端 step)
- 侧边栏 slot prepend(排在官方信息之前)
- part():tool 输出从 state.content[] 拼接为 V1 state.output;user 顶层 text 构造 text part
- provider:V2 模型列表组装 V1 形状(modelID/完整引用/短名多 key 注册),单价与累计节省恢复
- 回合:按 V2 官方 terminal 规则(finish 非 tool-calls/unknown 或 error)划分,
  同回合 assistant 消息注入合成 parentID,本回合调用次数/末次成本逻辑成立
- step-finish:有 cost 的 assistant 消息合成(V1 每条消息 1 个)
- CACHE_TUI_LANG 环境变量 + auto-clear override(切换主会话清子代理视图)
- 对齐官方 dialog-model 用法:data.location.model.list(location.ref)(无参数返回空)
- provider 改响应式 getter:每次访问实时组装,location 数据同步后面板自动重算
@Hotakus Hotakus self-assigned this Aug 17, 2026
@Hotakus Hotakus linked an issue Aug 17, 2026 that may be closed by this pull request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feat new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

有更新到v2的打算吗?

1 participant