Dely0/dsh-personal-workbench ↗★ 30
@dely0/dsh-personal-workbench
提供日历、层级任务与AI协作的个人工作台 适合想将DSH打造成集日程管理、任务拆解与AI执行于一体的效率终端。
同名包的其他仓库
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Dely0/dsh-personal-workbench说明文档
阅读完整 README ↗dsh-personal-workbench
A personal workbench plugin for DeepSeek Harness (DSH) Web. Turn your DSH into a calendar + task list + AI assistant workbench.
English · 简体中文
中文
这是什么
dsh-personal-workbench 是一个 DSH 个人工作台插件:
- 📅 日历(周/月可切换)+ 任务列表(树状层级)
- ✨ 自然语言快速录入,AI 澄清后自动生成任务
- 🧠 每个任务可关联多个 AI 会话:澄清 / 咨询 / 拆解 / 执行 / 复盘
- 🎯 AI 会话前可勾选本机已安装的 Skill,提示词自动注入“加载这些技能”的指令
- ✅ 任务执行采用“AI 申请完成 → 用户验收”闭环
- 🗂️ 每个任务一个 AI 会话工作区(默认工作区 + 任务名文件夹)
- 📝 Markdown 任务描述、复盘记录、变更历史
- ⏰ 到期提醒(页内横幅)
- 🗄️ 归档区、任务恢复
数据完全存储在本地 ~/.dsh/workbench,不上传任何服务器。
截图
以下截图来自 v1.14.58 + DSH 0.1.5-rc.1(2026-09-13 实机拍摄)。 面板走官方槽位路径:侧栏入口由宿主渲染,面板从侧栏右侧铺开、不覆盖左侧导航。
| 今日(任务 + 今日容量) | 今日排序 | 任务列表 |
|---|---|---|
![]() | ![]() |
| 日历 | 知识库 | 点子 |
|---|---|---|
![]() | ![]() | ![]() |
| 快速录入 | 微信接入 |
|---|---|
![]() | ![]() |
功能清单
任务
- 任务字段:标题、Markdown 描述、类型、状态、优先级、截止时间、AI 策略、提醒、工作区
- 无限层级子任务;今日 / 日历 / 列表三种视图
- 任务页筛选/排序:关键词(标题/描述)+ 状态/优先级/类型下拉多选可组合筛选;支持截止时间/优先级/创建时间/标题升降序;筛选保留父子层级,归档列表共用
- 任务类型、状态、优先级全部由字典表驱动,可自行扩展(设置页“字典管理”已支持新增/编辑/停用类型、状态、优先级、点子类型,默认项受保护)
- 任务资料夹(1.15.1 起的新口径):任务没填工作区时,资料夹名用
-而不是标题 —— 改标题不再留下孤儿目录、同名任务不再挤同一目录、标题里的特殊字符也不再直接变成目录名。 判定只看 ID 前缀;用户手填的工作区永不改写(老口径的标题型路径仍能被识别为自动路径, 见docs/releases/v1.15.1.md第 1 节) - 已完成 / 已取消任务不可再次执行
AI
- 快速录入澄清:一句话 → 官方会话区进行需求澄清 → 生成待确认草稿。 可同时附带图片(PNG/JPEG/WebP/GIF,最多 10 张)与 PDF / DOCX(最多 4 份、单份 ≤ 5MB, 正文由服务端抽取后随提示词一起交给 AI);也能直接粘贴或拖入。 拖入不支持的文件、超过大小/份数上限时逐条给出中文原因,不会静默丢弃
- 模型选择器(快速录入内):为本次澄清会话选模型(含 reasoning effort)。 宿主目录里没有模型的"收不收图"信息,所以由工作台补一张能力对照表: 选中未声明 image 的模型还带了图,会在发送前给出可读中文拒绝 (否则宿主会把图片悄悄换成一行占位文字,AI 根本看不到图)
/workbench斜杠命令:在官方输入框打/就能看到 workbench(走宿主原生命令注册, 因此进原生/菜单);执行后当前会话直接进入澄清流程。 命令侧会先按-建好任务资料夹,并把同一个 id 写进提示词- AI 咨询:对任务提问、要建议(不执行)
- AI 拆解:生成子任务提案树,确认后落库
- AI 执行:任意节点(含父任务)且 AI 策略为“可执行”时均可执行;AI 完成后提交验收申请,用户验收后才算完成;父任务验收通过时未完成子任务会级联完成
- 验收「暂存」:验收弹窗除「验收通过 / 驳回」外新增「暂存(先验证)」——草稿仍是待确认状态,但不再自动弹窗打断你;你先去跑回归测试,之后从「待处理」弹窗的「已暂存」段点「继续验收」唤回。仅验收类草稿(完成验收申请 / 复盘草稿)支持暂存
- 驳回有痕、AI 可见:驳回或暂存都会写入任务事件与任务共享记忆;
workbench_request_completion支持feedback参数,返回里会告知「本次是第几次提交、上次被驳回/暂存于何时、原因」,AI 不必等你口头转述 - 草稿通知推送微信:AI 提交草稿(验收申请 / 复盘 / 日报周报 / 知识 / 点子提案)时可经微信推送,复用任务提醒同一条通道与策略(静默时段、小时/日上限、汇总、熔断、未装 dsh-im 静默降级);默认只开「验收申请」与「复盘草稿」,可在设置页按类型开关
- Skill 选择器(AI 会话前加载技能):发起 AI 执行/协助/拆解/复盘/排序/报告等会话前,提示词弹窗内可直接勾选本机已安装的 DSH Skill(支持按名称/描述搜索、多选、点击标签移除);选中项会以“请加载这些技能”的指令注入到提示词开头,技能正文由 AI 通过
skill工具按需加载。技能目录来自宿主skills注册表(GET /api/workbench/skills),宿主未安装该服务时选择器自动隐藏、行为与旧版完全一致 - 状态聚合:所有子任务完成后父任务自动完成(递归到根);直接完成父任务会级联完成后代
- 任务共享记忆:同一任务/子树下的多个 AI 会话共享上下文,父任务会话自动加载整棵子树记忆,避免跨会话失忆
- 存量修复:提供
pnpm repair/POST /api/workbench/maintenance/repair-parents幂等补齐历史父任务完成状态 - AI 智能排序(任意日期):今日/日历任一日期一键生成执行顺序提案,确认后应用(不修改任务字段)
- AI 日报/周报:基于任务事件与完成记录自动生成报告草稿,确认后保存并可回看、删除
- 系统级桌面提醒:任务到期时在浏览器已授权的情况下发送系统通知(页面可最小化)
- 重复任务:任务可设置每天/每周/每月重复,到期自动生成实例(模板归档即停止)
- 个人知识库 / 错题集:经验教训、决策、笔记、片段沉淀为可搜索知识条目(**分类 Tab + 关键词搜索(标题/正文/标签)
- 标签筛选 + 排序 + 分页,并按时间自适应分组**),复盘一键沉淀,AI 可提交知识草稿
- 知识库会被会话 AI 自动用起来(1.15.2):按「任务标题+描述」在会话开始、按你的提问在每回合收尾各检索一次,
命中条目在下一回合以「【工作台知识库】…」出现在会话里(看得见命中了哪几条,也能看出它没被引用);
四个时机(开工前 / 报错时 / 写码前 / 验收前)AI 还会主动再查一次。可关闭:设置页有全局开关、
单会话可
turn_off;另有「召回日志」面板逐条记录检索了什么关键词、命中哪几条、是否被引用。 打分口径刻意做了两档闸门:过阈门的给完整块,没过的只给一行提示(明说"未达注入闸门、仅供参考"), 完全不相关的什么都不插 —— 宁可少给,也不拿噪声把提示词灌满 - 点子文件夹:点子按「文件夹」组织——AI 可自动关联成文件夹,也能手动新建空文件夹、改名、删除、合并(A 并入 B),并把点子归入/移出一个或多个文件夹(多对多);「未归类」区收散点子,文件夹可整体转成任务树
- 今日容量:今日页顶部把当天要做的事按
预计耗时 × 优先级摊成一条时间轴,并与你设置的「每天可投入时长」(默认 6.5 小时,点击数字即可改)对比,一眼看出今天塞不塞得下。 (1.15.2)算法不再是个黑盒:点「⌄ 规则」展开就能看到七条口径(算哪些任务、截止时间如何沿任务树继承、 今天到期 / 无截止在推进怎么算、逾期默认不计入、没填耗时按默认多少算、全天任务为什么不改变计算)和一本 逐条账本(每条任务的分钟数 + 出处标记,表尾合计 = 已排);逾期任务单独成区并可一键计入(开关默认关)。 每条任务可自定义「预计耗时(1–1440 分钟)」,改完不刷新就能看到「已排」变化;没填的按可配置的默认耗时 (缺省 30 分钟,在设置里改)计入,账本里逐条标「按默认 N」。全天任务只影响显示与重复锚点,不改变容量计算。 - 会话标题栏入口:通过 DSH 官方槽位
conversation.session.header.actions在每个会话标题栏注册「工作台」按钮(切换开关,再点收起);DSH 侧栏入口同时保留 - 知识库增强(AI 总结本地文档 + 文件链接):知识库页面支持弹窗浏览选择本地文件,也可直接填写本地文档路径或
file://;后端读取文档内容并让 AI 总结为知识草稿;知识条目可保存file_link并一键调用系统默认程序打开/追溯本地文件 - 点子 / 点子王:灵感卡片快速记录;AI 自动找关联生成“点子王”;AI 头脑风暴后可确认转为任务
- AI 复盘:已完成任务一键复盘,结论确认后写回任务
- 同一任务只保留一个复盘会话;重复复盘进入同一会话
数据与安全
- SQLite(
~/.dsh/workbench/workbench.db)+ 每日 JSON 备份规划 - 所有工作台 API 均挂载在
/api/workbench/*且仅允许 loopback 访问 - 请求围栏只有一份实现(
src/api/http.ts:loopback 判定 + 响应 + 体积上限在流式读取途中拦截), 并有源码扫描测试证明"不存在第二处实现"(原先四份逐字相同的副本,改一处就会漏掉另外三处) - 所有工作台响应带
cache-control: no-store与x-content-type-options: nosniff(返回的是用户私有数据,不该被缓存;也不该让浏览器按内容猜 MIME) - 附件解析带解压炸弹护栏:解压前按声明值拦、解压时
maxOutputLength、解压后复核实际长度; base64 走 canonical 校验(宽松解码会静默丢弃非法字符) - 不读取、不上传 DSH 之外的任何数据
安装
前置条件
- DeepSeek Harness 0.1.5-rc.1 及以上 Web 版 (这是硬边界:低于它面板整块不启动,理由见「兼容性与已知限制」)
- Node.js
^22.19.0或>=24.0.0 - pnpm
>=11.7.0 ⚠️ **装完必须重启dsh web`,刷新页面不够。**
客户端 bundle 由
dsh-client-modules在宿主启动时读进内存 Map (bundleResource()只查那张 Map),所以"装好了 → 刷新浏览器"拿到的是旧代码, 连 URL 上的rev都对不上。同理,升级/回退之后也都要重启。
从 npm 安装(推荐)
dsh plugin --profile web add @dely0/dsh-personal-workbench
或使用 npm 直接安装到项目:
npm install @dely0/dsh-personal-workbench
从 GitHub 安装
dsh plugin --profile web add git+https://github.com/Dely0/dsh-personal-workbench.git
或安装 Release tarball:
dsh plugin --profile web add file:/path/to/dsh-personal-workbench-.tgz
安装后重启 dsh web,浏览器硬刷新(Ctrl+Shift+R)。
从源码开发
git clone https://github.com/Dely0/dsh-personal-workbench.git
cd dsh-personal-workbench
pnpm install
pnpm check # 类型检查 + 构建
pnpm test # 最小回归测试(使用构建产物)
以开发模式挂载:
pnpm build
dsh plugin --profile web add link:/path/to/dsh-personal-workbench
开发模式修改代码后需要重新
pnpm build并重启dsh web。
参与开发:先读这份 skill
本仓库自带一份给 AI 编码助手用的开发规范 skill:
.dsh/skills/dsh-plugin-change/。
它在 DSH 的项目级 skill 根下,clone 下来即自动被发现(优先级高于用户级 skill), 所以你和你的 AI 助手在改这个仓库时,会按同一套规矩走。内容包括:
- 架构硬约束:两半两入口、依赖方向(哪些模块不许 import React / 不许碰 DOM)、 允许写哪些 DOM 的白名单、文件规模红线、数据库写入契约, 以及一张"不许做 / 必须做 / 谁拦它"的速查表;
- 编码规范:单一权威源与派生、纯逻辑与组件解耦、政策要变成"会失败的测试"、 失败必须可观测、幂等与副作用时机、静默丢件的禁区、可选服务分两级、删除与重构的顺序;
- 交付流程:装盘/版本回退的门禁、"客户端改动必须重启宿主"、 验收判据为什么会变成假阴性、发布与回滚纪律;
- 事故档案:13 起真实事故的"现象 → 根因 → 下次怎么避免"。
这些不是风格偏好,每条都对应一次真实事故(整机 DSH 起不来、面板整块消失、发布后前端崩溃)。 如果你用别的 AI 编码工具,也可以直接把
SKILL.md及其references/喂给它 —— 内容与工具无关,讲的是这个代码库的规矩。
兼容性与已知限制
滚动维护的已知问题与待办清单见
docs/issues/2026-09-13-outstanding-issues.md。 本节只讲当前版本的依赖与支持边界。历史结论(DOM 降级腿、家族互斥)已随 v1.14.53 删除, 别照着旧文档配环境。
一句话依赖结论
| 项 | 要求 | 说明 |
|---|---|---|
| DSH | 0.1.5-rc.1 及以上(Web 版) | 低于此版本客户端面板整块不启动(刻意如此,见下) |
| Node | ^22.19.0 或 >=24.0.0 | 与 package.json 的 engines 一致 |
| pnpm | >=11.7.0 **服务端能力不受此限制**:任务/日历/知识库/点子、提醒、日报周报与 workbench_*` 工具 |
只需要
0.1.0-rc.6+。所以老宿主上你仍能用 AI 侧的工具与提醒,只是看不到面板界面。
支持的能力矩阵
| 能力 | 需要的 DSH 版本 | 拿不到时 |
|---|---|---|
服务端能力:任务/日历/知识库/点子、AI 会话关联、提醒、日报周报、workbench_* 工具 | 0.1.0-rc.6+ | — |
面板本体:sidebar.panellist + main + shell.overlay | 0.1.5-rc.1+ | 面板整块不启动(打可读日志) |
layout.selectPanel(面板选中状态由宿主单值状态管理) | 0.1.5-rc.1+ | 同上 |
会话标题栏入口(官方槽位 conversation.session.header.actions) | 0.1.5-rc.1+ | 无该按钮;侧栏面板行仍可用 |
官方 uiWorkspace.connectWorkspace(AI 会话切工作区) | 0.1.5-rc.1+ | 回落 workspaces.openPath |
| 微信提醒 | 可选插件 @xmanrui/dsh-im | 静默降级为页内提醒 + 桌面通知 |
| 技能选择器 | 宿主 skills 注册表 | 选择器自动隐藏 |
历史说明(仅供对照,已不适用):v1.14.0–v1.14.52 曾支持 DSH
0.1.1-rc.1, 走的是"往侧栏 DOM 注入入口行 + 自建覆盖层"的降级腿。那条腿连同社区 「sidebar-entry 家族约定」(data-dsh- -entry/dsh-panel-activate/ 摘兄弟data-dsh-*-active)在 v1.14.53 整体删除。定稿设计见docs/design/2026-09-13-client-architecture-official-only.md。
唯一的入口与面板路径(v1.14.53 起)
- 侧栏面板行注册到官方槽位
sidebar.panellist(kind=list、scope=root)—— 行按钮、Tooltip、aria-label/aria-current、行高与折叠态圆形全部由宿主PanelRow渲染, 本插件只提供图标(WorkbenchPanelIcon)。 - 中央面板注册到官方键槽
main,但只放一个返回null的空占位 —— 它存在的唯一理由是让layout.selectPanel(id)的校验通过。 - 真内容注册到
shell.overlay(框架级浮层,始终挂载)。 为什么不放main:main是键槽,activePanelId一变宿主就卸载整棵子树, 而我们这棵树里装着跨页面常驻的草稿弹框 —— 关面板会连弹框一起消失 (用户实测"只能回到工作台页面才看得到弹框")。 - 面板显隐只有一个答案:
decidePanel()(src/client/panelState.ts,纯函数 + 表驱动单测)。 宿主状态可读时只信activePanelId,不可读时才退回本地意图。data-open属性由同一个函数派生(panelDataOpen()),所以"决策"与"投影"不可能打架。
没有第二条路径。 本插件不往宿主侧栏注入任何 DOM(test/clientInvariants.test.mjs 的 I6 钉住)。
判定"面板该不该显示"的只有一处实现(decidePanel());没有"走哪条路径"的选择逻辑了 ——
officialSlotDecision() / officialPathConfirmed() 随降级腿一起删除。能力不满足就明确不启动。
硬规则:可选服务一律软探测
任何 DSH 服务,只要不是所有受支持版本都有,就必须 ctx.get('x') 软探测,绝不放进
inject、也绝不直接 ctx.x。 cordis 的 inject 语义是"缺一个就整个插件 pending",
把它当成"可选依赖"用会让插件在旧宿主上整体加载失败(前端表现为 Failed to load plugins)。
这条规则来自三次真实事故:v1.10.1 的 uiWorkspace、v1.13.0 的 runtime.slots、
v1.13.3 的再次根治;v1.13.1 的标题栏入口则是因为直接读 ctx.slots 而崩。
边界要分清:slots / layout / commands 是前置条件,
所以它们进 inject —— 拿不到就整块不启动(明说原因),而不是偷偷降级;
uiWorkspace / dshIm / skills / modelDirectories / llm 是可选增强,一律软探测、缺了只是少一个能力。
⚠️ 一个容易搞反的点:
ctx.get('x')的确不需要把x写进inject(cordis 的get文档原话是 "without the inject requirement";会抛cannot get property "x" without inject的是代理属性访问那条路)。 但服务端与客户端同一个get语义下,只有当提供方 fiber 处于活动态时才拿得到 —— 所以"要不要进 inject"仍应按上面这两级来分:缺了功能就不成立的进, 只是锦上添花的软探测(modelDirectories就是后者:写进inject会让没装dsh-client-ui-model-selection的机器上整个面板 pending,丢整块换一个下拉框)。
其它
- 入口只有一个:宿主渲染的侧栏面板行(
sidebar.panellist)。会话标题栏按钮同样走官方槽位conversation.session.header.actions。 - 面板互斥由 DSH 宿主的
activePanelId保证(layout.selectPanel是单值状态)。 若同时使用不使用官方槽位、而以 DOM 接管中栏的插件(如dsh-client-ui-task-board/dsh-ssh/dsh-mnemon),可能出现两个面板同时激活 —— 这是宿主缺少统一面板机制导致的已知限制,不是本插件的缺陷:那些插件没向宿主注册面板, 宿主的activePanelId无从知晓它们存在。因此本插件不做跨插件 DOM 协调: 不读、不写任何兄弟插件的data-dsh-*属性,也不广播/监听dsh-panel-activate。 本插件只写两个自带属性(且幂等):与;test/clientInvariants.test.mjs的 I4/I5 把这两条钉住。 - 微信提醒依赖
@xmanrui/dsh-im:软探测(ctx.get('dshIm')),未安装或未配置投递目标时静默降级为页内提醒 + 桌面通知,不影响其它功能。 - 技能目录依赖宿主
skills注册表:未安装时 Skill 选择器自动隐藏。 - 仅支持单用户本地使用;无云同步、无多用户权限体系。
- AI 能力依赖你在 DSH 中已配置的模型与凭证;执行/咨询等会真实消耗 token。
遗留问题与已知限制
已知问题、待办与"已确认不是问题"的清单集中在
docs/issues/2026-09-13-outstanding-issues.md(滚动更新)。
下面只列与本版本最相关的两条:
.pwtest/里有一批脚本是"架构变更前"写的(约 80 个长期迭代产物)。 家族互斥与 DOM 降级腿已在 v1.14.53 删除,verify-mutex-family.mjs/verify-board-takeover.mjs/verify-board-overlap.mjs/verify-stable.mjs仍断言那些已删除的行为,跑起来会失败但那是假失败,别当成回归。verify-acceptance.mjs里示范了正确做法(反转判据 + 写清原因)。- 客户端改动必须重启
dsh web才生效 —— 不是"刷新页面即可"。dsh-client-modules的bundleResource()只从宿主启动时建好的内存 Map 取 bundle。 本地迭代走node scripts/dev-install.mjs --apply(构建 → 打包到带构建戳的新路径 → 装盘 → 三道门禁),不要再改package.json的 version(版本号只在发布时增长); 装完重启dsh web并硬刷新浏览器。 ⚠️ 装盘产物是否真的刷新,只信node scripts/check-installed-fingerprint.mjs(逐文件 SHA256): 实测同一file:路径下 pnpm 会复用已解包的文件(锁文件 integrity 变了、lib/还是旧的), 所以每次装盘都要落到一个没装过的新路径。
版本历史
详细发行说明(含依赖/支持边界、验收证据、踩坑记录):
docs/releases/v1.15.3.md; 更早的见docs/releases/。
| 版本 | 要点 |
|---|---|
| 1.15.4 | 文档版(与 v1.15.3 功能完全相同,无代码改动):补上 v1.15.3 贡献者的致谢(中英双段)与 THIRD_PARTY_NOTICES.md 条目。⚠️ 这个版本是一个判断失误,不要当先例 —— 事后确定的规矩是「只改文档/配置/测试等非编译内容时不单独发版,跟随下一个有代码改动的版本一起发布」;当时误以为"npm 页面渲染包内 README、又不能覆盖已发布版本,所以只能补发版本号",事实成立但结论错了(正确做法是发版前把文档核对干净)。规矩已写进 docs/release-checklist.md 第 5 节。 |
| 1.15.3 | 合入社区反馈的三个缺陷修复(来自 @SnowNight777 的 #4 / #5 / #7 与 PR #6 / #8,提交作者署名保留)。任务提醒:原先只有"草稿确认时的父任务"与"手动接口"两条路径建提醒记录,于是草稿拆出的子任务 / POST 建任务 / PATCH 改截止时间建出来的任务永远不会提醒 —— 现在三处统一按「显式 offset → 类型默认 → 优先级默认」补建,PATCH 只在没有生效中提醒时补,避免重复(提醒按 offset_minutes 存、按 dueAt − offset 现算,不是存绝对时间,所以不会留下过期时间戳)。投递目标缓存:status().configured 读的是只在 resolveTarget() 里填充的内存缓存,而 GET /reminders/channel 只调 listOptions() ⇒ 重启后设置页把已绑定目标误报「未配置」,且 isTargetConfigured 为假让包括启动补发在内的所有任务提醒被静默跳过 —— 现在改为「缓存命中 → 数据库有显式绑定」两级(末行不要用 available() 兜底:那会让没绑过目标的用户从"安静地不做事"变成"安静地反复投递失败",由 test/reminderWiring.test.mjs 钉住)。复用型会话(计划 / 日报周报 / 点子关联 / 点子头脑风暴):登记或引用的会话被归档或删除后,点下去没有任何反应、且那行陈旧引用永不更新(该链路从此开不出会话)—— 根因是客户端拿着旧 session_id 直接切、不验可用性;新增纯判据 aiSessionReuse.ts#isAiSessionReusable()(归档集命中 / 列表 ready 却查不到 → 不可复用;列表 pending 或旧宿主缺快照 → 不下结论,零回归),覆盖五处裸切(含报告行自己的 sessionId 回退这条独立路径),不成立时落回新建或给明确提示。用例 521 → 534。 |
| 1.15.2 | 本版对应父任务**「工作台插件 v1.15.2 版本优化」及其 5 个子任务 + 1 条同期独立任务**(完整对照见 docs/releases/v1.15.2.md §0)。① 快速录入的模型选择框被遮挡(P1):根因不是 z-index 而是裁剪 —— 浮层挂在弹窗滚动容器(overflow:auto)里、只会朝上开,真浏览器实测常见窗口可见比例仅 48%、1000×400 时菜单顶边 -94px 画到视口外;改为 portal 到 body + fixed + 纯函数 placePopover() 摆放(翻转/收敛/保证在视口内)+ 滚动·缩放·异步长高重算 + Esc 只关浮层 + ↑↓ 键盘。② 快速录入的默认工作区被上一次执行的任务污染(P1):根因不是"执行时写坏了存储",而是 openQuickEntry() 从当前选中任务派生默认值,而点「AI 执行」前 selected 必然就是那个任务、且面板收起不卸载 React 树;改为纯函数 decideQuickWorkspaceDefault(上次手动选择 → 系统默认 → 空,输入里没有任何任务/选中项)+ 只有用户动过输入框才写最近列表 + 「不再记住这个目录」出口。③ 今日容量的算法被摆到台面上(P2,本版最大一项):原先「已排 0 min」是个黑盒(内联在 4987 行组件里、无测试、逾期完全不参与),现在抽出纯函数唯一权威源 capacity.ts,界面给出七条口径 + 逐条账本(表尾合计 = 已排)、逾期单独成区并可一键计入(默认不计入)、每条任务可自定义耗时(改完不刷新即见效)、没填耗时按可配置的默认耗时计入并逐条标注、全天任务不改变容量计算。④ 知识库分类改 Tab(P2):下拉 → Tab + 关键词搜索(标题/正文/标签)+ 标签筛选 + 排序 + 分页 + 自适应时间分组;一并修「选择文件只能选 C 盘」;知识库类型颜色来自迁移 16 回填(根因是种子 config 为空、圆点取不到色)。任务列表按"与知识库一致"这一半做了类型改 Tab(Ctrl/Cmd 多选),搜索框/虚拟滚动/置顶/最近使用经澄清后取消(见该说明 §4 末尾)。点子页改 2 列卡片瀑布。⑤ 知识库被会话 AI 自动调用(P1):四个时机自动检索、命中条目在会话里可见、可全局/单会话关闭、有召回日志与"是否被引用"回报;打分口径被两轮实测逼出来,含两档闸门让未达阈门的条目也留一行提示。另:知识草稿覆盖不再静默(回执与界面列出被替换的标题,同期独立任务)、dev-install 不再删掉刚打好的包、私有信息清理。SCHEMA_VERSION 15 → 18(迁移 16/17/18)。用例 240 → 521。 |
| 1.15.1 | 任务资料夹改用 -(旧口径按标题:改标题成孤儿、同名挤一个目录、特殊字符变目录名),澄清阶段先预留任务 ID 并复用它落库;**不再为每个任务注册 |






