bmcstudio_community_workbench:基于 IDE 的开源社区协作工作台项目

workbench for openUBMC Studio

Branch1Tags0
openUBMC 社区工作台

openUBMC 社区工作台

把 openUBMC 社区的协作流程与规范固化进 IDE —— 行动优先的驾驶舱、四种视图、AI 一等公民。

需求与缺陷怎么流转、检视意见怎么提怎么销、PR 满足哪些门禁才能合入、机器人听哪些命令 —— 这些原本散落在文档和老成员经验里的知识,在这里变成现成的视图、按钮,以及 AI 助手可以直接调用的工具。


今日 · 行动优先

不再让你从「SIG → 仓库 → Issue/PR」一层层翻。左侧栏与仪表盘都按行动收敛成几组—— 需要我处理 / 我负责的 PR / 我的 PR / 我在推进 / 我关注的,每条都带状态、创建人、本地分支与「下一步」。 顶部一行全局脉冲(待处理 / 未读 / 阻塞 / 进行中),维护者 / 审核者 / 贡献者 + RM / QA 视角一处切换、两侧联动。

今日视图

表格 · 密集扫读

只放 Issue(PR 在「PR 检视」里),列式紧凑排布,适合快速扫读与行内操作。 每个列头都带 Excel 式勾选过滤(取值按当前数据动态生成,勾哪些显示哪些),外加 SIG / 仓库 / 分配给我 / 本地分支筛选与列排序。

表格视图

看板 · 跟随社区版本看板

默认是按工作流状态分列、可拖拽推进的本地看板;也可一键切换到社区版本看板(如「openUBMC 26.09 需求看板 / 缺陷看板」), Issue 随所选看板变化,直接看某个版本里还有哪些需求 / 缺陷没闭环。

看板视图

PR 检视 · 门禁一目了然 + AI 检视

PR 单独成一类(门禁式合入生命周期)。每张卡片把合入门禁(CI / CLA / lgtm / approved / squash / 未解决检视)画成一排状态点, 常驻显示行内检视进度 N/M(已解决 / 总数),状态直接告诉你「球在谁手上」:待我检视 / 作者已更新待复审 / 已检视待作者修改 / 检视已闭环待 lgtm。 点 ✦ AI 检视 滑出面板,预览将注入的上下文与可调用工具,确认后一键发给 AI。支持状态 / SIG / 仓库筛选与按创建 / 更新时间排序,以及自动(30 分钟 / 1 小时)与手动刷新。

PR 检视与 AI 协作

AI 接入

琥珀色 + 微光是 AI 的专属信号:全局协作区、每行 / 卡片的主操作、侧栏行尾 ✦,三处一致。 一键把任务连同社区规范上下文交给 AI 助手(Claude Code、Claude App/Web、Codex、OpenCode、Chrys 或剪贴板), AI 按社区流程完成认领、评审、回复检视意见、推进合入。

规范内置在工具行为里:比如批准合入前自动校验 CI / CLA / 未解决检视意见 / squash,不满足就拦下;认领 Issue 时自动指派并评论。使用者不需要背规则。

MCP 工具

扩展通过 openubmc.mcp-host 注册一组 gitcode_* 工具供 AI 调用,大致五类:

  • 读取:仓库、Issue、PR、变更文件、评论与检视讨论
  • 操作:建 Issue/PR、评论(全局、行内锚定、线程回复)、标签、指派、resolve 讨论、认领、squash、批准合入
  • 社区看板:列看板、列看板条目,以及把 Issue/PR 添加 / 移动 / 移除出看板
  • 本地审查:把 PR 检出到本地临时目录做深度审查,用完清理
  • 社区知识:SIG 名单、Issue 工作流规范、机器人命令参考

工具行为以真实 GitCode API 实测为准,不依赖文档推断;写操作尽量做读回校验,比如行内评论发出后确认锚定成功,失败会明确报错而不是假装成功。

安装与构建

需要 Node.js 18+ 和 openUBMC Studio。

npm install
npm run compile    # 编译 TypeScript 到 out/
npm run package    # 打包 VSIX
npm run deploy     # 打包并安装到本地 Studio,重启 Studio 窗口生效

手动安装某个 VSIX:

"/Applications/openUBMC Studio.app/Contents/Resources/app/bin/studio" \
  --install-extension bmcstudio-community-workbench-<version>.vsix

配置

配置项(前缀 communityWorkbench.) 说明 默认值
gitcode.organization GitCode 组织名 openUBMC
gitcode.repositories 监控的仓库列表 []
gitcode.baseUrl GitCode API 地址 https://api.gitcode.com/api/v5
gitcode.bypassSystemProxy GitCode API 请求直连(绕过系统代理) true
defaultRole 默认角色视角 contributor
aiAssistant AI 助手:claude-vscode / claude-app / claude-web / codex / opencode / clipboard / chrys claude-vscode
prRefreshIntervalMinutes 自动重新扫描维护者/审核者 SIG 中 PR 的间隔分钟数;0 = 关闭自动刷新 30
claudeAppName Claude 独立应用的 macOS 应用名称 Claude
claudeBundleId Claude 独立应用的 macOS bundle id com.anthropic.claudefordesktop
claudeWebUrl Claude Web 客户端地址 https://claude.ai/new
claudeCommand Claude Code VS Code 扩展打开会话的命令 ID claude-vscode.primaryEditor.open
chrys.autoSend 打开 Chrys 后自动发送提示词 true
chrys.agent 社区任务使用的 Chrys 智能体(空表示用当前选中的) ""

PR 检视视图里可直接选择自动刷新间隔(关闭 / 30 分钟 / 1 小时)并手动刷新;AI 助手可通过命令「社区工作台:选择 AI 检视助手」在 Codex Desktop、Claude Application、Claude Web、Claude Code VS Code 扩展、OpenCode、剪贴板模式和 Chrys 之间切换。

测试

单元测试用 vitest,GitCode 客户端是 mock 的,不需要网络:

npm run test

改动 GitCode 客户端后,还要跑真实 API 的端到端冒烟,覆盖全部写路径(Issue 生命周期、PR 评论锚定、线程回复、resolve 等):

npm run compile
node scripts/smoke-gitcode-api.js

冒烟需要一个个人沙箱仓库(默认 <你的账号>/gitcode-mcp-sandbox,可用 --repo 指定)和一个相对默认分支有 README 改动的测试分支,准备步骤见脚本头部注释。脚本里同时固化了一批实测出来的 GitCode API 行为(响应结构、字段类型等),作为回归基线。

贡献

  1. Fork 本仓库到个人空间,从最新 main 切特性分支
  2. 涉及 GitCode API 行为的改动,先跑 E2E 冒烟用真实 API 验证,不要凭文档猜
  3. 提交 PR 到 openUBMC/bmcstudio_community_workbench:main,正文用 #编号 关联 Issue
  4. 多个 commit 的 PR 会被标记 stat/needs-squash,评审人评论 /squash 设置扁平化合并即可,不需要手动压缩
  5. 合入由机器人门禁控制:lgtm + approved + CI 通过 + CLA 签署,且检视意见全部 resolve;作者不能自批
  6. 机器人命令的完整参考在 openUBMC-test/infrastructure 仓的 docs/robot/command_zh.md,AI 也可以调用 gitcode_get_bot_commands 查询

许可证

木兰宽松许可证,第 2 版(MulanPSL-2.0)