same — 把能力迁到别的同源仓库
项目A 已经做好的能力,按项目B / 项目C 自己的写法迁过去。迁的是「需求要成立的那几条」,不是整文件复制;每个目标仓单独核对分支、单独验证、单独报结果。不在当前仓从头做需求,也不做统一批准派发,不主动 commit / push。
写法
| 工具 | 写法 |
|---|---|
| Codex | $jj-same … |
| Claude / Grok / Qoder | /jj-same … |
适用与边界
用得当:
- 项目A 做完了(通常刚用 ralph 归档),项目B / 项目C 要对齐
- 手上有可当证据的东西:ralph 任务里的交接信息、会话、提交
别用在:
| 你想做的 | 去这里 |
|---|---|
| 只在当前仓做完一个需求 | ralph |
| 好几个仓要统一预览、批准、一起派 | dispatch |
| 只想提交、合分支 | end |
开始前
- 项目A 的改动已经提交——源仓有未提交改动时,交接信息会标"未就绪",same 会先让你提交
- 知道每个目标仓该在哪条分支上改——分支不对 same 会停下来,但你得知道正确答案
- 在 ralph 归档时说过「交接到 项目B 项目C」的话,交接信息已经准备好了
第一次这样用
你说(在项目A 的对话里,紧接 ralph 做完之后):
$jj-same 交接到 项目B 项目CAgent 会做:
派遣宣告、占位、续接的规则见 skills/jj/references/assignment-spawn.md,本页不再重复。
- 锁定本轮增量——源提交是哪一次、这一轮改了什么。用这一轮,不用整份旧验收清单
- 确认目标——你说的「项目B 项目C」对应哪两个仓;说了「三端」但没点名会先问你
- 写交接文档并调研——每个目标仓一份本轮任务文档(像派单那样:读这些 / 交付 / 不要改,必须是精确文件);派遣宣告、占位、续接按上述协议,spawn
jj-researcher(缺失则general-purpose;description以[research]开头) - 派执行人实施交接——核对分支后,派遣宣告、占位、续接按上述协议,spawn
jj-implementer(缺失则general-purpose;description以[implementer]开头)。独立目标仓同一轮可同时派;同一仓仍串行。调研派单和实施派单分开贴;执行人先确认再开工,不在主对话里修改业务代码,不照抄项目A 的文件 - 验证——执行相关测试;需要真机 / 真环境验证的会标出来等你确认,不伪装成已通过
你会看到: 聊天里先说明这一步在做什么,然后每个目标仓一段小结——
## 项目B 小结
- 做法:直接迁移 / 适配 / 扩展 / 卡住 / 不适用
- 改动:文件 + 一句话说明
- 验证:执行了什么 / 跳过了什么 / 等你确认什么
- Git:分支 @ 提交;已提交 / 未提交
- 下一步:(可选)怎样算做完: 每个目标仓都"改对了、验证过了"。项目B 成了、项目C 卡住,就只算项目B 完成,Agent 不会说"全部搞定"。
常用说法
交接(最常见)
$jj-same 交接到 项目B 项目C
$jj-same 开始交接只迁一个 / 接着迁下一个
$jj-same 开始迁移项目D
$jj-same 继续迁项目C顺手提醒分支
$jj-same 把阿里云 tracker 迁到项目D,注意别动错分支做完之后
| 你想 | 怎么做 |
|---|---|
| 提交并合分支 | 在每个目标仓使用 $jj-end——same 不负责 Git 提交 |
| 某个目标卡住了 | 看小结里的"卡住"原因(多半是分支不对或源仓没提交),处理后再说「继续迁项目C」 |
| 项目A 后来又改了 | 提交后再说一次「交接到 项目B」,Agent 会以新的源提交重新对齐 |
边界细则
写整齐一点(可选)——只在没有 ralph 任务、要从会话或提交范围里翻证据时用得上:
$jj-same
会话=019f…
当前需求=保留密码入口
源=项目A
目标=项目B,项目C没有 ralph 任务怎么办——same 会退而从会话记录、提交范围里找证据;都找不到就问你源提交和目标,问清之前不动代码。
交接记录里的状态词——每个目标仓先有自己的 Ralph(task_plan Goal / 验收 / Steps),不要写进 ~/.jj-flow。有 live 任务时先 reuse-sibling 接着改,不另开空占位。先确认源、目标、范围和每个目标仓的分支(最容易出错),再按目标仓自己的写法改(不硬抄);缺证据就标「还不行」,不伪装成已完成。
维护旧任务时,你可能会看到「准备交接」「更新交接」以及 parent_snapshot。它们描述的是交接快照的来源和父版本:
REUSE:现有快照仍新鲜,可以直接复用REFRESH_SOURCES:先重新读取变化过的源资料REBASELINE:源基线已经变化,需要重新建立对照BLOCKED:证据或分支还不够,暂不改目标仓
这些是 Agent 判断能否开始迁移的记录词,日常只要说「开始迁移」或「更新交接」即可。
记录在哪
目标仓的 .workflow/ 下(按类型分目录)。日常看 Agent 的收尾小结就够了。