sync 是 bro 工具集中的一个技能,主要用途是在多台机器或多个智能体之间同步 bro 生成的产物。当用户调用 /sync,或明确要求发布、恢复 bro 产物时使用。该技能本身只承载策略,具体机制全部位于 bro CLI 中。
主要能力围绕产物同步展开。它把 git-memory 类产物(如 review-debt 账本、演练证据、未来的插件状态)保存到一个独立的数据引用 refs/bro/data 上,该引用位于 refs/heads 之外,因此不会出现在 MR 差异或评审上下文中。写入只涉及底层管道操作,不会改动工作区和用户的索引。
使用方式方面,命令包括:bro work sync,用于把 .agents/ 目录和债务目录下未跟踪且被忽略的文件提交到数据引用,推送到 sync.remote,然后运行 bd sync 处理 beads 状态。bro work sync --pull 则先获取数据引用并将其文件物化到工作区,这是全新克隆后的恢复路径,同样会运行 bd sync。
策略细节如下。启用需在 bro.config.json 的 stores 中加入 gitref;此后每次 bro review debt 变更都会自动同步;sync.ref 与 sync.remote 可以覆盖引用名和远程名。同步集合仅限 ls-files -o -i --exclude-standard 列出的被忽略且未跟踪文件,因此已跟踪内容不会泄漏。副本出现分歧时按树级别合并:.jsonl 按行取并集,其他冲突解析为本地副本。推送为尽力而为:失败只警告,不使命令失败,离线不应阻塞本地工作;--pull 遇到远程引用不存在时视为无内容可拉取,仍运行 bd sync,只有远程不可达或存储复制失败时才以非零状态退出。数据引用不是分支,git branch 保持干净,也不会被误检出或合并进代码。其他内容暂未提供。