makecindy / makecindy/cindy

bug: 手机端无法作答 AskUserQuestion 选择卡,会话被静默阻塞、必须开电脑救场

Open
#4,489 1 comment 0 reactions 0 assignees View on GitHub
bug
Dominant language
TypeScript
Stars
2.7k
Forks
395
Avg merge
21h 48m
Merged PRs (30d)
776

Description

### 环境 / Environment

- 客户端:Cindy **手机端**,远程控制一台被控电脑上的 Claude Code 会话
- 被控端引擎:Claude Code `2.1.259`(`--resume` 恢复的长会话)
- 相关:#2920(移动端体验与多端任务连续性)

### 现象 / Problem

被控电脑上的 Claude Code 会话调用内置工具 `AskUserQuestion` 时,会弹出一张带 2–4 个选项的**选择卡**。

手机端**无法作答**这张卡;而它是**阻塞式**的——不点选,会话就停在那里等。
于是每一次「要不要这么做」,代价都是:**开电脑 → 远程连回来 → 找到那张卡 → 点一下**。
用手机推进任务时,这等于手机端根本推不动。

### 实测证据 / Evidence

在被控项目自己的会话转录(`~/.claude/projects/<项目>/*.jsonl`)里统计近 3 个会话:

| 工具 | 调用次数 |
|---|---:|
| `AskUserQuestion` | **27**(单个会话最多 **17**) |
| `ExitPlanMode` | 1 |
| `EnterPlanMode` | 1 |

即「手机上点不了的那个询问」主体就是 `AskUserQuestion`,不是计划审批。

典型提问(**每条都是带选项的卡**,不是普通文本问题):

- 「8842900 的 12 张图清不掉,怎么走?」 → 3 个选项
- 「后台 4 件:8824328 已公开……删哪些?」 → 3 个选项
- 「`03_rear` 的亮带根因是……往哪修?」 → 4 个选项

### 期望 / Expected

下面任一种即可解决,第二种成本更低:

1. **能作答**:手机端把这张卡渲染成可点选的交互,选择回传给会话;
2. **不阻塞**:手机端若无法作答,给一个明确出口(例如「转为文本提问」或「稍后在被控端作答」),
不要静默把会话挂住——现在的问题是**连「这里需要你」都看不出来**。

### 当前的规避(仅单项目,且是降级)/ Workaround

被控项目已在 `.claude/settings.json` 里:

```json
{ "permissions": { "deny": ["AskUserQuestion"] } }
```

并加了规则要求模型改用**正文纯文本提问**。这能挡住卡,但**损失了卡片形态**(多选、推荐项标注、
选项里的补充信息)——是降级,不是解法。根治仍在客户端。

### 为什么值得优先 / Why it matters

移动端 + 多端任务连续性是 Cindy 的核心卖点(见 #2920)。而这个工具的阻塞性和「手机端不可答」
叠加后,会把用户从手机端**直接逼回远程桌面**——恰好抵消了那个卖点。

Contributor guide

Open the contributing guide

Research direction

Start by locating the mobile client path that receives Claude Code AskUserQuestion events, then compare it with handling for ordinary text and the mentioned ExitPlanMode flow. The workaround in .claude/settings.json shows the current fallback. Done means the choice card can be answered on mobile, or an explicit non-blocking fallback tells the user how to continue.

Written by the indexing model from the issue text.

Assessment

Tech stack
react-native, typescript
Domain
mobile-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.