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

69 lines
9.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# v0.5.11
> 本版本两条主线落地:**Solo Pipeline 模式**(让 AI 在 5 阶段独立流水线里跑完一个任务,不分 worker和 **inline 内联编辑 + 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.ts`4 维度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://` 的 relay`http://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}.ts``src/coordinator/soloPipelinePrompt.ts``src/server/ws/{events,handler}.ts``src/server/services/conversationService.ts``desktop/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}}.ts``desktop/src/components/workspace/LspStatusIndicator.tsx``desktop/package.json`(@codemirror/* 9 个包)、5 个 i18n locales。
- 协调模式:`src/tools/AgentTool/{lazyDelegationCheck,taskSpecQuality,workerContinueAdvisor,agentStallDetector,invocationLimiter,forkSubagent,runAgent,AgentTool}.ts(x)``src/utils/{handlePromptSubmit,modeAdvice}.ts``src/tasks/LocalAgentTask/LocalAgentTask.tsx``scripts/dev-coordinator-e2e.ps1`
- TabBar:`desktop/src/components/layout/TabBar.tsx`
- Install all + Provider Fetch Models:`src/server/services/{pluginService,providerService}.ts``src/server/api/providers.ts``src/server/middleware/errorHandler.ts``src/server/types/provider.ts``scripts/test-mcp-install.ps1``desktop/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 反代。