Skip to content

sync(v6): brainstorm 安全模型 + hooks/session-start 对齐上游 v6.0.0(修复 main 审计红)#58

Merged
jnMetaCode merged 2 commits into
mainfrom
sync/v6-brainstorm-hooks
Jun 19, 2026
Merged

sync(v6): brainstorm 安全模型 + hooks/session-start 对齐上游 v6.0.0(修复 main 审计红)#58
jnMetaCode merged 2 commits into
mainfrom
sync/v6-brainstorm-hooks

Conversation

@jnMetaCode

Copy link
Copy Markdown
Owner

你要解决什么问题?

仓库 CI 的「全量审计」workflow 在 main长期处于失败状态(如 commit 8dc606d3),4 个 P0 漂移项全部是 brainstorm 脚本 + hooks 落后于上游:hooks/session-startskills/brainstorming/scripts/{server.cjs,start-server.sh,stop-server.sh}

根因是上游 obra/superpowers 在 v6.0.0 做了两件事,本 fork 都没跟:

  1. brainstorm 可视化伴侣的安全模型重写。旧版服务器监听 loopback 但没有任何鉴权——任意本地浏览器标签页都能访问 localhost:PORT,读取 brainstorm 屏幕/文件,或向状态/事件注入数据(= 对正在运行的 agent 会话做 prompt injection);若用 --host 0.0.0.0 暴露则远程可达。新模型用每会话密钥?key=<token> 或会话 cookie)门禁所有端点,并加安全头(X-Frame-Options: DENY、CSP frame-ancestors 'none'Cross-Origin-Resource-Policy: same-origin 等)。
  2. 清理 ~/.config/superpowers/ legacy 路径 + hooks 输出修复。

不修的实际后果:① brainstorm 可视化伴侣在使用期间存在上述真实(但有边界)的安全缺口;② 仓库 main 的质量门禁一直是红的,掩盖后续真实漂移。

这个 PR 做了什么改变?

把 brainstorm 脚本、其 v6 重构拆出的 frame-template.html/helper.js、对应测试套件,以及 hooks/session-start 全部对齐上游 v6.0.0(= 当前 upstream/main)。本 fork 在这些 infra 文件上无中文/品牌定制(仓库审计本就要求它们与 upstream/main 逐字节一致),故采用上游版本。

这个改变适合放在核心库中吗?

适合。brainstorm 伴侣服务器与 hooks 是对所有用户通用的核心基础设施,安全修复对所有用户有益;不引入运行时依赖(ws 仅为测试期依赖)。

你考虑了哪些替代方案?

  • 只同步审计检查的 3 个脚本:放弃且已验证不可行。v6 把 server.cjs 拆成了 server.cjs + frame-template.html + helper.js,只换 server.cjs 会让新服务器配旧模板/旧 helper,brainstorm UI 直接崩坏。功能测试逮住了这一点,故一并同步全部 5 个脚本 + 测试。
  • 本地重写一套更轻的鉴权:放弃。仓库审计要求这些文件与上游逐字节对齐,自研会持续漂移;上游版本已有完整测试覆盖。

这个 PR 是否包含多个不相关的改变?

否——同属上游 v6.0.0 的一次同步:CI 审计把这 4 个文件作为同一组漂移拦截,且 main 的审计只有全部同步后才能转绿,存在直接依赖关系。frame-template.html/helper.js/测试套件是 server.cjs 正常工作与验证的必要组成。

已有的 PR

测试环境

工具(如 Claude Code、Cursor) 工具版本 模型 模型版本/ID
Claude Code 本会话 Opus 4.8 claude-opus-4-8

评估

本改动为 infra 脚本/测试的忠实上游同步(非 skill 行为塑造内容),用功能测试验证而非 writing-skills eval:

  • tests/brainstorm-server 全套 npm test 通过,exit 0:ws-protocol 32 / helper 15 / browser-launcher 3 / auth 20(安全模型) / branding 7 / server 33 / lifecycle 13 / start 4 / stop 7,0 failed
  • 全部 17 个文件(5 脚本 + 12 测试件)与 upstream/main 逐字节一致diff 校验)
  • hooks/session-start 实跑三平台分支(CURSOR/CLAUDE/COPILOT 环境变量)均输出合法 JSON,注入内容仍为本 fork 的中文 using-superpowers
  • 本地 scripts/audit.sh 静态校验 0 FAIL

严格性

  • 非 skill 行为措辞改动(infra 脚本/hooks);用上游全套功能测试验证(见上)
  • 经测试套件验证,覆盖鉴权失败/跨域拒绝/健壮性等非正常路径(auth.test.js)
  • 未触碰精心调优的行为内容(红旗表、合理化列表、"人类搭档"用语)

人工审核

  • 提交前已有人工审核过完整的 diff

- 移除 legacy ~/.config/superpowers/skills 迁移警告块及其 warning_escaped
  注入(上游 v6.0.0 已删;与 v6 清理 ~/.config/superpowers/ 一致)
- 三处 printf 输出补 | cat,对齐上游输出行为

验证:与上游 v6.0.3 逐字一致;实际运行 hook,三个平台分支
(CURSOR_PLUGIN_ROOT / CLAUDE_PLUGIN_ROOT / COPILOT_CLI) 均输出合法
JSON(字段分别为 additional_context / hookSpecificOutput.additionalContext
/ additionalContext)。注入内容仍为本 fork 的中文 using-superpowers SKILL.md。

关联 #19(v6 同步追踪)
上游 v6.0.0 给 brainstorm 可视化伴侣服务器重写了安全模型:之前服务器
监听 loopback 但无任何鉴权,任意本地浏览器标签页都能读取 brainstorm
屏幕/文件、或向正在运行的 agent 会话注入事件(prompt injection)。新模型
用每会话密钥(?key=<token> 或会话 cookie)门禁所有端点,并加一组安全头
(X-Frame-Options: DENY、CSP frame-ancestors none、Cross-Origin-Resource-Policy
same-origin 等)。本 fork 此前停留在旧无鉴权版本。

改动(全部逐字节对齐上游 main,本 fork 在这些文件无中文/品牌定制):
- skills/brainstorming/scripts/server.cjs:旧 354 行 → 723 行,新鉴权模型
- skills/brainstorming/scripts/{frame-template.html,helper.js}:v6 重构拆出的
  独立模板/客户端 helper,旧版与新 server.cjs 不匹配会导致 UI 崩坏
- skills/brainstorming/scripts/{start,stop}-server.sh:随之更新
- tests/brainstorm-server/:同步上游全套测试(auth/branding/server/lifecycle/
  helper/ws-protocol/browser-launcher 等),否则旧测试与新 server 不匹配

验证:tests/brainstorm-server 全套 npm test 通过,exit 0
(ws-protocol 32 / helper 15 / browser-launcher 3 / auth 20 / branding 7 /
server 33 / lifecycle 13 / start 4 / stop 7,0 failed)。所有 17 个文件
与上游 main 逐字节一致。

修复 CI「全量审计」中 brainstorm script 漂移项。关联 #19(v6 同步追踪)
@jnMetaCode jnMetaCode merged commit df9214d into main Jun 19, 2026
2 checks passed
jnMetaCode added a commit that referenced this pull request Jun 20, 2026
对齐上游 v6.0.0 实质变更 + 新增 Kimi/Pi 两款 harness 支持:
- Kimi Code 支持(#59,关 #37)
- Pi (oh-my-pi) 支持(#60,关 #44)
- brainstorm 可视化伴侣安全模型(#58,每会话密钥 + 安全头)
- worktree 移除旧全局目录(#57)+ hooks/session-start v6(#58)
- opencode 测试修复(#72)

版本号同步:package.json + 5 个 plugin 清单 + marketplace + gemini-extension。
jnMetaCode added a commit that referenced this pull request Jun 20, 2026
对齐上游 v6.0.0 移除固定 N-任务审查检查点的理念(与 #58 SDD 同方向):
"每完成 3 个任务后暂停回顾" → "执行过程中持续留意"。纳入 v1.6.0。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant