feat(open-chat): 开放问答接口回传生成文件 + 临时不留存
- /api/open/chat[/stream] 新增 include_files(默认开),把智能体在 outputs 目录 生成的文件(name/virtual_path/encoding(text|base64)/content)随结果回传, 解决"报告写进文件、answer 只回一段总结"导致拿不到完整内容的问题; 既无 answer 也无文件时返回 502。 - 无状态运行标记 ephemeral:lead agent 跳过记忆与知识库中间件(不召回/不留存/ 不自动沉淀),取完文件后清理临时线程目录,做到"通过本接口的聊天记录不存储"。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
06b169d7a1
commit
7c55a577ad
3 files changed
+111
-9
No files matched your search
+12
-4
@@ -306,17 +306,25 @@ def _build_middlewares(
|
||||
if not cfg.get("is_scheduled_run", False):
|
||||
middlewares.append(TitleMiddleware(app_config=resolved_app_config))
|
||||
|
||||
# Add MemoryMiddleware (after TitleMiddleware) — skip in bootstrap mode (agent creation flow)
|
||||
# Ephemeral runs (e.g. the open Q&A API /api/open/chat) must NOT touch any
|
||||
# server-side per-user state: no memory recall/retain, no knowledge-base
|
||||
# recall/auto-ingest. Those runs use the shared "default" user bucket, so
|
||||
# persisting their conversations there would both store records the caller
|
||||
# explicitly asked NOT to keep and leak content across unrelated callers.
|
||||
# Skip both write-capable middlewares entirely.
|
||||
is_ephemeral = cfg.get("ephemeral", False)
|
||||
|
||||
# Add MemoryMiddleware (after TitleMiddleware) — skip in bootstrap mode (agent creation flow) and ephemeral runs
|
||||
memory_injection_enabled = cfg.get("memory_injection_enabled", True)
|
||||
if not is_bootstrap and not is_writing_setup:
|
||||
if not is_bootstrap and not is_writing_setup and not is_ephemeral:
|
||||
middlewares.append(MemoryMiddleware(agent_name=agent_name, memory_config=resolved_app_config.memory, injection_enabled=memory_injection_enabled))
|
||||
|
||||
# KnowledgeRagMiddleware — inject knowledge-base recall (phase 2). Gated
|
||||
# per-conversation by the ``knowledge_rag_enabled`` runtime flag, defaulting
|
||||
# to the global ``knowledge.rag_enabled`` config. No-op when knowledge is
|
||||
# disabled. Skipped in bootstrap/writing-setup like MemoryMiddleware.
|
||||
# disabled. Skipped in bootstrap/writing-setup/ephemeral like MemoryMiddleware.
|
||||
knowledge_cfg = getattr(resolved_app_config, "knowledge", None)
|
||||
if not is_bootstrap and not is_writing_setup and knowledge_cfg is not None and knowledge_cfg.enabled:
|
||||
if not is_bootstrap and not is_writing_setup and not is_ephemeral and knowledge_cfg is not None and knowledge_cfg.enabled:
|
||||
from deerflow.agents.middlewares.knowledge_rag_middleware import KnowledgeRagMiddleware
|
||||
|
||||
middlewares.append(KnowledgeRagMiddleware(limit=knowledge_cfg.rag_limit, default_enabled=knowledge_cfg.rag_enabled))
|
||||
|
||||
Reference in new issue
Block a user