Skip to content

fix(herdr): 修复多会话接管与后端复用#489

Open
Phoobobo wants to merge 1 commit into
deepcoldy:masterfrom
Phoobobo:fix/herdr-adopt-session-discovery
Open

fix(herdr): 修复多会话接管与后端复用#489
Phoobobo wants to merge 1 commit into
deepcoldy:masterfrom
Phoobobo:fix/herdr-adopt-session-discovery

Conversation

@Phoobobo

Copy link
Copy Markdown
Contributor

改了什么

  • /adopt 遍历所有运行中的 Herdr session,并继续按当前 bot 的 cliId 过滤,避免 Pi bot 混入 Codex/TRAE 候选。
  • 对 Herdr agent list 尚未识别的 pane,补充使用 pane list + pane process-info 识别前台 CLI;覆盖 TraeX hook 尚未上报、状态仍为 unknown 的场景。
  • /adopt 二次校验同步支持 process-info,校验 pane、CLI 与 PID,避免候选出现后点击仍报已退出。
  • Herdr 持久化后端优先复用当前 HERDR_SESSION,其次复用 default/其他运行中 session;仅在没有可复用 session 时创建 bmx-*,并向飞书提示新 session 名。
  • 共享 Herdr session 中使用确定性的 botmux-<id> agent 名;关闭会话时只关闭对应 pane,不停止用户整个 Herdr session。
  • 接管卡候选改为显示后端:TRAE · herdr · collie:w1:p1 · 1h36m,不再展示容易误解的 cwd basename。

为什么

原实现有三个问题:

  1. 多个 Herdr session 下,/adopt 只依赖 agent list;TraeX 在 lifecycle hook 尚未上报时会处于 unknown,因此完全不进入候选。
  2. Herdr 作为持久化偏好时,每个 Botmux 会话都会创建独立 bmx-* session,即使用户已有正在运行的 Herdr workspace。
  3. 接管卡展示的是项目目录名(例如 botmux),用户无法直接确认后端类型。

影响面

  • 平台:Herdr CLI 调用使用参数数组,无 shell 路径拼接;macOS Herdr 0.7.4 已实机验证,Linux 沿用同一 CLI 协议。
  • CLI:发现流程仍按 bot 的 cliId 过滤;TraeX 增加 process-info fallback,Codex/Claude/CoCo 可复用同一 PID 元数据路径;其他 CLI 原有 agent-list 路径不变。
  • 后端:Herdr 行为变更;tmux/zellij 仅补充 selector 的 reattach 元数据,无创建/关闭语义变化。
  • 会话类型:覆盖 /adopt、新建、resume、daemon 重启 reattach。读隔离/写沙箱会话继续使用 bot-owned Herdr session,避免隔离恢复逻辑误停用户共享 session。

实际验证

  • pnpm build:通过。
  • pnpm vitest run test/herdr-backend.test.ts test/herdr-discovery.test.ts test/herdr-session-discovery.test.ts test/tmux-reattach-backend.test.ts test/command-handler.test.ts test/card-builder.test.ts:6 files / 368 tests 全通过。
  • pnpm test:8356 passed / 6 skipped;3 个与本改动无关的既有失败:
    • dashboard-ipc.test.ts:中英文错误文案断言不一致。
    • dashboard-monitoring-ui.test.ts:既有 CSS pointer-events 断言失败。
    • sandbox.test.ts:macOS symlink 目录清理失败。
  • macOS + Herdr 0.7.4 实机:
    • collie:w1:p1traex --resume 前台进程成功发现 TraeX 候选。
    • 卡片候选实测为 TRAE · herdr · collie:w1:p1 · 1h36m
    • 当前 checkout 已部署到 live daemon,/adopt 手动验证通过候选发现链路。

@Phoobobo
Phoobobo requested a review from deepcoldy as a code owner July 16, 2026 06:49
@Phoobobo
Phoobobo force-pushed the fix/herdr-adopt-session-discovery branch 6 times, most recently from 268f022 to 91d859b Compare July 18, 2026 18:58
@Phoobobo
Phoobobo force-pushed the fix/herdr-adopt-session-discovery branch from 91d859b to faa1c6c Compare July 18, 2026 20:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant