feat(ui): 实现 @ 文件提及自动补全功能

- Core: 添加 file-index 模块,使用 ripgrep 索引文件,fuzzysort 模糊搜索
- Server: 添加 /api/files/search 端点,支持文件模糊搜索
- Server: WebSocket 消息处理中将 @filepath 转换为 ./filepath 格式
- UI: 新增 FileMenu 组件,显示文件搜索结果列表
- UI: 新增 FileMentionTag 组件,高亮显示文件提及
- UI: 新增 useFileMention hook,管理文件提及状态
- UI: ChatInput 集成 @ 触发的文件自动补全
- UI: ChatMessage 用户消息中高亮显示 @filepath
This commit is contained in:
2025-12-15 16:32:59 +08:00
parent 5b7b0ff1e4
commit 865e0906b9
15 changed files with 1137 additions and 53 deletions
+5 -2
View File
@@ -105,13 +105,16 @@ export async function handleWebSocketMessage(
switch (message.type) {
case 'message': {
// 用户发送消息
const content = message.payload?.content || '';
let content = message.payload?.content || '';
// 将 @filepath 转换为 ./filepath 格式(方便 AI 识别为文件路径)
content = content.replace(/@([\w./-]+)/g, './$1');
// 广播确认收到消息
broadcastToSession(sessionId, {
type: 'message_received',
sessionId,
payload: { content },
payload: { content: message.payload?.content || '' }, // 广播原始内容
});
// 调用 Agent 处理消息(异步,不阻塞)