Files
ycode/docs/三模块首批开发记录-2026-10-17.md
T

8.5 KiB
Raw Blame History

定时任务、资料库、项目:首批开发与验收记录

日期:2026-10-17。用户“是否可以开发了”之后,按主上下文规划/集成、三个执行 agent 限定文件边界的方式完成首批本地链路。安全中心不在此批。此前未提交的代码、文档和图标改动均保留,未重置工作树,未重启用户正在使用的 YCode。

本记录描述实际实现与验证,不代表三个模块已完整 1:1。原版依据继续沿用各专项拆解中的固定 REA Evidence(5.8.2 有效历史内容、5.8.3 新增模块证据);本轮没有通过其他渠道查看 WorkBuddy,也没有导航其运行中的用户任务。

已实现

模块 首批实际能力 入口/存储
定时任务 单次、间隔、每天、每周、双周、每月、每年;真实新建/编辑、启停、手动运行、删除、搜索/筛选和运行记录 左栏“定时任务”;userData/automations.json 同文件保存定义和运行记录
实际执行 按定义快照创建会话,冻结项目/空间/模型/权限/思考强度;运行中回填 sessionId/runId,终态等待真实消息保存;单任务不重叠,停止时取消并等待 main/automations/host.ts 调用统一会话工厂和对话执行服务,不伪造 renderer/IPC sender
资料库 跨任务本地产物,空间→任务→文件层级,搜索、类型/空间/收藏筛选、排序、最近访问、打开来源产物 左栏“资料库”;索引从会话重建;收藏/最近访问保存到 userData/library/user-state.json
产物来源 只提取助手显式 artifact、成功 present_files、成功写入/编辑;同任务同路径汇总,跨任务保留独立来源;保留项目/空间/消息/工具来源 shared/artifact-index.ts 为主进程资料库与工作台共用提取器;不会枚举源码目录或把读取/附件当作生成文件
文件边界 索引检查词法根及 realpath,跨根/symlink/junction 越界标为不可访问;打开时继续使用来源会话的资源读取守卫 不扩大 resources:read 原有范围,不移动或删除用户产物
项目 真实任务首发、失败草稿恢复;运行点按 run 的 sessionId;任务状态按活跃 run/最新助手结果推导,进行中/完成筛选;指令即时同步父对象;配置编辑保存真实能力引用 “更多→项目”;原有项目仓库与 projectId/workspaceId 校验复用

共享执行抽取至 main/chat-turn-service.ts,会话校验抽取至 main/session-factory.ts。普通 chat:send 保持原传输返回值;只有主进程调用方取得内部 completion Promise。后台新建会话的 started 广播会补入侧栏,用户不必重新加载。

关闭窗口的广播访问已加隔离:枚举结果中的窗口、读取 webContents、判断销毁、发送消息均不能通过关闭对象异常中断执行。IPC 纯回归新增“销毁对象访问抛错”的场景,并等待实际回合终态屏障,避免把内存状态已完成误认为落盘及广播已完成。

验证

以下为本批实际执行的检查:

  • npm run build:通过,包含 node/web 类型检查和生产构建。
  • npm run test:automations:19 个 suite 通过,涵盖七类规则、DST、月底/闰年、持久化/损坏保护/恢复写失败、去重与竞争、后台轮询、长任务不阻塞后续任务、运行中会话关联、关闭时取消/等待和手动 claim 竞态。
  • npm run test:library:通过,含成功/失败来源白名单、原生小写 OMP write、用户 artifact 排除、跨任务同路径、收藏/最近访问重载、跨根和 symlink/junction 检查;64 个未引用文件未被扫描,只有 3 个显式安全测试条目接受探测。
  • npm run test:project-tasks、node scripts/verify-project-storage.cjs:通过,涵盖真实状态推导、筛选、能力引用 provider 身份、并发存储与损坏文件保护。
  • node scripts/verify-project-page.cjs:最终生产构建上真实隔离 Electron 通过;报告 .tmp/project-page-QBihjh/report.json,包含指令父对象同步、配置编辑和页面几何/深色检查。
  • npm run test:conversation-ipc、test:chat、test:persistence、test:sessions、test:resources、test:artifacts、test:omp-session:通过。旧 sessions/resources 测试适配了当前配置依赖与 ESM bundling,未通过跳过断言消除失败。
  • npm run test:three-modules:生产 Electron、真实 OMP、真实 preload/IPC、仅绑定 localhost 的受控 OpenAI 上游通过。最终集成报告见下方更新。
  • node scripts/verify-new-task-switch.cjs:最终生产构建上通过;报告 .tmp/new-task-switch-58fWzV/report.json,验证即时切页、准备占位、成功替换和首发失败恢复。

三模块端到端覆盖:

  1. 单次任务自动到期,真实模型请求→宿主写文件→最终回复→消息落盘→自动化成功记录;模型、空间、项目归属正确,任务及时出现在侧栏。
  2. 手动运行立即返回运行中记录;回复仍被上游 gate 阻塞时就能读取真实会话身份;重复执行被拒绝。
  3. 上游失败写为 failed,实际助手消息为 error;暂停后拒绝手动运行。
  4. 资料库只收录真实生成文件,收藏与最近访问可持久化;点击通过来源任务打开真实文件。
  5. renderer 重载保留定义、运行记录和收藏;浅色/深色页面及编辑器截图可检查。
  6. 可见表单创建/编辑双周规则,修改提示词不移动周期 anchor,页面启停和确认删除真实落盘。
  7. 项目输入区首发切到实际对话并收到回复;另用未被 OMP 占用的独立测试空间模拟目录不可用,确认失败恢复草稿且不留下空任务。

截图为 YCode 自身运行时验收,不是原版逐像素差异报告。主题截图等待状态更新及颜色过渡完成,避免把切换中的白色卡片误当最终深色效果。

当前限制与下一批

  • 资料库尚未完成个人资料存储与引用。 “我的资料/团队空间”明确未接入;本批本地产物索引不等于个人资料库或项目资产库。Markdown/CSV/文件夹/链接导入、资料编辑、显式引用 chip 到实际请求的统一解析(开发计划 C3/L3/L4)仍待开发。
  • 项目动态/计划/资产尚未配置。 项目待办、交接创建事项及资料关联、归档/删除等完整生命周期未接。配置中保存了专家/技能/连接器引用,不等于项目任务已自动激活这些能力。
  • 不引入未经证实的自动策略。 会话计划不自动变项目待办;生成文件不自动上传到个人/项目资料;不按轮数/复杂度硬编码拆解或沉淀;不把整个资料库作为每次请求默认上下文。
  • 调度是本地策略。 主进程运行时每秒检查;默认 60 秒迟到容差,超出后记录 missed 并跳过,不自动重试,重启未完成记录标为中断失败。同一任务不重叠,不代表已实现原版服务端队列/全局并发策略。应用完全退出后不执行。以上包括迟到容差均是 YCode 本地实现,原版时区/DST/漏跑/重试行为仍需 REA 证据验证。
  • 视觉与交互未完整 1:1。 列表与表单复用现有 token 及已回收尺寸依据;编辑器存在本地执行设置扩展、原生选择/日期控件、模板图标和未采集状态等差异。已知下一批还须对齐原版默认 fullAccess 与保存确认、禁止遮罩/Escape 关闭的编辑器约束(本批默认 default-sandbox 且允许关闭)、有效期到期时的页面刷新边界。尚缺同数据/同主题/同视口的原版像素及动效验收,不能把本批功能通过标记为完整复刻。
  • 云成员协作、远端通知与产品侧子代理调度继续按用户原授权暂后。安全中心另行拆解。

最终报告路径

  • 最终全链路:.tmp/three-modules-x8nrxz/report.json;截图 library-light.png、library-dark.png、automations-light.png、automations-dark.png、automation-editor-dark.png。先前通过报告 .tmp/three-modules-Hf6e02/report.json 保留。
  • 最终构建日志:.tmp/three-modules-build.log。
  • 独立窗口回归:广播关闭对象访问隔离后,npm run test:task-window 通过;报告 .tmp/task-window-stream-fRrpwz/report.json。真实 OMP 验证窗口内发送/流式/取消、关闭发送窗口后持久化终态、重开活跃回合及双窗口同步。首轮超时保留在 .tmp/task-window-stream-Gw2hxF/failure.json,不抹去失败记录。