mirror of
https://github.com/NanmiCoder/cc-haha
synced 2026-07-30 16:23:35 +08:00
8.3 KiB
8.3 KiB
v0.5.12
这一版三条主线收尾:Solo 模式演进成 Solo Council(A/B/C 三方案门控 + plan-critic 专家 + 评审面板 + 实施前审批)、Workspace LSP 链路全闭合(agent 文件编辑桥 + 自动诊断同步 + 状态指示器接入工作区面板)、插件生态成形(image-gen MCP 多 provider 图像生成 + 桌面插件可视化配置 + 内置 marketplace 随包发布 + 逆向工程 3 个验证过的 MCP server)。同时品牌改名 Code Council,桌面端补了一批 UX/Polish/可靠性改动。
新功能
Solo Council:Plan A/B/C + 评审面板 + 审批门控
- A/B/C plan gate + plan-critic 专家(#34)。Solo 模式不再是单线流水线 — 进入 planner 阶段会 fan-out 三个候选方案 A / B / C,由独立的
plan-critic专家投票评分,把最优方案推回主线。 - Council 评审面板。Solo Council 视图新增专属 panel,展示各方案的合成与冲突 / blockers,UI 视觉细节同步抛光。
- 实施前必须审批。完成评审后会强制要求用户确认才能进入 builder 阶段,不会闷头开干。
- Ctrl+B 侧栏 toggle + thinking block 默认折叠。多 panel 拥挤时一键收起侧栏;推理块默认折叠避免视觉噪音。
- i18n 重命名。"Solo Pipeline" → "Solo"(5 个 locale 同步),composer toggle / chat header chip / 设置文案统一。
Workspace LSP 链路全闭合
- Agent 文件编辑桥(Phase 4)(#29)。FileEditTool / FileWriteTool 写盘前后调
diagnosticTracker.beforeFileEdited抓 baseline,写完通知 LSPdidChange+didSave,下一轮 user message 自动注入<diagnostics>attachment 让 agent 看到错误。Bash-tool 缺失时跳过注入(子 agent 修不了的不发)。 - 自动诊断同步(commit
d13f29e0)。Workspace 编辑器在文件 open / change / save 时调 session LSP sync API,服务端启动匹配的语言服务器并接收textDocument/publishDiagnostics,按文件 URI 缓存 + 跨轮去重 + 严重度限流。 - LspStatusIndicator 接入工作区面板(#51)。原本只有简陋的
LSP idle · N diagnostics文本条,换成完整 indicator:spinner / 绿勾 / 红色错误计数 chip / Retry 按钮,点击展开诊断下拉,Enter 跳转文件。Retry 按钮直连POST /api/sessions/:id/lsp/restart,自带形状适配lspStateMap.ts(pure adapter + 8 单测)。 - 可编辑文件预览。工作区面板的文件预览不再只读,CodeMirror 6 ≈ 80 KB gz 接入语法高亮、行号、搜索、缩进引导,原子保存 + 冲突 banner。
- 从历史恢复后台任务。会话重连后正在跑的 task 会被恢复,不会幽灵悬挂。
插件生态:image-gen + 桌面配置 + Marketplace 随包
- image-gen MCP 插件(#49)。多 provider 图像生成 MCP,支持 Agnes / GPT-image-2 / DALL-E / Gemini image / Flux / Stable Diffusion 等 OpenAI 兼容 API。3 个可配置 provider 槽位按优先级 fallback;每个 provider 内部支持完整参数 → 精简参数兼容重试;内置模型能力数据库供 agent 查询;SSRF 防护(包括 IPv6
[::1]vs::1旁路)。 - 桌面端插件可视化配置。新增
PluginConfigModal组件,支持配置插件 userConfig 选项;PluginDetail 详情页新增 Configure 按钮(仅当插件有 userConfig 时显示);新增GET/POST /api/plugins/optionsAPI,敏感值返回********。 - 聊天内图片渲染。Tool result 中的 MCP image content block(
{ type: 'image', data, mimeType })现在在聊天 UI 中渲染为内联图片,同时支持 OpenAI-styleimage_urlblock。 - Marketplace 随 Electron 包发布(#50)。新增
desktop/scripts/build-plugin-seed.ts,把plugins/复制到desktop/plugin-seed/marketplaces/cc-haha-builtin/并打进 asar,sidecar 通过CLAUDE_CODE_PLUGIN_SEED_DIRenv 在启动时registerSeedMarketplaces注入,CLI 端早就支持但桌面端从没接通 — 现在装完就能在设置-插件里直接看到 image-gen / reverse-engineering 等内置插件。 - 一键 Language Server / MCP 安装。Settings → Plugins 新增"Install all"面板,单个 manager 失败时按平台 fallthrough(winget → scoop → choco / brew → port / apt → dnf → pacman),不会一个 dependency 卡住后续全部。MCP marketplace 现在尊重 installed state 与 required env。
- Reverse-engineering 插件 v0.4.6(#32 / #33)。
- 从 7 → 3 个 live-smoked MCP server(apktool / lldb / radare2 / jadx 上游不可用,frida 换成 PyPI 的
frida-mcp)。新增scripts/smoke-reverse-engineering-mcps.ts走 NDJSON 框架做端到端验证。 - 新增
apk-hardeningskill(~430 行):APKiD 识别 + 8 个加固家族路由(360 / Tencent Legu / Bangcle / Naga / Ijiami / 阿里聚安全 / Baidu / Flutter / Unity IL2CPP / RN)+ 每工具 playbook(FRIDA-DEXDump / FART / Unidbg / Blutter)。 - triage / apk-analysis / frida-dynamic / lldb-debug 改用 Bash 直接驱动 CLI,不再假设 MCP 存在。
- 从 7 → 3 个 live-smoked MCP server(apktool / lldb / radare2 / jadx 上游不可用,frida 换成 PyPI 的
品牌:Code Council
- 桌面应用可见品牌从 "Claude Code Haha" 更新为 Code Council。About 页 / 窗口标题 / 安装包 productName 全部一致。
改进
- Phase 1 UX quick wins + Sidebar refactor。聊天 UI 视觉抛光,侧栏结构重写降耦合。
- TabBar 不再挤压窗口控件。修复 macOS / Windows 上 tab 多时 close/min/max 按钮被推出可视区。
- 本地图片附件预览。聊天输入区附加图片时立即显示缩略图,不必等上传。
- 品牌重命名后的 CI 修复。symlink test + brand-aware fixtures 同步更新。
修复
- 修 Windows 上"用 VS Code 打开"启动后无窗口(#52)。
defaultLaunch之前对 IDE 也设了windowsHide: true,Windows 把STARTUPINFO.wShowWindow=SW_HIDE当成传给ShowWindow()的初始 nCmdShow — 进程在任务管理器跑但主窗口被立刻隐藏。删掉这个 flag,cmd flash 极短可接受。回归测试getDefaultLaunchSpawnOptions锁定 spawn 选项形状。 - Compact 从 prompt-too-long 错误恢复。当 API 因上下文超长拒绝时,compact 流程自动触发并重试,不再卡死。
- Text-only assistant 消息也发进度。修复某些 provider 只回文本不调工具时进度条停在最早状态。
- 聊天用户回合前重新同步 runtime mode。修复模式切换后第一条消息有时仍带旧 mode flag。
- About 页产品名修复。
- TabBar 不再吃掉 macOS 红绿灯按钮的 hit area。
- 修复 image-gen IPv6 SSRF bypass(
[::1]vs::1区分)。 - 修复自定义 LSP server 被内置 preset 抢占同扩展名。
- 修复桌面设置中的自定义 LSP 配置未进入 Workspace LSP 产品链路。
验证
- 服务端:open-target 测试 32/32(含 4 条 spawn 选项回归)、conversations/Solo 3/3、soloPipelinePrompt 11/11、soloSuggestions.i18n 2/2、provider fetchUpstreamModels 5/5、seed-marketplaces-startup 4/4。
- 桌面:
bun run lint(tsc --noEmit)clean、stores(chatStore / sessionRuntimeStore / workspacePanelStore / openTargetStore)全套通过、components(WorkspaceEditor / LspStatusIndicator / WorkspacePanel)全套通过、src/lib/lspStateMap.test.ts8/8。 - AgentTool / coordinator:taskSpecQuality 18/18、lazyDelegationCheck 全套、workerContinueAdvisor 全套。
- Reverse-engineering:
scripts/smoke-reverse-engineering-mcps.ts全 3 server live-init 通过(ghidra / semgrep / frida-mcp)。
升级注意
- 零破坏。Solo Council 默认关,需要在
+菜单显式打开 toggle。LSP 反馈在feature('LSP_FOUNDATION')flag 下,没装语言服务器的用户透明降级为 unavailable。 - 桌面包内置 marketplace。安装 v0.5.12 后第一次启动,设置-插件页就能看到 cc-haha-builtin 里的 image-gen / reverse-engineering / plugin-power 等内置插件,不需要手动添加 marketplace。
- 品牌改名:app 名变成 Code Council,installer 文件名
Claude-Code-Haha-${version}-${os}-${arch}.${ext}仍保持兼容性(不影响升级)。 - Windows 用户:v0.5.11 之前从右上角 "Open in VS Code/Cursor" 启动后看不到窗口的问题修了,无需手动找 Code.exe。
- 逆向插件:v0.4.6 用了 PyPI 的
frida-mcp,需要uvx(uv 0.5+)。安装方式见plugins/reverse-engineering/README.md。