# 功能模块清单

> 系统：对话交互式 AI 系统  
> 更新：2026-03-15  
> 完成率：**100%**（131/131）

---

## 侧边栏（需求 §3）

| 功能模块 | 状态 | 实现说明 |
|---------|------|---------|
| 新建对话按钮 | ✅ 已完成 | 侧边栏顶部按钮 + Cmd/Ctrl+K 快捷键 |
| 空会话自动清理 | ✅ 已完成 | 基于 messageCount 判断，未发送消息不保存 |
| 对话列表排序/分组/高亮 | ✅ 已完成 | ConversationList，按时间分组（今天/昨天/7天/30天/更早） |
| 会话列表滚动加载 | ✅ 已完成 | 无限滚动，距底部 <100px 触发加载更多 |
| 会话操作（重命名/删除） | ✅ 已完成 | 三点菜单 + 二次确认 |
| 会话置顶 | ✅ 已完成 | 前后端均支持，PATCH /api/conversations/{id}/pin |
| 会话搜索 | ✅ 已完成 | ConversationList 本地过滤，6+ 条会话时显示搜索框 |
| 会话切换（后台流式不中断） | ✅ 已完成 | BackgroundGenerationService 后台继续生成 |
| 消息加载（一次性全部） | ✅ 已完成 | getMessages API 获取全部消息 |
| 会话标题自动生成 | ✅ 已完成 | 后端异步调用模型生成，10 字以内摘要 |
| 个人图标 + 菜单 | ✅ 已完成 | UserProfile 组件，头像 + 设置入口 |

## 设置页（需求 §4）

| 功能模块 | 状态 | 实现说明 |
|---------|------|---------|
| 设置页弹窗 | ✅ 已完成 | SettingsModal，五个 Tab |
| 语言切换 | ✅ 已完成 | 简体中文 / 繁体中文 / English 三语切换 |
| 主题切换（浅色/深色/跟随系统） | ✅ 已完成 | GeneralSettings |
| 字体大小调节 | ✅ 已完成 | 14px–20px 滑块 |
| 发送快捷键切换 | ✅ 已完成 | Enter / Ctrl+Enter |
| 默认模型选择 | ✅ 已完成 | ChatSettings 下拉 |
| 默认思考模式 | ✅ 已完成 | 自动/思考/快速 |
| 上下文轮数 | ✅ 已完成 | 默认 10 |
| 系统提示词 | ✅ 已完成 | 多行文本，全局 System Prompt |
| 导出所有对话 | ✅ 已完成 | JSON 格式导出下载 |
| 清除所有对话 | ✅ 已完成 | 二次确认 + API |
| 允许用于模型改进 | ✅ 已完成 | DataSettings Toggle |
| 关于页（版本号/条款/隐私） | ✅ 已完成 | Account Tab 内展示 |

## 主内容区（需求 §5）

| 功能模块 | 状态 | 实现说明 |
|---------|------|---------|
| 左右分栏布局 + 侧边栏收起 | ✅ 已完成 | ChatLayout + 响应式适配 |
| 移动端响应式（768px 断点） | ✅ 已完成 | 侧边栏默认隐藏，汉堡菜单唤出 |
| URL 路由 | ✅ 已完成 | /chat/:conversationId，刷新保持会话 |
| 模型选择器 | ✅ 已完成 | ModelSelector 下拉菜单，能力标识图标 |
| 思考模式联动 | ✅ 已完成 | 切换到不支持思考的模型时自动回退 |
| 新会话欢迎页 | ✅ 已完成 | WelcomePage + 推荐问题卡片（后台配置） |
| 附件上传（+ 号按钮） | ✅ 已完成 | 文件选择 + 预览 + 移除 |
| 拖拽文件上传 | ✅ 已完成 | 拖拽 overlay + 自动上传 |
| 输入框（多行/自动伸缩） | ✅ 已完成 | ChatInput，1–8 行自动伸缩 |
| 粘贴图片 | ✅ 已完成 | 自动作为附件处理 |
| 输入长度限制 6000 字 | ✅ 已完成 | 前端字数限制 + 超出提示 |
| AI 回复期间输入禁用 | ✅ 已完成 | 输入框和附件上传均禁用 |
| 思考模式选择器 | ✅ 已完成 | ThinkingModeToggle 三档切换 |
| 发送 / 停止按钮 | ✅ 已完成 | 生成中变停止按钮（■） |

## 对话内容区（需求 §6）

| 功能模块 | 状态 | 实现说明 |
|---------|------|---------|
| 消息布局（用户/AI 气泡） | ✅ 已完成 | MessageBubble，右对齐用户 + 左对齐 AI |
| 图片附件内联缩略图 | ✅ 已完成 | MarkdownRenderer 图片提取 + 内联展示 |
| 全屏图片预览（Lightbox） | ✅ 已完成 | 缩放（0.5x–5x）+ 键盘导航 + 缩略图条 |
| 文档附件展示 | ✅ 已完成 | 文件图标 + 文件名 + 大小 |
| 流式输出（打字机效果） | ✅ 已完成 | SSE 逐段实时输出 |
| 自动滚动 + 手动上滚暂停 | ✅ 已完成 | 滚动检测 + 恢复逻辑 |
| 回到底部按钮 | ✅ 已完成 | 向上滚动超一屏时显示 ↓ 按钮 |
| 后台继续生成 | ✅ 已完成 | BackgroundGenerationService |
| 思考过程折叠展示 | ✅ 已完成 | ThinkingBlock，可折叠/展开 |
| 思考过程耗时显示 | ✅ 已完成 | ThinkingBlock 显示"思考过程 (X.Xs)"耗时，后端计算实际思考耗时 |
| 交错思考（think–tool–think） | ✅ 已完成 | 前端 thinkingSegments 多段渲染，thinking–tool–thinking 交错展示 |
| Markdown 渲染（GFM/表格/引用） | ✅ 已完成 | MarkdownRenderer + rehype-highlight |
| 代码块语法高亮 + 复制 | ✅ 已完成 | 每个代码块右上角一键复制 |
| Mermaid 流程图渲染 | ✅ 已完成 | MermaidBlock |
| KaTeX 数学公式渲染 | ✅ 已完成 | rehype-katex |
| 消息复制（Markdown 源码） | ✅ 已完成 | 复制成功图标变 ✓（2 秒） |
| 消息编辑（用户消息） | ✅ 已完成 | 编辑后删除后续消息并重新发送 |
| 消息编辑（AI 回复） | ✅ 已完成 | 仅修改显示，编辑后内容作为后续上下文 |
| 点赞 / 点踩 | ✅ 已完成 | 高亮切换 + API 上报 |
| 分享按钮 | ✅ 已完成 | ShareDialog 创建共享链接 |
| 重新生成（最后一条） | ✅ 已完成 | streamRegenerate 替换当前回复 |
| 停止生成 | ✅ 已完成 | AbortController 中断 |
| 截断回复不计入上下文 | ✅ 已完成 | 停止后不影响后续推理 |
| 错误内联展示 | ✅ 已完成 | 红色错误气泡 |
| SSE 网络异常自动重试 | ✅ 已完成 | 3 次指数退避，流开始后不重试 |
| 点踩反馈原因弹窗 | ✅ 已完成 | DislikeReasonDialog 多选标签 + 自由输入 |
| 分享功能（生成链接/复制） | ✅ 已完成 | ShareDialog + API |
| 共享对话页面（只读） | ✅ 已完成 | SharePage.tsx，/share/{token} 路由 |
| Token 用量展示 | ✅ 已完成 | 150+320=470 tokens 格式 |
| 工具调用展示（ToolCallBlock） | ✅ 已完成 | ToolCallBadge + TerminalBlock |
| 多轮工具调用 | ✅ 已完成 | 每次调用独立展示，按顺序排列 |
| 图像生成内联展示 | ✅ 已完成 | ProgressiveImage 骨架屏 + blur-to-clear 动画 + Lightbox 预览 |
| 图像编辑（Inpainting）前端 | ✅ 已完成 | ImageEditDialog 画笔涂抹掩码 + 提示词编辑 + Lightbox 集成 |
| 移动端长按消息操作 | ✅ 已完成 | useLongPress Hook + ActionSheet 菜单 |

## API 网关（需求 §7）

| 功能模块 | 状态 | 实现说明 |
|---------|------|---------|
| OpenAI Chat Completions API | ✅ 已完成 | POST /v1/chat/completions |
| OpenAI Response API | ✅ 已完成 | POST /v1/responses |
| Anthropic Messages API | ✅ 已完成 | POST /v1/messages |
| Google Gemini API | ✅ 已完成 | POST /v1/gemini 端点，委派至 ChatCompletionsAsync |
| 图像生成 API | ✅ 已完成 | POST /v1/images/generations |
| 图像编辑 API | ✅ 已完成 | POST /v1/images/edits |
| 33 个模型服务商适配 | ✅ 已完成 | NewLife.AI 基础库内置 |
| API 网关路由（模型自动匹配） | ✅ 已完成 | GatewayService 路由 + 协议转换 |
| AppKey 创建/启用/禁用/删除 | ✅ 已完成 | AppKeyApiController + 实体 |
| AppKey 过期管理 | ✅ 已完成 | ExpireTime 字段 |
| 用量按 AppKey 维度统计 | ✅ 已完成 | UsageRecord.AppKeyId |
| 上游限流重试（429） | ✅ 已完成 | 指数退避 + 随机抖动，最多 5 次 |

## 函数调用与 MCP（需求 §8–9）

| 功能模块 | 状态 | 实现说明 |
|---------|------|---------|
| 函数调用（Function Calling） | ✅ 已完成 | ToolCallService 编排 + SSE 事件 |
| SSE 事件扩展（tool_call_*） | ✅ 已完成 | start/done/error 三种事件 |
| 前端工具调用实时展示 | ✅ 已完成 | ToolCallBadge + TerminalBlock |
| 原生 .NET 工具注册 | ✅ 已完成 | ToolDescriptionAttribute + ToolSchemaBuilder + ToolRegistry + NativeToolChatClient |
| MCP Host 架构 | ✅ 已完成 | ChatAI 作为 Host，McpClientService 通信 |
| MCP Server 管理 | ✅ 已完成 | McpApiController + McpSettings 前端 |
| 工具发现（Tool Discovery） | ✅ 已完成 | discoverTools API |
| 会话级工具注入 | ✅ 已完成 | 自动注入已启用工具到模型上下文 |

## 使用量统计（需求 §10）

| 功能模块 | 状态 | 实现说明 |
|---------|------|---------|
| 用户维度统计（会话/消息/Token） | ✅ 已完成 | UsageService + UsageRecord 实体 |
| AppKey 维度统计 | ✅ 已完成 | UsageRecord.AppKeyId 双维度 |
| 按日汇总 | ✅ 已完成 | UsageApiController.GetDailyUsage |
| 使用统计页面（前端） | ✅ 已完成 | UsageSettings，汇总卡片 + 模型分布 + 日用量 |

## 非功能需求（需求 §11）

| 功能模块 | 状态 | 实现说明 |
|---------|------|---------|
| 首屏骨架屏 | ✅ 已完成 | AppSkeleton 组件 |
| 国际化（i18n） | ✅ 已完成 | 简体中文 + 繁体中文 + 英文三语 |
| 健康检查 | ✅ 已完成 | GET /api/health（需求未定义，额外实现） |
| 技能栏（SkillBar） | ✅ 已完成 | MCP/搜索/图像/数据分析（需求未定义，额外实现） |

## 技能管理（需求 →[技能管理需求.md](技能管理需求.md)）

| 功能模块 | 状态 | 实现说明 |
|---------|------|---------|
| 技能数据模型（Skill 实体） | ✅ 已完成 | Code/Name/Icon/Category/Content/Sort/Enable/IsSystem |
| 内置技能（6 个系统预置） | ✅ 已完成 | general/coder/writer/translator/analyst/researcher |
| SkillBar 动态数据源 | ✅ 已完成 | 从后端获取最近使用 + 系统技能 |
| 输入框 `@` 技能补全 | ✅ 已完成 | 输入 @ 弹出候选列表，选择后追加 @技能名到输入框 |
| 技能引用展开（`@技能名`） | ✅ 已完成 | 构建 Prompt 时自动递归展开，最多 3 层 |
| 循环引用检测 | ✅ 已完成 | A→B→A 自动中断并记录警告 |
| 技能管理页（设置 Tab） | ✅ 已完成 | Model.xml Content 字段加 ItemType=markdown，魔方管理页启用 Markdown 编辑器 |
| System Prompt 构建顺序 | ✅ 已完成 | 系统技能 → 用户 Prompt → 会话技能 |
| 用户技能使用记录 | ✅ 已完成 | SkillUseRecord，SkillBar 按最近使用动态排列 |

## AI 编排框架（需求 →[AI编排框架需求.md](AI编排框架需求.md)）

| 功能模块 | 状态 | 实现说明 |
|---------|------|---------|
| ISemanticMemory（语义记忆） | ✅ 已完成 | SaveAsync / GetAsync / SearchAsync / RemoveAsync |
| InMemorySemanticMemory | ✅ 已完成 | 余弦相似度内存实现 |
| IVectorStore（向量存储） | ✅ 已完成 | UpsertAsync / GetAsync / SearchAsync / DeleteAsync |
| InMemoryVectorStore | ✅ 已完成 | 余弦距离 Top-K |
| IChatFilter 拦截器 | ✅ 已完成 | OnChatAsync，有 next delegate |
| IFunctionInvocationFilter | ✅ 已完成 | OnFunctionInvocationAsync，有 next delegate |
| FilteredChatClient | ✅ 已完成 | 链式执行多个 IChatFilter |
| IPlan / IPlanner（规划器） | ✅ 已完成 | FunctionCallingPlanner |
| AgentMessage 协议类型 | ✅ 已完成 | TextMessage/ToolCallMessage/ToolCallResultMessage/StopMessage |
| IAgent / ConversableAgent | ✅ 已完成 | HandleAsync，支持工具调用循环 |
| IGroupChatSelector / GroupChat | ✅ 已完成 | RoundRobinSelector + GroupChat.RunAsync |
| useChat Hook（前端） | ✅ 已完成 | Web/src/hooks/useChat.ts |
| useCompletion Hook（前端） | ✅ 已完成 | Web/src/hooks/useCompletion.ts |

## 自学习系统（需求 →[自学习系统需求.md](自学习系统需求.md)）

| 功能模块 | 状态 | 实现说明 |
|---------|------|---------|
| UserMemory 实体 | ✅ 已完成 | 含 Category/Title/Content/Score/Vector/AccessCount |
| UserProfile 实体 | ✅ 已完成 | BusinessScore/TechScore/InteractionStyle/Tags |
| UserTag 实体 | ✅ 已完成 | Name/Category/Weight/Source/Evidence |
| LearningLog 实体 | ✅ 已完成 | 记录每次分析的输入/输出/耗时/Token 消耗 |
| MemoryService | ✅ 已完成 | CRUD + BuildContextForUser 注入 System Prompt |
| ConversationAnalysisService | ✅ 已完成 | AI 调用提取 ExtractionResult + 写入 LearningLog |
| UserProfileService | ✅ 已完成 | 标签聚合 + 画像刷新 |
| LearningFilter | ✅ 已完成 | IChatFilter 实现，对话完成后异步触发分析 |
| 学习配置（UserSetting 扩展） | ✅ 已完成 | EnableLearning/LearningModel/MemoryInjectNum |
| LearningSettings.tsx（前端） | ✅ 已完成 | 记忆管理 + 用户画像 + 标签三 Tab |
| 知识分类体系 | ✅ 已完成 | Category 字段两级分类，存入 UserMemory |

---

## 汇总统计

| 模块 | 功能数 | 已完成 |
|------|--------|--------|
| 侧边栏 | 11 | 11 |
| 设置页 | 13 | 13 |
| 主内容区 | 14 | 14 |
| 对话内容区 | 32 | 32 |
| API 网关 | 12 | 12 |
| 函数调用与 MCP | 8 | 8 |
| 使用量统计 | 4 | 4 |
| 非功能需求 | 4 | 4 |
| 技能管理 | 9 | 9 |
| AI 编排框架 | 13 | 13 |
| 自学习系统 | 11 | 11 |
| **合计** | **131** | **131** |
