Files
ycode/docs/assessment-space-tools-2026-10-15.md

77 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.
# 空间与右侧工具栏评估(2026-10-15)
本轮只评估,没有修改生产代码。结论:这两块需要补组件结构、状态与本地宿主能力,不能靠继续微调现有 CSS 完成。YCode 的空间仍为 mock;右栏主要是自制运行统计占位。现有真实资源读取和产物预览可复用,但不等于原版完整详情面板。
## 当前 YCode 实现
| 范围 | 当前实际行为 | 与 1:1 目标的差距 |
| --- | --- | --- |
| 空间列表 | `Sidebar.tsx` 使用 `MOCK_SPACES`;可展开/收起;点击、新建、紧凑按钮仅显示未实现提示 | 没有真实工作区集合、任务归属、创建、导入、重命名、删除、排序及视图切换 |
| 工作目录 | `stores/settings.ts`、`main/config.ts`、`workspace:choose` 提供一个全局目录,能调用系统目录选择器并持久化 | `SessionMeta` 没有 workspaceId/cwd;不同会话没有各自工作区。新增空间会触及会话/IPC/OMP/资源读取契约,不能只给侧栏加列表 |
| 默认右栏 | `RightSidebar.tsx` 展示真实当前配置、消息数和工具数;可切换主题/字号;可用工具名单为固定两项,并明确标注占位 | 内容结构、入口及标签体系与原版详情面板不同 |
| 右栏容器 | `App.tsx` 控制显示/隐藏与拖拽宽度,宽度全局持久化,320–900 px,默认 647 px | 缺少原版窄屏抽屉、均衡宽度、全屏、开闭状态机、会话独立的面板恢复及左右栏协同 |
| 资源预览 | `ResourcePreview.tsx` 能显示文本行号/选中范围、目录、图片、产物;图片可大图及下载 | 文本/目录还是 YCode 自制宿主适配。没有原版完整文件树、文件编辑、统一多标签、标签排序/关闭策略、修改状态提示 |
| 资源桥接 | `main/resources.ts` 真实读取工作目录内文件;文本 2 MiB、图片 20 MiB、目录最多 500 项;行窗口、图片解析和下载已接 IPC | 当前资源 store 仅一个 `path/resource`,不能表达会话独立的多文件/浏览器/终端标签;资源读取仍依据全局目录 |
| 产物内容 | 已有 `ArtifactHostPreview`,部分类型使用恢复的原版实现(包括 Pierre Diff) | 应单独验收内容与外壳;现有单资源壳不具有原版产物导航、变更清单、统一标签和面板布局 |
源码审阅范围:`src/renderer/src/components/{Sidebar,RightSidebar,ResourcePreview}.tsx`、`App.tsx`、`stores/{settings,resources,chat}.ts`、`src/shared/{types,ipc,resources}.ts`、`src/main/{config,sessions,ipc,resources}.ts`。没有读取或输出真实密钥。
## 原版证据与代码入口
所有原版结论来自已经由 REA 导出的固定脚本/CSS;本轮未通过其他渠道读取原版。下面是静态代码结论,不表示对应交互已经实测。
- WorkBuddy 5.8.2;ASAR SHA-256 `035254bc76310ea46317433e4840602094543ef323d2d5c5aff7c131729de918`。
- 脚本 Evidence:`ev_717fa5e846e64d67ac19c8925d121bff632c0d3aefb3603b10858559cabb2dcb`,保存于 `.tmp/rea-runtime-scripts.json`。
- CSS Evidence:`ev_377c8790468b3c67dad8577aabb327f98d3140659f0fffdbabfcff5a40cc9e94`,固定清单 `.tmp/rea-css-recovered/manifest.json`。
- 下表偏移为导出 JS 字符串中的 0 起始字符位置,用于重新定位,不是源文件行号。
| 原版模块 / SHA-256 | 锚点 | 已确认的静态行为 |
| --- | --- | --- |
| `contexts-BMeWSUHk.js` / `5f35b7489b107e21ef452c8ee88a95265756f6fc444841eef869228bbc44768b` | `sidebarConvToGroupingInput` 2632798;`deriveGroupedFolders` 2633426;`useSpaceSubfolderOrder` 2925299 | 空间下有 workdir、project 等不同分组;本地 cwd 归一、worktree 源 cwd 映射、活动排序、展开/可见数量状态,不能用知识库空间代替 |
| 同上 | `CreateWorkspaceModal` 2944462;`startWorkspaceTask` 2981392;`WorkspaceBlockSectionInner` 2981990 附近 | 创建框宽 480,名称 trim 后允许确认,自动聚焦,Enter 有 IME 保护;宿主 `workspaces.generate({name})` 创建;从工作区新建任务先检查目录存在 |
| 同上 | `WorkspaceBlockSectionInner` 2981990 附近;`SectionContextMenu` 3009070 附近;`getWorkspaceDeleteTaskStats` 3017747 | 工作区菜单按能力显示打开文件夹、CodeBuddy、重命名、删除;菜单边界修正、Esc 关闭;删除提示计入关联/置顶任务。尚不能据此断言会删除磁盘文件 |
| 同上 | `useWorkspaceInputHost` 4576700 附近;`useHostWorkspaceInputCapabilities` 4577970 附近 | 创建目录与打开本地文件夹是两个宿主入口;取消返回空;重复提交和过时请求有保护 |
| 同上 | `resolveDetailDrawerWidth` 2181121;`resolveDetailPanelLayoutWidths` 2181508;`useDetailPanelMotion` 2187304 | 面板宽度受可用会话区和最小宽度约束;宽屏分栏/窄屏抽屉;开 200 ms、关 150 ms;原生 reduced-motion 时直接落稳 |
| `src-DwHViF_l.js` / `1bae5ee8385485c61494aae6f09828a0cb1bb867b761a0761330ceb30aaff60d` | `SidebarNext` 62090 附近;`useUnifiedTabs` 45881;`restoreSidebarSessionState` 61575 | 新版右栏统一文件、产物、浏览器、终端、quickAsk 及视图标签;有会话标签所有权、排序、最近关闭、预览标签池校验、切换恢复、固定/临时展开与折叠 |
| 同上 | 73200–77100;`useCloseTabShortcut` 31285;`resolveSidebarMode` 77927 | 新标签入口按能力显示浏览器/工作区文件/修改/终端;关闭其他/右侧标签;Ctrl/Meta+T/W 由面板作用域处理;可全屏;存在 legacy/next 模式,默认回退 next,但实际运行所选模式仍需 REA 验证 |
| `src-Cng7axVa.js` / `5ce8649e3bfac10aec1e63afee726ab45abaafc5aa7cc372892e20f3eba18c8b` | `FileChangesSidebar` 334385 附近;`SidebarNavContent` 384816;`NewTabLanding` 440500 附近;`DetailPanel` 483745 | 原版变更清单、目录树、产物分类/过滤、新标签首页和内容路由;文件树有懒加载、刷新、折叠路径、选中文件、双击打开等宿主契约 |
| `detail-panel-wrapper-DkXYIOHM.js` / `35099e6a9294923f3cb413629ff47a65e5d545a7ff9226eff97675ae2dd5f906` | `DetailPanelWrapper` displayName;`usePreviewTabOwnership`;82911 附近 | 适配当前会话的文件、预览/浏览器标签、Office 窗口、文档预览、MCP App 面板等实际宿主能力,不只是视觉容器 |
| `space-library-picker-D2BL85X8.js`(同脚本 Evidence) | `useSpaceLibraryData`、`fetchSpaces`、`fetchProjectSpace`、`searchSpaceNodes` | 团队/个人文档空间选择器是另一套云端知识库功能;不能与左侧本地工作目录空间混为一项 |
固定 CSS 中已找到相关真实选择器:`contexts-BkjwYSZT.css`(SHA `50cbd673f7f35fc7f966bdddc6c9f5677fdfe944cb904888d214619fca259380`)、`src-DYMqy4oz.css`(`420035cb969d5577ca19bf6d7b4e44f670580b51ec8987b6138728eb0416e060`)、`src-BPUOynUo.css`(`02a85e652dd1be508ab2bcf1b67880c3673d4c47e50b2caea24ac205bfe8f879`)。包括工作区菜单、空间分组、`sidebar-next` 和顶部标签操作。应带层级和 media 完整迁移,不能只拷贝选择器声明。
## 本地与云端边界
可以本地实现并严格对照的部分:工作区集合和目录创建/选择、会话工作目录归属、空间分组/排序/折叠/重命名/移除、从空间新建任务、文件树、文件内容/图片/产物/变更预览、面板多标签/拖拽/关闭/全屏/宽度/窄屏/会话恢复。没有证据表明这些必须使用 WorkBuddy 服务端。
需要另外补本地宿主能力的部分:终端进程/PTY、可编辑文件保存及脏状态、真实浏览器标签和导航、文件监听、Git 变更读取、独立窗口。它们是工程工作,不应伪装成原版按钮已完成。是否本阶段实现到完整操作能力由主任务统一范围;不能因其涉及宿主能力而自动排除 1:1。
按此前用户指示暂后且不能声称等价的部分:团队项目协作、云端文档/知识库、分享发布、企业文档认证、Office/文档云预览、云沙盒、MCP 服务授权、子代理调度。可对齐客户端入口与可用/不可用状态,但不接原版服务端、不伪造业务成功。
## 开工前应补的 REA 实测
本次评估未执行原版原生点击或截图,没有新增实时 Evidence ID。长任务第一批应通过 REA 保存以下状态,固定同版本、同视口、同字体、同数据,记录 hover/focus/disabled/空/加载/错误状态与恢复步骤。
1. 左侧空间默认形态:本地空空间、含 1/6/多条任务、长路径、选中任务与运行中任务、紧凑/卡片视图切换。
2. 新建空间:空白、空格、有效名称、Enter/IME、Esc/遮罩取消、创建失败、重复提交;打开已有目录、系统选择器取消、目录不存在。
3. 空间菜单:hover 和右键、屏幕边缘定位、重命名确认/取消、删除包含普通/置顶/运行中任务的提示与实际副作用。未经专用临时目录证据,不假定会删磁盘文件。
4. 右侧默认到底使用 next 还是 legacy;逐个真实可见入口定位。所有 capability/账号/平台条件需记录,静态注册过的入口不等于当前用户可见。
5. 面板空态、顶部标签、文件/图片/产物/变更、内容长短及加载失败;打开同文件是否复用标签、关闭最后标签、关闭其他/右侧、标签重排与快捷键范围。
6. 固定/临时展开/收起、全屏、拖拽极限/双击恢复、窗口缩窄/放大、会话 A/B 切换恢复;reduced-motion 和开关被中途反转的动画。
## 建议的实现批次和验收
先建立统一 `workspace -> session -> panel session` 数据归属,再接组件;这是避免空间切换后文件预览/OMP 仍读旧全局目录的关键。具体类型/API 由主上下文统一决策。
| 批次 | 可交付与本地验收标准 | 主要依赖 |
| --- | --- | --- |
| A:REA 状态基线 | 上述各入口有截图、DOM/CSS、源状态规则和副作用证据;标清不可达分支 | 原版运行窗口与 REA |
| B:空间真实化 | 创建/选择目录→新任务绑定 cwd→重启恢复;改名/移除不串空间;任务排序/计数/折叠与原版状态一致;本地故障回归 | shared/main/store 跨模块改动 |
| C:面板框架 | 原版外壳/图标/标签/布局;每会话独立状态、复用/关闭/排序、快捷键、全屏/窄屏/动效;原版截图逐态比对 | B 的会话归属;固定源 CSS |
| D:工具内容 | 文件树懒加载/刷新、文件定位、图片、产物、变更清单接现有真实资源桥;编辑/终端/浏览器按已确定能力接宿主 | 主进程资源/Git/PTY/浏览器能力 |
| E:整体验收 | 同一导入对话打开文件/产物后左右两侧对应状态;长会话与跨空间并行任务不串数据;重启恢复;误差图逐类收敛 | A–D |
验收必须分开记录「组件已实现」「宿主真实可用」「对照截图通过」「行为序列通过」。不能以产物内容已恢复、CSS token 相同、构建通过代替右侧栏整体完成。当前没有足够基线给出可靠的全模块像素完成百分比或固定小时工期;可以据上面批次启动持续长任务,并逐个交付明确状态。
本轮验证仅为源码与固定 REA 导出审阅;没有运行构建/测试,因为未改生产代码。剩余风险是原版实际当前模式/权限条件、删除副作用、默认标签与窄屏行为尚需实时 REA 证据。