Repository navigation
v2026.09.13.2
v2026.09.13.2 — workbuddy 项目清单接入共享项目池 + 根目录不入池
客户端发布:
CLIENT_VERSION2026.09.13.1 → 2026.09.13.2(客户端包有改动,各端经/api/client/manifest自动更新,Agent 重启后生效)。服务端:仅client_update.py的版本常量,无 schema 变更、无数据迁移。
Added(workbuddy 项目清单接入共享项目池:本机项目列表与服务端项目卡片对齐)
- 背景:项目是工作空间级共享池(
/api/projects/pull返回全部可见项目,与agent无关),此前只有 hermes 在推。WorkBuddy 桌面端的项目清单(workbuddy.db的workspaces表:path+last_opened_at)完全没有上行——服务端 10 个项目全是 hermes 的;网站项目卡片按cwd前缀关联会话,因此本机 286 条 WorkBuddy 会话里 191 条落在项目之外。 - 实现(
mcp/adapters/workbuddy.py,supports_projects = True):read_projects每条 workspace 路径一个项目——服务端已知路径原样使用服务端的 id/slug/name/folders(身份存于.workbuddy-sync-projects.json侧车;改用目录名派生会被判"本地脏"并每轮覆盖对端项目名),未知路径铸确定性wb_<sha1(_path_key)>+ 整路径压平的 slug(逐路径唯一,不会触发服务端同名合并)。write_projects按本次 pull 全量重建侧车,并为每个项目路径补workspaces行(建目录);已有行只保留、不再定日期,本地行永不删除。 - 能力位:新增
supports_projects(默认 False)——无本地项目库的适配器在周期同步里跳过项目阶段,工具面返回Agent X has no local project store …,此前每轮记一条 AttributeError 日志。 - 线上验证:pull 落地 8 条 workspace、采纳 9 个服务端项目身份;push 服务端 10 → 13 且既有 10 个项目零字段改动(
imported:3, updated:9, merged:0);二次 push 幂等。
Added(根目录不入共享项目池:识别根形状路径并排除,退役已上行的根卡)
- 背景:
D:\、C:\Users\rong这类"根"条目会让项目卡变成兜底桶(实测rong吞 99 条、D:吞 27 条 = 110/286,其中 62 条是~/hermes-sync-foreign合成目录);而服务端project_folders只并集、无删除 API,项目也没有 Web 隐藏/删除入口 ⇒ 一旦上行即永久。故"各 agent 拉到本机后把本机 home 并进根项目"的方案被否决(四条理由与被保留的"服务端可回退 alias"备选见 ARCHITECTURE 决策记录 2026.09.13.2)。 - 实现:
base.is_root_project_path/strip_root_project_paths(盘符/filesystem 根、/root、/home·C:/Users及其子项);push/pull 边界统一过滤——纯根项目整条不上行/不落地,根primary_path只置None、绝不改写(它是 per-field LWW 字段,改写会与对端逐周期互推覆盖);workbuddy 适配器另清理身份侧车。本地路径全保留(D:\仍是 WorkBuddy 的 workspace,hermesprojects.db不动)。 - 退役:
scripts/hide-root-projects.py(dry-run 默认 /--apply/--undo)置hidden=1——/api/projects/pull与 Web 项目列表都过滤hidden,且 push 的 UPDATE 分支从不写hidden⇒ 客户端推不活(已用旧客户端语义复推实测)。 - 实测影响:服务端项目卡 13 → 11;本机参与同步的 workspace 键 15 → 13;本机会话归组 207/286 → 97/286(诚实结论:项目同步对本机会话分组的净收益≈0,真实收益是"项目清单对齐 + 其他机器/agent 的会话能归入这些项目")。
生产状态:236 已部署 2026.09.13.2(6 文件 sha256 与工作区一致、systemctl restart 后 health 200),线上 /api/client/manifest 实测 served 2026.09.13.2,发货 zip 逐文件 sha256 校验通过;两张根卡已在生产退役(hidden=1,dry-run 幂等、复推不复活)。测试:mcp 套件 185 项(仅 3 项改动前既有的环境失败:zstandard 未装 ×2、SyncLockAndRoleTest ×1)。