多Agent工作流开发

作者:字节逆旅日期:2026/4/2

最近 OpenClaw、Claude Code 特别火,我当时就在想,能不能写个自己的Agent,让它自动根据我的需求文件干活?比如我改个 tasks.md,它就自动跳出来把代码写了。这不比怼着ide开发高级多了?

最开始的想法非常简单粗暴:用 Node.js 写个脚本,利用 chokidar 盯着一个 todo 文件夹。只要文件一变,脚本就通过 child_process 里的 exec 去调 claude 命令。

初版脚本核心逻辑:

1const chokidar = require('chokidar');
2const { exec } = require('child_process');
3
4chokidar.watch('./todo/tasks.md').on('change', () => {
5    console.log('检测到需求变动,Claude 准备上工...');
6    exec('claude "根据 tasks.md 写代码"');
7});
8

**翻车现场:**这个版本跑起来简直是“盲人摸象”。因为 exec 是在后台静默运行的,我完全看不见 Claude 输出了啥。最尴尬的是,之前Claude 经常会问我“是否允许写入文件?”或者“是否运行测试?”,但这里我看不见窗口,没法点 y,结果它等不到输入直接报错退出。


进阶之路——从“盲人摸象”到“多窗接力”

既然 Agent 需要交互,那就给它“名分”——直接弹出独立的命令行窗口。

我意识到,在 Windows 下必须用 start 命令来调起新的交互界面。同时,为了让流程可控,我引入了“文件接力”的状态机思想:

  • 01_requirement.md 存在 -> 触发 需求 Agent -> 生成 02_todo.md
  • 02_todo.md 存在 -> 触发 代码 Agent -> 产出代码并生成 03_dev_log.md

进化后的脚本逻辑:

1function launchAgent(name, command, nextFile) {
2    if (isAgentRunning) return; // 加锁,防止重复弹窗
3    isAgentRunning = true;
4
5    const fullCommand = `start /wait cmd /k "${command}"`; 
6
7    exec(fullCommand, (error) => {
8        isAgentRunning = false; 
9        if (!error && nextFile) {
10            // 只有窗口关闭后,才生成下一个阶段的 MD 文件
11            fs.writeFileSync(nextFile, '# 下一步任务已就绪'); 
12        }
13    });
14}
15

**新的挑战:**虽然能看到窗口了,但 start /wait 意味着我必须手动关掉上一个窗口,下一个才会弹出来。而且这种“单向终点”的逻辑很难搞迭代,我想加个需求,还得手动去文件夹里删文件重来,非常不程序员。


终极形态——版本化迭代与“对话式”需求收集

为了实现真正的生产力,我决定引入**“版本化思维”“双轨并行”**机制。

1. 自动版本管理脚本不再盯死一个文件,而是扫描 v1, v2, v3...。系统始终以版本号最大的文件作为当前活动任务。

**2. 需求收集器 (Collector)**专门开一个常驻窗口,我就像平时聊天一样跟它说:“我想加个功能”。它确认明白后,自动帮我创建下一版的 v(N+1)_requirement.md

3. 增量上下文指令在指令里强制加入“结合之前版本的记录”和“增量开发”的提示。

终极版核心架构:

1// 核心逻辑:始终盯住当前最高版本 vN
2function orchestrate() {
3    const v = getCurrentMaxVersion();
4    const prefix = `v${v}_`;
5
6    // 只要 vN_requirement 出来了,Req-Agent 自动弹窗分析清单
7    if (hasFile(`${prefix}requirement.md`) && !hasFile(`${prefix}todo.md`)) {
8        launchAgent('Req-Agent', `claude "分析 ${prefix}requirement,写出 v${v} 的清单"`);
9    }
10
11    // 只要清单出来了,Coder-Agent 自动接力
12    if (hasFile(`${prefix}todo.md`) && !hasFile(`${prefix}dev_log.md`)) {
13        launchAgent('Coder-Agent', `claude "根据清单进行增量开发"`);
14    }
15}
16
17// 专门的需求录入窗口,实现“对话生版本”
18function maintainCollector() {
19    const nextV = getCurrentMaxVersion() + 1;
20    launchAgent('Collector', `claude "我是您的需求助手,请描述 v${nextV} 的需求"`);
21}
22

写在最后:

从最开始一个简单的 exec 报错,到最后折腾出这套版本化流水线,我最大的感悟是:不要试图把 AI 关在后台当苦力,那怕你用cli也要可以看到它的工作流程,毕竟背锅的还是人。AI 更像是一个“非常有能力但需要盯着看”的初级开发。我们要做的不是取代沟通,而是用脚本优化或者固化沟通的路径,这其实就是工作流的思想。还可以继续迭代,你可以拆分你工作中实际步骤,然后用agent去替代它,这个小小的工作流能爆发出的生产力绝对超乎想象。

上面涉及的源码只是一个思路,差不多是伪代码,如果想要我的完整代码,关注我的公众号,私信发:多Agent源码即可。


多Agent工作流开发》 是转载文章,点击查看原文


相关推荐


利用 Cloudflare 邮件路由实现无限子邮箱配置指南
墨风如雪2026/3/24

上几期文章我介绍了怎么把域名托管到CLoudFlare和免费白嫖CF CDN的操作,这次我演示的是我日常最喜欢的功能之一,邮箱路由功能。可以只需要一个域名就可以拥有属于自己的邮箱,而且可以创建无限的子邮箱提供使用。 在这里你不需要搭建复杂的邮局,只要你有一个托管在 Cloudflare 的域名,就可以用任意的前缀邮箱来注册你想要的账号,所有邮件都会自动转发到你指定的主邮箱里面,接收验证码会非常的方便。 强大的开源资源库 在正式配置之前,我这里先介绍一个收集了十分多使用CLoudFlare免费资源


告别登录中断:前端双 Token无感刷新
发现一只大呆瓜2026/3/16

前言 在前后端分离的项目中,为了安全,Token 通常会设置有效期。但如果 Token 过期时强制用户重新登录,会极大地破坏用户体验。如何做到在用户毫无察觉的情况下,自动完成 Token 的续期?本文将深度拆解 “双 Token 无感刷新” 的实现机制。 一、 为什么需要“无感刷新”? 举个简单例子,你正在某 App 编辑内容,中途切出几分钟,再切回来时,直接弹出登录页,提示“登录已过期,请重新登录”,这种场景很容易让用户流失。 传统的单 Token 方案存在一个两难境地: 有效期过短:用户操


构建无障碍组件之Switch Pattern
anOnion2026/3/8

Switch Pattern 详解:构建无障碍开关组件 开关(Switch)是一种模拟物理开关的控件,用于在两个状态(通常是"开"和"关")之间切换。在一些 UI 组件库中,它也被称为 Toggle(切换开关)。本文基于 W3C WAI-ARIA Switch Pattern 规范,详解如何构建无障碍的开关组件。 一、Switch 的定义与核心概念 1.1 什么是 Switch Switch 是一种特殊的二元状态控件,它: 模拟物理开关的行为 在两个互斥状态之间切换(开/关、启用/禁用) 与


纯 CSS 实现弹性文字效果
掘金安东尼2026/2/28

原文:How to Create a CSS-only Elastic Text Effect 翻译:TUARAN 欢迎关注 前端周刊,每周更新国外论坛的前端热门文章,紧跟时事,掌握前端技术动态。 每个字母单独动画的文字效果总是很酷、很吸睛。这类错峰动画通常依赖 JavaScript 库实现,对我们要实现的这种相对轻量的设计效果来说,代码往往偏重。本文将探索只用 CSS、无需 JavaScript 实现 fancy 文字效果的技巧(意味着需要手动拆分字符)。 截至撰写时,仅 Chrome 和


LiteOps:轻量级CI/CD平台,重塑开发运维新体验
YL_jia2026/2/19

LiteOps:轻量级CI/CD平台,重塑开发运维新体验 在效率至上的时代,LiteOps正以“简洁易用”和“开箱即用”的理念,重新定义自动化部署流程。 一、LiteOps:为何成为开发运维的新宠? 在软件开发的快速迭代中,持续集成和持续部署(CI/CD) 已成为提升开发效率和软件质量的关键手段。 然而传统CI/CD工具往往配置复杂、学习曲线陡峭。LiteOps作为一个专注于实用性的轻量级CI/CD平台,应运而生,它开源免费,能够为开发团队提供高效、便捷的自动化构建和部署解决方案。 1.1


BLE协议栈:链路层与ATT/L2CAP的交互详解
mftang2026/2/11

目录 概述 1  整体交互架构概览 1.1 交互流程总览 1.2 数据平面:PDU传输流程 1.2.1  发送路径:从ATT到空中 1.2.2 接收路径:从空中到ATT 1.3 控制平面:连接与参数管理 1.3.1 连接生命周期交互 1.3.2 关键参数协商流程 1.4 事件与通知机制 1.4.1 链路层事件驱动模型 1.4.2  ATT通知/指示与链路层交互 1.5 性能优化交互 1.5.1 数据长度扩展交互(BLE 4.2+) 1.5.2 信道选择算法 1


2026 年或许是中国 AI 社交的元年~
苍何2026/2/2

这是苍何的第 478 篇原创! 大家好,我是苍何。 网上你们经常在哪儿聊天啊? 我妈说在抖音,我弟说在陌陌,但其实我们都是在微信里聊的这个问题。 我自己建了几十个微信群,还加入了一堆的群聊,每天光看信息,就得费我半天老命。 为此,我基于 Ipad 协议开发过微信 AI 助手,能总结群聊消息,能帮回复问题,帮做任务,2021 年卖给了麻省理工学院社团。 一开始,我以为,我能用 AI 助手解决这些问题,但后面,还是避免不了被各种封号,最痛苦的是,我的群直接就被一锅端了。 所以,后面,我没再折腾微信


多网卡如何区分路由,使用宽松模式测试网络
venus602026/1/23

一、什么是 Linux 的“非对称路由” 1️⃣ 定义(先给结论) 非对称路由指的是: 数据包从 A 网卡进来,但回包却从 B 网卡出去 在多网卡、多出口服务器上非常常见,比如: 双网卡 多默认网关 同一台服务器连多个网络 你之前的情况就是典型的非对称路由。 2️⃣ Linux 默认为什么不喜欢非对称路由? 因为它可能意味着: IP 欺骗(spoofing) 流量劫持 路由异常 所以 Linux 默认启用了一个安全机制: 👉


三分钟说清楚 ReAct Agent 的技术实现
indieAI2026/1/15

ReAct Agent 技术实现主要依赖于精心设计的 Prompt 模板、输出解析器和执行循环三大核心机制。 1. 核心 Prompt 工程 LangChain 使用特定的 Prompt 模板引导 LLM 按 Thought → Action → Observation 格式输出: # 简化的 Prompt 结构 template = """ 用以下工具回答问题: 工具: - search: 搜索引擎, 输入: "查询词" - calculator: 计算器, 输入: "算式" 现在开始


基于 Squoosh WASM 的浏览器端图片转换库
jump_jump2026/1/7

在 Web 开发中,图片处理是一个常见需求。传统方案要么依赖服务端处理,要么使用 Canvas API,但前者增加服务器负担,后者在压缩质量上不尽人意。Google 的 Squoosh 项目提供了基于 WASM 的高质量图片编解码器,但直接使用比较繁琐。 于是我封装了 use-squoosh,一个零依赖的浏览器端图片转换库,通过 CDN 按需加载编解码器,开箱即用。 为什么需要这个库 现有方案的局限性 方案优点缺点服务端处理稳定可靠增加

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 XYZ博客