@@ -2,9 +2,6 @@ package main
22
33import (
44 "fmt"
5- "os"
6- "os/exec"
7- "path/filepath"
85
96 "github.com/spf13/cobra"
107
@@ -13,21 +10,22 @@ import (
1310
1411// newSyncCmd 构造 cloud-claude sync 父命令树。
1512//
16- // Phase 31 Plan 03 仅注册 sync conflicts 子命令(CONTEXT D-28 — 最小可行版本);
17- // sync resolve / sync resume 等 wrapper 由 v3.1 落地(OOS-A2 不暴露 5 种冲突模式)。
13+ // 自研 hot sync 当前只暴露 conflicts 查询:
14+ // 读取 ~/.cloud-claude/last-session.json 的 conflict_count,提示用户最近一次会话
15+ // 是否出现自动 resolved 的双向冲突。逐文件清单暂未持久化。
1816func newSyncCmd () * cobra.Command {
1917 cmd := & cobra.Command {
2018 Use : "sync" ,
21- Short : "Mutagen 同步管理(v3.0 三层文件映射) " ,
22- Long : "查看本地 Mutagen 客户端管理的 cloud-claude 同步会话与冲突文件清单。 \n 注:当前仅实现 sync conflicts 子命令;sync resolve / sync resume 留 v3.1 。" ,
19+ Short : "热同步相关工具 " ,
20+ Long : "查看 cloud-claude 自研热同步的最近一次冲突计数等状态。 \n 当前仅实现 sync conflicts 子命令;逐文件冲突清单留后续版本补齐 。" ,
2321 SilenceUsage : true ,
2422 SilenceErrors : true ,
2523 }
2624
2725 conflictsCmd := & cobra.Command {
2826 Use : "conflicts" ,
29- Short : "查看当前 Mutagen 同步会话的冲突文件清单 " ,
30- Long : "调用本地 Mutagen 客户端 sync list --long 渲染所有 cloud-claude 创建的 sync session 的冲突文件(path / alpha / beta / mtime) 。" ,
27+ Short : "查看最近一次热同步冲突计数 " ,
28+ Long : "读取 ~/. cloud-claude/last- session.json 中的 conflict_count。 \n 当前自研热同步会在运行时实时提示冲突,但尚未持久化逐文件清单 。" ,
3129 SilenceUsage : true ,
3230 SilenceErrors : true ,
3331 RunE : runSyncConflicts ,
@@ -36,35 +34,18 @@ func newSyncCmd() *cobra.Command {
3634 return cmd
3735}
3836
39- // runSyncConflicts 执行 ~/.cloud-claude/bin/mutagen sync list --long 并把结果直接打到
40- // stdout / stderr。本地命令出错时返回中文错误,由 cobra runE 错误处理流程 stderr 打印。
41- //
42- // 行为约束:
43- // - 不发起 SSH 连接(本子命令只查本地 mutagen daemon 状态,不需要联网)
44- // - ExtractMutagenBinary 幂等保证 ~/.cloud-claude/bin/mutagen 存在
45- // - MUTAGEN_DATA_DIRECTORY 环境变量隔离与主流程一致(CONTEXT D-05)
37+ // runSyncConflicts 仅读取本地上次会话快照,不发起 SSH 连接。
38+ // 当前实现不再依赖 Mutagen daemon,也不维护逐文件冲突清单。
4639func runSyncConflicts (cmd * cobra.Command , args []string ) error {
47- home , err := os . UserHomeDir ()
40+ snap , err := cloudclaude . LoadLastSession ()
4841 if err != nil {
49- return fmt .Errorf ("无法获取用户主目录: %w" , err )
50- }
51-
52- binPath := filepath .Join (home , ".cloud-claude" , "bin" , "mutagen" )
53- if err := cloudclaude .ExtractMutagenBinary (binPath ); err != nil {
54- return fmt .Errorf ("无法准备 Mutagen 二进制: %w" , err )
42+ return fmt .Errorf ("无法读取最近一次会话快照: %w" , err )
5543 }
56-
57- env := append (os .Environ (),
58- "MUTAGEN_DATA_DIRECTORY=" + filepath .Join (home , ".cloud-claude" , "mutagen" ),
59- )
60-
61- // sync list --long 输出含每个 session 的冲突详细信息(path / alpha / beta / mtime)
62- c := exec .Command (binPath , "sync" , "list" , "--long" )
63- c .Env = env
64- c .Stdout = os .Stdout
65- c .Stderr = os .Stderr
66- if err := c .Run (); err != nil {
67- return fmt .Errorf ("查询 Mutagen 冲突清单失败: %w" , err )
44+ if snap .ConflictCount <= 0 {
45+ fmt .Println ("最近一次会话未记录热同步冲突。" )
46+ return nil
6847 }
48+ fmt .Printf ("最近一次会话记录到 %d 个热同步冲突。\n " , snap .ConflictCount )
49+ fmt .Println ("当前版本仅持久化冲突计数;逐文件冲突会在运行 cloud-claude 时实时提示。" )
6950 return nil
7051}
0 commit comments