【免费下载链接】jetbrains-cc-guiJetbrains Claude Code and Codex GUI Plugin项目地址https://gitcode.com/gh_mirrors/id/jetbrains-cc-gui点击查看免费下载本指南基于仓库 docs/opencode/OPENCODE-INTEGRATION-QUICKSTART.md 及其配套文档讲解如何把 OpenCode 作为一级first-classProvider 接入该 JetBrains 插件从运行时归属、双模式服务器、事件映射、流式日志回放到权限与会话历史并给出完整实现清单与冒烟测试步骤。读完你可以掌握 OpenCode 集成的最小可用切片send/stream/history 事件回放应该怎么做以及为什么需要先建立 Provider 中立的chat_event事件平面而不是把它简单当作又一个文本消息 Provider。为什么 OpenCode 不能按又一个文本 Provider对待插件早期面向 Claude 的多 Provider 架构把每个 Provider 投影到一套统一的 stdout 标记协议[MESSAGE_START]、[CONTENT_DELTA]、[MESSAGE]、[STREAM_END]、[MESSAGE_END]再加上tool_use/tool_result消息块就能快速把新 Provider 塞进现有聊天 UI。这种模式对提示词 → 助手文本 → 结束的简单文本 Provider 足够对 OpenCode 则不够。OpenCode 暴露的是结构化运行时事件session、message、part、工具生命周期、permission、question、diff、task/subagent 元数据。如果把这些事件强行压进 Claude 形状的消息模型合并、去重、历史、权限、diff 恢复的复杂度会被推到各个 Provider 专属代码里前端还得靠事后合并助手消息来猜顺序。失败的 opencode 支持实验仓库中该 PR 的完整结论证实了这些压力点角色门控文本、流结束恢复、工具后文本顺序、diff 基线过滤、历史恢复归一化、子代理重建、上下文窗口恢复、流式调试捕获需要反复打补丁。结论是在 OpenCode 集成落地前先定义共享的chat_event事件契约详见 docs/opencode/PREPARATION.md并让 OpenCode 成为该契约的第一个证明切片而不是直接做全功能对齐。目标架构Java Bridge、ai-bridge 与共享事件平面文档给出的目标架构如下Claude: Java - ClaudeSDKBridge - ai-bridge - anthropic-ai/claude-agent-sdk Codex: Java - CodexSDKBridge - ai-bridge - Codex CLI/SDK integration Opencode: Java - OpenCodeSDKBridge - ai-bridge - opencode-ai/sdk - opencode serve关键边界MULTI-PROVIDER-ARCHITECTURE.md 中进一步展开Java Provider 桥OpenCodeSDKBridge与ClaudeSDKBridge、CodexSDKBridge平级Node Provider 通道ai-bridge/channels/opencode-channel.jsNode Provider 服务目录ai-bridge/services/opencode/共享 Provider 路由器ai-bridge/channel-manager.js共享渲染底座chat_event记录 迁移期间保留的兼容标记。设计原则是 Provider 边界显式化、运行时归属留在各自适配器内、结构化事件归一化到共享chat_event流、流式事件可回放记录、迁移期间保持ClaudeMessage兼容、实时流与恢复历史走同一事件模型。当前仓库的落地现状源码实证需要说明的是快速指南描述的是目标形态SDK opencode serve而当前仓库实际落地的是一个更窄的CLI 版 MVP。从源码可以确认ai-bridge/channel-manager.js 已将opencode注册为合法 Provider 并路由到handleOpenCodeCommand有效 Provider 列表含claude、codex、grok、kimi、opencode、pi、omp、dsh、minimax、zcodeai-bridge/channels/opencode-channel.js 实现了send与listModels两个命令文件头注释明确写着MVP 阶段不使用宿主管理的 serve而是本地opencode run --format jsonai-bridge/services/opencode/message-service.js 负责 CLI 消息发送与事件解析ai-bridge/services/opencode/models-service.js 负责模型发现。也就是说读者在对照本文实施时可以把快速指南当作完整形态验收标准把现有源码当作可运行的最小骨架。运行时归属模型谁拥有 opencode 进程插件不应该为用户安装或配置 opencode。期望的归属模型用户自行安装opencodeCLI用户在 opencode 侧完成 auth、Provider、模型默认值等配置插件解析已安装的 CLI或连接用户配置的外部服务器托管服务器模式下插件可以用用户的 CLI 启动opencode serve除非未来有明确的 UI 操作声明要写配置插件不得改写 opencode 的 auth 或 Provider 配置。依赖关系归属依赖说明插件管理opencode-ai/sdkopencode-sdk: opencode-ai/sdk用户管理opencodeCLI 可执行文件需在 PATH 中且 IDE 可解析当 SDK 或 CLI 无法解析时桥接层应以用户可见的安装/修复引导错误失败而不是静默降级。配置两种运行模式模式行为Managed server插件以opencode serve启动用户已安装的 CLI托管进程。External server用户提供OPENCODE_BASE_URL插件只连接、不拥有进程。后续可选的设置项host、port、server password、内联 server 配置可以补充但不应替代 opencode 自身的 Provider/auth 配置。消息流文档给出的 11 步消息流用户在 Provider 选择器中选择 opencodeJava 分派到OpenCodeSDKBridgeJava 以 provideropencode调用 ai-bridge 的 channel-manager.jsopencode-channel.js启动或连接一个 opencode server发送提示词前桥先订阅/event桥通过当前/sessionAPI 创建或恢复会话桥把用户输入作为 text/file parts 发送桥把 opencode 事件映射为chat_event记录与兼容标记可选流式捕获记录原始事件、归一化事件、兼容标记前端基于稳定事件身份渲染实时流、工具、diff、权限、问题、任务会话恢复读取 opencode session API产生与实时流相同的逻辑渲染分组。关键点订阅必须在提示词提交之前完成并且因为 opencode 的事件经服务器事件流共享桥必须按sessionID过滤自己会话的事件。事件映射两代 API 的兼容陷阱API 表面注意事项实现前必须验证。Opencode 当前同时存在两代 API事件名不同。下表来自较新的v2SDK 事件面message.part.delta、permission.asked、question.asked旧的生成 SDK 类型暴露的是message.part.updated、permission.updated、permission.replied且没有 part-delta 与 question-asked 事件。截至 2026 年 7 月的源码快照v2 会话的prompt操作已实现而wait、compact、shell、skill仍返回Session.OperationUnavailableError。实现开始时固定opencode-ai/sdk版本本文写作时 npm 上为 1.17.13、决定桥面向哪一代 API、并针对该版本重新生成映射表。在完成该检查前不要把下表当作权威。期望映射Opencode 事件归一化输出message.part.delta文本字段chat_eventkind: textphase: deltamessage.part.delta推理字段chat_eventkind: thinkingphase: deltamessage.updatedmessage 或 turn 快照phase: updatedmessage.part.updated工具 part带稳定toolCallId的工具生命周期更新完成的工具结果kind: toolphase: completedpermission.askedkind: permission保留请求 ID 与可选操作permission.repliedkind: permissionphase: completedquestion.askedkind: question保留请求 IDsession.diffkind: diff保留文件范围与 hunkstask/subagent 元数据kind: task可用时保留子会话 ID迁移期间适配器还可以同时发射既有标记[MESSAGE_START]、[CONTENT_DELTA]、[THINKING_DELTA]、[MESSAGE]、[STREAM_END]、[MESSAGE_END]保证当前 UI 路径继续工作。chat_event记录的推荐身份与生命周期字段见 PREPARATION.md 与 MULTI-PROVIDER-ARCHITECTURE.mdprovider、sessionId、turnId、runId、messageId、stepId、partId、blockId、toolCallId、sequence、parentId、phasestarted | delta | updated | completed | failed、kindtext | thinking | tool | diff | status | permission | question | plan | terminal | task | todo | usage | mode。契约不变量包括sequence在适配器边界一次性分配、会话流内单调递增、且是回放的唯一排序依据turnId/stepId/blockId/toolCallId跨 delta、快照、恢复历史保持稳定parentId把嵌套的权限、问题、diff、终端、子代理会话挂到引发它们的事件上completed/failed可以关闭块/工具/turn但不得重排早前 delta 或改写无关块。跨 Provider 兼容性视图见 PROVIDER-COMPATIBILITY-MATRIX.mdACP、Cursor、OpenCode、Codex 四个表面的每个事件 kind 与接口字段是否直接✓、部分◐、可选◇或非核心×用于论证共享契约的合理性而非只为一个 Provider 服务。流式事件日志与回放OpenCode 桥应从第一天支持可回放的流式事件捕获用于诊断渲染问题、把真实 Provider 流变成回归测试。捕获内容应包括/event的原始 opencode 事件归一化后的chat_event记录迁移期间仍存在的旧兼容标记。日志采用共享的 JSONL 信封详见 STREAMING-EVENT-LOGS.md默认脱敏且便于清洗成 fixture 测试{ schemaVersion: 1, captureId: cap_2026_06_14_001, sequence: 42, timestamp: 2026-06-14T12:00:00.000Z, provider: opencode, sessionId: ses_123, turnId: turn_1, stage: normalized_out, eventType: chat_event, payload: { type: chat_event, kind: tool, phase: completed, toolCallId: call_abc }, redactions: [] }捕获阶段native_in桥收到的原始 Provider 事件、normalized_out发出的chat_event、legacy_out发出的兼容标记如[CONTENT_DELTA]、可选handler_in/render_in。默认脱敏项包括 API key、token、cookie、密码、请求头、完整环境变量、绝对 home 路径替换为HOME、项目根路径PROJECT、临时目录TMP、大二进制附件保留元数据与超大工具输出截断并保留原长度。回放支持三种模式native_in重放进 Provider 归一化器断言chat_eventnormalized_out重放进前端累加器断言渲染分组legacy_out重放进现有 Java/webview 处理器断言无回归。权限映射权限行为应显式且模式感知插件模式期望的 opencode 行为plan使用 opencode 的规划 agent 或等价物对编辑、shell、网络类工具、外部目录执行拒绝或询问。default对编辑、shell、网络类工具、外部目录访问执行询问。acceptEdits允许工作区编辑shell 与外部操作保持询问。autoEdit允许自主变更所需的读取与工作区编辑危险 shell 与外部操作保持询问。bypassPermissions仅当用户显式选择时允许广泛的工作区操作。opencode 的权限请求/回复 ID 必须保留这样 UI 决策才能落到正确的 Provider 请求上权限事件需保留 provider 请求 ID、请求的工具/动作与可用选项架构详见 MULTI-PROVIDER-ARCHITECTURE.md 一节。附件附件应转换为 opencode 的file parts而不是 Codex 风格的提示词文本。期望的 file part 字段MIME typefilenamefile://URL可用时的 source 元数据。附件路径在发送前应校验。仓库 MVP 中这一步的对应实现位于 ai-bridge/services/opencode/message-service.js通过 ai-bridge/utils/cli-image-input.js 的materializeImageAttachments物化图片附件为临时路径再以-f path传给 CLI纯图片轮次还会用GROK_IMAGE_ONLY_FALLBACK_TEXT兜底提示词OpenCode 要求非空 promptfinally中统一清理临时文件。会话历史历史必须使用 opencode API而不是 Claude 或 Codex 的转录读取器。期望行为通过 opencode 项目作用域 session API 列出项目会话通过 opencode session messages 恢复会话用与实时流相同的chat_event事件模型归一化恢复的消息可用时保留完成的工具 part、文件变更元数据、diff 与 task/subagent 链接。目标是对齐实时事件流 →chat_event→ 累加器 → 渲染分组与恢复历史 →chat_event列表 → 累加器 → 渲染分组两条路径。恢复历史允许更少的中间 delta但应保留相同的逻辑身份turn、block、tool、diff、permission、question、task 链接测试比较的是累加后的渲染分组而非原始事件数量。这避免了 Codex 曾经踩过的坑实时流与历史回放对同一个逻辑工具调用各自维护一份字段映射。实现清单OpenCode 平价之前的公共地基Foundation新增共享chat_event桥标记、schema、TypeScript 类型与前端累加器为turnId、stepId、partId、blockId、toolCallId、parentId、phase、sequence添加身份与排序测试新增共享流式事件捕获原始 Provider 事件、归一化chat_event记录、旧标记至少一个由捕获日志生成或塑形的回放 fixture证明实时风格事件与恢复历史风格事件列表产生等价的累加渲染分组新事件路径引入期间保持既有 Claude、Codex 行为兼容。最小 OpenCode 证明切片Minimal proving slice在 ai-bridge/channel-manager.js 注册 provideropencode新增 ai-bridge/channels/opencode-channel.js新增 ai-bridge/services/opencode/SDK 解析、服务器生命周期、权限、事件归一化、捕获、历史新增opencode-sdk/opencode-ai/sdk依赖元数据新增 JavaOpenCodeSDKBridge与 Claude、Codex 桥平级Java 发送走显式 Provider 分派而不是非 codex 即 claude的逻辑通过用户托管的 CLI/server 模型用 opencode session API 实现 send、abort、restore为文本、推理、工具、diff、权限、问题、错误、task/subagent 元数据添加事件归一化测试为 opencode session messages 添加历史恢复测试走实时流使用的同一累加器。后续 Provider UX 切片opencode model/provider 发现config/provider API、opencode agent 发现agent API。除非明确纳入范围否则推迟slash command picker 集成、MCP server/tool 展示、用量仪表盘、上下文恢复 UI、大范围选择器/菜单改版、commit-message 与 prompt-enhancer 的 Provider 路由。推荐的切片顺序MULTI-PROVIDER-ARCHITECTURE.md共享chat_eventschema/累加器/捕获 → 回放 fixture → Codex 等既有 Provider 证明适配器 → 最小 opencode send/stream/history → opencode 发现与可选 UX。手动冒烟测试实现完成后最小本地冒烟测试应验证在插件之外安装并配置 opencode以无任何现存 opencode server 的状态启动 IDE选择 provideropencode确认托管服务器模式启动了用户安装的opencode serve发送文本提示词并观察流式文本触发 read/search 工具并观察工具生命周期 UI触发权限请求验证 allow once、always allow、reject 行为触发一次编辑验证文件变更 UI 与 diff 范围中止一个进行中的响应从历史恢复会话确认实时/恢复渲染一致性。故障排查目标症状可能原因期望引导SDK 无法加载opencode-ai/sdk依赖缺失安装或修复插件依赖。CLI 找不到用户未安装opencode或不在 PATH安装 opencode 并确保 IDE 可解析。服务器连接失败托管 server 失败或OPENCODE_BASE_URL错误无密钥地展示 base URL 与 server 启动诊断。无模型用户 opencode Provider 配置不完整请用户在插件外验证 opencode 可用。权限对话框无法解决请求 ID 未保留检查permission.asked与回复关联。恢复历史与实时流不一致实时与历史路径归一化不同新增或修复共享chat_eventfixtures。渲染 bug 无法复现事件捕获未启用或不完整启用流式事件日志并把捕获提升为回放 fixture。当前仓库 MVP 的实现细节对照源码快速指南是目标蓝图但仓库中已有一个可运行的 CLI 版 MVP两者对照阅读能更快理解全貌通道层ai-bridge/channels/opencode-channel.js 的handleOpenCodeCommand支持send从 stdin 取message/sessionId/cwd/model/reasoningEffort/attachments或按位置参数与listModels未知命令抛错getOpenCodeCommandList返回[send, listModels]。消息服务ai-bridge/services/opencode/message-service.js 的 CLI 约定为opencode run --format json [--model id] [--session id|--continue] promptauth/config 来自 opencode 原生配置~/.config/opencode或OPENCODE_HOME。三个值得注意的实现细节参数顺序陷阱buildOpenCodeArgs强制 prompt 位于-f/--file之前——OpenCode 的 yargs 把--file定义为数组选项跟在-f path之后的尾随位置参数会被贪婪消费为额外文件路径导致File not found: prompt同时避免run -- msg写法。对应测试在 ai-bridge/services/opencode/message-service.test.js。CLI 解析通过 ai-bridge/utils/cli-path.js 的resolveOpenCodeCliPath环境变量OPENCODE_BIN/OPENCODE_PATH/OPENCODE_CLI_PATH并用enrichPathWithBinDirscommonCliBinDirs扩充 PATH 后再 spawn保证非交互 IDE 环境能定位 CLI。事件解析parseOpenCodeEvent把 JSON 行分类为 text/thought/tool_use/tool_result/error/session兼容text_delta、assistant_message_delta、reasoning_delta、tool_call等变体对无 ID 工具调用用opencode-tool-n合成稳定 ID 防止去重塌缩随后通过 ai-bridge/utils/marker-protocol.js 发射[CONTENT_DELTA]、[THINKING_DELTA]、tool use/result 消息与 session ID。模型发现ai-bridge/services/opencode/models-service.js 以opencode models列出形如opencode/big-pickle、anthropic/claude-fable-5的模型parseOpenCodeModelsOutput通过provider/model词法过滤掉 Windows 路径、URL 与噪音无模型解析时回退opencode-default条目并附带 stdout/stderr 尾部供日志排查Windows 上还针对 Bun 编译二进制的管道丢输出问题实现了cmd文件重定向兜底。相关文档Preparation: Provider-Neutral Chat Eventschat_event契约、不变量、累加器规则与验收标准Opencode Multi-Provider ArchitectureProvider Compatibility MatrixACP/Cursor/OpenCode/Codex 四表面对照Streaming Event Logs And Replay FixturesLessons From The Opencode Support ExperimentCodex Integration QuickstartCodex Multi-Provider Architecture最后提醒文档根目录 docs/opencode/README.md 明确标注这些文档是规划草案其中快速指南描述的是完整目标形态OpenCodeSDKBridgeopencode-ai/sdkopencode serve而本文引用的源码则是仓库当前实际存在的 CLI 版 MVP 切片。实施时应先固定opencode-ai/sdk版本、确定面向哪一代 API再以本文的事件映射表、实现清单与冒烟测试为验收基线逐步推进。赞分享【免费下载链接】jetbrains-cc-guiJetbrains Claude Code and Codex GUI Plugin项目地址https://gitcode.com/gh_mirrors/id/jetbrains-cc-gui点击查看免费下载相关推荐idea-claude-code-gui 接入 Opencode 集成指南从 chat_event 事件契约到运行时架构idea claude code gui 接入 Opencode 集成指南从 chat_event 事件契约到运行时架构 本文是一份基于开源仓库 docs/o开发工具AI 应用代码智能体Codex CLI 自定义 Prompts 完全指南在 JetBrains Claude Code Codex GUI 插件中使用 /prompts 复用指令Codex CLI 自定义 Prompts 完全指南在 JetBrains Claude Code Codex GUI 插件中使用 /prompts 复用面向 Opencode 的结构化多 Provider 架构JetBrains 插件共享 chat_event 事件平面设计解析面向 Opencode 的结构化多 Provider 架构JetBrains 插件共享 chat_event 事件平面设计解析 导读 本文围绕 jetbrai上一篇如何在Windows上免费获得苹果级别的中文排版体验PingFangSC字体包完整指南下一篇chaosblade 故障演练Pod 卡在 Terminating 的 Finalizers 未清理注入与恢复实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考