Files
ycode/docs/1比1长任务评估-2026-10-16.md

97 lines
11 KiB
Markdown
Raw Permalink 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.
# WorkBuddy 1:1 对标:长任务评估与执行基线
用户最新范围:先评估同会话的实际效果,再准备新建任务交互、自定义模型添加、空间、右侧工具栏的 1:1 长任务。自定义模型使用用户自己的上游,不接 WorkBuddy 服务端模型;此前暂后的云服务与子代理调度继续暂后。本轮只评估,未修改生产组件、已导入会话或用户配置,未创建后台长任务/定时任务。
## 结论
可以推进,但这是跨会话状态、模型配置、工作目录归属和右侧工作台的中大型客户端改造。已取得相关主脚本、模型表单 JS/CSS 和关键实际画面;主要阻碍转为实现缺口与验收覆盖,而非拿不到原版 CSS。
此前的局部正文像素结果、源码恢复、导入回读和 fixture 通过,只覆盖各自声明范围。新导入会话的校验证明内容已加载,未证明其取消语义、工具规范化、消息投影或整页显示与原版等价。本轮已发现会显著改变整页效果的具体问题。
## 实际对照
两端会话同为「开始新会话」,来源 `4653e36f-6b2a-446f-a9c9-3f2d2d04644e`,YCode 副本 `6c000be8-b0e8-4768-9a7f-1a0d94a35951`。都以 1336×901、浅色、右栏打开观察最后一轮;截图是各端现状,没有人为改正文、折叠状态或列宽来掩盖差距。
对照图:[原版 / YCode 同屏对照](../.tmp/assessment-comparison/same-conversation.png)。YCode 运行配置值在拼图中遮挡;原始采集留在本机。
| 已确认问题 | 证据与影响 | 优先级 |
| --- | --- | --- |
| 取消被导为 error | 6 轮 `Interrupted by user` 被同时保留为正文和 error;原版 provider 明确投影为取消。最后轮原版「已取消 17m15s」且过程闭合,YCode 展开历史并重复报错 | P0 |
| 终态折叠门控不完整 | 7 个 error 轮不进入完成投影,summary 还被标为运行中。最后轮当前 21 个根渲染单元,终态诊断为 2 个正文锚点和折叠;其他历史轮需逐轮实拍确认 | P0 |
| 工具名规范化缺失 | 47/691 次调用走通用兜底:TaskCreate/Update、DeferExecuteTool、present_files、大写 AskUserQuestion。其余命中专用 renderer 也不代表已验收 | P0 |
| 产物没有形成所属会话/回合入口 | 原版本轮展示 13 个产物及「查看所有产物」,当前仍缺相应聚合、标签和导航;来源有 21 条文件引用,不能直接等同于 21 个最终产物 | P0/P1 |
| 主布局和右栏结构不同 | 当前采样原版中栏约 526.7px、右栏 525px;YCode 中栏 409px、右栏 647px。原版是标签工作台,YCode 是环境统计页,正文换行也随列宽改变 | P1 |
| 正文间距与消息尾部仍不完整 | 原版正文有 both/top/bottom 间距规则;YCode 仍按索引统一顶距。头像、操作栏、模型/用量、取消说明和产物区等还需统一恢复 | P1 |
第 31 轮耗时 17m15s 已与原版一致,不再列作差距。357 条 reasoning rawContent 有原始文本结构,但原版历史是否以及如何显示尚需复核,不能盲目全部显示或宣称已经对齐。
## 五个范围的真实基线
| 范围 | 当前 YCode | 目标与工作规模 |
| --- | --- | --- |
| 同会话效果 | 已有正文、工具、Diff 和附件基础;导入/投影仍有上述结构错误 | 先恢复显示语义,再统一布局/间距/图标/状态。中到大 |
| 新建任务 | 点击即落盘空 session,首页场景/推荐有 mock | 原版首页草稿独立,首条提交才创建任务,绑定目录、模型、模式和权限;含附件、IME、失败重试、导航草稿。大 |
| 自定义模型 | 单一旧网关配置,不能代表当前 OMP 生效模型;缺多模型管理 | 模型列表、添加/编辑、覆盖确认、测试、删除、能力和 token 配置;UI、持久化及实际请求目标一致。大 |
| 空间 | 固定 MOCK_SPACES;会话无独立 workspace/cwd | 本地工作区创建/目录选择/分组/重命名/删除语义、任务归属、切换恢复与路径正确性。大 |
| 右侧工具栏 | 自制运行统计占位,预览能力另有基础 | 原版多标签、文件树、变更、产物、预览、浏览器、终端,含拖动宽度与会话恢复;宿主浏览器/终端是新增能力。很大 |
这里的「空间」首先是侧栏本地工作区。团队知识库/云文档、登录、分享和云同步另有服务体系,不将它们混入本地空间完成度。
## 长任务依赖与批次
统一的数据关系应先明确为 `工作区 → 会话 → 回合/消息 → 产物与右侧标签`;任务保存模型标识和有效配置,执行前由同一解析入口生成 OMP/后备路径配置。右侧读取会话所属目录,避免沿用一个全局 workspace 导致跨空间串目录。既有会话和配置需要迁移与回读,不能通过清空数据获得新界面。
| 批次 | 工作与依赖 | 完成门槛 |
| --- | --- | --- |
| 0:证据与场景账本 | 固定当前原版版本、会话、截图、源码摘要;补取消/429/工具/产物等展开状态与字体、窗口条件 | 每个场景有原版 Evidence、输入、预期行为和未知项;不把静态分支当动态通过 |
| 1:修正同会话效果 | 取消/错误归一、provider 工具规范化、消息投影、产物映射、正文间距;复用已有源渲染器 | 此会话最后轮默认显示、6 取消轮及真实 429 分别正确;47 个回退调用逐类消除,原正文/输出/图片不丢失 |
| 2:统一归属与配置 | workspace/session/model 引用、历史数据迁移、有效模型解析、panel session 状态;主上下文统筹接口 | 切换两个空间及会话不会串目录、模型、草稿、附件或标签;旧数据回读一致 |
| 3:新建任务与空间 | 首页草稿、场景、选择目录/空间/模型/权限、首次提交创建、防重复/失败重试;真实空间 CRUD | 从首页到首轮执行实际走通;取消创建不产生空任务,创建失败保留输入,空间操作副作用符合已采原版契约 |
| 4:自定义模型 | 本地多模型/凭据存储、源码表单/列表/选择器、验证与覆盖/删除确认、连接测试和 OMP 接入 | 测试不保存,保存重启有效;选定模型实际生效,上游使用用户配置;鉴权/超时/失败可复现,运行中切换契约明确 |
| 5:右侧工作台 | 先标签/布局/会话恢复,再文件树/变更/产物/预览,最后浏览器和 Windows 终端宿主;已有 Pierre/图片/HTML 预览复用 | 入口有真实内容和行为,多标签及切换/关闭/恢复正确;不能用按钮占位或静态输出代替浏览器/终端 |
| 6:整体验收 | 按相同会话/视口/布局/字号/字体/滚动锚点/折叠状态做截图与行为对照,覆盖明暗/宽窄/长文本/错误/动效 | 必要状态逐项验收,修复差异后复验;构建、fixture、真实 IPC 与原版对照分别记录 |
批次 3、4、5 的 UI 和局部宿主能力可以在批次 2 的接口固定后有边界地并行。最终集成、迁移、跨模块状态和真实验收由主上下文负责。每批应保存可接手的完成/未完成/证据/下一步,长任务中断后从账本继续。
## 必须覆盖的验收状态
- 对话:正常完成、6 个取消样本、429、工具等待/运行/失败/取消、问答回放、长输出、产物跳转、历史恢复、字体与正文间距。
- 新任务:进入不创建、重复点击、草稿往返、目录/空间切换、模型/权限选择、附件、多行/IME、首条发送、防重复、失败重试、重启恢复边界。
- 模型:空列表、添加/编辑、必填与 URL/Key 校验、重复 ID 覆盖、能力与 token 值、测试中/成功/鉴权失败/超时、保存失败、删除选中模型、重启和实际运行。
- 空间:空/多空间、创建名称、目录已存在/不可用、重命名、带关联任务的删除、排序与紧凑模式、会话归属、切换时后台任务不受误操作影响。
- 右栏:开/关/拖动宽度、不同标签内容、关闭当前/其他/右侧标签、文件与产物同路径去重、切会话恢复、预览过期、空/失败/大文件、浏览器和终端实际宿主生命周期。
目标是各状态的视觉与交互 1:1。对不可调用的原版云分支,明确记录服务依赖及未验收范围,不伪造成功,不把整项目降级成 mock。
## 新增原版采集与范围
全程通过 REA 公共入口,原版未执行创建任务/空间、添加/修改/删除模型、连接测试或终端命令;仅打开页面/空表单观察并取消,设置窗口已关闭,原会话已恢复。
| 场景 | Evidence | 本机产物 |
| --- | --- | --- |
| 同会话/右侧工作台 | `ev_d6e6920ff4e47f73a182fac5312c5f02393366a035445d18c8a6733a8c8a11ed` | `.tmp/rea-assessment-initial/` |
| 独立设置窗口 | `ev_2309de12a003fca2c863a223cbda5bccad36b3af73e29bc309fdaed94745cf9e` | `.tmp/rea-assessment-settings-window/` |
| 自定义模型列表 | `ev_40da6df0424193923bae64a8ccb6fca97ea67813d7de671986d4d7e154b848c1` | `.tmp/rea-assessment-models/frame-000.png` |
| 模型添加空表单 | `ev_45d3e5c9b0b0961cb58c9628598c8a777569c83062a0e8fe9c3d5f435e394632` | `.tmp/rea-assessment-model-add/frame-000.png` |
| 模型表单 JS/CSS | `ev_25f013c9fd2ad66153046eec06e94fb6128bfacc1e87e57aa90db6bc419075ec` | `.tmp/rea-assessment-model-source.json` |
| 创建本地空间空表单 | `ev_1e096ecf360249286260ceef24f1195919b8f1cbae8dd81751a2e36eb631bab2` | `.tmp/rea-assessment-create-space/frame-000.png` |
| 新建任务首页 | `ev_5c3eb3e638af074b017eb8f96ce3e90464d8e2a8ca3e6978cc202a7c36374283` | `.tmp/rea-assessment-home/frame-000.png` |
| 原会话恢复 | `ev_84d140d762fe4f59ebca649da52bcbe7c85778842941a9603fabdde21c260344` | `.tmp/rea-assessment-restored/` |
| 恢复后稳定状态 | `ev_43441ee1f76b15e3482ed305ebefa4ac82a2131fe29ea0ba0c387596d3c7129c` | `.tmp/rea-assessment-final-state/` |
模型表单已取得完整正文:重复 ID 覆盖确认、Key 去空白及字符校验、测试不保存、token 快捷值和能力区条件都已明确。实际协议请求层、删除选中模型与运行中切换等仍需长任务内动态验证。不是继续等待 CSS 或表单源码。
采集脚本仅补 `--target-id` 来区分同文件路径的主窗口和设置窗口;原版所有协议交互仍由 REA 执行。关闭设置窗口的那次 capture 因目标关闭返回失败,随后 REA 目标列表确认只剩原主窗口;不把该次失败计作成功截图。
YCode 双布局实拍见 `.tmp/assessment-ycode/`。截图条件只对齐视口/主题/会话,尚未完全控制两端 GPU、字体、布局与折叠状态,不输出整页像素差异百分比,也不复用此前单段正文的零差异来证明当前整页通过。
原会话重新进入后的稳定原版状态已确认无 skeleton;其右栏宽度变为 360px,中栏约 691.7px。首次比较使用之前的 525px 右栏状态。两次均是实际观察,不能把 525px 硬编码为原版固定宽度;长任务应查明导航、默认比例、拖动与布局恢复的状态契约。
## 分项报告
- [对话数据与投影审计](assessment-chat-projection-2026-10-15.md)
- [新建任务与自定义模型](assessment-task-models-2026-10-15.md)
- [空间与右侧工作台](assessment-space-tools-2026-10-15.md)
评估已形成可执行批次和验收门槛。完整工时依赖终端/浏览器宿主、协议接入和动态状态补证,不给未经验证的完成百分比或小时承诺。