问题描述
用户需要精确指定特定专家 Agent 处理任务,而非完全依赖自动路由。当前只能通过模式切换按钮选择,缺乏在输入中直接指定的便捷方式。
解决方案
功能范围
包含:
@ 触发 Agent 选择弹窗(仅显示可提及的专家代理)
- 支持消息头部/尾部位置插入
@灰灰 / @时巧 标记
- 支持多 Agent 指定(如
@灰灰 @时巧 查笔记并安排会议)
- 键盘上下键选择 + Enter 确认
- 鼠标点击选择
- 选择后 @ 标记显示在输入框
不包含:
- 快捷键(如
@h 快速选择)
- 智能推荐
- 历史记录
- 中间位置插入 @
技术方案
数据来源
从 GET /api/v1/ai/parrots 动态加载 Agent 列表,过滤规则:
- 排除:
AUTO, AMAZING, GEEK, EVOLUTION, GENERAL
- 保留:配置文件中声明了
self_description 的专家代理
组件结构
ChatInput
└── AgentMentionPopover
├── useParrotsList() hook
├── Popover (Radix)
└── AgentList
交互流程
- 用户输入
@
- 检测光标位置(头部/尾部?)
- [是] → 弹出 Popover,显示可用 Agent 列表
- [否] → 正常输入 @
- 用户选择 Agent → 插入
@灰灰 或 @时巧
- 关闭 Popover,焦点回输入框
多 Agent 解析
function parseMentionedAgents(message: string): {
agents: string[];
cleanMessage: string;
}
文件变更
| 文件 |
操作 |
说明 |
web/src/hooks/useParrotsList.ts |
新增 |
调用 ListParrots API |
web/src/components/AIChat/ChatInput.tsx |
修改 |
集成 @ 检测 + Popover |
web/src/components/AIChat/AgentMentionPopover.tsx |
新增 |
Agent 选择弹窗组件 |
web/src/utils/agentMention.ts |
新增 |
解析/位置判断工具函数 |
web/src/locales/zh-Hans.json |
修改 |
新增翻译 |
web/src/locales/en.json |
修改 |
新增翻译 |
复杂度
- 工作量: 0.7 人周
- 风险: 低 - 仅涉及前端组件扩展
验收标准
依赖项
调研时间: 2026-02-17 | 版本: v1.0
问题描述
用户需要精确指定特定专家 Agent 处理任务,而非完全依赖自动路由。当前只能通过模式切换按钮选择,缺乏在输入中直接指定的便捷方式。
解决方案
功能范围
包含:
@触发 Agent 选择弹窗(仅显示可提及的专家代理)@灰灰/@时巧标记@灰灰 @时巧 查笔记并安排会议)不包含:
@h快速选择)技术方案
数据来源
从
GET /api/v1/ai/parrots动态加载 Agent 列表,过滤规则:AUTO,AMAZING,GEEK,EVOLUTION,GENERALself_description的专家代理组件结构
交互流程
@@灰灰或@时巧多 Agent 解析
文件变更
web/src/hooks/useParrotsList.tsweb/src/components/AIChat/ChatInput.tsxweb/src/components/AIChat/AgentMentionPopover.tsxweb/src/utils/agentMention.tsweb/src/locales/zh-Hans.jsonweb/src/locales/en.json复杂度
验收标准
make check-all通过@灰灰) 和英文名 (@memo) 匹配依赖项
ListParrotsAPI 已就绪 (GET /api/v1/ai/parrots)调研时间: 2026-02-17 | 版本: v1.0