Skip to content

[Bug] 群聊 target picker:点击「选择工作区」不进入下一步,只能 cancel #656

Description

@yaomintang

环境

  • 版本:v1.8.4(release tag,2026-05-12,通过 install-release.sh 一键安装)
  • OS:macOS Darwin 25.5.0 (arm64)
  • codex CLI:codex-cli 0.130.0
  • 飞书 App:PersonalAgent,长连接订阅模式
  • 同一台 daemon、同一 bot,DM 路径正常

现象

群聊@bot /list 后弹出 target picker。点击卡片里的「选择工作区」按钮不会触发任何后续动作——卡片不更新,daemon 不发出 select_session / confirm,也没有错误日志。连续点 3 次仍无响应,只能 cancel

同一台 daemon、同一 bot,在私聊里走同样流程会顺序触发:

select_workspace → select_session → confirm → block.committed

群聊路径只触发到 select_workspace 就停了。

复现步骤

  1. 完成 WebSetup,把 bot 加入一个飞书群
  2. 群里 @bot 发任意文本,确认 bot 已收到事件
  3. 群里发 /list
  4. picker 卡片出现,点击其中任一「选择工作区」按钮
  5. 卡片无任何视觉/状态变化

期望

群聊 picker 与私聊一致:点击「选择工作区」后立即进入 workspace-selected 状态,进而引导新建/继续会话。

日志证据

~/.local/share/codex-remote/logs/codex-remote-relayd.log

群聊路径(失败)

18:54:49  surface=feishu:唐遥民的Codex:chat:oc_700344cec5...   kind=surface.message.text     "@唐遥民的Codex 我在群聊里…"
18:54:49  surface=feishu:唐遥民的Codex:chat:oc_700344cec5...   kind=notice
18:55:02  surface=feishu:唐遥民的Codex:chat:oc_700344cec5...   kind=surface.menu.list_instances  "/list"
18:55:02  surface=feishu:唐遥民的Codex:chat:oc_700344cec5...   kind=target.picker
18:55:24  surface=feishu:唐遥民的Codex:chat:oc_700344cec5...   kind=surface.target_picker.select_workspace  event=2409d13f...   ← 1st click
18:55:29  surface=feishu:唐遥民的Codex:chat:oc_700344cec5...   kind=surface.target_picker.select_workspace  event=180f6246...   ← 2nd click
18:55:37  surface=feishu:唐遥民的Codex:chat:oc_700344cec5...   kind=surface.target_picker.select_workspace  event=cca37c7d...   ← 3rd click
18:55:39  surface=feishu:唐遥民的Codex:chat:oc_700344cec5...   kind=surface.target_picker.cancel             ← 放弃

select_workspace 触发了 3 次(不同 event_id,同一 message_id),但没有任何后续 select_session / confirm / state 变化事件。

私聊路径(正常,作为对照)

18:43:20  surface=feishu:唐遥民的Codex:user:ou_6c36b5bc...   kind=surface.target_picker.select_workspace
18:43:31  surface=feishu:唐遥民的Codex:user:ou_6c36b5bc...   kind=surface.target_picker.select_workspace   ← 重复点击
18:43:43  surface=feishu:唐遥民的Codex:user:ou_6c36b5bc...   kind=surface.target_picker.cancel
18:43:57  surface=feishu:唐遥民的Codex:user:ou_6c36b5bc...   kind=target.picker                            ← 再次打开
18:44:09  surface=feishu:唐遥民的Codex:user:ou_6c36b5bc...   kind=surface.target_picker.select_workspace
18:44:22  surface=feishu:唐遥民的Codex:user:ou_6c36b5bc...   kind=surface.target_picker.select_session     ← 进入下一步 ✓
18:44:26  surface=feishu:唐遥民的Codex:user:ou_6c36b5bc...   kind=surface.target_picker.confirm            ← 确认 ✓
18:46:04  surface=feishu:唐遥民的Codex:user:ou_6c36b5bc...   kind=block.committed

私聊路径会 select_workspace → select_session → confirm;群聊路径只到 select_workspace 就再也走不下去。

猜测

  • 两条路径都触发了 surface.target_picker.select_workspace action,但 DM/Group 的 surface 标识不同(user:ou_... vs chat:oc_...
  • 怀疑 picker action handler 把"选中工作区"的状态记到了和 surface key 强绑定的位置,而群聊 surface 的 key 在写入或读取时不匹配,于是 selection 没"落下来",UI 也不更新
  • 可能跟群聊的 actor-vs-chat-vs-thread 分层有关(actor 是 user open_id,chat 是 group open_id)

备注

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:daemonDaemon server, admin API, and runtime controlarea:feishuFeishu/Lark integration, gateway, projector, or previewbugSomething isn't workingprocessingClaimed for active issue handling in the current turn

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions