ChatDev IDE进阶技巧:用JavaScript脚本编排多Agent协作,让PromptFlow更聪明
【免费下载链接】chatdevChatDev IDE is an tools for building your ai agent, Whether it's NPCs in games or powerful agent tools, you can design what you want for this platform.项目地址: https://gitcode.com/gh_mirrors/cha/chatdev
ChatDev IDE 是一款基于浏览器的 AI Agent 开发工具,通过可视化的 PromptFlow 编排引擎,让你用 JavaScript 脚本轻松编排多 Agent 协作,打造游戏 NPC 或强大的 Agent 工具。本文教你 5 个进阶技巧,让你的 PromptFlow 从“能跑”变得“聪明”。
PromptFlow 是什么:YAML + JavaScript 的双引擎架构
在 ChatDev IDE 里,你的 Agent 本质上是一张有向无环图(DAG):每个节点可以是 Prompt、JavaScript 函数、URL 或文档节点,节点之间通过输入/输出依赖连接,由 PromptFlow 执行引擎按拓扑顺序驱动。
这套编排由三部分构成:
- YAML 描述层:定义
desc(描述)、tips(提示语)、outputs(最终输出引用)和nodes(节点列表) - JavaScript 脚本层:任意节点都可以通过
func字段挂接一段 JS 逻辑 - 可视化层:YAML 一改,右侧画布实时刷新,执行到哪个节点,哪个节点就会高亮变色
可视化刷新逻辑可以在 PromptFlow.tsx 中看到,而真正驱动每个节点执行的入口是 ConversationPanel.tsx 中的promptflowSubmit方法——它把 YAML、提示词库和用户输入一起交给执行引擎。
技巧一:用 roles 字段定义多 Agent 协作流水线
想让多个 Agent 分工协作,最直观的方式就是在 YAML 里声明roles。ChatDev 内置的默认流程就是一个教科书级的多 Agent 协作示例:从首席产品官(拆解需求)→技术官(设计方案)→程序员(写代码)→代码评审员(审查修改),一路传递到最终输出节点。
这段默认流水线的完整定义存放在提示词库 chatdev_gpts_all.json 中,你可以直接参考它的roles结构来组织自己的团队。
💡进阶建议:角色数量不是越多越好。每个 role 都会触发一次 LLM 调用,3~5 个职责清晰的 Agent 通常是效率和成本的最佳平衡点。
技巧二:给节点挂接 JavaScript 函数(func 字段)
这是让 PromptFlow 变聪明的核心能力:在节点的source里写上func: 函数名,这个节点就不再是纯 Prompt 调用,而是可以执行任意 JS 逻辑——解析网页、抽取数据、拼装参数,统统可以。
以“Chat With Twitter”这个内置 Agent 为例,它先用type: url拉取 RSS 数据,再用 JS 函数Func_twitter做清洗,最后才交给 LLM 总结:
nodes: - name: get_twitter type: url source: code: "https://rsshub.app/rattibha/user/OpenAI" func: Func_twitter inputs: task: ${inputs.input_text} - name: ask_twitter source: path: Planning_Prompt_Twitter inputs: info: ${get_twitter.output} task: ${inputs.input_text}更妙的是,ChatDev 为 JS 节点准备了完整的执行上下文:
node代表当前节点对象,node.output是待处理内容,你还可以往节点对象上挂载任意附加字段- 已预装jQuery和Readability库,网页正文抽取开箱即用
- 完整模板见提示词库中的
Action_Editor_Generate_Prompt_JS(chatdev_gpts_all.json)
技巧三:用 ${} 引用实现节点间数据传递
PromptFlow 里所有节点都可以通过${节点名.output}拿到上游结果,通过${inputs.input_text}拿到用户输入。这就是 DAG 的数据流。
常用的节点类型:
| 节点类型 | 说明 | 典型用途 |
|---|---|---|
| 无 type(默认) | Prompt 节点,由 LLM 执行 | 推理、生成、总结 |
type: url | 抓取网页并由 JS 函数处理 | 获取 API / RSS 数据 |
type: doc | 加载文档(如 PDF) | 文档问答、知识库检索 |
一个典型的“PDF 问答”流程:load_the_pdf(doc 节点加载文档)→chat_with_pdf(Prompt 节点基于文档内容回答),完整定义可参考 chatdev_gpts_all.json。
技巧四:让 AI 替你写 YAML 和 JavaScript
自己写 YAML 有门槛?ChatDev 内置了两个“元 Agent”:
Action_YAML_Generate_Yaml:输入一句需求(如“帮我做一个竞品分析 Agent”),直接生成完整可用的 YAML 流程Action_YAML_Generate_Prompt:帮你生成节点对应的 JavaScript 代码
这两个“AI 写 AI 配置”的能力由 ConversationPanel.tsx 自动切换执行,在编辑器开启“自动生成”后,你的输入会被先送入生成流程,产出结果直接回填到 YAML 编辑器中。
配合编辑器的 YAML 语法高亮和自动补全(NPC 名称与提示词库都会自动提示),迭代效率非常高。
技巧五:从 Agent 社区导入优秀 Agent,站在巨人肩膀上
不想从零开始?ChatDev 提供Agent Community(Agent 社区),可以直接导入他人分享的优秀 Agent;你也可以把自己编排好的流程一键导出为 JSON 文件(包含 Prompt、JS 函数和 YAML),分享给其他设备。
本地提示词与 Prompt 的管理逻辑在 prompts.ts 中实现,导入导出相关代码见 export.ts。在地图模式下,你还可以用 GameModeView.tsx 对应的游戏窗口,把你的 Agent 部署成 AI 小镇里可交互的 NPC——
常见问题速查
- YAML 改了画布没更新?检查缩进和
${}引用是否写错,YAML 语法错误会显示在画布下方,处理逻辑见 PromptFlow.tsx - 想调试某个节点的输出?双击画布中的节点即可打开右侧 Prompt 编辑器,执行过程中节点会实时高亮
- 想限制流程走向?DAG 结构天然保证无环,用
outputs.reference指向最终节点即可控制产出 - JS 里能用什么?标准 JavaScript + jQuery + Readability,
node.output是主输入
小结
掌握这 5 个技巧,你的 PromptFlow 就具备了完整的进阶能力:roles 组织多 Agent 分工 → func 注入 JavaScript 逻辑 → ${} 串联数据流 → AI 自动生成配置 → 社区共享加速启动。ChatDev IDE 把提示词工程从“写一段话”升级成了“编排一个系统”,这正是构建下一代 AI Agent 的正确姿势。🚀
【免费下载链接】chatdevChatDev IDE is an tools for building your ai agent, Whether it's NPCs in games or powerful agent tools, you can design what you want for this platform.项目地址: https://gitcode.com/gh_mirrors/cha/chatdev
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考