feat(adopt): tmux adopt 模式下 bridge 初始化修复 + 文档评论重复回复修复 - #293
Conversation
|
整体方向赞同 👍 core 的 adopt bridge 三修(PID 校验放宽 / re-fork 改走 🔴 阻塞:单测红 + 推翻了一条写在测试里的设计决定
本 PR 把
风险:该函数有两个调用点—— 建议二选一:
无论哪种,suite 得绿。 🟡 文档评论现在会在话题里多发一张卡 —— 建议做成 bot 级配置
建议把它做成 bot 级开关(dashboard + bots.json 两套配置面),并默认关(保持现状只回评论),需要话题镜像的人再开。可直接参照 #287 的 🟡 ttadk 网关 env 路由:① 没写进描述 ② 只 gate 了 ttadk,aiden/cjadk 可能漏这块( 两个问题:
⚪ Minor
做得好的几处:3c real-pid 解析是 sessionId 兜底的对症核心修复;doc-comment 去重在「二次 |
|
经在当前 master 上逐条复核,这里用一个干净实现的新 PR #608 取代本 PR 并关闭本 PR。原因:
#608 规避了本 PR 被 review 指出的所有点(歧义返回、文档评论双通道噪声、硬编码 ttadk env),并补了本 PR 缺失的测试(真实进程冒烟 + init 透传单测,均有判别力),回归面 1676 tests 全绿。感谢 @wln-na 的定位与原始修复思路 🙏 |
…-pid fix(adopt): tmux 接管场景修复真实 CLI PID 解析 + worker 重启保住 bridge(替代 #293)
修复内容
1. tmux adopt bridge sessionId 回退失败(核心修复)
tmux adopt 发现 pane 时,
readClaudeSessionMeta(panePid)可能拿到的是 wrapper 进程(如 ttadk)的 PID 而非真正 Claude 进程的 PID,导致~/.claude/sessions/<pid>.json找不到 →sessionId = undefined→bridgeJsonlPath = undefined→ bridge 不初始化 → CLI 回复无法回传飞书。修复:将 herdr 专属的 cwd fallback(
findUniqueClaudeSessionByCwd)扩展到所有 claude-code adopt,不限adopted.source === 'herdr'。2. adopt session 重启后 PID 校验误杀
重启后 adopt session 的 PID 不匹配旧进程 → 被误判为 'missing' 并关闭。
修复:adopt session 跳过 PID 匹配校验,保留 session 活跃状态。
3. adopt session re-fork 丢失 bridge 语义
adopt session 的 worker 崩溃后 re-fork 走了普通 forkWorker 路径,丢失 adopt 配置。
修复:re-fork 路径改用
forkAdoptWorker,保留 bridge 初始化。4. persistent-backend 探测误杀 adopt session
adopt session 的 tmux pane 不遵循
bmx-*命名,被探测逻辑误判为孤立并杀掉。修复:adopt session 跳过 bmx-* 探测。
5. 文档评论重复回复
callTenant误加responseType: 'text'导致 SDK 返回原始字符串而非对象 → 自触发过滤失效 → bot 重复回复。修复:移除
responseType: 'text',恢复 SDK 正常返回对象。附带改进
sendText+sendSpecialKeys('Enter')路径加[adopt]前缀诊断日志backend is null兜底日志deliverFinalOutput的 doc-comment marker 检查,避免 botmux send 已发评论后重复发送