Files

29 KiB
Raw Permalink Blame History

GoChat AI 功能支持评估与开发路线图

Copilot 配置中心的新命名、参数和存储定义以 docs/plans/2026-07-12-copilot-configuration.md 为准:Copilot 始终启用, 不提供总开关,不定义 Captain/Copilot 环境变量或 YAML Provider 配置;Provider、 Base URL、API Key 与模型仅通过页面写入数据库。API Key 明文存储,API/UI 仅返回配置状态和掩码。

调研日期:2026-07-08(初版)/ 2026-07-12 更新 基于代码库:2026-07-12 Copilot 配置中心实现状态 对标项目:Chatwoot Captain AI (enterprise edition) 注:2026-07-12 状态更新 — 数据库驱动的运行时配置链路使用协议原生 OpenAIProvider/AnthropicProviderEinoProvider 适配器仍可供显式构造的 Eino ChatModel/Embedder 使用,但不承载 Copilot 配置中心的 Provider 热切换。Function Calling、 Help Center pgvector 语义搜索和 AutoReplyRule 消息流程均已接入。


目录

  1. 评估摘要
  2. 当前 AI 基础设施盘点
  3. Chatwoot AI 功能对照表
  4. 关键缺口分析
  5. 开发路线图
  6. 风险评估与依赖
  7. 附录:关键文件索引

1. 评估摘要

GoChat 已搭建一套对标 Chatwoot Captain AI 的完整基础设施,覆盖 LLM Provider 抽象层、 数据库驱动的 Copilot 配置中心、数据模型、Service、Handler/路由、前端 UI 和后台 Worker。 Provider 配置与运行链路已闭环,保存后无需重启即可生效。

核心结论:

  • 已闭环Copilot 配置中心、OpenAI/Anthropic/OpenAI-compatible、Chat/Embedding 分离、 运行时热切换、账户功能模型、回复行为、连接测试、Embedding 重建和无密钥审计。
  • 可用功能:Copilot 对话、回复建议、摘要、改写、标签/跟进、RAG、帮助中心语义搜索、 自动回复规则、Captain Conversation、AgentBot + Captain、Function Calling、文档同步和 AI 翻译。
  • 后续重点:Token 用量/配额、调用级可观测性与质量评估、动态模型发现、多 Provider fallback、 独立语音转写 Provider。

整体评估:基础设施成熟度高,核心功能已进入可配置、可验证、可热更新状态;后续工作以运营、 成本、质量与容灾能力为主。


2. 当前 AI 基础设施盘点

2.1 LLM Provider 层

文件backend/internal/llm/provider.goopenai_provider.goanthropic_provider.goprovider_manager.go

  • Provider 接口定义三个核心能力:
    • ChatCompletion — 同步对话补全
    • CreateEmbedding — 文本向量化
    • ChatCompletionStream — SSE 流式对话补全(callback 模式)
  • OpenAIProvider 实现完整:
    • 支持自定义 baseURL(兼容国内厂商如火山引擎/豆包/通义千问)
    • SSE 流式解析(自研 sseReader + sseLineScanner,处理 [DONE] 信号)
    • 指数退避重试(1s→2s→4s,最多 3 次,429/5xx 可重试)
    • API 错误结构化解析(APIError 类型)
  • 数据结构:ChatRequest/ChatResponse/ChatMessage/EmbeddingRequest/EmbeddingResponse/ StreamChunk/ToolDefinition/ToolFunction
  • ProviderManager 原子替换 Chat/Embedding Provider Snapshot;账户模型按功能解析后进入请求。
  • 配置中心按协议直接构造 OpenAIProvider/AnthropicProviderOpenAI-compatible 复用 OpenAIProvider 并使用自定义 Base URL,Eino 适配器不在该运行时链路中。
  • ToolExecutionService 已将 Custom Tool 转为 ToolDefinition,执行 tool-call 循环并回传结果。

2.2 数据模型层

文件backend/internal/model/captain_models.go + copilot_models.go + auto_reply_rule_models.go + article_embedding.go

模型 表名 说明
CaptainAssistant captain_assistants AI 助手核心实体(config/guardrails/response_guidelines JSONB
CaptainDocument captain_documents 知识库文档(网页/PDF,含 content_fingerprint 去重)
CaptainAssistantResponse captain_assistant_responses FAQ 条目,带 pgvector 1536 维 embedding
CaptainScenario captain_scenarios 多场景 agent 配置(instruction + tools JSONB
CaptainCustomTool captain_custom_tools 自定义 HTTP 工具(endpoint/auth/param_schema/request_template
CaptainInbox captain_inboxes 助手↔收件箱绑定
CaptainPreference captain_preferences 账户级 AI 偏好(tone/language/auto_label/auto_reply 等)
CaptainAutoReplyRule captain_auto_reply_rules 自动回复规则(static/llm/mixed 三模式)
CopilotThread copilot_threads Copilot 对话线程(account_id + user_id + assistant_id
CopilotMessage copilot_messages 线程消息(JSONB content,支持 thinking/tool_result
CopilotSuggestionMessage copilot_suggestion_messages 会话级建议(reply/suggestion/summarypending/accepted/rejected
ArticleEmbedding article_embeddings 帮助中心文章向量嵌入(JSONB 存储向量)
  • CopilotThread.PreviousHistory() 方法将消息历史转为 LLM []ChatMessage 格式
  • CopilotMessage.BeforeSave() 验证 JSONB key 白名单(content/reasoning/function_name/reply_suggestion

2.3 Service 层

Service 文件 职责 LLM 依赖
CaptainAssistantService captain_assistant_service.go 助手 CRUD + Playground 对话 + GenerateResponse RAG 问答
CaptainTaskService captain_task_service.go 回复建议 / 摘要 / 改写(含 Stream 版本)
CaptainTaskExtendedService captain_task_extended_service.go 批量标签建议 + 跟进任务
CopilotService copilot_service.go Copilot 线程管理 + 异步响应生成
CopilotContextService copilot_context_service.go 会话上下文组装(消息/联系人/历史)
RAGService rag_service.go RAG 全流程:embedding→pgvector 搜索→LLM 生成
ConversationInsightService conversation_insight_service.go 参与者分析 / 行动项 / 标签建议
CaptainConversationService captain_conversation_service.go 会话级 AI 自动响应(handoff 模式)
CaptainDocumentService captain_document_service.go 文档爬取/同步/embedding 生成
CaptainBulkActionService captain_bulk_action_service.go 批量 AI 操作
CaptainAssistantResponseService captain_assistant_response_service.go FAQ 生成与处理
SystemPromptBuilder system_prompt_builder.go 统一 prompt 构建
LLMArticleTranslationBackend article_service.go 帮助中心文章 AI 翻译

2.4 Handler + 路由层

已注册路由/api/v1/accounts/:account_id/captain/):

# Assistant CRUD + 关联
assistants                     GET/POST/PUT/DELETE
assistants/:id/inboxes         GET/POST/DELETE
assistants/:id/playground      POST
assistants/:id/documents       POST/GET/DELETE
assistants/:id/scenarios       POST/GET/PUT/DELETE

# Document / Scenario / CustomTool
documents                      GET/POST/DELETE + /:id/sync
scenarios                      GET/POST/PUT/DELETE
custom_tools                   GET/POST/PUT/DELETE

# Copilot
copilot_threads                GET/POST/GET/:id/DELETE/:id
copilot_threads/:id/copilot_messages  GET/POST
copilot_threads/:id/messages   POST
copilot_messages               GET/POST
copilot/suggest_replies        POST
copilot/summarize              POST
copilot/translate              POST
copilot/stream                 GET (SSE)

# Tasks (AI 任务)
tasks/reply_suggestion         POST (+ /stream SSE)
tasks/summarize                POST (+ /stream SSE)
tasks/rewrite                  POST (+ /stream SSE)
tasks/label_suggestion         GET
tasks/follow_up                GET

# Insight
conversation_insights/:id/analyze_participants   POST
conversation_insights/:id/extract_action_items   POST
conversation_insights/:id/suggest_labels         POST

# Preference / Response / Bulk
preferences                    GET/PUT
assistant_responses            CRUD + /process
bulk_actions                   POST

2.5 前端层

组件/文件 路径 说明
Copilot 配置页 routes/dashboard/settings/captain/Index.vue 平台 Provider、账户模型/功能、回复行为、连接测试与 Embedding 重建
ModelSelector routes/dashboard/settings/captain/components/ModelSelector.vue 按 feature 选择 LLM 模型
FeatureToggle routes/dashboard/settings/captain/components/FeatureToggle.vue AI 功能开关
CopilotContainer components/copilot/CopilotContainer.vue 侧边栏 Copilot 聊天面板
Copilot (next) components-next/copilot/Copilot.vue 新版 Copilot 组件
useCaptain composables/useCaptain.js Captain 功能开关/配额/错误处理
useCopilotReply composables/useCopilotReply.js 回复建议/改写/摘要的 composable
useLabelSuggestions composables/useLabelSuggestions.js 标签建议
配置 API 客户端 api/copilotConfig.js 平台配置/测试/重建与账户聚合配置
Captain API 客户端 api/captain/ Assistant、Document、Task、Copilot Thread/Message、Tool 等业务 API

Feature FlagsfeatureFlags.js):

  • CAPTAIN = captain_integration
  • CAPTAIN_V2 = captain_integration_v2
  • CAPTAIN_TASKS = captain_tasks
  • CAPTAIN_CUSTOM_TOOLS = custom_tools
  • CAPTAIN_DOCUMENT_AUTO_SYNC = captain_document_auto_sync

2.6 后台 Worker

Worker 文件 任务类型 说明
CaptainDocumentWorker captain_document_worker.go 6 种任务 文档同步/爬取/页面解析/embedding 更新/调度
CopilotResponseWorker copilot_response_worker.go 1 种任务 异步 Copilot 响应生成
CaptainConversationWorker captain_conversation_service.go 1 种任务 会话响应构建、tool-call 与 handoff;已接入 AgentBot Listener

2.7 配置层

Copilot Provider 配置存储在 installation_configs,由设置页面写入;运行时 ProviderManager 热替换底层 Provider。backend/internal/config/config.go 不再定义 Captain/Copilot 模型字段,也不读取相关环境变量或 YAML 配置。


3. Chatwoot AI 功能对照表

Chatwoot Captain 功能 GoChat 状态 说明
Captain AssistantAI 助手配置) 完整 模型/服务/handler/路由/前端全链路
Copilot(客服侧边栏 AI 助手) 完整 含 SSE 流式 + 异步 Worker
Reply Suggestion(回复建议) 完整 含流式 + RAG 上下文
Summarize(会话摘要) 完整 含流式
Rewrite(改写润色) 完整 含流式,7 种操作
Label Suggestion(标签建议) 完整 单会话 + 批量
Follow-up Task(跟进任务) 完整 批量
Knowledge Base / RAG(知识库问答) 完整 RAGService、Handler 和 /captain/rag/* 路由已注册
Document Sync(文档爬取同步) 完整 6 种 Worker 任务
Custom ToolsFunction Calling 完整 ToolDefinition、HTTP 执行和 tool-call 循环已接入
Captain PreferencesAI 偏好) 完整 tone/language/auto_label/auto_reply
Auto-Reply Rules(自动回复规则) 完整 CRUD、条件匹配、static/llm/mixed 和消息 Listener 已接入
Conversation Insight(会话洞察) 完整 参与者分析/行动项/标签
Bulk Actions(批量 AI 操作) 完整
Help Center 语义搜索 完整 pgvector 搜索、文章向量生成和重建进度已接入
AgentBot + Captain(端到端 AI 客服) 完整 captain BotType 路由到 CaptainConversationService
Captain Conversation Auto-Response 完整 Worker、Listener、tool-call 与 handoff 已接入
Article AI 翻译 完整 LLMArticleTranslationBackend
Multi-Provider LLM 完整 OpenAI、Anthropic、OpenAI-compatible,支持自定义兼容端点
Token 用量统计与配额 缺失 前端有 captainLimits 结构,后端无统计
AI 配置审计 完整 Provider 配置变更审计不记录 Key/掩码;调用级审计仍属后续能力

4. 已完成闭环与剩余缺口

已完成 G1:数据库驱动的 Copilot 配置中心

  • Provider/API Key 由“设置 → Copilot 配置”写入 installation_configs
  • API Key 明文存储,但读取接口、页面和审计只暴露状态/掩码。
  • ProviderManager 热替换运行时 Provider;账户功能模型进入实际请求。

已完成 G2RAG 路由与运行服务

  • RAGService/RAGHandler 已实例化并注册 /captain/rag/query 与索引路由。

已完成 G3AutoReplyRule 消息闭环

  • 已实现规则 CRUD、条件匹配、static/llm/mixed 回复和消息 Listener。

已完成 G4CaptainConversationService 接入

  • 已注入 Handler、Worker、AgentBot Listener 和 ToolExecutionService,支持 handoff。

已完成 G5AgentBot + Captain

  • captain BotType 已路由到 CaptainConversationServiceWebhook Bot 行为保持兼容。

已完成 G6Help Center 语义搜索

  • ArticleService 已生成查询/文章 Embedding 并通过 pgvector 搜索;维度可动态迁移并后台重建。

已完成 G7Function Calling

  • ToolExecutionService 已完成工具定义转换、HTTP 执行、结果回传和多轮 tool-call loop。

已完成 G8:多 LLM Provider

  • OpenAI、Anthropic 和 OpenAI-compatible 均可通过数据库配置并热切换。

剩余缺口

  • Token 用量、成本和账户配额。
  • AI 调用级审计、Langfuse/OpenTelemetry 观测和质量评估。
  • Provider 动态模型发现与缓存、多 Provider fallback。
  • 独立语音转写 Provider 和账户级配额策略。

5. 开发路线图

阶段 1:激活现有 AI 功能(P0,已完成)

目标:让已写好的 90% 代码真正跑起来,实现"配置即可用"。

前提:需要一个可用的 LLM API Key(OpenAI 或兼容端点)。

任务 1.1:通过页面配置 Copilot Provider 已完成)

在“设置 → Copilot 配置”中保存 Provider、Base URL、API Key 和默认模型。 配置写入数据库并热替换运行时 Provider,不使用环境变量或 config*.yaml

  • Copilot 全局永久启用,不定义总开关。
  • Provider 未配置时返回明确的 COPILOT_NOT_CONFIGURED
  • API Key 明文存储,读取接口仅返回掩码和配置状态。

验收:保存后无需重启,新请求立即使用页面配置的 Provider。

任务 1.2:注册 RAG 路由( 已完成)

文件修改

  1. backend/internal/app/bootstrap.go

    • 实例化 RAGService(注入 captainAssistantResponseRepo + captainAssistantRepo + llmProvider
    • 实例化 RAGHandler(注入 RAGService
    • 添加到 Handlers 结构体
  2. backend/internal/router/router.go

    // RAG Knowledge Base Q&A
    rag := captain.Group("/rag")
    {
        rag.POST("/query", h.RAG.Query)
        rag.POST("/index/:response_id", h.RAG.IndexResponse)
    }
    

验收curl -X POST /api/v1/accounts/1/captain/rag/query -d '{"assistant_id":1,"question":"test"}' 返回非 404。

任务 1.3:接入 CaptainConversationService 已完成)

服务已注入 Handler、Worker、AgentBot Listener 和 ToolExecutionService。

验收:会话级响应、tool-call 和 handoff 路径均有自动化覆盖。

任务 1.4:端到端验证( 配置链路已完成)

配置真实 LLM API Key 后测试:

  1. Playground 对话:POST /captain/assistants/:id/playground
  2. 回复建议:POST /captain/tasks/reply_suggestion
  3. RAG 问答:POST /captain/rag/query
  4. Copilot 流式:GET /captain/copilot/stream
  5. 前端 Copilot 面板对话

交付物AI 功能在开发环境完整可用。


阶段 2:自动回复与端到端 AI 客服(P1,核心链路已完成)

目标:实现"客户消息进来 → AI 自动响应"的闭环。

任务 2.1AutoReplyRule 完整接入( 已完成)

子任务

  1. 条件匹配引擎auto_reply_rule_service.go):

    • 实现 MatchRules(ctx, accountID, conversationID, messageContent) ([]CaptainAutoReplyRule, error)
    • 支持 condition 字段:message_contentcontains/regex/equals)、sender_typeconversation_statuslanguagekeywords
    • 按 priority 排序,返回第一个匹配的规则
  2. 消息钩子集成

    • 在消息接收流程(channel/incoming.gomessage_service.go)中, 消息入库后调用 AutoReplyRuleService.MatchRules
    • 匹配到规则时:
      • static 模式:直接发送 ResponseText
      • llm 模式:调用 CaptainAssistantService.GenerateResponse 生成回复
      • mixed 模式:static 前缀 + LLM 正文
    • 尊重 DelaySecondsOneTimeOnly 配置
    • 通过 WorkerPool 异步执行(避免阻塞消息接收)
  3. 路由注册

    autoReplyRules := captain.Group("/auto_reply_rules")
    {
        autoReplyRules.GET("", h.AutoReplyRule.List)
        autoReplyRules.POST("", h.AutoReplyRule.Create)
        autoReplyRules.GET("/:rule_id", h.AutoReplyRule.Get)
        autoReplyRules.PUT("/:rule_id", h.AutoReplyRule.Update)
        autoReplyRules.DELETE("/:rule_id", h.AutoReplyRule.Delete)
    }
    
  4. 前端

    • 复用 Chatwoot 前端 auto-reply 设置页(如已 vendored
    • 新增 API 客户端 api/captain/autoReplyRules.js

验收:创建一条 llm 模式规则 → 发送匹配消息 → AI 自动回复。

任务 2.2AgentBot + Captain 集成( 已完成)

子任务

  1. 扩展 AgentBot 模型agent_bot.go):

    • 新增 BotType 字段:webhook(现有) / captain(新增)
    • captain 类型时关联 AssistantID
  2. 消息路由

    • 在消息分配逻辑中,当 inbox 的 AgentBot 类型为 captain 时, 消息直接路由到 CaptainConversationService.BuildConversationResponseByAccount
    • AI 生成的回复作为 agent_bot 消息发送到会话
  3. Handoff 逻辑

    • CaptainConversationResponse.Action == "handoff" 时,将会话转给人工客服
    • 更新会话 status + assignee
  4. 前端

    • AgentBot 管理页支持选择 captain 类型 + 关联 Assistant

验收:配置一个 captain 类型 AgentBot → 客户发消息 → AI 自动回复 → AI 判断需转人工时 handoff。

任务 2.3CaptainConversationService 完整接入( 已完成)

子任务

  1. 工具调用实现

    • CaptainCustomTool 列表转为 llm.ToolDefinition 传入 ChatRequest.Tools
    • 解析 LLM 返回的 tool_call → 执行 HTTP 请求(按 CustomTool 的 endpoint/auth/template
    • 将 tool 结果回传 LLM → 继续生成
  2. 可用工具AvailableTools 已定义 7 个):

    • add_contact_note / add_private_note / update_priority
    • add_label_to_conversation / faq_lookup / resolve_conversation / handoff
    • 实现每个工具的执行函数

验收:AI 能在对话中调用自定义工具(如查询订单、添加标签)。


阶段 3:增强 AI 能力深度(P2,1-2 周)

任务 3.1Help Center 语义搜索( 已完成)

子任务

  1. article_service.go 添加 SearchByEmbedding(ctx, query, limit) 方法
    • 调用 llmProvider.CreateEmbedding 生成查询向量
    • pgvector 余弦相似度搜索 ArticleEmbedding
  2. 文章创建/更新时自动生成 embedding(通过 Worker 异步)
  3. APIGET /api/v1/portals/:portal_id/articles/search?q=...
  4. 前端帮助中心搜索框接入

验收:搜索"如何重置密码"能找到相关文章(即使标题不含"重置")。

任务 3.2Function Calling 完整实现( 已完成)

详见阶段 2 任务 2.3 的工具调用实现。此阶段将其推广到所有 AI 服务:

  • CopilotService — Copilot 对话中可调用工具
  • CaptainTaskService — 回复建议时可调用 FAQ 查询工具
  • CaptainAssistantService.GenerateResponse — Playground 对话中可调用工具

任务 3.3:多 LLM Provider 支持( 已完成)

子任务

  1. llm/anthropic_provider.go — Claude 系列(不同 API 格式,需适配)
  2. llm/volcengine_provider.go — 火山引擎/豆包(OpenAI 兼容,可能只需 baseURL 配置)
  3. llm/qwen_provider.go — 通义千问(OpenAI 兼容)
  4. ProviderManager 根据页面保存的数据库配置选择实现并热切换
  5. 前端 ModelSelector 已有 UI,后端按 featureeditor/assistant/copilot)支持不同模型

验收:页面选择 Anthropic 并保存后,AI 功能使用 Claude 模型。

任务 3.4:上下文窗口优化

子任务

  1. CopilotContextService 实现 token 计数(tiktoken Go 库或近似估算)
  2. 滑动窗口截断:超过 token 上限时,截断早期消息
  3. 长会话自动摘要:超过阈值时,用 LLM 摘要历史消息作为 system 上下文
  4. 配置项:captain.max_context_tokens(默认 4096

验收:100+ 条消息的长会话不会超出 token 限制,AI 仍能理解上下文。


阶段 4:企业级能力(P3,2-4 周,按需)

任务 4.1AI 用量统计与配额

  • 按 account/user 统计 token 消耗(prompt_tokens + completion_tokens
  • 存储到 captain_usage_logs
  • 配额限制:前端 captainLimits 结构已存在,后端实现拦截逻辑
  • 用量仪表盘:GET /captain/usage 返回统计数据
  • 前端设置页展示用量进度条

任务 4.2AI 响应质量管控

  • CopilotSuggestionMessageaccepted/rejected 状态反馈循环
  • 基于反馈优化 prompt(few-shot 示例注入:被接受的回复作为正例)
  • A/B 测试框架:同一请求发到两个模型/prompt 配置,比较接受率
  • 质量指标:接受率、拒绝率、编辑率(用户发送前修改了多少)

任务 4.3:多语言 AI

  • CaptainPreference.Language 传入 LLM system prompt
  • 回复建议/摘要/改写尊重目标语言
  • Help Center 文章跨语言语义搜索(embedding 包含语言信息)
  • Auto-Reply Rule 的 language 条件匹配

任务 4.4AI 审计日志

  • 记录每次 AI 调用:prompt / response / model / token 消耗 / user / timestamp / feature
  • 存储到 captain_audit_logs
  • APIGET /captain/audit_logs(管理员可见)
  • 合规审计支持:导出 CSV / 按时间范围筛选

6. 风险评估与依赖

6.1 技术风险

风险 影响 缓解措施
LLM API 调用超时/失败 AI 功能不可用 已有重试机制(3 次指数退避);需加 fallback 策略(降级到静态回复)
pgvector 维度不匹配 RAG 搜索失败 使用动态维度迁移、保存确认和后台 Embedding 重建进度控制
Token 消耗成本 生产环境费用 阶段 4 实现配额限制;阶段 1-3 开发环境用 gpt-4o-mini 控制成本
SSE 连接稳定性 流式响应中断 已有 X-Accel-Buffering: no;需加心跳机制和断线重连
并发 LLM 调用 速率限制 需实现请求队列 + 限流(令牌桶)

6.2 外部依赖

依赖 用途 状态
LLM APIOpenAI/兼容) Chat + Embedding 需配置 API Key
pgvector 扩展 向量搜索 已安装(PG 17 + pgvector
帮助中心爬取 文档同步 需 HTTP 客户端(已有 resty

6.3 前端依赖

前端代码来自 Chatwoot Vue 3 vendoredAI 相关 UI 组件已存在(CopilotContainer、Captain 设置页、 ModelSelector、FeatureToggle)。阶段 1-2 的前端改动极小,主要是确保 API 端点与前端调用路径一致。


7. 附录:关键文件索引

后端

文件 说明
backend/internal/llm/provider.go LLM Provider 接口 + 数据结构
backend/internal/llm/openai_provider.go OpenAI 兼容 Provider 实现
backend/internal/model/captain_models.go Captain 全部数据模型
backend/internal/model/copilot_models.go Copilot 线程/消息/建议模型
backend/internal/model/auto_reply_rule_models.go 自动回复规则模型
backend/internal/model/article_embedding.go 帮助中心文章 embedding
backend/internal/llm/provider_manager.go 数据库配置驱动的运行时 Provider 热切换
backend/internal/app/bootstrap.go 依赖注入(LLM Provider + Captain Services
backend/internal/router/router.go 路由注册(captain 命名空间 ~L1319-1489
backend/internal/service/captain_assistant_service.go 助手 CRUD + Playground + RAG
backend/internal/service/captain_task_service.go 回复建议/摘要/改写(含 Stream)
backend/internal/service/captain_task_extended_service.go 批量标签/跟进
backend/internal/service/copilot_service.go Copilot 线程管理
backend/internal/service/copilot_context_service.go 会话上下文组装
backend/internal/service/rag_service.go RAG 全流程
backend/internal/service/conversation_insight_service.go 会话洞察
backend/internal/service/captain_conversation_service.go 会话级 AI 响应、tool-call 与 handoff
backend/internal/service/captain_document_service.go 文档同步
backend/internal/service/captain_document_worker.go 文档 Worker
backend/internal/service/copilot_response_worker.go Copilot 响应 Worker
backend/internal/service/system_prompt_builder.go Prompt 构建
backend/internal/handler/api/v1/rag_handler.go 已注册的 RAG Handler
backend/internal/handler/api/v1/sse_stream_handler.go SSE 流式 Handler
backend/internal/handler/api/v1/captain_assistant_handler.go 助手 Handler
backend/internal/handler/api/v1/captain_task_handler_test.go 任务 Handler 测试
backend/internal/handler/api/v1/auto_reply_rule_handler.go 自动回复规则 Handler

前端

文件 说明
frontend/app/javascript/dashboard/routes/dashboard/settings/captain/Index.vue Captain 设置页
frontend/app/javascript/dashboard/routes/dashboard/settings/captain/components/ModelDropdown.vue 模型下拉选择
frontend/app/javascript/dashboard/components/copilot/CopilotContainer.vue Copilot 侧边栏
frontend/app/javascript/dashboard/components-next/copilot/Copilot.vue 新版 Copilot 组件
frontend/app/javascript/dashboard/composables/useCaptain.js Captain composable
frontend/app/javascript/dashboard/composables/useCopilotReply.js 回复建议 composable
frontend/app/javascript/dashboard/composables/useLabelSuggestions.js 标签建议 composable
frontend/app/javascript/dashboard/api/captain/*.js 12 个 API 客户端
frontend/app/javascript/dashboard/featureFlags.js Feature flags 定义

配置

文件 说明
backend/internal/service/copilot_config_service.go 页面配置持久化、明文密钥存储、API 掩码和运行时生效
frontend/app/javascript/dashboard/routes/dashboard/settings/captain/Index.vue Copilot 配置页面

文档

文件 说明
docs/requirements/M10-captain-and-copilot.md Captain AI 与 Copilot 功能需求梳理
docs/product/01-product-requirements.md 产品需求文档

路线图时间线总览

阶段 1 (P0, 1-2天)     阶段 2 (P1, 3-5天)      阶段 3 (P2, 1-2周)       阶段 4 (P3, 2-4周)
┌─────────────────┐   ┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│ 1.1 Copilot配置 │   │ 2.1 AutoReply   │     │ 3.1 HC 语义搜索 │     │ 4.1 用量统计    │
│     中心        │   │     规则接入     │     │ 3.2 Function    │     │ 4.2 质量管控    │
│ 1.2 RAG 路由    │   │ 2.2 AgentBot +  │     │     Calling 推广│     │ 4.3 多语言 AI   │
│ 1.3 取消忽略    │   │     Captain 集成 │     │ 3.3 多 Provider │     │ 4.4 审计日志    │
│ 1.4 端到端验证  │   │ 2.3 工具调用实现 │     │ 3.4 上下文优化  │     │                 │
└─────────────────┘   └─────────────────┘     └─────────────────┘     └─────────────────┘
  ▲ 激活现有功能        ▲ 自动回复闭环          ▲ 智能化增强            ▲ 企业级能力
  │                     │                       │                       │
  └── 最高优先级 ───────┴── 核心价值 ──────────┴── 渐进增强 ───────────┴── 按需实现

文档结束。如需开始执行阶段 1 的修改,请告知。