# 产物系统参考文档 > 调研 DeerFlow 和 Hermes Agent 的产物/输出面板实现,为 ZCLAW 产物系统重构提供参考。 > 分析日期:2026-04-24 --- ## 一、DeerFlow 产物系统 DeerFlow 有完整的全栈产物管道,是主要参考对象。 ### 1.1 端到端数据流 ``` Agent tool call (write_file / str_replace / present_files) ↓ Backend: ThreadState.artifacts (LangGraph annotated list, merge_artifacts reducer 去重) ↓ 文件写入: {base_dir}/threads/{thread_id}/user-data/outputs/ ↓ 虚拟路径: /mnt/user-data/outputs/filename.ext ↓ Backend API: GET /api/threads/{thread_id}/artifacts/{virtual_path} ↓ MIME 检测 / .skill ZIP 解压 / download vs inline ↓ Frontend: thread.values.artifacts (string[]) → ArtifactsProvider context ↓ ChatBox (ResizablePanelGroup) → chat(60%) | artifact panel(40%) ↓ ArtifactFileDetail → CodeMirror(代码) / Streamdown(Markdown) / iframe(HTML) ``` ### 1.2 关键文件 #### 前端核心 | 文件 | 职责 | |------|------| | `frontend/src/core/artifacts/utils.ts` | URL 构建、产物列表提取、路径解析 | | `frontend/src/core/artifacts/loader.ts` | 从后端 API 获取产物文本;从 tool call args 直接提取内容 | | `frontend/src/core/artifacts/hooks.ts` | TanStack React Query hook,5 分钟缓存 | | `frontend/src/components/workspace/artifacts/context.tsx` | ArtifactsProvider + useArtifacts() — 管理列表、选中、开关、自动选中 | | `frontend/src/components/workspace/artifacts/artifact-file-detail.tsx` | 产物详情视图:头部(文件选择器+code/preview切换) + CodeEditor/Preview | | `frontend/src/components/workspace/artifacts/artifact-file-list.tsx` | 卡片式列表视图,每个卡片含图标/名称/扩展名/下载/安装按钮 | | `frontend/src/components/workspace/artifacts/artifact-trigger.tsx` | 头部触发按钮,仅在产物存在时显示 | #### 前端渲染 | 文件 | 职责 | |------|------| | `frontend/src/components/workspace/code-editor.tsx` | CodeMirror 只读编辑器,支持 CSS/HTML/JS/JSON/MD/Python 语法高亮 | | `frontend/src/components/ai-elements/code-block.tsx` | Shiki 语法高亮代码块,双主题(light/dark) | | `frontend/src/components/ai-elements/web-preview.tsx` | iframe 网页预览,含地址栏和导航按钮 | | `frontend/src/components/workspace/messages/markdown-content.tsx` | Streamdown 渲染 Markdown (GFM + Math + Raw HTML + KaTeX) | | `frontend/src/core/utils/files.tsx` | 140+ 扩展名→语言映射,文件图标/类型判断 | #### 后端 | 文件 | 职责 | |------|------| | `backend/.../thread_state.py` | ThreadState.artifacts 列表 + merge_artifacts 去重 reducer | | `backend/.../present_file_tool.py` | present_files 工具 — 标准化路径,返回 Command(update) | | `backend/.../paths.py` | 路径管理:threads/{id}/user-data/{workspace,uploads,outputs} | | `backend/app/gateway/routers/artifacts.py` | FastAPI 路由:GET 产物文件,MIME 检测,安全处理 | ### 1.3 支持的内容类型 | 类型 | 渲染方式 | |------|----------| | 代码文件 (140+ 扩展名) | CodeMirror 只读 + 语法高亮 | | Markdown (.md) | Streamdown (GFM + Math + KaTeX + Raw HTML) | | HTML (.html/.htm) | 沙箱 `