资讯动态

ChatDev 2.0 如何上传文件附件、在执行中引用并下载 Session 产物?

发布时间:2026/9/10 22:09:51 来源:尧图企业网站定制
ChatDev 2.0 如何上传文件附件、在执行中引用并下载 Session 产物【免费下载链接】ChatDevChatDev 2.0: Dev All through LLM-powered Multi-Agent Collaboration项目地址: https://gitcode.com/GitHub_Trending/ch/ChatDev在 ChatDev 2.0DevAll中运行工作流时常见的任务链路是把数据文件、图片、需求文档等作为**附件Attachment上传让 Agent 节点在执行中引用它们运行结束后把节点生成的工件Artifact**或整个 Session 产物下载回来。界面操作由 Web UI 完成自动化场景则走 REST/WS 接口。本文基于仓库内的附件与工件 API 指南与Web UI 快速入门指南给出这两条路径的完整操作方式和验证方法。前提条件前后端服务已启动后端为uv run python server_main.py前端为npm run dev浏览器访问http://localhost:5173进入 Web UI以上启动方式来自 Web UI 指南的故障排查表。在 Web UI 中上传附件并启动工作流主操作在Launch View启动页选择工作流从左侧列表选择yaml_instance/目录下的 YAML 文件。上传附件可选点击输入框旁的上传按钮添加文件文档示例为 CSV 数据、图片等。也可以直接把文件拖拽进输入区或在输入框中粘贴文件前端 LaunchView.vue 实现了按钮、拖拽、粘贴三种入口。上传成功后按钮旁会显示已上传数量悬停可见文件列表单个文件可点×移除。输入任务提示Task Prompt在文本框中输入指导工作流执行的提示词。点击 Launch启动执行。两个界面约束需要注意见 LaunchView.vue 的实现上传按钮要求 WebSocket 已连接且 Session 已创建否则按钮处于禁用态工作流正在执行时只有在状态为Waiting for input...即human节点等待人工输入时才允许上传附件其余执行阶段上传入口不可用。点击 Launch 后前端把已上传文件的attachmentId列表放入执行请求的attachments字段。对应后端接口为POST /api/workflow/execute请求体包含yaml_file、task_prompt、session_id、attachments见 models.py 的WorkflowRequest与 execute.py。根据 API 文档attachments与task_prompt需要同时提供——即便你只是想上传文件也要带一个非空的task_prompt。在 human 节点交互中追加附件当工作流执行到human节点时界面会暂停并显示输入提示。此时输入框旁的上传按钮同样可用填写审阅意见或操作指令、上传附件后提交即可继续执行。前端提交的是 WebSockethuman_input消息其中data.attachments为附件 ID 数组消息内容中会列出附件名称以便核对LaunchView.vue。这与 REST 路径的规则一致human_input中引用附件时也必须带task_prompt文本。附件在执行中如何被引用上传不是“存个文件”就结束。按附件 API 文档与运行服务实现文件的生命周期是上传落盘文件写入WareHouse/session/code_workspace/attachments/并在attachments_manifest.json中记录source、workspace_path、storage等字段code_workspace即 Python 节点共享目录。注入任务输入启动执行时WorkflowRunService 用build_attachment_blocks把attachment_id解析为消息块按 MIME 推断 image/audio/video/file 类型与task_prompt一起构建为初始任务输入交给图执行器。运行期注册新文件Python 节点或工具可调用AttachmentStore.register_file()把 workspace 中新生成的文件注册为附件WorkspaceArtifactHook会将其同步到工件事件流前端输出面板实时可见。保留策略默认保留所有附件便于运行结束后下载。若希望自动清理设置环境变量MAC_AUTO_CLEAN_ATTACHMENTS1它只在 Session 完成后删除attachments/目录。下载 Session 产物界面按钮与 API方式一Web UI 的 Download 按钮执行完成后点击右侧输出面板的Download按钮下载完整的 Session 压缩包包含context.json、附件、日志等。输出面板在执行期间也会实时展示节点生成的工件与执行日志、节点输出共用同一面板。方式二REST 接口逐项获取适合 CLI 或自动化脚本接口见 artifacts.py 与 sessions.py1. 实时获取工件事件长轮询# wait_seconds、after、include_mime、include_ext、max_size、limit 均为可选 Query 参数 # 例如只关心 json/png 文件 curl http://localhost:8000/api/sessions/session_id/artifact-events?include_extpng,jsonlimit10响应含events[]、next_cursor、has_more、timed_out。每条事件带artifact_id、attachment_id、node_id、path、size、mime、hash、timestamp文档示例{ artifact_id: art_123, attachment_id: att_456, node_id: python_runner, path: code_workspace/result.json, size: 2048, mime: application/json, hash: sha256:..., timestamp: 1732699900 }WebSocket 会镜像该事件类型artifact_created前端即靠它刷新附件列表。2. 下载单个工件# meta仅元数据stream返回文件内容downloadtrue 时附带 Content-Disposition curl http://localhost:8000/api/sessions/session_id/artifacts/artifact_id?modestreamdownloadtrue3. 打包下载整个 Sessioncurl -OJ http://localhost:8000/api/sessions/session_id/download该接口把WareHouse/session/打包为 zip 一次性下载不会删除服务器上的原文件如需归档或清空需要部署者另行用 cron/job 策略处理。验证与故障排查上传是否成功POST /api/uploads/{session_id}成功时返回attachment_id、文件名、MIME 与大小文档示例响应含att_bxabcd实际值每次不同。拿到 ID 后可用GET /api/uploads/{session_id}列举该 Session 的全部附件元数据核对。工件事件是否到达确认 WebSocket 已连接若断开可在 REST 事件接口中用after游标重拉。下载链接 404检查session_id拼写仅允许字母、数字、-、_并确认 Session 目录未被清理。附件 API 文档给出的常见问题表问题排查步骤上传 413 Payload Too Large调整反向代理或 FastAPIclient_max_size确认磁盘配额下载链接 404确认session_id拼写仅允许字母/数字/_-检查 Session 是否已被清理工件事件缺失确认 WebSocket 是否连接或在 REST 事件接口中使用after游标重拉附件未在 Python 节点可见检查code_workspace/attachments/是否被清理、或_context[python_workspace_root]是否正确关于大小限制后端未硬编码附件大小上限需要在反向代理设置client_max_body_size、max_request_body_size或在自定义分支的AttachmentService.save_upload_file中添加校验。文件类型基于 MIME 推断消息块类型可结合事件接口的include_mime过滤。生产部署还应在校验层确认调用者身份避免越权下载——附件 API 的权限边界依赖 Session ID。两条路径怎么选界面路径适合日常使用上传、Launch、human 节点追加、Download 按钮都已完成接口对接你不需要记忆任何 URL。API 路径适合两类场景一是脚本化批量运行运行结束后调用/download拉取 zip或结合artifact-events的include_ext只取特定文件二是自定义前端按文档建议用artifact-events长轮询或 WebSocket 实时刷新附件列表并在节点成功后提供“下载全部”入口。文档同时说明一般场景下前端会自行处理附件/工件交互直接调用 API 属于高级用法。【免费下载链接】ChatDevChatDev 2.0: Dev All through LLM-powered Multi-Agent Collaboration项目地址: https://gitcode.com/GitHub_Trending/ch/ChatDev创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价