cc-haha/release-notes/v0.5.11.md
2026-06-12 14:09:10 +08:00

9.1 KiB
Raw Blame History

v0.5.11

本版本两条主线落地:Solo Pipeline 模式(让 AI 在 5 阶段独立流水线里跑完一个任务,不分 workerinline 内联编辑 + LSP 错误反馈基础(在工作区面板里直接编辑文件 + 把语言服务器诊断接入 agent 工具结果)。同时 coordinator 模式吃了一组 B1/B2 优化,桌面端补了 TabBar 滚轮横滚、provider "获取模型" 跨混合内容修复等一批 UX/可靠性改动。

新功能

Solo Pipeline 模式

  • Solo 流水线 prompt + 建议引擎#16 / #17。新增纯函数建议引擎 soloSuggestions.ts、Tier-1 信号收集器 soloSignalsService.ts、5 阶段 Solo promptintent triage → planner → builder → tester → reviewer → integrator。配套 26 个 i18n key × 5 locale跨模块契约由 soloSuggestions.i18n.test.ts 守住66 / 66 测试。
  • Solo 模式端到端接线#25。WS 协议加 set_pipeline_mode { flavor: 'solo' \| 'normal' }、服务端 handleSetPipelineMode、CLI args 通过 --append-system-prompt 注入 Solo 提示词。桌面端 + 菜单加 togglechat header 持续显示 linear_scale 状态 chip + 解释 tooltip。与协调模式互斥——开 Solo 自动关 coordinator反之亦然由 desktop store 与 server handler 双向守住。
  • lspErrorCount Tier-1 信号#27。Solo 引擎现在能消费 LSP 报告的工作区错误数:当工作区有未修类型错误时,欢迎页 cleanup 类别建议会冒出"先修 N 个错误再开新任务"。

内联编辑 + LSP 反馈基础

  • 工作区面板默认显示完整文件树#23。第一次打开会话面板时默认 'all' 视图(之前是 'changed'),用户首次显式切换后偏好会保留。修复"每次新会话只看到改动列表,看不到项目布局"的体验断点。
  • CodeMirror 6 内联编辑器#24。工作区文件预览不再是只读 <pre>可直接编辑。CodeMirror 6 ≈ 80 KB gz不是 Monaco 的 2-3 MB支持 TS / TSX / JS / JSX / JSON / Markdown 语法高亮,行号、搜索面板、缩进引导默认开启;二进制 / 大文件 / 非 UTF-8 编码自动回退到原只读预览。
  • 原子保存 + 冲突 banner#24。新 HTTP 端点 POST /api/sessions/:id/workspace/file 走临时文件 + rename 原子写入Windows 下遇 EBUSY/EPERM 自动重试 3 次;保存使用 SHA-256 hash 做乐观并发控制(哈希不匹配返 409含当前内容供前端合并。当 AI 写了用户正在编辑的文件banner 永远显示 3 个明确动作Reload / Keep mine / Open conflict view从不静默覆盖未保存的改动。
  • 关闭未保存提示。带 dirty buffer 的 tab 关闭时弹 Discard / Save / Cancel 三选项 modal30 秒保存超时保护,保存中点关闭按钮被进度指示器替代。
  • LSP 管理器 + 状态指示器#26。新增 LspManager 服务lazy spawn、60s idle eviction、内存上限保护、stderr ring buffer、JSON-RPC stdio framer、严重度映射LSP 1-4 → error/warning/info/hint、跨文件诊断收集与确定性比较器severity → 编辑文件优先 → 字典序)。工作区面板头新增 LspStatusIndicator,显示 Ready / N errors detected / Starting / Unavailable;点击展开诊断下拉,键盘可达。unavailable 状态根据原因展示 Install...(缺前提)或 Retry(异常退出)单个动作。

协调模式 B1 / B2 优化

  • B1 守护#15。新增 5 条不需要新架构、用环境变量回滚的护栏:
    • lazyDelegationCheck.ts — AgentTool 提示包含"based on the findings"等弱化短语时拒掉,强制重写
    • 协调模式专家 redirect — 看到 worker 子任务匹配专家关键词code review / security audit / refactor / commit / test 等)时自动切到对应专家
    • 调用上限将到时给 worker 结果加 <system-reminder>,让 coordinator 在最后一次硬阻塞前能换路
    • 卡顿监督 + 模式建议横幅(首条提示路径中已接通)
  • B2 task-spec 质量评分#18。纯启发式打分子模块 taskSpecQuality.ts4 维度concrete-action / file-reference / success-criteria / adequate-detail → 3 桶 well-specified / adequate / underspecified。当前只在评分阶段警告不阻塞 schema为后续结构化 task-spec 入参铺路。
  • worker-continue advisor#21。当 coordinator 想 spawn 新 worker但有同类型 worker 还在 panel 上、已加载相同文件advisor 会推荐 SendMessage 复用已有的,不浪费上下文。
  • research-fork opt-in#22。协调模式可选启用单 fork 路径做 cache-sharing 的研究风格扇出。

改进

  • TabBar 鼠标滚轮横向滚动#19。鼠标悬停在对话 tab 栏时滚轮 deltaY 翻译为水平 scrollLeft,滚动条隐藏(scrollbar-width: none),但仍可滚——比"必须按住 shift"舒服很多。

修复

  • smart "Install all" + PATH 刷新#14。修 v0.5.10 一键安装的兼容性 bug。重写为 PowerShell wrapper装完每个包刷一次会话级 PATH单个 manager 失败时按平台 fallthroughwinget → scoop → choco / brew → port / apt → dnf → pacman不会一个 dependency 卡住后续全部。
  • provider "获取模型" 跨混合内容修复#28。把按钮的 fetch 路径从渲染层平移到本地服务端代理(POST /api/providers/fetch-models)。原来直接在 webview 里 fetch() 上游 /v1/models,碰到 plain http:// 的 relayhttp://47.116.22.0:3000会因为渲染层是安全上下文Tauri / Electron触发 mixed-content 拦截,外加大量自部署 relay 不返回 CORS 头,全部呈现为 "Failed to fetch"。服务端无 webview 限制HTTP / HTTPS / IP / 域名一视同仁。
  • WS echo 测试 timeout 修复#20。把 main 上 echo 测试的 5 秒超时拉到 12s/15s缓解 main 上 CI 偶发抖动。

范围

  • Solo Pipeline:src/server/services/{soloSuggestions,soloSignalsService}.tssrc/coordinator/soloPipelinePrompt.tssrc/server/ws/{events,handler}.tssrc/server/services/conversationService.tsdesktop/src/{stores/{sessionRuntimeStore,chatStore},components/chat/ChatInput,pages/ActiveSession,types/chat}.ts(x)、5 个 i18n locales。
  • 编辑器 + LSP 基础:desktop/src/{components/workspace/{WorkspaceEditor,encodingDetect,UnsavedChangesModal},stores/workspacePanelStore}.ts(x)src/server/{events/workspaceFileSaved,services/{workspaceFileService,lspManager,lspProcessLimits,lspJsonRpc}}.tsdesktop/src/components/workspace/LspStatusIndicator.tsxdesktop/package.json(@codemirror/* 9 个包)、5 个 i18n locales。
  • 协调模式:src/tools/AgentTool/{lazyDelegationCheck,taskSpecQuality,workerContinueAdvisor,agentStallDetector,invocationLimiter,forkSubagent,runAgent,AgentTool}.ts(x)src/utils/{handlePromptSubmit,modeAdvice}.tssrc/tasks/LocalAgentTask/LocalAgentTask.tsxscripts/dev-coordinator-e2e.ps1
  • TabBar:desktop/src/components/layout/TabBar.tsx
  • Install all + Provider Fetch Models:src/server/services/{pluginService,providerService}.tssrc/server/api/providers.tssrc/server/middleware/errorHandler.tssrc/server/types/provider.tsscripts/test-mcp-install.ps1desktop/src/{api/providers,types/provider,pages/Settings}.ts(x)
  • WS echo 修复:src/server/__tests__/e2e/business-flow.test.ts(timeout 调整)。

验证

  • 服务端 bun test src/coordinator/soloPipelinePrompt.test.ts:11 / 11
  • 服务端 bun test src/server/__tests__/conversations.test.ts -t "Solo":3 / 3
  • 服务端 bun test src/server/services/soloSuggestions.i18n.test.ts:2 / 2i18n 跨 locale 契约)
  • 服务端 bun test src/server/__tests__/providers.test.ts -t "fetchUpstreamModels":5 / 5
  • 桌面 bun run lint(tsc --noEmit)
  • 桌面 bun run test stores/{chatStore,sessionRuntimeStore,workspacePanelStore}.test.ts:全套通过
  • 桌面 bun run test src/api/providers.test.ts:2 / 2renderer→server 契约)
  • 桌面 bun run test src/components/workspace/{WorkspaceEditor,LspStatusIndicator}.test.tsx:全套通过
  • AgentTool / coordinator 套件:taskSpecQuality.test.ts 18 / 18、lazyDelegationCheck.test.ts 全套、workerContinueAdvisor.test.ts 全套

升级注意

  • 零破坏。Solo Pipeline 模式默认关,需要用户在 + 菜单显式打开 toggle 才生效;闲聊场景不会被自动切到 Solo 流程。LSP 反馈在 feature('LSP_FOUNDATION') flag 下,对没装 typescript-language-server 的用户透明降级为 unavailable,不阻塞任何 agent 流程。
  • CodeMirror 包首次更新需要 cd desktop && bun install 一次拉新依赖(@codemirror/* 9 个包,合计 ≈ 80 KB gz远低于 Monaco 的 2-3 MBCI 自动处理。
  • Solo / Coordinator 互斥。两个模式在客户端与服务端两侧都强制只能开一个CLI 子进程从不同时收到两份 --append-system-prompt。模式偏好在 localStorage 持久化,会话重启后保留。
  • Provider 用户:自部署 plain-http:// relay 现在能在桌面端正常"获取模型"了,无需把 relay 套 HTTPS 反代。