用途
Summon 是 Claude Desktop 的会话工具箱,聚焦四件事:在账号之间转移会话、找回旧会话并生成交接简报、修复会话记录的工作目录(cwd)、扫描损坏的 cwd 绑定。它遵循“四个任务、一个存储”的设计。
主要能力
Transfer(默认模式)
把会话从其他账号复制(默认)或移动(--move)到目标账号目录,使切换账号后这些会话出现在目标账号的左侧会话选择器中。默认列出所有非目标账号的候选会话,按 账号 → 项目 → 会话 分组,然后提示复制。默认时间窗口为最近 3 天,远程 VM 会话自动跳过。
关键心智模型:每个 Desktop 会话分两半。元数据 JSON 位于 %APPDATA%/Claude/claude-code-sessions/<account>/<workspace>/local_<uuid>.json,绑定账号;转录 JSONL 位于 ~/.claude/projects/<encoded-cwd>/<cli-uuid>.jsonl,全局共享。Summon 只搬运元数据包装,转录留在原处,两个包装指向同一段对话。
注意:转录以包装的 cliSessionId 命名,而非 sessionId,且可能不在包装所记录的 munged cwd 下;各模式均按 cliSessionId 解析并带扫描兜底。
Pick / Recover
summon pick 在全部会话存储上提供交互式选择器(默认最近 30 天),终端交互时优先使用 PATH 中的 fzf,否则回退为编号列表;--select N 可非交互作答,● 标记最近 10 分钟内活跃的会话(仍在运行的会话不应恢复)。
summon recover <id> 接受 sessionId 或 cliSessionId(支持前缀),执行四阶段流程:提取对话轮次(不用 LLM)、用一次无工具的 claude -p --model sonnet 调用蒸馏、缓存到 <transcript>.handover.md、把简报加转录指针输出到 stdout。若 claude CLI 不在 PATH 或调用失败/超时(60 秒),会降级为经典的非蒸馏指针提示并返回 0;--no-distill 强制使用该回退(完全不调用 LLM)。
Rebind
当项目文件夹移动后,绑定旧 cwd 的会话在 Desktop UI 中无法重启。summon rebind <id> --cwd <newpath> 会备份、重写并校验包装(每个账号的副本),并桥接转录。--dry-run 可预览,--force 允许尚不存在的 --cwd(默认要求新路径已存在)。重绑后需重启 Desktop 或重新登录,侧边栏才会重新读取包装。
Doctor
summon doctor 扫描所有账号、所有时间的每一个包装,报告记录的 cwd 已在磁盘上不存在的会话,并为每条发现给出可直接执行的 summon rebind <id> --cwd <新位置> 命令,同时统计转录缺失与扫描发现的会话。有任何损坏时退出码为 10;--json 输出 claude-mods.summon.doctor/v1 信封供脚本使用。
使用方式
安装:把包装脚本符号链接或复制到 PATH 上的目录。
Linux/macOS/Git Bash:
ln -s ~/.claude/skills/summon/bin/summon ~/.local/bin/summon
Windows(PowerShell):
copy "$env:USERPROFILE\.claude\skills\summon\bin\summon.cmd" "$env:USERPROFILE\bin\summon.cmd"
之后可直接运行 summon pick、summon doctor 等,也可直接调用:
python ~/.claude/skills/summon/scripts/summon.py [flags]
推荐工作流(推送):在接近当前账号用量上限前运行 summon --to <下一账号>,会话被复制进目标账号目录;随后在当前账号登出、登录新账号,会话便出现在新账号的左侧会话选择器中。登出/登录本就是切换账号的自然步骤,提前执行可减少额外的操作摩擦。
常用标志:--to <account>(目标账号,支持 UUID 前缀或邮箱子串)、--from <account>(限定来源)、--days N(默认 3)、--all、--cwd <pattern>、--title <pattern>、--pick、--move、--dry-run、--list-accounts、--peek <id>、--flat、--select <picks>、--yes。
Recover 相关标志:--no-distill、--refresh、--model <m>(默认 sonnet)、--budget <n>(默认 120000)。
聊天内可视化选择器
在 Claude 聊天会话(Desktop 聊天、claude.ai)中调用时,终端选择器无法交互(stdin 非 TTY),此时默认使用卡片选择器。运行 summon widget --days 30(可加 --cwd/--title 过滤),它会把构建好的、自包含的卡片选择器 HTML 打印到 stdout,直接作为 widget_code 传给 show_widget 工具即可。构建器同时把同一 HTML 写到 %TEMP%\claude\summon-widget.html(可用 --out 覆盖)。不要手工拼装 widget。手工回退方案(仅在 summon widget 不可用时):把 pick --json --rich 输出注入 assets/picker-widget.html。
选择器会触发 sendPrompt 回调。每张卡片的 ↗ summon 与 ⟳ recover(以及页脚的“Recover/Summon selected”)应作为后台 chip 通过 spawn_task 启动,而非内联执行:每条会话一个 chip,chip 标题使用原始会话名,cwd 使用会话的项目根(去掉 \.claude\worktrees\<name> 后缀),提示词应让 chip 成为恢复后的会话本身,读取原转录、写出交接简报并在项目文件夹原地续接工作;chip 不得再生成新 chip,也不得把原 worktree 路径作为独立会话打开。
自动检测
目标账号:文件系统活动(任一会话 JSON 的 mtime)最新的账号。来源:默认除目标外的所有账号,可用 --from 限定。目标下的工作区目录:最近活跃的已存在工作区;若目标尚无工作区则新建 UUID。
适用场景与限制
适用:跨账号迁移进行中的会话、找回历史会话并生成交接、项目文件夹移动后修复会话、批量发现损坏的 cwd 绑定。
限制与注意事项:Desktop 在登录时读取会话列表且不监听文件系统,因此新会话必须登出/登录后才会出现;不要在其正写入会话 JSON 时运行(刚关闭目标会话时先退出 Desktop);远程会话无本地转录,无法转移;不要硬编码账号 UUID,先用 --list-accounts 再用邮箱子串;本工具面向进行中的工作,已归档会话应留在源账号归档视图;--move 仅用于确定不再需要从两个账号访问的会话;不要用整份转录粘贴来恢复(简报就是为了避免这一点);简报会缓存在 <transcript>.handover.md,仅当会话确有新进展时才用 --refresh 重新蒸馏。
各模式语义退出码:0 正常,2 用法/歧义 id,3 未找到会话或路径,10 doctor 发现损坏会话。
架构参考
完整文件系统布局、会话 schema、账号绑定与经校验的跨账号转移流程见 docs/references/claude-desktop-internals.md(claude-mods)。该文档为权威参考,本技能为操作手册。
暂未提供
本资料未提及收费、价格、平台支持范围、具体性能指标或除上述之外的额外功能。