# Offline backend template for DeerFlow config_version: 8 log_level: info # Gateway FastAPI 监听端口。圆桌三路由(intent / recommend / multi_agent)的同进程 # loopback 调用会拼 http://127.0.0.1: 打到本机其它 endpoint,所以必须与 # 实际监听端口一致(scripts/start-all.sh、Makefile 默认 8001)。 # 部署机改了端口请同步改这里;也可设环境变量 DEER_FLOW_GATEWAY_PORT 临时覆盖。 gateway: port: 8001 models: - name: zai-org/GLM-5-FP8 display_name: zai-org/GLM-5-FP8 use: langchain_openai:ChatOpenAI model: zai-org/GLM-5-FP8 api_key: modalresearch_gWu46FDpVLYZWPVEA3b_2fq8Jw2UJiKMgEm_Rxmn1SA base_url: https://api.us-west-2.modal.direct/v1 request_timeout: 600.0 max_retries: 2 max_tokens: 4096 temperature: 1.0 supports_vision: true supports_thinking: true - name: deepseek-chat display_name: DeepSeek Chat use: langchain_openai:ChatOpenAI model: deepseek-chat api_key: sk-1520028668cb4cc388ed8315ff1e856e base_url: https://api.deepseek.com request_timeout: 600.0 max_retries: 2 max_tokens: 4096 temperature: 1.0 supports_vision: false supports_thinking: true - name: deepseek-v4-flash display_name: DeepSeek V4 Flash use: langchain_openai:ChatOpenAI model: deepseek-v4-flash api_key: sk-e1c22b7931dc446f8b67e57878edd105 base_url: https://api.deepseek.com request_timeout: 600.0 max_retries: 2 max_tokens: 4096 temperature: 1.0 supports_vision: false supports_thinking: true - name: deepseek-v4-pro display_name: DeepSeek V4 Pro use: langchain_openai:ChatOpenAI model: deepseek-v4-pro api_key: sk-e1c22b7931dc446f8b67e57878edd105 base_url: https://api.deepseek.com request_timeout: 600.0 max_retries: 2 max_tokens: 4096 temperature: 1.0 supports_vision: false supports_thinking: true - name: MiniMax-M2.7 display_name: MiniMax-M2.7 use: langchain_openai:ChatOpenAI model: MiniMax-M2.7 api_key: sk-cp-mrsAGtzDpUl0TpOBPVoiRG_pWF1kDDN9_mDAnONBs6HIPcNUexSKtSbx2QOxfKBvJT6Xw6hDTV6hdkJYFWfNA8UtHQ08TiGJiosdRoW6q1sGb6Cb7D85NHk base_url: https://api.minimaxi.com/v1 max_tokens: 4096 temperature: 1.0 supports_vision: true supports_thinking: true - name: glm-5.1 display_name: glm-5.1 use: langchain_openai:ChatOpenAI model: glm-5.1 api_key: 75121e4bed7640d5b71ac95cf8b4310a.RA3GyRBAR3kv7VrR base_url: https://open.bigmodel.cn/api/paas/v4/ max_tokens: 4096 temperature: 1.0 supports_vision: true supports_thinking: true - name: deepseek-ai/DeepSeek-OCR display_name: deepseek-ai/DeepSeek-OCR use: langchain_openai:ChatOpenAI model: deepseek-ai/DeepSeek-OCR api_key: sk-beshfxfxfrllsczpqfrgjbugfbpzxgqgedbehceytpcvvtyb base_url: https://api.siliconflow.cn/v1/ max_tokens: 4096 temperature: 1.0 supports_vision: true supports_thinking: true # 识图(图片识别)配置。 # - model_name:指定一个 models[] 中的模型名,作为“默认识图大模型”。view_image 工具会把 # 图片交给该模型识别,并把识别出的文字结果返回给主对话模型 —— 这样即使主对话模型不支持 # 视觉,也能“看图”。请改成你实际用于识图的模型名。 # - 若留空 / 注释掉 model_name,则回退到主对话模型自身的视觉能力(需该模型 supports_vision: true)。 # - prompt:不带具体问题时使用的默认识图指令(可选)。 # - max_tokens:识图模型输出上限(可选,默认用该模型自身的配置)。 vision: model_name: deepseek-ai/DeepSeek-OCR # prompt: 请详细描述这张图片的内容。 # max_tokens: 2048 # 上传文件识别配置。 # - auto_convert_documents: true 时,上传的 PDF / Word / Excel / PPT 会在服务端自动转换为 # Markdown(.md),agent 通过 read_file / grep 读取其内容 —— 即“识别”文档内容。 # 纯文本类(txt / csv / md / json / 代码等)无需转换,agent 用 read_file 直接读取。 # 图片(png/jpg/webp)由 view_image + 上面的 vision 识图模型处理。 # - pdf_converter: auto(优先 pymupdf4llm,缺失时回退 markitdown)| pymupdf4llm | markitdown uploads: auto_convert_documents: true pdf_converter: auto title: enabled: true max_words: 6 max_chars: 60 prompt_template: | 请为下面这段对话生成一个简洁的标题,概括对话的核心主题。 要求: - 标题必须使用简体中文 - 尽量精炼,不超过 {max_words} 个词 - 只返回标题本身,不要加引号、不要解释、结尾不要标点 User: {user_msg} Assistant: {assistant_msg} tool_groups: - name: web - name: file:read - name: file:write - name: bash tools: - name: web_search group: web use: deerflow.community.ddg_search.tools:web_search_tool max_results: 5 - name: web_fetch group: web use: deerflow.community.jina_ai.tools:web_fetch_tool timeout: 15 - name: ls group: file:read use: deerflow.sandbox.tools:ls_tool - name: read_file group: file:read use: deerflow.sandbox.tools:read_file_tool - name: glob group: file:read use: deerflow.sandbox.tools:glob_tool max_results: 200 - name: grep group: file:read use: deerflow.sandbox.tools:grep_tool max_results: 100 - name: write_file group: file:write use: deerflow.sandbox.tools:write_file_tool - name: str_replace group: file:write use: deerflow.sandbox.tools:str_replace_tool - name: bash group: bash use: deerflow.sandbox.tools:bash_tool sandbox: use: deerflow.sandbox.local:LocalSandboxProvider allow_host_bash: true skills: path: skills security_scan: enabled: false agents_api: enabled: true # 登录鉴权扩展:在基础登录之上叠加两种自定义模式。 auth_login: # 用户名直登口令门:开关打开后,/login/<用户名> 直登必须再带 ?password=口令, # 口令不对直接 401。password 留空则默认口令为 123ewq。仅作用于用户名直登。 username_login: require_password: false password: "" # token 换登录:前端用 ?authToken=上游token 进入,后端调用 token_info_url # (把该 token 直接拼成 Authorization: Bearer 头)换出用户名,再登录; # 用户名不在库里时自动注册。 token_login: enabled: false token_info_url: "https://ch1.b.uat.4.cn/consumer/login/getTokenInfo" # 已弃用:鉴权头现由前端传入的 token 拼成 "Bearer ",此项不再生效,保留仅兼容。 service_authorization: "Bearer admin" timeout_seconds: 10 # 上游是 HTTPS。UAT/内网常用自签或私有 CA 证书,默认 verify=true 会握手失败导致 # 永远 401。此处 uat 域名按自签处理,先关校验;生产请置 true 或配 ca_cert_path。 verify_ssl: false ca_cert_path: "" # 可选:PEM 格式 CA 包路径,设置后优先生效并启用校验 database: backend: sqlite sqlite_dir: .deer-flow/data pool_size: 10 echo_sql: false checkpointer: type: sqlite connection_string: .deer-flow/data/deerflow.db subagents: enabled: true custom_agents: fast: description: 快速问答子Agent - 处理简单事实查询、one-hop问答 system_prompt: | # 快速问答子Agent ## 角色定义 你是一个快速问答专家。专门处理简单事实查询、one-hop 问答场景。 ## 能力范围 - 简单事实查询(天气、地理位置、基本概念等) - 单次检索即可回答的问题 - 无需引用和深度检索的问答 ## 行为规范 1. 简洁明了,直接回答用户问题 2. 如果问题复杂或需要引用,及时返回说明 tools: [web_search, read_file] model: inherit max_turns: 10 timeout_seconds: 60 rag: description: 知识库问答子Agent - 从知识库检索并返回引用 system_prompt: | # 知识库问答子Agent ## 角色定义 你是一个知识库问答专家。专门处理需要从知识库检索、需要返回文档引用的问答场景。 ## 能力范围 - 从知识库检索相关信息 - 返回文档引用和来源 - 处理结构化知识需求 ## 行为规范 1. 检索知识库获取相关信息 2. 返回答案时附带文档引用 3. 如未找到相关信息,明确告知用户 tools: [web_search, read_file] model: inherit max_turns: 20 timeout_seconds: 300 bigMode: description: 大模型对话子Agent - 开放性问答、创意生成 system_prompt: | # 大模型对话子Agent ## 角色定义 你是一个大模型对话专家。专门处理开放性问答、创意生成、通用对话场景。 ## 能力范围 - 开放性问答 - 创意写作、翻译 - 通用对话 ## 行为规范 1. 根据用户需求生成创意内容 2. 无需外部检索,直接使用知识回答 3. 保持对话简洁明了 tools: [] model: inherit max_turns: 15 timeout_seconds: 180 moreModes: description: 多轮检索子Agent - 需要搜索引擎、多跳推理、复杂问题分解 system_prompt: | # 多轮检索子Agent ## 角色定义 你是一个多轮检索专家。专门处理需要多次搜索、多跳推理、复杂问题分解的场景。 ## 能力范围 - 连续搜索多个来源 - 多跳推理 - 复杂问题分解 ## 行为规范 1. 分析问题,分解为多个子问题 2. 逐个检索每个子问题 3. 汇总各子问题的答案形成完整回答 4. 必要时进行多轮搜索 tools: [web_search, read_file] model: inherit max_turns: 30 timeout_seconds: 600 taskChat: description: 任务分析子Agent - 任务执行、工作流处理、步骤分解 system_prompt: | # 任务分析子Agent ## 角色定义 你是一个任务分析专家。专门处理任务执行、工作流处理、步骤分解、多工具协作的场景。 ## 能力范围 - 任务分解 - 工作流处理 - 步骤分解 - 多工具协作 ## 行为规范 1. 分析任务,分解为可执行的步骤 2. 使用适当工具逐步完成任务 3. 定期汇报进度 4. 最终输出任务完成结果 tools: [web_search, read_file, write_file, bash] model: inherit max_turns: 40 timeout_seconds: 900 hxchat: description: 画像检索子Agent - 人物画像分析、社交媒体用户搜索 system_prompt: | # 画像检索子Agent ## 角色定义 你是一个画像检索专家。专门处理人物画像分析、社交媒体用户搜索、多平台数据汇总的场景。 ## 能力范围 - 人物画像分析 - 社交媒体用户搜索 - 多平台数据汇总 ## 行为规范 1. 搜索目标人物的公开信息 2. 分析和汇总来自不同平台的数据 3. 生成人物画像报告 4. 注意保护隐私信息 tools: [web_search] model: inherit max_turns: 20 timeout_seconds: 300 deerFlow: description: 深度研究子Agent - 复杂研究任务、报告生成、长文本创作 system_prompt: | # 深度研究子Agent ## 角色定义 你是一个深度研究专家。专门处理复杂研究任务、长文本报告生成、多工具深度协作。 ## 能力范围 - 复杂研究任务和多角度分析 - 长文本报告生成 - 多工具深度协作 ## 行为规范 1. 制定研究计划,明确研究目标和角度 2. 进行多轮信息收集和整理 3. 深入分析,形成完整研究报告 4. 输出结构清晰、引用完备的长文本 5. 使用多个工具协作完成复杂任务 tools: [web_search, read_file, write_file, bash] model: inherit max_turns: 50 timeout_seconds: 1200 # 记忆子系统:跨会话持久化用户画像与 agent 私有记忆。 # 三层覆盖优先级(高->低): # users/{user_id}/memory_config.json > .deer-flow/memory_user_overrides.json > 此处 memory: enabled: true version: v1 # 记忆版本: 'v1'(原版 DeerFlow, memory.json + LLM 自动提取) # 'v2'(USER.md/MEMORY.md + 可选 Hindsight) provider: hindsight # 'builtin' | 'hindsight'(外部 provider 名) # builtin 始终启用,这里只决定 external 选哪个 # (version=v1 时此字段忽略) # V1 专属配置 —— version=v1 时生效 v1: max_facts: 100 # 最多保留的事实条数,超出时驱逐最低置信度的事实 fact_confidence_threshold: 0.7 # 事实置信度阈值,低于此值不保存 debounce_seconds: 30 # 对话结束后延迟多少秒才触发 LLM 提取 model_name: "" # 用于事实提取的 LLM 模型名;空则继承全局默认模型 token_budget: 2000 # 注入系统提示词的 token 预算 builtin: enabled: true memory_char_limit: 2200 user_char_limit: 1375 deduplicate_on_load: true hindsight: # provider=hindsight 时生效,需另行部署 Hindsight 服务 mode: local_external # 'cloud' | 'local_embedded' | 'local_external' api_url: http://47.88.25.99:18888 api_key: "" # 部署 Hindsight 后填,或改成 $HINDSIGHT_API_KEY 并设同名环境变量 # 注意:写成 $VAR 但环境变量未设置会导致配置加载失败 bank_id_template: "deerflow-user-{user_id}" work_bank_id_template: "deerflow-work-{user_id}-{agent_id}" memory_mode: context # 'context' | 'tools' | 'hybrid' bank_mission: "你是一个中文记忆助手,负责从对话中提炼和存储重要信息。所有记忆内容必须使用中文记录。" bank_retain_mission: "请从以下对话中提炼重要信息,包括用户的偏好、需求、背景知识和关键事实。所有提炼的内容必须用中文表达。" recall_budget: mid # 'low' | 'mid' | 'high' recall_max_tokens: 4096 recall_max_input_chars: 800 auto_recall: true auto_retain: true retain_async: true retain_every_n_turns: 1 retain_user_prefix: "User" retain_assistant_prefix: "Assistant" # background_extraction:预留功能,代码尚未实现 —— 仅设计文档存在。 # 待对应版本支持后,取消下面整段注释即可启用(漏记兜底)。 # background_extraction: # enabled: false # 默认关闭,作为漏记兜底 # debounce_seconds: 30 # model_name: ~ # null = 用默认模型 # fact_confidence_threshold: 0.7 # max_facts_per_extraction: 10 # correction_detection: true # reinforcement_detection: true injection: enabled: true max_tokens: 2000 include_builtin: true include_hindsight: true context_tag: "memory-context" # 包裹 Hindsight recall 的标签名 security: scan_content: true # 注入/外渗模式扫描 block_invisible_unicode: true # streaming_scrubber:预留字段,代码尚未实现 —— 待版本支持后取消注释。 # streaming_scrubber: true # SSE 流前清洗 # AI 写作子系统 —— 素材收集专家专用配置。 # 注意:这三项必须嵌套在 ai_writing: 段下;写到顶层会被 _ai_writing_config() # (app/gateway/routers/ai_writing.py:_ai_writing_config) 直接忽略。 ai_writing: keyword_model: deepseek-chat # 检索词生成专用模型,留空回退写作主模型 rank_model: deepseek-chat # 素材排序专用模型,留空回退写作主模型 max_materials: 20 # 合并去重后的素材总量上限,范围 [1, 100],默认 20