Skip to content

feat(adopt): 明确普通终端会话限制并完善空状态引导 #524

Description

@DeepColds

问题描述

用户在飞书话题中执行 /adopt,希望接入在普通 Terminal/iTerm 里直接启动的 Claude Code 会话,但“接管运行中的会话”和“恢复历史会话”两个下拉框均为空。

当前实现中,实时 adopt 只扫描由 tmux / herdr / zellij 托管的 pane。普通终端 PTY 中运行的 CLI 没有可供 Botmux 稳定旁路观察和注入输入的 pane,因此不会出现在第一栏。这个限制在卡片上没有说明,用户容易理解为 /adopt 可以发现任意本机运行中的 CLI。

第二栏虽然可以从 Claude 的磁盘会话记录中以 --resume 重建,但在以下场景也可能为空:

  • Bot 开启读隔离,使用独立的 CLAUDE_CONFIG_DIR
  • 普通终端与 Botmux 不在同一机器或同一系统用户下
  • 会话记录不在当前 Claude adapter 扫描的数据目录内

期望改进

  1. /adopt 卡片第一栏明确标注:实时接管仅支持 tmux / herdr / zellij,普通 Terminal/iTerm 活进程暂不支持。
  2. 两栏均无候选时,不展示无解释的空选择框,改为显示诊断提示和下一步操作:
    • 若需实时接管,请在 tmux/herdr/zellij 中启动 CLI;
    • 若需导入普通终端历史对话,请先退出原 CLI,再通过 --resume 导入,避免两个进程并发写同一会话;
    • 提示检查 readIsolationCLAUDE_CONFIG_DIR、运行机器和系统用户。
  3. 可选:提供“普通终端历史会话导入”的引导流程,并明确这不是对原活进程的 attach。
  4. 长期可评估普通 PTY 活进程接管的可行性;若平台层面不可行,也建议在文档和 UI 中明确限制。

影响范围

  • /adopt 飞书选择卡片与空状态提示
  • Claude Code 等支持磁盘 resume 的 CLI
  • tmux / herdr / zellij 实时 adopt 行为本身无需改变
  • 读隔离、跨机器和不同用户环境下的诊断文案

当前行为依据

README 当前说明 /adopt 用于接入 tmux 中运行的 CLI;源码的 live discovery 也只合并 tmux/herdr 与 zellij 的发现结果。磁盘历史会话则通过 adapter 的 listResumableSessions 单独扫描并用 --resume 重建。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions