# 新电脑初始化真实自动化一周计划

Status: proposed

Date Range: 2026-04-10 to 2026-04-16

## 1. 目标

本周目标不是“开发机可以跑”，而是把下面这条链路做成可验收的稳定闭环：

1. 新电脑安装客户端
2. 用户输入 employee key
3. 客户端调用 `https://spb-bp1wv2oe0hvfvi98.supabase.opentrust.net/functions/v1/openclaw-employee-config`
4. 从返回的 `skills[].skill.download_url` 识别抖音 / 小红书 zip 项目包
5. 客户端自动下载并解压到本地工作区
6. 专家页出现对应项目
7. 用户发送一句自然语言
8. 客户端命中项目 `workspace-entry`
9. 本地真实启动 Python / Playwright 自动化链路

## 2. 本周验收标准

本周结束时，至少满足以下结果：

1. 空白用户目录下首次安装，保存 employee key 后可自动完成 `init` 拉取和项目同步
2. `workspaceSummary` 中能看到非 home 项目，且 `currentProjectId`、`projectReady` 为真
3. 专家页发一句话时，默认走 `workspace-entry`，而不是 skill fallback
4. bundled runtime 不再因 `_greenlet` 或 `async_playwright` 导入失败而阻断真实自动化
5. 项目运行态在 bundle 更新后不会因为目录替换而丢失
6. 小红书项目在 fresh install 路径下完成至少一次真实自动化启动验证

## 3. 范围

本周纳入：

- `openclaw-employee-config` 返回契约与客户端解析契约对齐
- project bundle 标准化
- bundled runtime 依赖与探测硬化
- installer / experts 真实链路 smoke
- 小红书项目运行态迁移到 `memory/`
- 项目级 skill 展示与校验收口

本周不纳入：

- “扫描 `skills/*/SKILL.md` 自动反推项目”的重构
- 项目 skills 的彻底物理隔离重构
- 超出当前 bundled runtime 能力的大规模新依赖体系设计

## 4. 关键事实基线

- 当前客户端已经有 `employee-key -> runtime cloud fetch -> zip bundle sync -> project inventory -> experts page -> workspace-entry` 主链路
- 当前最大 fresh install 风险在 bundled runtime 的 Python 依赖校验过浅，尤其是 `greenlet` / `async_playwright`
- 当前 project bundle 缺失 `project.json` 时仍会被客户端降级猜测，不适合正式交付
- 当前项目运行态只保留 `sessions.json`、`session-messages/`、`memory/`，所以所有可变状态必须迁入 `memory/`
- 当前 `listProjectSkills()` 仍会混入 curated generic skills，不满足“进入项目后只看该项目能力”

## 5. 每日计划

### Day 1: 2026-04-10

目标：冻结契约，避免后续实现反复返工。

任务：

- 明确 `openclaw-employee-config` 返回字段的最小必需项
- 明确 zip 项目包的标准交付契约
- 明确 `project.json` 最低要求必须包含：
  - `id`
  - `name`
  - `platform`
  - `projectType`
  - `workspaceAutomation`
  - `defaultEntry`
  - `entries`
- 明确本周验收以小红书链路为主，抖音按同一标准补齐

交付物：

- 本文档
- 项目包契约确认结论

### Day 2: 2026-04-11

目标：先堵住 fresh install 最容易失败的 bundled runtime 问题。

任务：

- 在 `build/runtime/python/requirements.in` 和锁文件中显式纳入 `greenlet`
- 调整 `packages/runtime-manager/src/index.ts`
- 把 Python payload 探测从 `find_spec` 提升为真实关键导入探测
- 至少覆盖：
  - `import greenlet`
  - `from playwright.async_api import async_playwright`
- 调整 installer smoke，同步校验上述关键导入

交付物：

- runtime 依赖更新
- runtime 探测更新
- installer smoke 更新

验收点：

- 打包 Python 环境可真实导入 `greenlet`
- `pythonReady` 只在关键依赖通过时才为真

### Day 3: 2026-04-12

目标：把 bundle 接入从“能猜”改成“强契约”。

任务：

- 修改 `project-bundle.ts`
- 安装后要求项目根必须存在标准 `project.json`
- 缺失时 bundle sync 明确报错，不写入 ready project
- 保留现有 rollback / replace / preserve local state 逻辑
- 校验项目根结构兼容：
  - zip 根就是项目根
  - zip 根下 `projects/<projectId>`

交付物：

- bundle 解析与报错硬化
- 缺失 `project.json` 的明确诊断

验收点：

- 非标准 zip 无法被静默安装成 ready project

### Day 4: 2026-04-13

目标：收口项目隔离表现，避免专家页误混全局能力。

任务：

- 修改 `project-store.ts`
- `boundSkillIds` 与实际 `workspace/skills/<skillId>` 做交叉校验
- 对缺失 skill 做诊断日志和降级处理
- 专家项目视图下不再自动混入 curated generic skills
- 保持 session 继续按 `project:<projectId>:<uuid>` 隔离

交付物：

- 项目 skills 列表收口
- `boundSkillIds` 诊断

验收点：

- 进入 `xhs` 后只显示 `xhs` 绑定技能
- 进入 `douyin` 后只显示 `douyin` 绑定技能

### Day 5: 2026-04-14

目标：把小红书项目调整到真正适合 bundle 替换的状态。

任务：

- 以 `workspace/xhs` 为模板，梳理真实自动化入口
- 确保 `project.json` 包含 `workspaceAutomation`
- 确保 `workspace_entry.py` 能处理自然语言 prompt
- 把运行态迁移到 `memory/`
- 重点清理这些项目根运行态：
  - `xhs_profile`
  - `generated_images`
  - `openclaw_runs`
  - `openclaw_debug`
  - 其他浏览器态 / 草稿态 / 调试态文件

交付物：

- 可交付的小红书标准 bundle 源

验收点：

- bundle 替换后，小红书登录态和会话态仍保留

### Day 6: 2026-04-15

目标：让抖音项目按同一套标准补齐，而不是做特殊兼容。

任务：

- 给抖音项目补标准 `project.json`
- 补 `workspaceAutomation` 与 `workspace_entry.py`
- 校对 `boundSkillIds`
- 确认抖音项目依赖不超出本周 bundled runtime 能力
- 如超出，单独列出 runtime 扩容项，不在 bundle 内偷偷引入

交付物：

- 可交付的抖音标准 bundle 源

验收点：

- 抖音和小红书都能以“一包一项目”方式被客户端识别

### Day 7: 2026-04-16

目标：做真正的 fresh install 验收，而不是开发机自测。

任务：

- 用空白用户目录执行 installer smoke
- 用空白用户目录执行 experts 页真实链路 smoke
- 重点验证：
  - employee key 初始化
  - zip 下载与项目同步
  - 专家页项目出现
  - `workspace-entry` 命中
  - 小红书真实自动化成功启动
  - bundle 替换后 `memory/` 保留
- 输出遗留问题清单和是否可以进入下周收尾

交付物：

- fresh install 验收结果
- 遗留问题清单

## 6. 文件级实施清单

本周高优先级涉及的代码文件：

- `apps/desktop/src/main/services/cloud-api.ts`
- `apps/desktop/src/main/services/project-bundle.ts`
- `apps/desktop/src/main/services/project-store.ts`
- `apps/desktop/src/main/services/project-workspace-executor.ts`
- `packages/runtime-manager/src/index.ts`
- `build/runtime/python/requirements.in`
- `build/runtime/python/runtime-requirements.lock.txt`
- `build/scripts/installer-smoke.ps1`
- `build/scripts/xhs-expert-cloud-bundle-smoke.ps1`
- `build/scripts/xhs-expert-live-run.ps1`

项目包侧高优先级文件：

- `workspace/xhs/project.json`
- `workspace/xhs/workspace_entry.py`
- `workspace/douyin/project.json`
- `workspace/douyin/workspace_entry.py`

如果真实项目源不在仓库内，则需要同步维护一份与仓库规范一致的交付模板。

## 7. 风险

1. 若抖音或小红书项目依赖超出当前 bundled runtime，单靠 zip 交付无法解决
2. 若真实自动化代码继续把运行态写在项目根，bundle 替换时仍会丢状态
3. 当前项目 skills 仍是共享物化到 `workspace/skills`，若未来两个项目出现同名 skill，仍存在覆盖风险
4. 如果服务端返回契约字段不稳定，fresh install 的初始化链路会出现非代码层问题

## 8. 周末结论口径

只有同时满足以下条件，本周工作才算达标：

1. 新电脑或空白用户目录下首次安装可完成初始化
2. employee key 触发的 `openclaw-employee-config` 可稳定下发 zip 项目包
3. 客户端可自动把 zip 物化为 ready project
4. 专家页可以直接选择项目并命中 `workspace-entry`
5. 小红书真实自动化在 fresh install 环境下成功启动
6. installer smoke 和 experts 真实链路 smoke 均通过

如果只做到“项目能出现”或“开发机能跑”，但 fresh install 不稳定，则本周目标不算完成。
