config_version: 8 log_level: info models: - name: deepseek-chat display_name: DeepSeek Chat use: langchain_openai:ChatOpenAI model: deepseek-chat api_key: sk-9808fb2375534112ac275541aec14b9b base_url: https://api.deepseek.com request_timeout: 600.0 max_retries: 2 max_tokens: 4096 temperature: 1.0 supports_vision: true supports_thinking: true - 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-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: true 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 max_tokens: 4096 temperature: 1.0 supports_vision: true supports_thinking: true - name: minimax-m2.5 display_name: MiniMax M2.5 use: langchain_openai:ChatOpenAI model: MiniMax-M2.5 api_key: sk-cp-mrsAGtzDpUl0TpOBPVoiRG_pWF1kDDN9_mDAnONBs6HIPcNUexSKtSbx2QOxfKBvJT6Xw6hDTV6hdkJYFWfNA8UtHQ08TiGJiosdRoW6q1sGb6Cb7D85NHk base_url: https://api.minimaxi.com max_tokens: 4096 temperature: 1.0 supports_vision: true supports_thinking: true 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: 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 title: enabled: true max_words: 6 max_chars: 60 prompt_template: | 请为下面这段对话生成一个简洁的标题,概括对话的核心主题。 要求: - 标题必须使用简体中文 - 尽量精炼,不超过 {max_words} 个词 - 只返回标题本身,不要加引号、不要解释、结尾不要标点 User: {user_msg} Assistant: {assistant_msg} skills: path: /app/skills security_scan: enabled: false agents_api: enabled: true database: backend: mysql mysql_url: $MYSQL_DATABASE_URL pool_size: 10 echo_sql: false checkpointer: # SQLite 文件路径用相对路径,由 resolve_sqlite_conn_str 解析成绝对路径。 # Docker 部署:把容器内 .deer-flow 目录挂卷出来即可持久化(撑住容器重启)。 # 这里同时被「主 agent」和「AI 写作 graph」共用 —— LangGraph 用 # (thread_id, checkpoint_ns) 做隔离,session_id 是 uuid,不会撞。 type: sqlite connection_string: .deer-flow/data/checkpoints.db # AI 写作子系统的会话清理配置。 # 业务表(ai_writing_sessions @ MySQL) + checkpointer(checkpoints.db @ SQLite) 联动清理。 # 留意:清理走 cron 表达式调度,默认每天凌晨 3 点跑一次,按 updated_at 一刷拉清。 ai_writing: cleanup: enabled: true retention_days: 7 # 保留 7 天以内的会话,更早的整条删 cron: "0 3 * * *" # 每天 03:00 本地时区 delete_only_finished: false # false=不看状态一刷拉;true=只清 done/error batch_size: 500 # 单批最多删多少行,避免长事务 # 记忆子系统:跨会话持久化用户画像与 agent 私有记忆。 # 三层覆盖优先级(高->低): # users/{user_id}/memory_config.json > .deer-flow/memory_user_overrides.json > 此处 memory: enabled: true version: v1 provider: hindsight # 'builtin' | 'hindsight'(外部 provider 名) # builtin 始终启用,这里只决定 external 选哪个 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 流前清洗