Skip to content

same — 把能力迁到别的同源仓库 ​

项目A 已经做好的能力,按项目B / 项目C 自己的写法迁过去。迁的是「需求要成立的那几条」,不是整文件复制;每个目标仓单独核对分支、单独验证、单独报结果。不在当前仓从头做需求,也不做统一批准派发,不主动 commit / push。

写法 ​

工具写法
Codex$jj-same …
Claude / Grok / Qoder/jj-same …

适用与边界 ​

用得当:

  • 项目A 做完了(通常刚用 ralph 归档),项目B / 项目C 要对齐
  • 手上有可当证据的东西:ralph 任务里的交接信息、会话、提交

别用在:

你想做的去这里
只在当前仓做完一个需求ralph
好几个仓要统一预览、批准、一起派dispatch
只想提交、合分支end

开始前 ​

  1. 项目A 的改动已经提交——源仓有未提交改动时,交接信息会标"未就绪",same 会先让你提交
  2. 知道每个目标仓该在哪条分支上改——分支不对 same 会停下来,但你得知道正确答案
  3. 在 ralph 归档时说过「交接到 项目B 项目C」的话,交接信息已经准备好了

第一次这样用 ​

你说(在项目A 的对话里,紧接 ralph 做完之后):

text
$jj-same 交接到 项目B 项目C

Agent 会做:

派遣宣告、占位、续接的规则见 skills/jj/references/assignment-spawn.md,本页不再重复。

  1. 锁定本轮增量——源提交是哪一次、这一轮改了什么。用这一轮,不用整份旧验收清单
  2. 确认目标——你说的「项目B 项目C」对应哪两个仓;说了「三端」但没点名会先问你
  3. 写交接文档并调研——每个目标仓一份本轮任务文档(像派单那样:读这些 / 交付 / 不要改,必须是精确文件);派遣宣告、占位、续接按上述协议,spawn jj-researcher(缺失则 general-purpose;description 以 [research] 开头)
  4. 派执行人实施交接——核对分支后,派遣宣告、占位、续接按上述协议,spawn jj-implementer(缺失则 general-purpose;description 以 [implementer] 开头)。独立目标仓同一轮可同时派;同一仓仍串行。调研派单和实施派单分开贴;执行人先确认再开工,不在主对话里修改业务代码,不照抄项目A 的文件
  5. 验证——执行相关测试;需要真机 / 真环境验证的会标出来等你确认,不伪装成已通过

你会看到: 聊天里先说明这一步在做什么,然后每个目标仓一段小结——

text
## 项目B 小结
- 做法:直接迁移 / 适配 / 扩展 / 卡住 / 不适用
- 改动:文件 + 一句话说明
- 验证:执行了什么 / 跳过了什么 / 等你确认什么
- Git:分支 @ 提交;已提交 / 未提交
- 下一步:(可选)

怎样算做完: 每个目标仓都"改对了、验证过了"。项目B 成了、项目C 卡住,就只算项目B 完成,Agent 不会说"全部搞定"。

常用说法 ​

交接(最常见)

text
$jj-same 交接到 项目B 项目C
$jj-same 开始交接

只迁一个 / 接着迁下一个

text
$jj-same 开始迁移项目D
$jj-same 继续迁项目C

顺手提醒分支

text
$jj-same 把阿里云 tracker 迁到项目D,注意别动错分支

做完之后 ​

你想怎么做
提交并合分支在每个目标仓使用 $jj-end——same 不负责 Git 提交
某个目标卡住了看小结里的"卡住"原因(多半是分支不对或源仓没提交),处理后再说「继续迁项目C」
项目A 后来又改了提交后再说一次「交接到 项目B」,Agent 会以新的源提交重新对齐

边界细则 ​

写整齐一点(可选)——只在没有 ralph 任务、要从会话或提交范围里翻证据时用得上:

text
$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 的收尾小结就够了。

相关 ​

ralph、dispatch、end、证据怎么算数、常见踩坑