OpenWork Desktop Sync 用于在 qwen-code 仓库与 OpenWork 检出之间同步桌面端改动,其核心机制是逐提交的路径迁移,而不是快照替换或子树拆分。仓库脚本负责处理 Git 操作,使用方式为通过环境变量指定 OpenWork 目录并运行脚本,例如 OPENWORK_DIR=/path/to/openwork bun run desktop-openwork-sync --mode export。
用途:在 qwen-code 的 packages/desktop 与 OpenWork 仓库根之间双向迁移提交,保持提交级对应关系。默认 overlay 为 README.md,overlay 路径不会参与迁移提交,仍归目标仓库所有,可通过 OPENWORK_OVERLAY_PATHS='README.md' 设置。
主要能力与机制:脚本从 source-base..source-head 遍历源提交,重写 qwen-code packages/desktop 与 OpenWork 仓库根之间的路径,然后用 git apply -3 逐个应用提交。来自接收仓库的提交会通过同步 trailer 跳过:import 时跳过 qwen-code 来源的 export 提交,export 时跳过 OpenWork 来源的 import 提交。合并提交不会被当作合并提交迁移,脚本会迁移被合并分支内的常规提交;遇到合并包装时,它会检查常规提交是否已处理且合并树是否匹配 Git 自动合并结果,若合并包装包含手动解决改动,同步会停止,以便由代理将该解决转换为正常的后续提交。目标侧改动在迁移源提交未触及相同 hunk 时会被保留;若触及相同 hunk,Git 会留下正常冲突由代理解决。正常同步不要使用 git subtree split 或整树替换。成功的同步提交会带有 Qwen-Code-Commit 或 OpenWork-Commit 之类的 trailer,后续同步可将最新 trailer 作为下一个 source base;首次同步在没有先前同步 trailer 时需要显式指定 source base,例如 bun run desktop-openwork-sync --mode export --source-base <qwen-code-ref> 与 bun run desktop-openwork-sync --mode import --source-base <openwork-ref>。
模式:--mode export 将 qwen-code packages/desktop 提交迁移到 OpenWork;--mode import 将 OpenWork 提交迁移到 qwen-code packages/desktop;--mode auto 仅作护栏,真实同步应使用明确方向。
使用方式:先确认仓库路径与工作区干净,可运行 git rev-parse --show-toplevel、git -C /path/to/openwork rev-parse --show-toplevel、git status --short、git -C /path/to/openwork status --short。然后运行指定方向,例如 OPENWORK_DIR=/path/to/openwork OPENWORK_OVERLAY_PATHS='README.md' bun run desktop-openwork-sync --mode export --source-base <qwen-code-ref>。若 Git 报告冲突,只解决冲突的 hunk,并保留目标仓库所有的元数据,除非源改动有意更新同一行为。同步后验证可运行 git status --short、git diff --check HEAD、git diff --name-status <target-base>..HEAD。若用户要求发布,在分支干净后推送分支并创建 PR。
适用场景:需要在 qwen-code 与 OpenWork 之间保持桌面端提交级同步、并保留目标仓库侧改动的开发与维护流程。
限制与规则:除用户向 OPENWORK_OVERLAY_PATHS 添加路径外,默认仅保留 README.md 作为 overlay;源提交未触及的 OpenWork 专属文件必须保持不变;优先使用 PR 分支,脚本会为 export 分支打印推送命令;不要手动导入 PR 合并提交,应让脚本迁移常规提交并将合并提交视为包装。其他未在该技能资料中说明的功能、收费或平台信息暂未提供。