feat: complete WorkBuddy parity and Windows release workflow

This commit is contained in:
xiaohan.yuan committed 2026-10-18 12:45:21 +08:00
1 parent 143516b3a8
commit d5512df549
434 files changed
+54977 -1854

No files matched your search

+92 -27
View File
@@ -1,5 +1,15 @@
# WorkBuddy 复刻 TODO(2026-10-17)
> 2026-10-18 表格与附件修复已实现:[实施与验证](表格与附件样式修复-2026-10-18.md)。恢复原版短语标签和19个SVG/31条规则,统一输入、只读、编辑及文件/图片/资源/技能;新增混排持久化、处理/失败、预览与边界验证。最终隔离应用44项、构建、保存及IPC回归通过,补预览暗色背景和编辑资源归属;原版全状态逐像素仍待验收。总对话回归另有沙箱命令旧断言失败,详见记录。当前用户窗口未强制重启,此批含preload/主进程,需完整重启。
> 2026-10-18 表格与附件样式复核:用户截图与保留 REA 宿主源码确认,此前表格选错引用渲染分支;输入外摘要横条应为输入内“会话表格”短标签。文件、图片、资源/技能及发送后的展示也有结构与样式差异,详见[专项核对](表格与附件样式核对-2026-10-18.md)。本轮仅核对、复现和记录,未修改业务代码;02 的相应视觉/组合验收重新打开,不再以旧卡片断言通过作为对齐依据。
> 用户追加七项:见[新增七项修复](新增七项界面修复-2026-10-17.md)。先完成三模块 UI 批次,再修复更多项目浮层、任务右键、通知遮挡、上下文统计、个性化输入、关于图标和权限切换。对应 N01~N07 单独追踪,保留精确像素/动效未知项,不将修复通过等同于完整 1:1;通知服务和沙箱内核仍未接入。
> 当前开发进展:用户授权开发后,定时任务真实执行、资料库本地产物浏览、项目首发/状态/配置修复已完成首批实现与隔离验收,见[首批开发记录](三模块首批开发记录-2026-10-17.md)。[三模块开发计划](三模块开发计划-2026-10-17.md)继续作为分批范围;个人资料/引用、项目待办和资产联动及完整1:1尚未完成,TODO20整体保持未完成。安全中心不在此批。
> 最新范围订正:用户确认第18项应为**设置→安全中心**。当前四模块为安全中心、定时任务、资料库、更多→项目,见[总览](四模块拆解总览-2026-10-17.md)。安全中心待REA采集与正式拆解,不能沿用安装中心分析的进度。此前 A01~A12 修复及21个专项回归见[修复记录](19项问题修复记录-2026-10-17.md),不代表所有原版视觉/动画/未知状态已完成。
本清单记录用户最初提出的 20 项问题及后续追加项,作为后续逐项拆解、实现和验收的工作入口。原始编号保持不变,新增需求顺延编号。本清单的建立与追加仅记录需求,不代表已完成对应采集或实现。
## 执行约定
@@ -18,9 +28,9 @@
- [x] 将侧栏对话条目后的直接删除按钮替换为原版任务操作入口。
- [x] 通过 REA 对齐菜单的入口、位置、顺序、图标、文案、悬停、关闭、禁用和确认状态。
- [x] 接入:置顶、取消置顶、重命名、独立窗口中打开、打开文件夹、归档、删除任务。
- [ ] 验收:置顶顺序和重命名持久化;独立窗口打开正确任务;文件夹指向正确工作目录;归档与删除行为独立;涉及运行中任务时有明确处理。
- [x] 验收:置顶顺序和重命名持久化;独立窗口打开正确任务;文件夹指向正确工作目录;归档与删除行为独立;涉及运行中任务时有明确处理。
状态:主体已实现;运行中任务的处理与逐像素截图比对未完成。
状态:主体、运行中任务处理和归档回访已实现并通过真实运行链路专项验收;原版运行中禁用菜单及确认弹窗仍缺实时 REA 像素帧,不能宣称该状态已完成逐像素 1:1。归档回访由任务分组标题的“已归档”入口承接,弹窗只显示 `archivedAt` 有值的任务,支持“恢复”和“查看(先恢复再打开)”,独立任务与空间任务分别标识;`node scripts/verify-archived-tasks.cjs` 25/25 PASS,`npm run typecheck`、`npm run build`、`node scripts/verify-task-menu.cjs`、`node scripts/verify-sidebar-footer.cjs`、`node scripts/verify-conversation-scrollbar.cjs` 通过。
原版证据:WorkBuddy 5.8.3,REA Evidence `ev_f5e9d71a676c453daab40928acfb33aeabae68ba57ffda342380cead7f1a1fe2`(任务菜单打开态),归档 `.tmp/rea-css-evidence/ev_f5e9d71a….json`。观察范围:任务列表首条任务的菜单容器、9 个条目、2 条分隔线、逐项 SVG 图标、几何与 computed style;未覆盖:菜单在窗口边缘翻转、运行中任务状态、分享/保存到工作空间/批量操作三类条目的行为。
@@ -30,18 +40,20 @@
实现:`Sidebar.tsx`(行结构、置顶排序、行内重命名、菜单挂载)、`task-menu.tsx`(菜单容器与条目)、`task-menu.css`(原版规则与深浅色取值)、`task-menu-icons.tsx`(逐项 SVG 原样复刻)、`stores/chat.ts`(setPinned / setArchived / renameSession)、`main/sessions.ts`(pinnedAt / archivedAt 持久化与排序)、`main/ipc.ts`(pin / archive / openFolder / openWindow)、`main/index.ts`(任务独立窗口)、`shared/types.ts`+`shared/ipc.ts`+`preload/index.ts`(契约)。
验证:`scripts/verify-task-menu.cjs` 在真实隔离 Electron(真实 preload / IPC / 文件系统)中 33 项断言全部通过,覆盖菜单文案与顺序、两条分隔线、逐项几何与配色、锚点偏移、遮罩关闭、置顶与取消置顶持久化、行内重命名持久化、归档保留会话与消息、删除真正移除、打开文件夹指向真实 cwd、独立窗口创建且携带 `window=task&taskId=…`。报告与截图:`.tmp/task-menu-Moulvm/`。`npm run typecheck`、`npm run test:conversation`、`npm run build` 通过;`npm run test:sessions` 在干净 HEAD 上同样报 `yaml` 动态 require 失败,与本次改动无关。
验证:`scripts/verify-task-menu.cjs` 在真实隔离 Electron(真实 preload / IPC / 文件系统)中通过,覆盖菜单文案与顺序、两条分隔线、逐项几何与配色、锚点偏移、遮罩关闭、置顶与取消置顶持久化、行内重命名持久化、归档保留会话与消息、删除真正移除、打开文件夹指向真实 cwd、独立窗口创建且携带 `window=task&taskId=…`,并验证归档与删除均先打开确认弹窗。新增 `scripts/verify-task-running-menu.cjs` / `npm run test:task-running` 在真实隔离 Electron、真实 OMP 和受控 SSE 上游中 21 项断言全部通过:运行中归档在 UI 与主进程 IPC 均被拒绝且保留任务;取消“停止并删除”保留运行;确认后移除会话并终止上游流;480×176 弹窗与共享 24px shell、标题、描述、按钮文案、禁用态和浅色 token 均通过;无 renderer 错误。报告与截图:`.tmp/task-running-yNfEFt/report.json`、`running-menu.png`、`running-delete-confirm.png`。`npm run build`、`node scripts/verify-task-menu.cjs`、`npm run test:task-running` 通过。
遗留:未覆盖运行中任务的置顶/归档/删除副作用与提示;未做原版逐像素截图比对;置顶标识图标取自同批归档的成员图标,原版置顶行的独立截图证据未采集。
遗留:未做原版逐像素截图比对;置顶标识图标取自同批归档的成员图标,原版置顶行的独立截图证据未采集。当前 REA 的 `capture_web_screenshot` 对 WorkBuddy Electron `file://` target 返回 `target_not_allowed`,`capture_browser_scenario` 仅接受 HTTP(S) 起始页,因此运行中禁用菜单、确认弹窗以及鼠标悬停态尚无实时原版像素帧;现有视觉依据为固定 REA Evidence 的 DOM/CSS/几何证据。
### 02. 表格“添加到对话”及引用结果
- [x] 对齐表格上方“添加到对话”按钮的字体、图标、背景、边距、出现条件及交互。
- [x] 对齐点击后输入区内引用表格的呈现,包括结构、预览、移除和与已有草稿的组合方式。
- [x] 对齐发送后用户消息中的表格引用显示。
- [x] 验收:引用正确表格内容,不丢失已有草稿;输入区、发送结果及历史重载三种状态一致。
- [x] 接入原版表格短语标签,改正此前引用卡片分支,支持移除及文字中间插入;已验证源几何和已有草稿保留。
- [x] 用户消息/旧记录改用表格图标与“会话表格”短标签;Markdown快照仍作为真实载荷完整保存。
- [x] 验证正确引用、发送、混排原子保存及重启恢复;新增实际隔离应用专项44项通过。
- [x] 统一文件、图片、资源/技能标签、浅深色、折行、粘贴/拖放的处理/失败及只读显示,详见[修复记录](表格与附件样式修复-2026-10-18.md)。
- [ ] 原版同尺寸、同内容的全状态逐像素与动效验收;原生选择器内部逐项准备进度、完整撤销/剪贴板等未验证状态继续追踪。
状态:主体已实现并做了真实窗口回归;仍有两处原版证据缺口(见“遗留”)。
状态:2026-10-18 本轮实现及限定范围验证已完成,原版完整1:1仍未验收。以下保留旧轮次证据、实现和测试历史;旧横条/原始Markdown标签断言已由新专项替换,不能再作为正确视觉依据。
原版证据:
- 渲染器实现:WorkBuddy 5.8.3 渲染器(REA 回收 `.tmp/wb-src-DbE1_mgM.js`)中的 `TableMessageQuoteAction`、`createTableMessageQuoteSourceId`、`getTableMessageQuoteMessageId`、`MessageQuoteAddIcon`、`MessageQuoteTextIcon`、`ChipCloseIcon`、`QuoteReferenceCard`、`InputBannerRail`、`MessageQuotePhraseTag`、`convertUserFrame`/`ContextChipsRenderer`。
@@ -152,7 +164,7 @@
1. 回退弹窗沿用 YCode 现有 modal 样式,未采集原版弹窗(宿主 Modal:标题/正文/产物清单/底部按钮)的几何与动画;待后续按原版逐像素对齐。
2. 原版失败路径以 toast 呈现 `rewind.error.rollbackFailed`(对话回退失败,请稍后重试。);YCode 当前在弹窗内联展示原始错误文本。
3. 原版逐产物 fallback 状态(回退至 {time} 版本 / 历史版本已被删除,将保持当前版本 / 该产物无历史版本,回退后文件仍会保留在目录中)依赖服务端产物版本历史;YCode 只有工具写入前后快照,暂映射“将被删除 / 回退至历史版本”。
4. 原版编辑提交时会先弹 `rewind.edit.*` 询问是否回退产物历史版本(回退 / 不回退),YCode 编辑提交固定回退产物(`rollbackEditedArtifacts`);差异记入 TODO 03 追补。
4. 已修复原先固定回退产物的差异:编辑带产物消息先选择“回退 / 不回退”,回退也可仅处理对话。真实窗口与 IPC 故障补偿回归见本轮修复记录;原版宿主弹窗像素仍待验收。
5. 原版在 `hasMoreRequests`(分页历史未全部加载)时首条已加载消息也可显示回退入口;YCode 全量加载历史,按 `requestId !== 首条用户消息 requestId` 判定。
### 06. 对话区域滚动条
@@ -252,7 +264,7 @@
遗留:
1. 原版「发送后」逐帧等待态(先后顺序、每段时长)无 REA 运行时证据(探针限制见上),本项只对齐可证部分。
2. 发送失败时仍会留下一个空会话(`session.create` 已成功、回合未开始);原版在准备失败时是否保留会话未采集。
2. 已修复创建后启动失败的空会话状态:仅由主进程原子确认空闲且无消息的本次新会话可清理,草稿/附件/引用恢复;已有消息或运行时保留并反馈错误。原版在准备失败时是否保留会话仍未采集。
3. 启动阶段目前只使用 `acquiring_runtime` 一条;原版多阶段(expert → … → checking_launch_config)的发出方、顺序与时长未采集,不按字符串表臆造。
4. 发送窗口内没有「停止」入口(`停止` 只在回合运行后出现,沿用既有实现);原版在准备阶段是否可直接取消未采集。
@@ -279,12 +291,12 @@
- `workbuddy/user-menu/account-menu-source.css`(新增):逐条落地回收规则并把 8 个侧栏作用域缺失的 token 按回收取值补齐;所有规则收敛在 `.ycode-account-menu-scope` 下,避免与其它 `.wb-popover` 作用域互相污染。
- `workbuddy/user-menu/account-menu-icons.tsx`(新增):设置/外观/记忆与进化/检查更新/退出登录 5 个 16×16 线性图标,暂用 Lucide(MIT)占位并在文件头注明原版路径待回收。
- `components/Sidebar.tsx`:底部账号触发器改为打开账户菜单(`aria-haspopup="menu"`、`aria-expanded`,记录触发器几何供 popover 落位);收起侧栏时关闭菜单;菜单渲染在 footer 内(portal)。
- 内容与真实性:头部=mock 账号头像与名称(副标题标注「账号为 mock 数据,尚未接入登录」);计费摘要=套餐/余额两格,值显示「未接入」,升级套餐/购买积分按钮 `disabled` 并带「尚未接入账号与计费服务」提示;设置 → `openSettings('model')`、外观 → `openSettings('appearance')`(值跟随当前主题,显示浅色/深色);记忆与进化、检查更新、退出登录标注「待拆解」/「未接入」,点击只提示,不假装成功。
- 内容与真实性:头部=mock 账号头像与名称(副标题标注「账号为 mock 数据,尚未接入登录」);计费摘要=套餐/余额两格,值显示「未接入」,升级套餐/购买积分按钮 `disabled` 并带「尚未接入账号与计费服务」提示;设置 → `openSettings('model')`、外观 → `openSettings('appearance')`(值跟随当前主题,显示浅色/深色)、记忆与进化 → `openSettings('memory')`;检查更新、退出登录仍标注「未接入」,点击只提示,不假装成功。
验证:新增 `scripts/verify-account-menu.cjs`(真实隔离 Electron + 真实 preload/IPC/渲染进程 + 真实设置窗口)63 项断言全 PASS:
- 几何/样式:popover 320 宽、左边缘与触发器对齐(实测 x=8)、底边距触发器上沿 8px(popover bottom 846 / 触发器 top 854)、padding 8 / gap 8 / radius 16、浅色背景 `rgb(247,247,247)`、边框计算值 1px `rgb(222,222,222)`、双层阴影、`overflow:hidden auto`、`max-width` 1312px、`max-height` 870px(视口 902)、`role=menu`;三张卡片 302 宽 / padding 8 / radius 8 / 白底。
- 头部与计费:min-height 56 / padding 8 / gap 8、头像框 40×40、初始头像圆形 `rgb(0,86,212)`、名称 16/500/24 且等于 mock 账号名;两个计费单元各 141×86、padding `4px 8px 8px`、title 12/400/20、value 14/500/22、动作行 margin-top 8 / 按钮高 24 / `disabled`、文案「升级套餐」「购买积分」;值恰为「未接入」,整份菜单文本不含任何数字(不虚构套餐/余额/积分)。
- 条目与 footer:4 个条目各 32 高 / `5px 8px` / radius 8 / gap 8 / space-between / 14/400/22 / 图标 16×16 / `role="button"`;设置显示 `Ctrl+,`、外观显示当前主题、未接入行显示「待拆解」「未接入」且 `aria-disabled="true"`;footer margin-top 6 + padding-top 8 + 1px 分隔线(`rgb(242,242,242)`)、退出登录行 32 高。
- 条目与 footer:4 个条目各 32 高 / `5px 8px` / radius 8 / gap 8 / space-between / 14/400/22 / 图标 16×16 / `role="button"`;设置显示 `Ctrl+,`、外观显示当前主题、记忆与进化直接打开真实设置页;未接入的检查更新显示「未接入」且 `aria-disabled="true"`;footer margin-top 6 + padding-top 8 + 1px 分隔线(`rgb(242,242,242)`)、退出登录行 32 高。
- 交互:触发器点击开/再点关、Escape 关闭并把焦点交还触发器(`aria-expanded` 同步为 false)、外部真实鼠标点击关闭且同一次点击不被吞(点通知铃铛 → 菜单关 + 通知面板开)、设置行复用并导航原生设置窗口到模型面板、外观点亮外观面板。
- 浅色/深色:通过设置窗口切深色后 popover 背景 `rgb(41,41,41)`、卡片 `rgb(36,36,36)`、边框 `rgb(61,61,61)`、阴影切换为深色 token,「外观」行值同步为「深色」;切回浅色后 `documentElement.dataset.theme` 与 `localStorage['ycode:theme']` 均为 light。
- 失败路径:未接入行点击后只显示提示、不新开窗口。
@@ -440,23 +452,62 @@
遗留:
1. 「显示文件修改过程」尚未接入 YCode 的逐步文件变更渲染,保持原版 off 形态并禁用+「暂未接入」提示。
2. 编辑弹窗用 textarea 承载纯文本;原版是富文本编辑器(`.sc-editor-content`),富文本格式、粘贴与快捷键未复刻。
3. 原版默认人设文本已按 REA 抄录并显示在面板中,但默认值不会注入请求上下文(用户修改后才注入),避免与 YCode 自身身份设定重复冲突。
3. 已修复默认人设展示/生效不一致:默认值与自定义值均进入请求上下文,明确清空才不注入。原版提示词层级仍待 REA 证据。
4. 个性化上下文附加在每轮 `promptText` 末尾(与用户消息同一条 prompt 发送),不是独立的 system 消息;OMP 与自建循环行为一致。
5. **采集副作用**:REA 采集时把 WorkBuddy「对你的称呼」保存成了 `CodexTmp`;原版界面不接受空值确认(空字符串与单空格均被拒绝),无法通过可见操作恢复为空。该项需要在 WorkBuddy 内另行处理。
### 14. 记忆与进化
- [ ] 记录待拆解:入口、页面、数据、读写机制、会话生效方式及生命周期。
- [x] 通过 REA 拆解入口、页面结构、双开关、导入提示词、管理卡片、编辑与重置状态。
- [x] 对齐浅色、深色、导入弹窗和 480px 重置确认弹窗的结构、几何、字体、按钮与关闭方式。
- [x] “对话记忆”偏好真实控制长期记忆是否进入后续请求;“本地记忆与技能”偏好持久化并明确执行器限制。
- [x] 导入使用原版 zh-CN 提示词原文,校验空值与过短内容,并写入对话实际使用的长期记忆。
- [x] 验收:开关持久化、重开恢复、浅深主题、导入、管理、编辑、重置、Escape/遮罩/关闭与失败反馈。
状态:待拆解,本轮不自动展开实施。
状态:主页面和本地可用流程已实现,并通过真实隔离 Electron 窗口验收(24 项断言);完整 1:1 仍有下节列出的数据与服务边界。
原版证据:
- WorkBuddy 5.8.3 设置窗口 900×680:`ev_ccbabc0d8507e997eba15aab8b5effa66f7e82d6720c6131bfcd62157b9d6896`(浅色页面与 CSS)、`ev_765f35252332546eb751e470e70e32f4c6cd62b82974f0d4653b651ab8b7963d`(开关过渡并恢复)、`ev_646ce86b4da4d8c66c70ce576cb3a6689736757030a57c6fd4df552fbc843c69`(导入弹窗)、`ev_532a122e798a1890ee4b8977619a076a3e2dc5c927f72dbbabecf8dbd4e6f673`(深色页面)、`ev_505aa1d34e1ceba54d5ccd03de1a9bb3dd3c423d281c982fbc56acf7f049dd66`(模块脚本源码)。
- 2026-10-17 当前 WorkBuddy 5.8.3 页面视觉复核:`ev_16220ada6e43823fc8977aebb1d829bc8504b6ba7be8cc18041fbd03082f0c99`(当前深色页面,`.tmp/todo14-wb-current.png`)。
- 页面为 638×620 内容区;双行组 638×128、行 606×46;管理卡空态 638×78;浅色卡 `rgb(255,255,255)`,深色卡 `rgb(31,31,31)`;“对话记忆”默认开启,“本地记忆与技能”源码回退默认关闭。
- 原版模块 CSS `MemorySettingsPanel-qor7TPl3.css` 25,213 bytes、SHA-256 `43e0b0207ff1a91ad6066efc772dad351b2b5e7afe588d38a5ee38537eb01aad`。
- 原版管理态在内容存在时显示“重置 / 编辑 / 导入”;重置调用共享 `Modal`,`variant=confirm`、`width=480`、危险确认按钮,正文由 `.memory-modal__reset-confirm-desc` 与 `.memory-modal__reset-confirm-hint` 组成。
- 观察范围:设置窗口浅/深、空管理卡、双开关、导入弹窗和管理态源码。未覆盖:由于当前 WorkBuddy 记忆为空,真实界面没有“重置”按钮,所以未直接截取原版重置弹窗;其结构来自已回收脚本与共享 Modal/CSS,尚未完成原版运行态逐像素帧。
实现:
- `src/renderer/src/components/MemorySettingsPanel.tsx`:复刻双开关、管理卡、导入和 480px 重置确认弹窗;补齐 Escape、遮罩、关闭、焦点陷阱、初始焦点、异步禁用、错误反馈与重置后折叠。
- `src/renderer/src/components/source-memory-settings.css` 与 `source-memory-settings-recovered.css`:接入 REA 回收模块样式,并只在页面作用域内补齐共享 UI kit 弹窗壳和 token。
- `src/shared/memory.ts`:原版导入提示词、最短长度、偏好归一化和导入追加规则;本地记忆回退默认值修正为关闭。
- `src/main/memory-settings.ts`、`src/main/config.ts`、`src/main/ipc.ts`、`src/preload/index.ts`、`src/shared/ipc.ts`、`src/shared/types.ts`:真实偏好与长期记忆读写 IPC。
- `src/shared/personalization.ts`:只有“对话记忆”开启时才把长期记忆加入每轮提示词。
- `scripts/rea/recover-memory-panel.mjs`:从固定 REA Evidence 幂等回收模块 CSS;探针为 `scripts/rea/probe-todo14-*.json`。
验证:
- `npm run test:memory`(`node scripts/verify-memory-settings.cjs`)在真实隔离 Electron、真实 preload/IPC/renderer/filesystem、900×680 下 24 项断言全通过,覆盖浅/深页面、默认态、偏好持久化、重开恢复、导入提示词哈希、内容过短错误、真实写入、管理卡展开、480×212 重置弹窗、按钮/危险色/焦点、Escape 关闭、确认清空与折叠恢复、无 renderer 错误。
- 报告与截图:`.tmp/memory-settings-i0W3JB/report.json`、`ycode-memory-light.png`、`ycode-memory-import.png`、`ycode-memory-reset.png`、`ycode-memory-dark.png`。
- `npm run test:personalization`、`npm run typecheck`、`npm run build` 通过。
遗留:
1. 原版“重置记忆”弹窗本身尚未在真实 WorkBuddy 运行态取得逐像素 Evidence;当前按原版 `Modal` 源码 `width=480`、confirm 结构与共享 CSS 复刻,并已在 YCode 真实窗口验收。
2. 原版“编辑”通过记忆建议输入并提交服务端更新;YCode 在无账户记忆服务的前提下直接编辑本地长期记忆。功能可用,但提交流转和“更新中/成功 toast”尚未源码级等价。
3. 原版账户侧自动生成、每晚整理、更新时间与更新任务互斥状态没有在 YCode 实现;本地记忆执行器也未接入,界面已明确说明限制。
4. 当前像素验收覆盖 900×680 的浅色页面、深色页面、导入和重置稳定态;打开/关闭过渡、窄窗口、刷新失败和所有错误 toast 尚未逐帧验收。
### 15. 智能体页面:团队管理
> 2026-10-18 后续授权:团队管理已接为全部子智能体调用的实际总开关,本地 OMP/HTTP 调度、运行中取消、独立上下文、文件范围、审批、流式展示及用量汇总已实现,核心29项与真实应用27项通过。见[子智能体调度接入](子智能体调度接入-2026-10-18.md)。下方采集与最初实现范围保留为历史基线。
> 2026-10-18 用户范围调整:移除经济模式和浏览器操控,智能体设置仅保留团队管理。已完成界面与专用样式清理,真实隔离窗口 11 项验收通过;以下原版三区块的采集与实现说明保留为历史记录。详见[用途核对与移除记录](经济模式用途核对-2026-10-18.md)。
- [x] 拆解原版智能体设置页面,本轮仅对接“智能体团队管理”。
- [x] 根据 REA 证据确认本页只有三个设置区块,没有团队列表、创建、详情或成员管理;接入“开启 / 禁用”偏好的真实存储与重启恢复链路。
- [x] 验收:仅展示原版已确定的三个区块;团队管理偏好实际持久化、重启后可恢复;团队管理与真实子代理调度分别记录。
- [x] 验收:设置仅保留团队管理,开关持久化;开启允许本地子智能体调用,关闭拒绝新调度并取消已有子任务,主对话继续;原版采集和本地调度验收分别记录。
状态:已实现并通过真实窗口专项验收。团队管理偏好已持久化;多智能体自动拆分执行器未接入。
状态:已实现并通过真实窗口及本地调度专项验收。主模型可调用独立成员,所有本地子智能体创建均受总开关控制;不据此宣称原版调度等价。
原版证据:WorkBuddy 5.8.3,设置窗口 900×680。REA Evidence `ev_bd0f4b5dac7d4e2b89b1b050db1896c65e03b4fd1c3d3d986a8958fd9c1a9883`(浅色布局、DOM、computed style 与 CSS 源)、`ev_3384aa03af8a1ccdffb8e025dbd4a354636d8d6b0c207abd21e12fc5eb2ae719`(深色)、`ev_01940b7925326ee8e7f7e4aba661be2a17a2f876d634d4d370d01b6616a4a7fd`(团队管理下拉只含“开启 / 禁用”)、`ev_1cc896e04c0cc9ceab39b0a252f4982c019305609195ad44804ae9b5fb7379a8`(最终浅色顶部)、`ev_9542a063514b1a980665e504a89126c7a17f00b42f0c6dff9cead085a929f5c7`(三枚浏览器扩展图标媒体字节)。页面根 `638×503 @232,40`,三个区块依次为智能体团队管理、经济模式、浏览器操控(Beta);浏览器卡片 `638×261`,扩展列表 `606×193`,三行高 `68/68/56`。经济模式开启轨道浅色 `rgb(0,194,154)`、深色 `rgb(34,203,168)`。独立懒加载 CSS 为 `ExtensionsSettingsPanel-BnsXh3oa.css`,sha256 `cbd4b37c6061381943d96ca454176b2f083e49eb8e04c34cb5d31eef3dbcb8f5`。浏览器图标分别为 Chrome SVG `bde4af5a…`、Edge SVG `968cf9d8…`、QQ PNG `186c8282…`。观察范围限当前设置窗口;本页没有团队列表、团队详情、创建或成员管理,未据此推断其他页面。
@@ -503,15 +554,19 @@
状态:已实现并通过真实窗口回归(与 16 同一次改动,代码见上)。
原版证据、实现、验证:同 16。`dataManagement`、`buddyApps` 与 `claw`、`deviceConnections` 一并进入 `REMOVED_SETTINGS_TABS`,走同一份 normalize 回退与 `visibleTabs` 渲染;验收脚本同时断言这两项(以及 `claw`、`deviceConnections`)不在 DOM、标签和搜索元数据中,且 `openSettings('dataManagement')` 深链接落到模型面板而不是空白页。未触碰本地会话数据、安装中心与任何已有用户内容。
原版证据、实现、验证:同 16。`dataManagement`、`buddyApps` 与 `claw`、`deviceConnections` 一并进入 `REMOVED_SETTINGS_TABS`,走同一份 normalize 回退与 `visibleTabs` 渲染;验收脚本同时断言这两项(以及 `claw`、`deviceConnections`)不在 DOM、标签和搜索元数据中,且 `openSettings('dataManagement')` 深链接落到模型面板而不是空白页。未触碰本地会话数据、已有能力与任何用户内容。
遗留:无新增;数据管理/应用管理的原版页面内容不再复刻(用户指定仅移除入口)。
### 18. 安装中心
### 18. 设置 → 安全中心
- [ ] 记录待拆解:入口、页面结构、安装来源、安装/更新/卸载流程及与其他能力中心的关系。
- [ ] 通过REA采集安全中心真实页面、字段、说明、默认状态及对应源码/样式。
- [ ] 逐项拆解控件行为、持久化与生效时机、宿主/服务依赖;原版未证实的策略不预设。
- [ ] 将已有真实能力接入安全中心,逐项验证功能与实际执行效果,并做浅/深色、窄屏和全状态视觉/交互验收。
状态:待拆解,本轮不自动展开实施。
状态:用户已订正名称与范围,待REA采集与正式拆解。YCode仅有`securityCenter`可见导航,尚未加入`supportedTabs`,没有对应页面或可用功能。详见[安全中心范围与待拆解项](安全中心模块拆解-2026-10-17.md)。
范围纠正:此前按应用安装管理拟定的目录、安装、更新、卸载和授权任务全部撤出本项;原[安装中心分析](安装中心模块拆解-2026-10-17.md)仅保留历史。已经实现的发现应用浮层、相关REA证据和44项专项验收记录仍保留在历史文档,不计为安全中心进度。用户此前要求移除设置“应用管理”的决定继续有效。
### 19. 关于与获取帮助
@@ -549,11 +604,21 @@
### 20. 定时任务、资料库、更多中的项目
- [ ] 定时任务:待拆解入口、页面、任务配置、触发/执行记录及生命周期。
- [ ] 资料库:待拆解入口、资料组织、添加/读取/检索及会话引用方式。
- [ ] 更多 → 项目:待拆解入口、项目组织、工作区/任务关系及管理操作。
开发入口:[三模块开发计划](三模块开发计划-2026-10-17.md)。已完成公共执行服务与首批三路本地链路,实际交付和待完项见[首批开发记录](三模块首批开发记录-2026-10-17.md);后续推进个人资料/引用与项目待办/资产联动,再做全状态对照,不把首批通过等同完整1:1。
状态:三个模块均待拆解,本轮不自动展开实施。
2026-10-17 最新:用户已授权四模块拆解。本项拆分、依赖、优先顺序和验收要求见[总览](四模块拆解总览-2026-10-17.md)、[定时任务](定时任务模块拆解-2026-10-17.md)、[资料库](资料库模块拆解-2026-10-17.md)、[项目](项目模块拆解-2026-10-17.md)。下方原有证据和实现记录继续保留,旧“待拆解”表述为此前状态;本次只拆解,不新增业务实现。
- [ ] 定时任务:入口、列表/空态、新建/编辑字段、触发频率/时间/有效期、执行记录及暂停/删除生命周期。
- [ ] 资料库:待拆解入口、资料组织、添加/读取/检索及会话引用方式。
- [ ] 更多 → 项目:项目组织、工作区/任务关系、筛选/协作/管理操作及全状态验收。
状态:三项已进入实现,完整模块仍保持未勾选。本地定时调度/真实执行与记录、跨任务本地产物索引、项目首发/配置/指令已接入并通过实际链路,见[首批开发记录](三模块首批开发记录-2026-10-17.md)。本轮继续修正编辑器、资料库层级/表格/原图、项目满高/输入区/配置栏和字体,见[UI续对齐](三模块UI续对齐-2026-10-17.md)。个人资料导入/编辑/引用、项目动态/计划/资产及完整生命周期、原版日期面板与全状态像素/动效仍未完成。YCode 时区/DST/迟到策略已做本地回归,但原版服务端行为尚未证明等价。
定时任务首轮运行态证据:WorkBuddy 5.8.3,REA target `41DA5D1989571E35EEB83ADEF03B5B47`;列表/入口 `ev_386df7d869a651cc6c083205fb10c4264ec8356901bc0b031cab63d64d65c8d5`,新建弹窗 `ev_be404f0454dfd7496f91ff79a7f43bb61a54ad587933baee0d1cf77c4db915c5`。观察范围为 1336×902 深色界面的定时任务页及空白新建表单。**尺寸订正:布局捕获在 opacity=0、scale(.96) 的入场帧,768×470.406 是动画中尺寸;按源 CSS 稳定态为 800×490,内部表单圆角 16,名称输入 752×40。** 有任务名称、提示词、工作空间/权限、重复频率/时间/有效期、企业微信推送和取消/确定入口;空白状态下确定按钮禁用。截图:`.tmp/rea-todo20-scheduled-page.png`、`.tmp/rea-todo20-scheduled-create.png`。捕获整体为 `policy_filtered`:53 个越界脚本、2 个未归属来源脚本及 14 个资源被排除;本次所需 automation 脚本与样式表正文仍包含在 Evidence 中。
定时任务静态源码证据:REA `ev_625e3664a4da2b25291494bd5b985d16b09d1654d5f8170d8af6325d2019c159`,父分析 `ev_c58c2aea390e169637d9233032f33bfccc0b62bb96014a003fbd39803a178241`,WorkBuddy `app.asar` SHA-256 `3e50fcb5b060deba4f1ea9a8c293cf955bf12d7e52d971985de914350afd9077`;仅分析 `renderer/assets/automation-qDy4JNlv.js`(SHA-256 `687f7b062b0df0f353dafd1f17b00cb939685da5a12c8d3ce865b920b94d6710`),来源覆盖为部分,不代表其他 11,388 个文件已分析。样式表 `automation-C36RYsTC.css`(SHA-256 `28c6dc5e1a8d83d7b955d00a604723898a296f0ece4a3bbe4d6db26fc3bbbda5`)来自同次 REA 页面 Evidence。
静态观察:重复方式为间隔小时、一次、每天、每周、双周、每月、每年;周期规则含本地时间,周/月/年可细化日期;一次任务需选择未来日期时间。默认草稿为 ACTIVE、每日执行、fullAccess 权限;名称与提示词必填,提示词上限 100,000 字符;有效期可设置起止或长期有效。页面分别读取本地/云端任务及运行记录,通过 `Ne.automations` 服务调用 create/update/delete/trigger 和记录归档/删除;运行中的任务会被拒绝触发或删除。上述为静态 AST 观察,不证明服务端执行、时区/DST、记录刷新与生命周期运行行为;本轮尚未操作频率弹层或保存原版任务。整包分析采用 `record-and-continue`,ASAR 其他条目存在完整性声明与文件字节不一致,未把相关字节作为可信证据。
## 追加需求
@@ -604,14 +669,14 @@
4. 原版对 detached HEAD、无首次提交、非 Git 目录、检测失败的标签表现未采集;YCode 在这些情况下不渲染标签(无提交但有分支时按 git 真实结果仍显示分支名)。
5. 用量环进度颜色:原版通过未回收的变量注入,本轮截图像素证明该实例用的是回退色 `#9ca3af`;是否随用量分段变色未验证。
6. 刷新时机未采集:YCode 在切换会话、窗口重新聚焦以及每 20s 轮询时重新读取分支;用量只在收到真实 `usage` 时更新。
7. 备用(非 OMP)内核走自建网关时用量来自 Responses `response.completed.usage`;Chat Completions 上游路径仍未解析 `usage`。
7. 已补 Chat Completions 流式 usage 解析及不支持 stream_options 的单次兼容重试;Responses 原有通路保留。切模型清理旧用量,见本轮修复和受控上游回归记录。
8. 用量环只在会话输入区渲染(本轮首页基线的 REA 证据里首页输入区确实没有该入口),首页/新建任务时不显示。
## 推进顺序
1. 对话与侧栏:01 → 02 → 03 → 04 → 05 → 06 → 07 → 08 → 09 → 21(均已实现并留下验收记录,未完成验收点在各条目内标注)。
2. 设置:16、17 的入口范围与 10(通用)均已落实并验证;11(外观)、12(快捷键)、13(个性化)、19(关于与获取帮助)、15(智能体)均已实现并完成专项验收。
3. 14、18、20 保留为待拆解,后续单独展开。
3. 14 已接入;18已订正为设置→安全中心,待REA采集与正式拆解;20已有三个模块的首轮拆解,后续依[总览](四模块拆解总览-2026-10-17.md)逐批实现与验收,尚未勾选完成。
## 每项交付记录模板