Repository navigation
Releases: kurzcraft/DeepTask
Release list
Deeptask 9.3.0
Deeptask 9.3.0
功能与修复
- evolve slug 与显示名强制同号:
evolve-N显示为Evolve-N。manage_modecopy/update 不再继承前代显示名。 - 过大任务清单先建
EXTRA/task/<短标题>/顶目录,再拆无deeptask-task-id的轻文件;对话仍只有一份权威EXTRA/task/*.md。 - 压缩快路径不得切掉
<current_task_state>;子代理判定用parentTaskId/isChildAgent。 - 长会话灰屏按实测持有链修,不再猜 inotify、不再重砍 9.2.9 监视器:
- 日志/大块跳过 Shiki
codeToHasttoken 树,纯pre回退;复制仍用 rawSource。 - 流式命令与 transcript 展示投影一律 8k;展开仍
requestCommandOutput取全文。 - 增量
postState用taskId+instanceId+clineMessagesEpoch省略未变的clineMessages;force仍发全文;abort 清空 posted epoch。webview 仅在字段存在时替换。 - 镜像窗口
hydratePersistedMessages只读ui_messages,不 parse 97MBapi_conversation_history。resume 在内存为空时仍加载 API 全文。getTaskWithId默认跳过 API parse,export 等路径除外。
- 日志/大块跳过 Shiki
明确不改
- 磁盘存储与模型输入仍保留全文。
- 不裁
apiConversationHistory作为模型 I/O。 - 不重做 9.2.9 监视器,不把
Committed_AS当物理 RSS 溢出。 - 不声称永久消除灰屏。
现场采样(2026-10-31)
灰屏阈值:渲染 RSS ≥1500MB 或 anon ≥1200MB。
| 时刻 | 渲染 RSS / anon | extensionHost RSS | 判定 |
|---|---|---|---|
| 04:42 溢出 | 3944 / 3828 MB | ~1.3 GB | zygote 渲染持有,不是 fileWatcher |
| 08:37 回涨 | 1986 / 1873 MB | 1236 MB | 增量 postState 仍整包 7432 条 |
| 14:54 重载 omit 包 | 366 / 248 MB | 618 MB | 低于阈值 |
| 15:43 同窗未重载 | 704.5 / 589.6 MB | 677.7 MB | OVERFLOW=False;慢爬不当失败 |
| 15:51 发布前 | 591.1 / 476.1 MB | 685.8 MB | OVERFLOW=False;不改路径 |
Committed_AS 可超过 CommitLimit;不当作渲染灰屏。
受控验证
projectCommandOutput+ highlighter skip + CodeBlock:29+5 通过。ClineProvider.getTaskWithId+subagentResultInbox:11 通过。- omit/force/abort host 23 + webview 14 通过。
Task.spec:hydrate 不 parse API;resume 空历史仍加载 API。- 15:41 已装
deeptask.deeptask@9.3.0;VSIXbin/deeptask-9.3.0.vsix38.8MB。产物含 omit epoch 与 hydrate skip。
验证边界
- 安装不等于已重载;同窗口旧 heap 不回落,不能当修复失败。
- 测过未装、装了未重载,都不能当内存结论。
- 本版不保证永不溢出。
Deeptask 9.2.9
Deeptask 9.2.9
功能与修复
- 聊天列表虚拟化真正生效:给 Virtuoso 有界视口(
h-full+height: 100%),屏外ChatRow不再整树挂载。 - 仅末条流式行挂 ResizeObserver;历史行不再每人一个尺寸观察器。
computeItemKey使用message.ts,展开/折叠与回收在追加、压缩后仍对齐。- 用户消息轨道改为单例悬停预览,不再为每条刻度预挂 Tooltip 正文;跳转刻度仍全量。
- 并行子代理面板使用同样的有界 Virtuoso 视口。
- 工作区文件列表与代码索引不再自建递归
**监视,改用编辑器文件事件(create/delete/rename/save),避免绕过files.watcherExclude把 node_modules/.git 钉进 inotify。 - FileContextTracker 不再挂整树
**change watcher。已跟踪文件用 basename 定点监视 +onDidSaveTextDocument;node_modules/.git/EXTRA 的 churn 不再灌进 fileWatcher 进程。 - 任务进度监视以
EXTRA/task为基路径、只看直接*.md子文件,避免含/的 glob 被编译成整树监视。 - 通过
configurationDefaults贡献files.watcherExclude,堵住 VS Code 默认监视对增长目录的洞:包仓库(.pnpm/.bun/.yarn/cache)、构建缓存(.vite/.cache/.turbo/.next)、Git object/LFS、以及EXTRA/output。源码、EXTRA/task进度 Markdown、MCP 配置仍被监视。VS Code 内置**/node_modules/*/**匹配不到点目录,所以 DeepTask 停掉自建递归监视后,这些树仍会被默认监视钉进 inotify。目录 inode 必须单独排除(**/.git/objects、**/node_modules/.pnpm、**/EXTRA/output、**/artifacts):递归/**glob 不会覆盖目录自身。 - 重启后采样(2026-10-30T19:08+08):fileWatcher inotify 1394(unique 1385),
nm_pnpm=0,EXTRA/output=0,fileWatcher RSS 114.6MiB,extensionHost RSS 1319MiB。剩余nm_other=215是各包的node_modules顶层目录,不是.pnpm仓库。源码树(src/apps/packages/webview-ui)仍被监视。不声称永久消除灰屏。
明确不改
- 磁盘存储与模型输入仍保留全文。
- 历史命令输出继续用 9.2.8 的展示投影;展开后按时间戳取回原文。
- 不裁
apiConversationHistory,不调高 heap,不关掉 90% 告警。
受控验证
UserMessageRail.spec.tsx:6 项通过(含单例悬停预览)。ChatView.spec.tsx:37 项通过、12 项既有跳过(含有界视口断言与 stick-to-bottom / 跳转回归)。ChatRow相关:5 个文件 18 项通过。- 监视器:
WorkspaceTracker+ code-indexfile-watcher+FileContextTracker.shared-watcher+ParallelManager共 67 项通过(workspace 文件事件、定点 basename 监视、收窄 worktree 监视,不再创建递归**watcher)。
验证边界
- 安装文件校验不等于现有扩展宿主已加载新代码;重载前仍可能运行旧版本。
- 未完成用户现场超长会话灰屏复现;不声称永久消除灰屏或零缺陷。
Deeptask 9.2.8
Deeptask 9.2.8
功能与修复
- 中断恢复:子代理终态结果持久化、去重回传、取消不重启。
- 父中断保活:父代理中断不再取消仍在运行的子代理;resume 等待 inbox 落盘终态,并用最终 tool_result 替换中断占位。
- 关窗重启:子代理完成消息落盘即写父 inbox,不依赖同进程 runPromise;重启后从历史恢复子代理身份,父点继续才注入终态。
- 工作区:工具绑定隔离源码目录;兼容依赖默认复用,避免共享安装写入。
- 合并:临时树预检后发布到实际目标分支及检出目录,保留无关修改,冲突返回错误。
- 命令:超过两条物理行立即拒绝,要求改用脚本及持久日志。
- 长上下文压缩:增量续跑状态,禁止复述上一轮开场白或嵌套 Previous Conversation;15 秒本地快路径仍保留最新用户请求。
追加资源优化
- 辅助HTML转义缓存按UTF-16载荷估算限制总预算1MiB、单项64KiB;大文本完整返回但不驻留缓存,不裁剪历史或工具结果。
- Shiki仅预加载当前界面使用的两种主题,其余主题按需加载;保留语言/主题兼容和失败重试。
- 重叠全量状态请求合并为执行批次及共享尾批,保留最新状态、等待语义、错误传播和释放边界。
- fork子进程消除同一快照的成对重复IPC;不删除独立状态事件和父端控制流程。
- 工作区领取与释放使用原子变更和owner校验,避免并发覆盖及旧实例释放新实例占用。
- 只去除宿主生成的重复进度/命令规则、紧凑化MCP schema空白;不删用户规则,不降低上下文窗口或修改压缩阈值。
受控验证结果
基线提交:3ff6c51d845e55861261ba4ec4570276db46bf6b。运行环境:Linux、Node v20.20.0。
- 最终综合回归:主扩展20个文件346项通过、12项既有pending;前端2个文件8项通过;无失败、未新增跳过项。此前专项回归另覆盖真实Git合并、占用生命周期和提示词分支。
- 主扩展、agent-runtime和webview三个受影响包类型检查通过;变更文件按包级配置lint通过,git diff空白检查通过。
- 独立Node进程中,对1500个大文本逐项校验完整转义输出,累计90004890字符一致;GC后堆增量34.50MiB降至0.16MiB。该数据只表示此缓存测试,不是Chromium、扩展宿主或整机内存降幅。
- 快照压力测试:100002次请求构造2次,最终最新状态正确;100000对IPC事件发送200000次降为100000次,完整状态保留。事件次数不代表峰值内存。
- 固定系统提示词样例以o200k_base计数11663降至11439,减少224 tokens;不是供应商实际计费,也不是所有任务固定降幅。
验证边界
- 不主动重启当前VSCodium;安装文件校验不等于现有扩展宿主已加载新代码,重载前仍可能运行旧版本。
- 未完成用户手动中断父对话后的现场恢复验证,未完成重载后的长期运行与灰屏复现验证;不声称永久消除灰屏、所有功能零回归或零缺陷。
- 不调整内存告警阈值、不扩大heap、不杀外部进程、不删除会话历史。
- 版本继续为用户指定9.2.8,源码普通fast-forward推送;既有发布标签不强制改写。
后续结构审计修复
- 普通取消关闭新的历史写入入口,保留已经捕获的最终快照;分支替换仍可使旧排队快照失效,避免迟到回调把空历史写回。
- 流式工具解析状态按Task隔离;提供商仅维护当前请求的工具标识,防止同进程并发任务互相污染。
- MCP监听按服务名与配置来源共同归属;重复配置更新保留有效监听,删除和异步迟到回调遵守释放边界。索引扫描和服务代际分别释放自有ignore监听。
- fork启动握手排队,已经就绪的任务仍并行;失败、超时、取消和重复恢复均有回归。停止后保留进程归属直到真实exit,终态只结算一次,并回收终止计时器。
- 原生工具参数不再套用legacy HTML解码,XML兼容保留;命令预检对Bash做非执行语法检查及输入大小限制,不为正常长时任务添加隐式运行截止时间。
本轮联合验收(2026-10-28)
- 主扩展43个测试文件901项通过、16项既有跳过;前端2个文件8项通过;无失败、未新增跳过项。变更文件lint与格式检查、主扩展/agent-runtime/webview类型检查通过。
- 进程测试使用模拟子进程;Git工作区测试使用受控临时仓库。上述测试不等于用户现场中断、跨平台全覆盖或长时灰屏验收。
- 修复前现场采样约44.93分钟、269个样本:系统OOM kill计数未增加;扩展宿主RSS约642至669MiB,峰值约702MiB;文件监听进程约1311至1868MiB。另一个未明确归属进程继续增长,尚不能归因到具体插件对象。
- 没有告警同步堆快照、灰屏现场及同负载前后对照,不能据此声称内存泄漏已经全部消除。安装核验只证明磁盘文件,运行宿主加载状态与重载后长时表现仍须分别验证。
面板堆持有链(2026-10-28 追加)
- 90% 告警来自 webview
totalJSHeapSize / jsHeapSizeLimit,不是整机 RAM。现场证据显示历史行仍订阅完整扩展状态,流式messageUpdated会带动整棵翻译树和已渲染行重绘。 - 设置与转录拆成独立 context:
ChatRow/TranslationProvider只订设置;列表元数据一次预计算,previousTodos作为 props 传入,不再每行反向扫描全文。 - 最后一行才接收
lastModifiedMessage与isStreaming;历史行保持原有 checkpoint、浏览器动作配对和 todo 对比语义。 - 专项回归:
chatRowListMeta、ChatRow错误行、TranslationContext、ExtensionStateContext共 4 文件 21 项通过。未完成重载后的长期灰屏现场验收。
保真优先的收敛版本(2026-10-29)
- 两套代码块高亮采用请求级失效标记:旧请求在新输入或卸载后不再继续生成结果或覆盖新内容;保留高亮、原文复制、纯文本回退和滚动行为。
- 统计 token 用量时跳过与用量无关的终端/MCP 文本合并,避免克隆完整转录;checkpoint 和任务元数据遵循同样规则,不改变展示合并。
- 图片清洗仅在确实需要转换时新建对应条目;支持图片或无图片的历史复用原对象,不删减消息或改写存储。
- 初始化配置缓存不重复持有透传历史,公开读取和导出接口仍返回原有字段;状态快照复用已获取的设置,todo 查询以反向遍历替代数组复制。
- 未纳入无法证明信息等价的候选:同路径旧文件/同命令旧输出/历史截图删除、终端新增固定截断、弱指纹省略全文、同步惰性历史及子进程身份配置清除。候选源码与补丁完整保存在本地审计备份,不作为已发布优化。
- 联合回归:52个主扩展测试文件1006项通过、16项既有跳过;11个前端文件61项通过,无失败。三个包类型检查、所有变更TypeScript文件lint和格式检查通过。
- 高亮受控延迟初始化测试中31次分词缩减为1次;这是调度工作量,不是Chromium堆占用百分比。
- 尚未取得本次安装重载后的长时同负载对照或灰屏同步堆快照,不能保证灰屏已根治;不主动重启编辑器,不调整告警阈值。
命令共存与取消恢复(2026-10-29 追加)
- DeepTask补全与提交消息命令使用独立命名空间;原Kilo扩展存在时不抢占其旧命令,单独安装保留兼容别名,注册失败回滚本组资源。内部调用、快捷键上下文与建议接受回调同步隔离。
- 命令已结束后,对可能阻塞在未完成next上的迭代器清理设置有界等待;不限制正在运行的正常长任务,不额外裁剪输出。
- 取消恢复以点击代际启动,迟到输出不再解除或推迟取消保护;切换会话清除旧恢复状态,压缩事件按当前任务标识隔离。
- 最终定向回归:主扩展14文件383项通过、12项既有跳过;前端2文件42项通过、12项既有跳过。两包类型检查、变更文件零警告lint及diff检查通过;测试运行器仍报告既有动态导入URL警告。
- 原文保真审计覆盖实际Bash执行、Unicode、反斜杠和实体文本;未复现新增反转义缺陷,不增加猜测性解码。
- 以上不证明长期灰屏已根治;未重启当前编辑器、不调高告警阈值、不缩减模型必要信息。
历史命令输出展示截断(2026-10-29 追加)
- 宿主向 webview 投影历史命令输出时只发送短预览,磁盘存储与模型 I/O 仍保留全文;最后一条流式命令保持完整输出。
- 被截断的历史行默认折叠,不挂全文 CodeBlock;展开后按消息时间戳从存储取回原文,任务切换会丢弃已取回全文。
- 专项回归:core
projectCommandOutput5 项通过;webviewCommandExecution32 项通过,覆盖截断、末条流式全文、展开取回与身份切换。 - 以上仍不证明长期灰屏已根治;不改存储、不裁剪模型必要信息、不主动重启编辑器。
代理管理页缓存回收(2026-10-29)
- 独立代理管理页在宿主权威列表及远端列表均移除会话后,清空已订阅atom并移除消息、版本、草稿、图片、todo及状态机的缓存键;连续IPC快照读取同一store当前列表,避免陈旧闭包漏删。
- 完成、停止、报错和切换会话不会触发此回收;本地或远端任一列表仍保留时,正文、图片和草稿不变。重开同ID可由完整宿主快照恢复,不改持久历史或模型输入。
- 同一8557条、16309704字节真实转录,12轮创建/加载/删除后强制GC实际已用堆:旧页278.491MiB,修复页22.614MiB;旧页逐轮增长,修复页每轮回落到22.3至22.9MiB。双方覆盖历史索引0至8180,输入交互通过、页面异常0。该结果是隔离生产页面的删除后滞留对照,不是整机内存降幅或长期灰屏验收。
- 最终定向证据:宿主14文件383项通过、12项既有跳过;界面18文件294项通过、12项既有跳过,包含代理管理全套252项与聊天控制42项。宿主测试后源码摘要未变,界面联合重跑;类型及变更文件lint通过。
- 证据:EXTRA/output/928_manager_ab.log、928_manager_delivery_inventory.log、928_delivery_verify.log。没有删除用户会话、扩大堆上限、降低告警敏感度或重装依赖。
长任务上下文腐化修复(2026-10-30 追加)
- 清洗未配对 native
tool_use时保留交错文本,不再把工具调用前后的助手说明整段丢掉。 - 压缩摘要只在出现嵌套 Previous Conversation 章节时压平,避免下一轮把开场白当聊天复读;非结构化摘要保持原样。
- 原生历史只接受真正的
tool_use/mcp_tool_use,防止把普通文本块误当成工具调用。 - 专项回归:
nativeStreamText、nativeAssistantHistory、condense/index、rewind-after-condense、condense.spec共 5 文件 91 项通过、3 项既有跳过。 - 以上仍不证明长期灰屏已根治;不改存储、不裁剪模型必要信息、不主动重启编辑器。
安装后内存采样与溢出边界(2026-10-30)
- 已安装并核验
deeptask-9.2.8.vsix(sha256a1413789…c4ded538,1891 个已装文件一致)。安装瞬间整机最高 RSS 约 4652MiB,归属 VSCodium zygote/编辑器进程,不是 DeepTask 单独堆。 - 重载后传感器(约 2236 条消息、webview 已水合且有根节点):扩展宿主 RSS 约 769–1089MiB,webview 堆约 290–435 / 359–489MiB。更早现场扩展宿主约 642–702MiB,文件监听进程约 1311–1868MiB。采样期间系统 OOM kill 计数未增加。
- 90% 告警来自 webview
totalJSHeapSize / jsHeapSizeLimit,不是整机 RAM 耗尽。灰屏是水合前空壳,不是渲染进程被杀。本版削减的是长会话克隆和面板持有链,不能保证永不溢出。 - 下一轮只动展示层:聊天列表虚拟化、webview 按窗口懒取、非焦点任务只留磁盘索引、按 pid 拆分 watcher RSS。禁止裁剪模型必要信息、禁止靠调高堆上限或关掉告警来“解决”内存。
DeepTask 9.2.7 — 长上下文内存优化(424GB→30MB)+ 子代理幽灵复活根除
🧠 长上下文内存优化(本次新增)
修复长时间使用后 VSCodium 内存超 90% + Deeptask 面板灰屏的根因:
- 增量消息推送:每条新消息不再克隆整个会话状态推送给 webview,改为单条
messageUpdated增量推送。真实 13,820 条消息会话实测:累计结构化克隆流量 424.86 GB → 30.7 MB(削减 99.99%) - Settled 任务释放历史:任务结束后释放
clineMessages/apiConversationHistory(每任务约 40MB;5 并行子代理结算后释放约 201MB),释放时机在最终落盘快照之后,不破坏持久化 - 并行会话 transcript 释放:子代理结算即截断
state.messages(每子代理约 28MB),迟到的回调不再重新累积 - 广播合并:流式消息触发的并行广播(registry prune + worktree watch + 全量重载)合并为一次 in-flight + 一次 trailing,保持 await 语义
👻 子代理幽灵复活根除(9.2.7 原有)
- 已结算的子代理(完成/取消/出错)立即从任务栈驱逐——不再出现"手动关闭后复活/自行恢复/劫持后续消息路由"的幽灵会话
- 取消聚焦子代理 = 真正销毁(close means gone)
- 并行会话停止按钮真正可用:非 running 状态的僵尸会话一键清除
- 工作区/子代理权限开关真正生效(此前 state 缺 key 恒显示 ON)
✅ 验证
- 类型检查 src + webview-ui 0 错误
- 单测:parallel 83/83、core/task 260/264、ExtensionStateContext 12/12
- 压力测试:真实 13,820 条消息数据量化字节量对比 + append 语义边界(乱序/回放 no-op 正确)
- VSIX 包内 bundle 特征验证(M2/M4/M6/M7 全部在包)
完整安装:下载附件 deeptask-9.2.7.vsix → codium --install-extension ./deeptask-9.2.7.vsix --force
Deeptask 9.2.6
Deeptask 9.2.6
发布日期:2026-10-03
修复内容
修复 9.2.5 回归:进入对话后继续/取消按钮永久消失
9.2.5 为了修复"按钮闪现到其他对话开始界面",把清按钮逻辑放在了一个定义在
lastMessage 恢复 effect 之后的 task 切换 effect 里。React 在同一 commit 内按
定义顺序执行 effects,导致先恢复、后清除——刚恢复出来的继续/取消/审批按钮在同一
次 commit 里被擦掉,且之后 lastMessage 深比较不再变化,按钮永久消失,用户无法
控制对话。
修复:新增一个前置 reset effect(仅依赖 task?.ts),定义在 lastMessage 恢复
effect 之前。同一 commit 内先清掉上一个对话的按钮、再恢复当前对话自己的按钮,
两个目标(不闪现 + 进入即显示)同时成立。原 task 切换 effect 移除清按钮块,保留
refs 清理职责。依赖数组刻意不含 isHidden:面板隐藏/显示不得清按钮(消息未变化时
恢复 effect 不会重跑,清了就没有恢复源)。
验证
webview-uicheck-types:PASSsrccheck-types:PASS- ChatView spec 45 用例:新增 2 个回归用例通过(进入对话即显示控制按钮、切换对话按钮跟随替换);唯一失败的 touch-follow 用例经 git stash 基线对照确认为预存失败(与本次修改无关)
涉及文件
webview-ui/src/components/chat/ChatView.tsx:新增前置 reset effect(reset-before-restore 顺序契约),原 task-switch effect 移除清按钮块webview-ui/src/components/chat/__tests__/ChatView.spec.tsx:+2 回归用例src/package.json:9.2.5 → 9.2.6
Deeptask 9.2.5
Deeptask 9.2.5 版本说明
发布日期:2026-10-03
版本类型:Patch(多对话独立性大修 + 工作区挤出策略精细化 + 消息投递可靠性)
一、修复清单
修复 1:evolve 模式自动升级 + 对话间模式独立性
- 根因 A:
ModeRouter.resolveEvolveAlias的正则^evolve-(\d+)$只匹配带数字后缀的别名,新对话选择基础evolve模式(无后缀)时不会自动升级到最新 evolve-N。已改为同时匹配^evolve$与^evolve-(\d+)$,都解析到最新副本。 - 根因 B:子代理未指定 mode 覆写时读取全局
state.mode而非父任务实际运行模式,导致父任务用 evolve-N 时子代理落到别的模式。已改为继承父任务锁定的模式。 - 根因 C:
focusTask重建对话时不恢复该对话保存的模式,切回对话后模式显示/运行错乱。已在栈内路径与重建路径都恢复对话自身模式。
修复 2:运行按钮闪现 + 切换对话吞文本框文本
- 吞文本根因:切换对话
invoke:newChat→handleChatReset无条件清空inputValue。已改为切换场景保留草稿文本与已选图片,仅真正新建对话时清空。 - 按钮闪现根因:
task.ts切换 effect 不同步清primaryButtonText,旧对话的 Run/审批按钮要等 messages 异步到达才消失,期间闪现在其他对话的开始界面。已改为切换时同步清除。 - 连带修复:
askResponse路由跟随当前聚焦对话,栈顶后台任务不再抢走按钮响应。
修复 3:工作区多进程占用只挤子代理,不挤父代理
- 根因:
workspaceOccupancy把与父代理共享 cwd 的只读子代理也计入占用者,父代理触发ensureUnoccupiedWorkspace时反被自己的子代理挤出原工作区。 - 修复:占用计算区分读写语义——只读子代理(
needs_workspace:false)不计入占用、直接共享父目录;写型子代理(未指定或true)才挤出到独立工作区。dispatch_subagents工具描述已注明"只读子代理用 false,写代理不指定或指定 true"。
修复 4:手动停止子代理后发送消息的幽灵对话
- 根因:
rescuePendingContinuation用getCurrentTask()(栈顶)而非聚焦对话定位投递目标,子代理停止后从发送框发消息会重建错误任务,形成后台幽灵对话(文件夹栏不可见)且父代理进度丢失。 - 修复:聚焦对话任务不在栈内时先
focusTask重建(对话一定显示在文件夹栏)再投递;queueMessage兜底createTask同样走聚焦路由。
修复 5:工具调用(尤其归档)后发送消息首次不可见
- 根因:rescue/deliver 路由不跟随聚焦对话,park 后 10 秒兜底投递落到错误任务,模型看不见,只能手动重发。
- 修复:
handleTerminalOperationcontinue 分支与rescuePendingContinuation全部跟随聚焦对话任务,确保任何时刻首次发送即被目标模型看见。
修复 6(发布前追加):切回对话恢复 Run/Kill/Continue 控制
- 根因:
commandExecutionStatus是瞬态事件,切换对话时被正确清除,但切回时没有重放源,命令运行中等待审批的控制按钮消失。 - 修复:
ClineProvider增加每任务活跃命令注册表,focusTask时replayFocusedTaskLiveCommands重放到 webview;所有命令状态事件携带taskId,webview 按currentTaskItem.id过滤,杜绝跨对话串扰。
修复 7(发布前追加):模式切换污染其他对话 + 切换对话变慢
- 根因 A:
handleModeSwitch用getCurrentTask()(栈顶)定位任务,pending 新对话主页选模式会写进其他对话的任务。已改用resolveStickyTaskTarget():focused 优先,pending 时不动任何任务。 - 根因 B:
focusTask链路 broadcast 执行两次(postStateToWebview内部已调度一次)。已移除显式await broadcast,切换对话提速约一半。
二、验证
src/webview-uicheck-types 全部 PASS。- 目标测试 58/58 通过,含新增
ClineProvider.liveCommandReplay.spec.ts6 用例、workspaceOccupancy.spec.ts只读/写子代理占用用例、webviewMessageHandler.parallel.spec.ts聚焦路由用例。 - 全量回归 8459 用例:198 个失败经
git stash基线对照确认全部为预存失败(.kilocode→.deeptask 目录迁移遗留),本次零新增失败。
三、涉及文件
src/core/kilocode/ModeRouter.ts— evolve 别名解析兼容无后缀形式src/core/kilocode/parallel/workspaceOccupancy.ts— 读写语义区分的占用计算src/core/kilocode/parallel/ParallelManager.ts— 子代理 spawn 模式继承父任务src/core/tools/ParallelTools.ts— dispatch_subagents 工具描述注明 needs_workspace 语义src/core/webview/ClineProvider.ts— focusTask 模式恢复/命令重放/聚焦路由/草稿保留/广播去重src/core/webview/webviewMessageHandler.ts— askResponse/continue/queueMessage 聚焦路由src/core/webview/App.tsx、webview-ui/src/context/ExtensionStateContext.tsx— commandExecutionStatus taskId 过滤webview-ui/src/components/chat/ChatView.tsx(task 切换同步清按钮)等
Deeptask 9.2.4
Deeptask 9.2.4 Release Notes
核心变更:new_task 并入 dispatch_subagents(9.2.4 子代理时代)
工具合并
new_task工具与/newtaskslash 命令移除;dispatch_subagents成为唯一子任务工具:单个干净上下文任务 = 单元素tasks数组,多并行 = 多元素数组。- 继承 new_task 全部体验:任务提示词窗口展示、自动跳转子代理界面、单个完成自动跳下一个、全部完成自动回主任务。
每任务覆写
- 每个子代理任务条目可指定
mode/provider_profile/model_id;未指定字段继承父代理当前配置。 - 读图子任务直接在任务条目写
provider_profile:"AIHUBMIX-VL", model_id:"deepseek-v4.1-flash",主对话无需切换 provider。
身份注入(本次实测修复)
ParallelManager.spawn填充parentIdentity(父代理 mode/provider/model)。Task.getSystemPrompt为每个子代理前置# Agent Identity (runtime-injected)横幅(自身 mode、provider profile、model、depth、父链),子代理无需在提示词自报配置。environment_details的 Current Mode 改用任务自身锁定模式(Task.getTaskMode()),子代理 mode 覆写后不再显示父会话模式。
门禁豁免(9.2.3 已修,9.2.4 验证)
- 统一谓词
Task.isChildAgent覆盖三条委托路径(parentTaskId / AGENT_CONFIG / subagent 字段),子代理 attempt_completion 不再被根会话完成门禁、失败工具拒绝、cheat 检测误伤。
UI 完整性(本次修复)
dispatch_subagents/workspace_status/workspace_create/workspace_merge补全 transcript 卡片与图标(hub / repo / repo-create / git-merge)+ EN/zh-CN 文案。- 自动批准面板"Subtasks"开关更名为"Subagents"(en / zh-CN / zh-TW),语义对齐 dispatch_subagents;移除与能力层撞名的
alwaysAllowSubtasks卡片,面板图标统一为 lucide-react 组件。 - 各子代理提示词以带编号卡片展示(newTask ask 卡风格),结果逐代理回卡到主任务(
subtask_resultpayload)。 - 派发后自动跳转子代理界面、单个完成自动跳下一个 running、全部完成自动回父任务(jumpToSession + completionWatchers)。
恢复按钮修复(本次修复)
- 输入框有文本时点击"恢复任务"按钮:按钮路径改发
messageResponse(与回车一致),文本随恢复一起送达,不再被吞。
其他修复
delete_file所有被阻断路径统一走批准询问(展示 blockedReason),批准即强制删除、拒绝即取消。- 修复 evolve-N 自动升级未生效(getSystemPrompt 改用
_taskMode并等待taskModeReady)。 - 修复归档后全 completed 的
update_todo_list同步被 "No verified task progress file" 阻断(归档宽限)。 - 内置 evolve 模式提示词写入项目 GitHub 地址;进化日志纪律(只在 manage_mode 固化修正时写入)。
ask_followup_question默认启用。
安装
codium --install-extension ./deeptask-9.2.4.vsix --force
# 或 VS Code
code --install-extension ./deeptask-9.2.4.vsix --forceDeeptask v9.2.3
Fixes
- 并行子代理不再被完成门禁卡死:
shouldDowngradeCompletionToActiveResponse/shouldRejectPrematureActiveContinuationCompletion之前只认parentTaskId,进程内并行子代理(无parentTaskId)被误判为根会话,attempt_completion被拒后陷入死循环。两处门禁现统一使用Task.isChildAgent判定。 - 子代理本轮有工具失败也能交还结果:
didToolFailInCurrentTurn拒绝对子代理(new_task 子任务 / fork 子进程 / 并行子代理)放行,父级仍能在转录中看到失败工具并自行反应。 - 子代理 resume 悬挂消除:子代理走到
resume_task/resume_completed_taskask 时自动以自身任务摘要应答,不再永久等待人类回复(4 个近期卡死会话实证均止于此)。
Features
- evolve-N 自动升级:新根对话开始时若处于旧
evolve-N模式,一次性自动升级到最高已安装evolve-M。续接历史任务保留原模式,子代理不受影响。 - new_task / dispatch_subagents 工具边界明确(XML + native 双协议描述):"子任务"或单个干净上下文任务默认用
new_task;仅 2+ 可并行任务才用dispatch_subagents,消除单个独立任务被误派为并行子代理导致的工作区占用混乱。
完整变更: https://github.com/kurzcraft/DeepTask/blob/main/CHANGELOG.md
Deeptask 9.2.2
Deeptask v9.2.2 Release Notes
Subagent & Todo Reliability
- Subagent results no longer double-truncated: per-subagent result cap raised from 4 000 to 20 000 characters (
dispatch_subagents) and the ParallelManager fallback extraction tail from 2 000 to 8 000. Long structured results (file inventories, diffs, analysis reports) now survive intact. update_todo_listfails fast on wrong format: a non-empty payload that parses to zero checklist items (plain-text arrays, JSON objects, prose) now returns an explicit error with the exact expected markdown checklist format. Both expansion gates append the same hint, so the retry succeeds instead of looping on "expansion required".
Background Task Green Dot
- The green unread dot now reliably appears when a background conversation finishes: the rail remembers a conversation as "seen running" until its
completedAtmarker actually arrives (even in a later broadcast frame) and consumes the transition exactly once per run. Reopened conversations re-arm the notification.
Conversation Ordering
- Deterministic conversation order: new conversations use a monotonic in-process clock (same-millisecond creations no longer tie), and both sort paths fall back to
createdAtthenid, so equal-lastActiveAtrows can never swap between renders.
Mode Evolution
manage_modecopy/update on a numbered series numbers the fork as the next sibling (evolve-3→evolve-4, notevolve-3-1), writes a delta description ("相比 evolve-3 的更新: …") that outranks the inherited source blurb, and switches the current task to the new copy immediately.- The bottom-left mode dropdown pins the current mode first and shows each mode's description as subtitle text, making numbered evolve variants distinguishable at a glance.
Install
codium --install-extension deeptask-9.2.2.vsix --forceRequires a window reload after installation.
Deeptask v9.2.1
v9.2.1
Fixes
- 弹窗外部点击关闭重写为原生方案:Popover 外部关闭改为 document 原生 pointerdown 捕获监听(与右下角稳定弹窗相同的 useClickAway 模式),彻底解决 v9.2.0 中点击弹窗外不关闭的问题
- 流式推理期间弹窗不再自动关闭:禁用 Radix dismissableLayer 全部默认关闭通道(合成焦点事件不再触发自关),Escape 键关闭保留
- 受控与非受控两种 Popover 用法均支持