AI 驱动的竞品分析 Agent 协作系统
Competitive-Analysis-Agent 是一个"数字竞争情报小组"——6 个专门化 AI Agent 以结构化协作协议完成竞品数据采集、交叉验证、多维对比分析和交互式报告生成。全程可溯源、可干预、可交互。
| Agent | 职责 | 输出 |
|---|---|---|
| Orchestrator | 意图解析 + 复杂度判定 + 维度权重 + 动态 Schema(深度 × 行业) | OrchestrationResult |
| Collector | 多源搜索采集 + 去重 + 自评覆盖率 + VoC 问卷生成 | CollectedDataPoint[] |
| Analyst | 对比矩阵 + SWOT + 趋势预测 + 动态维度 | AnalysisResult |
| Reviewer | 8 项质量审查 + gap 判定 + 打回重做 | ReviewVerdict |
| Writer | 结构化报告生成 + [n] 溯源标注 + traceability_map |
ReportData |
| HITL Gate / Rework Intent | 人工审批;自然语言返工语义路由到重采集 / 重分析 / 重写 | HitlDecision / ReworkIntent |
Agent 间通过 结构化 Pydantic Schema 通信(非纯自然语言),每个环节的 Prompt、输入、输出均可在前端流程追踪面板中查看。
Reviewer 执行 8 项质量审查(数据覆盖、交叉验证、来源可信度、时间新鲜度、维度完整性等)+ 数字源头校验(claim 中数字须在采集原文逐字可查),发现 gap 即打回 Collector/Analyst 重做,最多 2 轮。打回时精准定位缺失维度,定向补采而非全量重跑,减少 Token 消耗。每次重做后追踪改善率 + 修复增量(repair delta),确保闭环真实可触发而非伪闭环。
每条分析结论标注 [n] 上标来源,hover 弹出 source card(URL、采集时间、置信度、验证状态),支持一键跳转到原始数据源。来源按域名历史可信度自动分为强/中/弱三档证据强度,低可信来源自动降权。
Agent 执行过程版本化管理——每次 HITL 干预创建新分支,支持从任意历史版本 fork、版本对比、分支合并。类似 Git for Agent workflow。报告生成后,用户也可以在同一个输入框继续输入自然语言返工要求,系统通过 Rework Intent Agent 语义判断应进入 replan(补采数据)、reanalyze(重做分析)或 rewrite(重写表达),并把新结果记录为可追踪版本。
报告生成后,用户可以在同一个输入框继续输入自然语言返工要求;新 query 和返工 query 会作为用户气泡插入对应执行轮次前,便于把人工输入、Agent 阶段气泡和版本树对应起来。
3 层 Schema 模型:通用固定层 + 行业专属层 + LLM 自适应动态层。Orchestrator 根据 query 复杂度和行业类型自动选择报告深度与专属分析维度。
- DAG 执行图: 节点 5 状态高亮 + 边动画 + 反馈回环虚线 + 自评分数圆点
- 流程追踪: 每节点 Prompt / 输入 / 输出 / Token / 结构化 JSON 可查
- 溯源链视图: 报告结论 ↔ 原始数据源一键跳转
- 人工修正面板: 报告章节在线编辑 + 提交改善率量化
每个数据源的域名维护可信度分数(0-1),Reviewer 每次校验后根据结果(verified/conflict/error/outdated)自动调分,跨分析 session 累积演化。采集时自动持久化页面全文,下游 Agent 可回溯原文验证 claim,不做仅靠摘要的二手判断。
内置熔断器(连续 3 次重复调用自动中断)防止 LLM 死循环烧 Token,per-Agent 超时 + 降级兜底保证单点故障不阻塞整体流程。
profile.md 定义分析风格、维度权重、来源规则等持久化偏好,Orchestrator 启动时自动注入 Prompt,跨 session 保持一致性。
支持分析完成自动私聊通知、自动导出飞书文档、报告卡片手动导出飞书文档三项能力。通过环境变量开关独立控制,默认关闭,不影响分析主流程。
| 层 | 技术 |
|---|---|
| 编排 | LangGraph StateGraph + 条件路由 + 反馈闭环 |
| 后端 | Python 3.12 + FastAPI + Pydantic v2 + SQLite |
| 前端 | Next.js 16 + React 19 + TypeScript + Tailwind CSS 4 + DeerFlow(auth / i18n / UI 组件) |
| DAG 可视化 | @xyflow/react (ReactFlow) |
| LLM | OpenAI 兼容 API |
| 搜索 | Tavily / DuckDuckGo / Jina AI / LLM 内置联网搜索 |
| 部署 | uv + pnpm(Next.js 直接代理 FastAPI) |
| 持久化 | SQLite (WAL mode): analysis_history + phase_history + source_credibility + product_baseline + branch_snapshots |
| 依赖 | 版本 |
|---|---|
| Python | 3.12+ |
| uv | 最新稳定版 |
| Node.js | 22+ |
| pnpm | 10+ |
cp .env.example .env # 编辑填写 DOUBAO_API_KEY 等
make install # 安装依赖
make dev # 低 I/O 启动全部服务启动后访问 http://localhost:2026/competition。make dev 会在前端源码未变化时复用已有构建,后端不启用文件监听,适合共享服务器日常开发。
常用命令:
make stop # 停止
make restart # 重新以低 I/O 模式启动
make watch # 前后端热更新(高 I/O,仅按需使用)
make start # 使用已有前端 production build 启动
make test # 运行测试
make lint # 代码检查
make build # 重新构建前端如需使用其他端口:
BACKEND_PORT=8002 FRONTEND_PORT=2027 make dev# 终端 1:后端
cd backend
PYTHONDONTWRITEBYTECODE=1 uv run --locked --no-dev --no-sync \
uvicorn app.main:app --host 0.0.0.0 --port 8001
# 终端 2:前端(首次启动前先执行 pnpm build)
cd frontend
pnpm start --hostname 0.0.0.0 --port 2026项目支持两种配置模式,通过环境变量 CI_AGENT_CONFIG_MODE 切换:
| 模式 | 触发方式 | 配置来源 | 适用场景 |
|---|---|---|---|
| DB 模式(默认) | 不设或 CI_AGENT_CONFIG_MODE=db |
SQLite user_settings 表,通过设置界面管理 |
正式用户、多用户隔离 |
| File 模式 | CI_AGENT_CONFIG_MODE=file |
config.yaml + .env |
调试、演示、无账号场景 |
启动后访问 /competition/settings,在设置面板中配置 LLM 提供商、API Key、搜索后端、飞书凭证及 per-Agent 参数。所有配置按用户账号隔离存储在 .ci-agent/competition.db 的 user_settings 表中,登录即可跨设备同步;DB 模式下无需维护 .env 或 config.yaml。
设置面板包含三个区域:
- API 凭证:LLM Provider(名称 + Key + Base URL)、Tavily / Jina AI 独立保存、飞书凭证(多套动态增删)
- 配置组:多组预设(groupA / groupB ...),每组独立控制搜索开关、飞书功能开关、per-Agent 覆盖
- Per-Agent 覆盖:每个 Agent 可独立指定 Provider / Model / Temperature / Timeout / Max Turns 等
![]() |
![]() |
| 用户配置:API 凭证 — LLM / 搜索 / 飞书凭证按账号隔离保存 | 用户配置:配置组 — 多预设切换 + per-Agent 参数覆盖 |
不使用数据库,直接从 config.yaml 和 .env 读取配置。适合调试、演示或无账号场景;LLM / 搜索 / 飞书密钥放在 .env,模型路由、搜索开关、飞书功能开关和 per-Agent 参数放在 config.yaml。File 模式下 /competition 可直接进入演示页面,无需登录。
cp .env.example .env
cp config.example.yaml config.yaml
# 编辑 .env 和 config.yaml 填写实际值
CI_AGENT_CONFIG_MODE=file make devscripts/sync-user-config.py 可在两种模式间迁移配置:
# 在项目根目录执行
# File → DB:将 config.yaml + .env 写入指定用户的 DB 记录
uv run --project backend --locked --no-dev --no-sync python scripts/sync-user-config.py push <user_email>
# DB → File:将用户 DB 记录写回 config.yaml + .env
uv run --project backend --locked --no-dev --no-sync python scripts/sync-user-config.py pull <user_email>
# 预览变更(不实际写入)
uv run --project backend --locked --no-dev --no-sync python scripts/sync-user-config.py push <user_email> --dry-run
uv run --project backend --locked --no-dev --no-sync python scripts/sync-user-config.py pull <user_email> --dry-run所有 API 密钥通过环境变量注入。从模板复制并填写:
cp .env.example .env.env.example 完整内容:
# ── LLM Providers (OpenAI-compatible, keys only — model/config in config.yaml)
# Doubao / Volcengine Ark
DOUBAO_API_KEY=your-doubao-api-key
# DeepSeek (optional — enable in config.yaml per-agent)
DEEPSEEK_API_KEY=your-deepseek-api-key
# Qwen / DashScope (optional)
QWEN_API_KEY=your-qwen-api-key
# ── Search API Keys ────────────────────────────────────────────────────────
TAVILY_API_KEY=your-tavily-api-key
JINA_API_KEY=your-jina-api-key
# ── Feishu (optional, switches in config.yaml) ─────────────────────────────
FEISHU_APP_ID=your-feishu-app-id
FEISHU_APP_SECRET=your-feishu-app-secret
FEISHU_NOTIFY_OPEN_ID=your-feishu-open-id
FEISHU_TENANT=your-feishu-tenantLLM 密钥按需填写(使用哪个 provider 就填哪个),搜索类密钥未填写时自动退化为 DuckDuckGo 免费搜索。
注意:DB 模式下
.env和config.yaml不是必需的 — 所有配置都在设置界面中管理。File 模式下才需要手动维护这两个文件。
File 模式下所有字段均有内置默认值,无需创建即可运行。如需切换 LLM 提供商或为不同 Agent 分配不同模型,从模板复制:
cp config.example.yaml config.yamlconfig.yaml 采用 提供商 + 配置组 双层结构。提供商定义 API 连接信息,配置组聚合完整的独立预设,通过 active_group 一键切换:
config_version: 12
competition:
active_group: "groupA" # 切换预设:groupA / groupB
providers: # LLM 提供商定义
doubao:
api_key_env: "DOUBAO_API_KEY"
api_base: "https://ark.cn-beijing.volces.com/api/v3"
deepseek:
api_key_env: "DEEPSEEK_API_KEY"
api_base: "https://api.deepseek.com/v1"
qwen:
api_key_env: "QWEN_API_KEY"
api_base: "https://dashscope.aliyuncs.com/compatible-mode/v1"
groups:
# ── Doubao 预设 ──
groupA:
default_provider: "doubao"
# 模型ID
default_model: "your-doubao-model-or-endpoint-id"
search: # 搜索后端开关
provider_search: true # LLM 内置搜索(Doubao/Qwen)
tavily: true
ddg: true
jina: true
orchestrator: # 意图解析(轻量模型即可)
provider: "doubao"
model: "your-doubao-model-or-endpoint-id"
timeout_seconds: 60
# ... collector / analyst / reviewer / writer 同理
feishu: # 飞书功能开关(凭证在 .env)
notify_enabled: false
doc_auto_export: false
doc_manual_export: false
# ── DeepSeek 预设 ──
groupB:
default_provider: "deepseek"
default_model: "your-deepseek-model"
search: # DeepSeek 无内置搜索
tavily: true
ddg: true
jina: false
orchestrator:
provider: "deepseek"
model: "your-deepseek-model"
timeout_seconds: 60
# ... collector / analyst / reviewer / writer 同理
feishu:
notify_enabled: false
doc_auto_export: false
doc_manual_export: false每个 Agent 可独立指定 provider + model,不填则自动继承 default_provider + default_model。search.provider_search 表示调用模型供应商内置搜索;Tavily / Jina 未配置密钥时会自动跳过对应后端。
分析完成自动通知、自动导出飞书文档、手动导出飞书文档三项能力都按配置模式读取:DB 模式在设置面板的配置组里开启;File 模式在 config.yaml 各配置组的 feishu 段开启。
feishu:
notify_enabled: true # 分析完成飞书私聊通知
doc_auto_export: true # 分析完成自动导出飞书文档
doc_manual_export: true # 报告卡片显示「导出飞书」按钮前提准备(全部功能共用):
- 登录 飞书开放平台 → 创建「企业自建应用」
- 添加应用能力 → 开启「机器人」
- 权限管理 → 添加以下权限后发布新版本:
im:message:send_as_bot(通知)docx:document(创建文档)drive:drive(转让文档所有权)
获取配置变量:
| 变量 | 说明 | 获取方式 |
|---|---|---|
FEISHU_APP_ID |
应用 ID | 应用详情页 → 凭证与基础信息 |
FEISHU_APP_SECRET |
应用密钥 | 同上 |
FEISHU_NOTIFY_OPEN_ID |
通知接收人 Open ID | API 调试台 → 发送消息接口 → 快速复制 open_id |
FEISHU_TENANT |
飞书租户域名 | 飞书网页版地址 xxx.feishu.cn 的 xxx 部分 |
填入 .env:
FEISHU_APP_ID=your-feishu-app-id
FEISHU_APP_SECRET=your-feishu-app-secret
FEISHU_NOTIFY_OPEN_ID=your-feishu-open-id
FEISHU_TENANT=your-tenant手动导出时浏览器可能拦截新窗口弹窗,请允许弹窗;文档所有权转让有数秒延迟,刷新或稍等即可看到。
两项配置均放在项目根目录:
competitive-analysis-agent/
├── .env # API 密钥(不提交 Git)
├── config.yaml # Agent 参数调优(不提交 Git)
├── .env.example # 密钥模板(可提交)
└── config.example.yaml # 参数模板(可提交)
Query: "深度分析 Claude Code 和 Codex,特别是定价方面"
Thread:comp-05350dc0770f· 耗时 ~15 分钟 · 总 Token 20,840 · 产出 9 章节报告

会话界面总览 — 左侧阶段气泡 + 中间报告卡片 + 右侧面板
| 阶段 | Agent | 耗时 | Token | 关键产出 |
|---|---|---|---|---|
| 🔍 竞品解析 | (前置) | 125s | 1,713 | "Claude Code" → Claude Code (Anthropic) |
| 🎯 意图解析 | Orchestrator | 12s | 51 | complexity=standard, 定价权重 0.9 |
| 📊 信息采集 | Collector | 259s | 4,002 | 12 条结构化数据点 (products×dimensions) |
| 🔬 对比分析 | Analyst | 66s | 3,529 | 2×4 对比矩阵 + SWOT + 趋势预测 |
| ✅ 质量审查 | Reviewer | 97s | 10,591 | G1-G8 8 项检查, 发现 3 个 gap |
| 🔄 定向返工 | Analyst→Reviewer | 71s+34s | — | 补采缺失维度, 交叉验证通过 |
| 📝 报告撰写 | Writer | 264s | 954 | 9 章节: 摘要·矩阵·SWOT·趋势·建议 |
| 📋 合计 | — | ~15min | 20,840 | 覆盖率 100% · 溯源率 100% |
关键指标: 交叉验证率 0%(初版已知 Bug,已修复)· 改善率 80% · 9 章节约 3,000 字 · 溯源链接 12 条
当 Reviewer 检测到数据覆盖不足时,系统自动触发定向返工——精确指定缺失的产品×维度组合,Collector 只补采缺口数据而非全量重跑:
Collector → Analyst → Reviewer
↑ │
│ ├─ pass → Writer → HITL Gate
│ └─ gap → rework_plan: {product: "Claude Code", dimension: "pricing"}
│ │
└────────────────────┘ (定向补采, 非全量重跑)
本示例中,Reviewer 识别到 3 个 gap 后触发 1 轮定向返工,改善率提升至 80%。
competitive-analysis-agent/
├── backend/
│ ├── app/
│ │ ├── main.py # FastAPI 应用入口 + auth stub
│ │ └── competition_router.py # /analyze /report /trace /stream 路由
│ ├── packages/competition/ # 竞赛核心包
│ │ └── competition/
│ │ ├── nodes/ # 6 个 Agent 节点实现
│ │ │ ├── orchestrator.py # Orchestrator: 意图解析 + 路由决策
│ │ │ ├── collector.py # Collector: 多源采集 + VoC
│ │ │ ├── analyst.py # Analyst: 对比分析 + SWOT + 趋势
│ │ │ ├── reviewer.py # Reviewer: 8 项质量审查 + gap 判定
│ │ │ ├── writer.py # Writer: 报告生成 + 溯源标注
│ │ │ ├── hitl_gate.py # HITL Gate: LangGraph interrupt()
│ │ │ ├── rework_intent.py # 自然语言返工意图路由:replan / reanalyze / rewrite
│ │ │ ├── error_handler.py # 错误处理 + 降级
│ │ │ └── deep_*.py # 深度模式节点 (deep 模式)
│ │ ├── tools/ # Agent 工具
│ │ │ ├── search.py # 多源搜索 (Tavily / DDG / Jina)
│ │ │ └── video_source.py # YouTube / Bilibili 字幕提取
│ │ ├── prompts/ # Agent 提示词 (Markdown, 每个 Agent 一篇)
│ │ ├── branchtree/ # 分支树 + CheckpointOps
│ │ │ ├── tree.py # BranchTree: snapshot / fork / restore / lineage
│ │ │ ├── node.py # BranchNode 数据结构
│ │ │ ├── store.py # SQLite 持久化 (branch_snapshots 表)
│ │ │ ├── checkpoint_ops.py # LangGraph checkpoint 便捷操作
│ │ │ ├── adapter.py # State ↔ BranchTree 双向桥接
│ │ │ ├── diff.py # 节点/版本对比
│ │ │ └── merge.py # 分支合并
│ │ ├── graph.py # LangGraph StateGraph 构建
│ │ ├── state.py # CompetitionState 定义
│ │ ├── schema.py # Pydantic Schema + 校验
│ │ ├── router.py # 条件路由逻辑
│ │ ├── dag.py # DAG 状态提取器
│ │ ├── db.py # SQLite 业务表 (4 张)
│ │ ├── executor.py # LLM 调用封装
│ │ ├── graph_algorithms.py # 图拓扑算法
│ │ ├── industry.py # 行业 profile 定义
│ │ ├── config.py # 配置模型
│ │ ├── visualization.py # matplotlib/seaborn 图表
│ │ └── observability.py # 可观测性工具
│ ├── tests/ # 后端测试
│ ├── pyproject.toml # Python 项目配置 (uv workspace)
│ └── uv.lock # 依赖锁定
├── frontend/
│ └── src/
│ ├── app/competition/ # /competition 路由页面
│ │ ├── competition-shell.tsx # SidebarProvider + competition 布局状态
│ │ ├── layout.tsx # 根布局
│ │ ├── page.tsx # 首页 (新建分析)
│ │ └── [thread_id]/ # 分析详情页 (动态路由)
│ ├── app/api/competition/ # SSE 流代理端点
│ └── components/competition/ # 19 个竞赛 UI 组件
│ ├── competition-chat-area.tsx # 主聊天区
│ ├── competition-report-panel.tsx # 报告面板
│ ├── competition-report-card.tsx # 报告卡片
│ ├── dag-graph.tsx # DAG 执行图
│ ├── process-trace-panel.tsx # 流程追踪面板
│ ├── report-editor.tsx # 人工修正编辑器
│ ├── branch-tree-panel.tsx # 分支树面板
│ ├── source-card.tsx # 溯源卡片 (hover 弹窗)
│ ├── hitl-card.tsx # HITL 审批卡片
│ ├── agent-detail-panel.tsx # Agent 节点详情
│ ├── analysis-timeline.tsx # 分析时间线
│ ├── message-flow-timeline.tsx # 消息流时间线
│ ├── token-panel.tsx # Token 消耗面板
│ ├── version-tree.tsx # 版本树
│ ├── competition-header.tsx # 顶部导航栏
│ ├── competition-sidebar.tsx # 侧边栏
│ ├── competition-history-list.tsx # 历史记录列表
│ ├── competition-query-input.tsx # 查询输入框
│ └── replay-slider.tsx # 回放滑块
├── scripts/
│ ├── restart-light.sh # 生产实例一键重启(含 IO 防护)
│ ├── dev-instance.sh # 调试实例启动(:8002/:3001/:2027)
│ └── cleanup-all.sh # 进程 + 端口清理
├── docker/
│ ├── docker-compose.yaml # 生产部署
│ ├── docker-compose-dev.yaml # 开发部署
│ ├── dev-entrypoint.sh # 开发容器入口
│ ├── nginx/ # Nginx 配置
│ └── provisioner/ # Sandbox 资源预配器
├── images/ # 文档图片
├── .env.example # 环境变量模板
├── config.example.yaml # Agent 配置模板
├── Makefile # 构建/启动/测试快捷命令
└── README.md
| 要求 | 描述 | 实现位置 |
|---|---|---|
| R1 | 6 Agent 职责边界清晰 | nodes/orchestrator.py collector.py analyst.py reviewer.py writer.py hitl_gate.py |
| R2 | Collector 双轨采集 + 问卷 | nodes/collector.py VoC Aggregator |
| R3 | 竞品知识 Schema (FeatureTree/PricingModel/UserPersona) | schema.py |
| R4 | Agent 间结构化 JSON 通信 | schema.py AnalysisResult/ReviewVerdict/ReviewPackage/ReportData/HitlDecision |
| R5 | Reviewer 8 项 gap 判定 + 打回 | nodes/reviewer.py + router.py |
| R6 | 反馈改善率量化 | competition_router.py improvement_ratio |
| R7 | 溯源标注 [n] + traceability_map |
nodes/writer.py + 前端 source-card.tsx |
| R8 | Schema 强制校验 + 重试 + 降级 | schema.py model_validate() |
| R9 | DAG 图实时高亮 + 边动画 | dag.py + 前端 dag-graph.tsx |
| R10 | Prompt/输入/输出/决策过程/Token 可查 | 前端 process-trace-panel.tsx + agent-detail-panel.tsx + competition_router.py /trace |
| R11 | 端到端链路完整,可现场演示 | graph.py 全链路编排 + competition_router.py SSE 流式 + 前端完整交互 |
| R12 | 幻觉抑制:引用强制 + 自一致性 + 分片 | nodes/reviewer.py + nodes/analyst.py |
| R13 | 超时重试 + 降级机制 | config.py per-Agent timeout + nodes/error_handler.py C/D 级错误决策树 |
| R14 | 前瞻性:BranchTree + CheckpointOps + 来源可信度 | branchtree/ + db.py source_credibility |
| R15 | 输出指标可量化(覆盖率/交叉验证率/改善率) | nodes/writer.py compute_metrics() + schema.py metrics |
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/competition/analyze |
创建竞品分析任务,返回 thread_id |
| GET | /api/competition/stream/{thread_id} |
SSE 实时事件流(进度推送 + Agent 输出) |
| GET | /api/competition/report/{thread_id} |
获取分析报告与阶段数据 |
| GET | /api/competition/report/{thread_id}/history |
获取版本历史与分支树 |
| GET | /api/competition/report/{thread_id}/trace |
获取 Agent 执行追踪日志 |
| PATCH | /api/competition/report/{thread_id}/sections |
人工修正报告章节 |
| PUT | /api/competition/report/{thread_id} |
提交 HITL 审批决策 |
| POST | /api/competition/{thread_id}/cancel |
终止运行中的分析 |
| GET | /api/competition/report/{thread_id}/export |
导出报告(Markdown / JSON) |
| GET | /api/competition/me |
获取当前用户信息 |
| GET | /api/competition/history |
获取历史分析列表 |
后端 FastAPI 自动生成 Swagger 文档:http://localhost:8001/docs
当前系统基于实时搜索 + SQLite 持久化,满足竞赛阶段端到端分析需求。以下方向为产品化迭代预留的架构设计:
- 跨分析知识复用:将
product_baseline表扩展为向量库,按产品名 + 属性做 embedding 检索。重复命中时直接复用历史采集结果,减少搜索 API 调用和 Token 消耗 - Reviewer 证据语义检索:G10 数字校验目前做字面匹配。引入向量检索后,Reviewer 可以判断 claim 在所有来源中是否有语义相近的证据支撑,覆盖同义改写、跨语言等场景
- 趋势对比分析:多次分析积累后,跨时间向量检索历史报告中同类产品的变化趋势,生成"过去半年 AI 代码助手赛道定价变化"等长周期洞察
- 状态外置:当前分析状态存储在内存
_store字典中(单进程有效)。迁移至 Redis 或 PostgreSQL 后,Gateway 可水平扩展为多实例,任意实例接手任意请求 - 异步任务队列:当前分析在
threading.Thread中执行。引入 Celery / Redis Queue 后,分析任务可分布到独立 Worker 节点,Gateway 只负责接收请求和推送 SSE,解耦计算与 IO - 数据库升级:SQLite WAL 模式支持有限并发写入(串行化锁)。迁移到 PostgreSQL 后,支持真正并发读写、连接池管理、读写分离
- LLM 配额管理:引入 per-user / per-tenant 的 Token 预算和速率限制,防止单用户耗尽全局配额;搜索 API 同理需要按租户限流
- 多用户项目隔离:当前 demo 使用自动登录,后续可基于 DeerFlow 已有的 auth 模块实现多用户隔离、项目空间和权限控制
















