-
Notifications
You must be signed in to change notification settings - Fork 438
Open
Description
问题描述
在飞书桥接中,AskUserQuestion 工具的渲染方式与 PC 端不一致。飞书端将其当作普通的权限请求卡片处理,直接展示原始 JSON 和 Allow/Allow Session/Deny 按钮,而非解析 question 结构并渲染为交互式表单。
复现步骤
- 通过飞书与 CodePilot 对话
- 触发 Claude 调用
AskUserQuestion工具(例如询问用户选择城市) - 观察飞书中的卡片渲染
实际表现(飞书端)
显示为通用的 Permission Required 卡片:
- 标题为 "Permission Required"
- 内容为
AskUserQuestion的原始 JSON 参数(questions、header、options等) - 底部按钮为 Allow / Allow Session / Deny
期望表现(PC 端)
应解析 AskUserQuestion 的结构化参数,渲染为交互式表单:
- 显示
header(如"城市选择"标签) - 显示
question文本(如"你想查询哪个城市的天气?") - 将
options渲染为可选按钮(如 北京 / 上海 / Other) - 底部为 Submit 按钮
根因分析
permission-broker.ts 中 forwardPermissionRequest() 对所有工具统一格式化为 HTML 权限卡片,未对 AskUserQuestion 做特殊处理。outbound.ts 中构建飞书交互卡片时也只处理了通用的权限按钮逻辑,没有识别并解析 AskUserQuestion 的 question/options 结构。
建议修复方向:
在权限请求转发流程中,检测 toolName === 'AskUserQuestion',解析其 questions 参数,为飞书构建专用的交互卡片(使用飞书卡片的 button 组件渲染选项,使用 markdown 渲染问题文本)。
环境
- CodePilot 版本:v0.36.0
- 平台:飞书桥接
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
