惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

O
OpenAI News
I
InfoQ
云风的 BLOG
云风的 BLOG
博客园 - 【当耐特】
D
DataBreaches.Net
H
Help Net Security
爱范儿
爱范儿
F
Fortinet All Blogs
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
N
Netflix TechBlog - Medium
WordPress大学
WordPress大学
GbyAI
GbyAI
宝玉的分享
宝玉的分享
Martin Fowler
Martin Fowler
博客园_首页
C
Check Point Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
G
Google Developers Blog
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
M
MIT News - Artificial intelligence
Recent Announcements
Recent Announcements
P
Proofpoint News Feed
L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志
V
V2EX
MyScale Blog
MyScale Blog
Recorded Future
Recorded Future
B
Blog
J
Java Code Geeks
T
The Blog of Author Tim Ferriss
Jina AI
Jina AI
博客园 - Franky
B
Blog RSS Feed
The GitHub Blog
The GitHub Blog
量子位
博客园 - 叶小钗
Hugging Face - Blog
Hugging Face - Blog
Cyberwarzone
Cyberwarzone
Google Online Security Blog
Google Online Security Blog
SecWiki News
SecWiki News
V
Vulnerabilities – Threatpost
AWS News Blog
AWS News Blog
Cisco Talos Blog
Cisco Talos Blog
G
GRAHAM CLULEY
T
Tor Project blog
腾讯CDC
美团技术团队
Application and Cybersecurity Blog
Application and Cybersecurity Blog
N
News and Events Feed by Topic

博客园_首页

Linux实操--组管理、权限管理和定时任务 Java + EasyExcel 实现单个接口导出多个Excel Mem0 源码解析系列(二):提示词工程的深度剖析 Openclaw TaskFlow究竟是什么?和普通Skill技能有什么区别 博文阅读密码验证 - 博客园 嘉立创开源:应该是全网MicroPython教程最多的开发板 Hermes Agent 集成实践:从协议到生产 2026年AI编程工具横评:Cursor、Codex、Claude Code、Zed、Windsurf Java程序员必看的RAG入门教程 2026 AI效率神器:Superpowers + Claude Code 保姆级教程 本地大模型部署全攻略:从 0 到 1 玩转 Ollama 【从0到1构建一个ClaudeAgent】内存管理-上下文压缩 .NET 高级开发 | 设计、实现一个事件总线框架 电子小白入门之NE555 3. WorkBuddy:隐藏玩法,一键召唤专家,让 AI 以"专家身份"给你干活 和AI一起搞事情#3:Claude Teammate 游戏开发翻车实录 【OpenClaw】通过 Nanobot 源码学习架构---(7)Memory C# .NET 周刊|2026年3月3期 我在 Debian 11 上把 K8s 单机搭起来了,过程没你想的那么顺(/opt 目录版) 深度学习进阶(七)Data-efficient Image Transformer CLI+Skill搭建浏览器AI自动化框架,告别一切重复枯燥任务 告别Token账单无底洞:OpenClaw本地部署,重塑企业数据主权的唯一解 FastAPI+Vue:文件分片上传+秒传+断点续传,这坑我帮你踩平了! SBTI 爆火后,我做了个程序员版的 CBTI。。已开源 + 附开发过程 多模态检索开始进入工程期:用 Sentence Transformers 搭建可落地的 Multimodal RAG 100多行代码实现一个最简单的Agent(用ReAct) Claude Code 通关手册(八):推荐 5 个 Hooks,代码质量提升 3 倍 老板:“有人截图了!”。安全部门:“收到,马上查暗水印!” - why技术 技术之外,皆是人间 C#/.NET/.NET Core技术前沿周刊 | 第 69 期(2026年4.01-4.12) Snack JSONPath 项目架构分析 Claude Code Buddy 小析:一个非核心功能,如何体现产品的细节完成度 AI新时代下的图床管理方案-Cloudflare图床+MCP+Skills方案指南 化繁为简:顺丰速运App如何通过 HarmonyOS SDK实现专业级空间测量 从零实现富文本编辑器#13-React非编辑节点的内容渲染 AI开发-python-langchain框架(3-23-OpenAI Functions风格Tool Calling智能助手) .NET + AI 进阶实战:基于类的技能开发 - 打造可治理的 Agent 能力模块 【从0到1构建一个ClaudeAgent】规划与协调-技能 上周热点回顾(4.6-4.12) 电子小白的工具三件套:面包板、杜邦线、万能板 单表五亿数据的查询优化 | Mysql、StarRocks 2. WorkBuddy:从“我是谁”到“帮我干活” C# 如何减少代码运行时间:7 个实战技巧 基于HelixToolkit.SharpDX 渲染3D模型 - 笺上知微 从零开始的双臂具身VLA起源及现阶段发展综述 - SkyXZ 记对 xonsh shell 的使用, 脚本编写, 迁移及调优 - pluvium27 受够了Vibe Coding的失控?换个起点,让AI事半功倍 从开始配置漏洞环境到漏洞复现流程 - 難しい 关于10年工作经验的程序员对OpenClaw的实战经验分享以及看法 - 虚无境 Any metadata 的内存布局 C# .NET 周刊|2026年3月2期 - InCerry 我帮你测过了,测试圈排名第二的 Skill 依然很牛逼 Skill Discovery | 无监督技能发现的经典工作总结 - MoonOut PbootCMS 网站内容数量多导致访问慢?这些实用优化方案帮你提速! - 家兴网络技术工作室 上下文工程是什么?过时了么?一文讲明白! - 一枫说码 网站漏洞怎么发现并修复?一篇实用指南(附完整流程) - 家兴网络技术工作室 开了 TUN 模式还是直连?90% 的人都踩过这个坑 Github日报|2026年04月12日 - AI一族 AScript扩展多种脚本语言 - rockey627 AI 学习笔记:Agent 的记忆机制 你能被装进一个文件里吗?——7 万人把同事"蒸馏"成了 AI - 我没有三颗心脏 Claude Code 通关手册(七):给 AI 装上技能包——Skills 完全指南 - 暮色之狐 在浏览器中快速编辑代码:VSCode Web 集成实践 - Newbe36524 蒸馏自己 skill?基于 Deepseek 的蒸馏器,丐版蒸馏方式,简单便捷 - To_Carpe_Diem Spring AI Aliababa和AgentScope,哪个更好? - 苏三说技术 Etsy 把 1000 个 MySQL 分片迁进 Vitess:425TB 数据背后的真正问题不是性能,而是运维规模 MicroPython LVGL基础知识和概念:底层渲染与性能优化 - FreakStudio 数据库草图算法 Python 潮流周刊#146:CPython 引入 Rust 的进展 - 豌豆花下猫 最小生成树 - mofei1116 红日靶场七:从外网入口、容器逃逸到 AD 接管的完整利用链复盘 - YouDiscovered1t 分享四款开源且实用的 Kafka 管理工具 - 追逐时光者 vLLM 权重加载机制全解析:从挑战到理想架构 LCT 学习笔记 - ACehomoxue Avalonia UI 12.0.0 正式发布:架构演进和性能飞跃 - 张善友 当 AI Agent 把调用链拉长,延迟开始成为一门生意 conhost.exe 无法显示 U+2717 - 145a 太秀了,我把自己蒸馏成了 Skill!已开源 - 程序员鱼皮 ASP.NET Core 内存缓存实战:一篇搞懂该怎么配、怎么避坑 基于 Ghostty 带有分割标签页和为 Claude 编程设计的通知终端 - BugShare AI 焊死入口:教育的“操作系统级”重塑 - 郝hai 初级Java开发工程师使用sql脚本编写代码的过程是简单而且不糊涂 - CoderOilStation Claude Code通关手册(六):MCP协议完全指南 - 暮色之狐 边框灯光环绕动画特效实现指南 - Newbe36524 开源:子木蒸馏版的 SEO 审计工具 seo-audit-skill v1.0 我所理解的Python元模型 【从0到1构建一个ClaudeAgent】规划与协调-TodoWrite - 程序员Seven Claude 和 Codex 在审计 Skill 上性能差异探究 - ACai_sec AScript如何实现中文脚本引擎 - rockey627 【渗透测试】HTB Season10 Garfield 全过程wp - dynasty_chenzi Android 开发者为什么必须掌握 AI 能力?端侧视角下的技术变革 树状数组正确性证明 - AC-wyr 你的 AI 焦虑,可能比 AI 本身更危险——ATM 机没有消灭银行柜员,但恐慌消灭了你的判断力 - 我没有三颗心脏 一个拉胯的分库分表方案有多绝望?整个部门都在救火! - 冰河团队 动态规划入门必学之走方格问题 - Ofnoname PostgREST 与 PostgreSQL 角色权限配置全解析(生产级实践) - SheepDog1998 使用 UEFI 图形输出协议 GOP 在屏幕上显示图像的方法 - 阿源- Claude Code通关手册(五):组建你的AI专家团队,子代理系统 - 暮色之狐 一个程序员到架构师的催婚路之感悟(整整10年后的催婚相亲感悟) - MisterLip 用 Agent Skill 自动生成工作周报 - 赵康
Agent Workflow Runtime 架构拆解:把 Agent Loop 从提示词搬进代码,长任务才真正稳了
AI小老六 · 2026-06-15 · via 博客园_首页

拆解 Workflow Runtime 如何用代码接管 Agent Loop,让长任务更稳定、可复盘、可复用。
原文链接AI 小老六

导语

过去一两年,很多人都在想同一个问题:Agent 为什么一到长任务就开始飘?

单轮问答里,模型很聪明。给它一个目标、几条约束、几个工具,它经常能给出不错的结果。可一旦任务变长,事情就没那么体面了。它要记住阶段,要判断下一步,要用工具,要验收结果,还要在失败时绕回来。所有这些动作如果都压在一次对话里的 instruction following 上,流程迟早会松。

这就是 Loop Engineering 值得被认真讨论的原因。它并不是再发明一种更会写 prompt 的方法,而是把一类任务的执行方式重新摆放:流程不再藏在模型临场推理里,而是被编译成一段可以执行、可以观察、可以复用的 ​Workflow Script​。代码负责走路,模型负责在几个需要判断力的位置上出手。

Boris Cherny 那句 "I don't prompt Claude anymore. I have loops running that prompt Claude" 之所以有分量,就在这里。重点已经从“我怎么提示模型”转到“什么样的 loop 在替我提示模型”。

ReAct 的软肋:流程全靠模型临场维持

ReAct 的设计很漂亮:模型先 reason,再 act,再 observe,然后继续 reason。它自己就是那个 loop。
mermaid-01.png

图:ReAct 将推理、行动和观察都交给模型临场维持

这套范式适合探索。任务边界模糊、用户随时改主意、路径无法提前确定时,让模型自己在循环里调整,确实省事。Skill 也正是服务这类模式的:它给模型一份说明书,告诉模型遇到某类任务大概怎么走。

问题出在稳定交付。

ReAct 里,阶段顺序、工具选择、错误恢复、是否遗漏检查项,都要靠模型当场理解并坚持执行。模型每一步都在读说明、做判断、更新路线。一次跑通不难,跑十次还保持同样的结构就难了。更麻烦的是复盘:结果错了,你很难准确指出是哪一步偏了,因为执行路径本身就在模型的上下文里漂。

所以 ReAct 的成本不只是 token 或模型价格。真正贵的是把整个流程交给模型的运行时自觉。

Dynamic Workflow:先生成脚本,再让脚本调模型

Dynamic Workflow 换了一种摆法。它先用强模型把任务拆成一段 ​Workflow Script​,脚本里写清楚阶段、并行、循环、分支、验收和日志。等真正执行时,流程控制由代码完成,模型只在被显式调用的位置出现。
mermaid-02.png

图:Dynamic Workflow 用脚本接管流程控制,只在关键节点调用模型

这里的"Dynamic"很关键。脚本不是工程师提前手写死的 pipeline,而是模型按当前任务现场生成的。生成之后,它又不再是飘在对话里的自然语言,而是一段普通代码:能改、能存、能重跑。

这带来一个直接收益:强模型只需要在“生成脚本”时出场一次。后续执行时,orchestration agentsub-agent 可以使用更便宜、够用的模型,因为它们不再需要靠超强 instruction following 维持整条流程。结构已经在代码里了。

换句话说,Workflow 不是用代码取代模型。它只是把"谁负责结构"这件事说清楚:确定的骨架归代码,不确定的判断归模型。
inline-01-runtime-structure.png

图:Workflow Runtime 用确定性结构承载 Agent 的开放判断

Skill 和 Workflow 的分界:谁来保管结构

Skill 与 Workflow 看起来都在指导 Agent 做事,但它们的工程含义完全不同。

维度 Skill Dynamic Workflow
结构位置 写在自然语言说明里,运行时由模型理解 写在脚本控制流里,运行时按代码执行
执行路径 每次可能不同,模型临场决定 阶段、分支、循环显式固定
对模型要求 高,需要持续遵守说明 低,模型只处理被调用的子任务
复盘方式 难以还原完整路径 日志、状态和阶段都可追踪
适合任务 探索性强、边界模糊、临时性任务 阶段清楚、有验收标准、会反复执行
成本结构 往往依赖强模型全程维持 强模型生成一次,普通模型执行多次

我更愿意把两者看成两种不同的手感。

Skill 像是给一个聪明同事的任务说明。你相信他能看懂,也允许他临场调整。Workflow 像是把一条工作流写进调度系统。它少一点即兴,多一点可控。真实场景里两者会一起出现:先用 Skill 生成 Workflow,再用 Workflow 编排多个 agent。

一个研究型任务怎么被编译成 loop

以"深度研究"为例。用户给一个复杂问题,系统先快速扫一遍背景,再规划子课题,并行研究,合并成稿,审稿,必要时回炉,最后做终验。

如果把它写成 prompt,模型需要自己记住所有阶段。如果把它写成 Workflow,骨架就变成了这样:
mermaid-03.png

图:研究任务被拆成扫描、规划、并行研究、审稿和终验阶段

对应到脚本,大概会长成下面这种形态。这里保留的是机制,不照搬任何具体实现。

export const meta = {
  name: "research-workflow",
  phases: ["scan", "plan", "research", "draft", "review", "finalize"],
}

const query = args.query

phase("scan", "先把问题和背景摸清楚")
const scan = await agent(`
读用户问题,找出核心对象、争议点和需要进一步查证的方向。
问题:${query}
`)

phase("plan", "拆出能并行推进的研究块")
const plan = await agent(`
基于问题和初步背景,设计若干个互不重复的子课题。
每个子课题需要有目标、搜索线索和交付标准。
背景:${scan}
`, `
子课题之间应当边界清楚,合起来能回答原问题。
`)

phase("research", "并行处理子课题")
const findings = await Promise.all(
  plan.map(item => agent(`
围绕这个子课题做研究,输出结论、事实依据、不同观点和不确定性。
子课题:${JSON.stringify(item)}
  `, `
结果必须能支撑最终报告,不能只给泛泛摘要。
  `))
)

phase("draft", "把分散材料合成一篇报告")
let report = await agent(`
把这些研究结果整合成完整报告。先给结论,再展开证据和限制。
材料:${JSON.stringify(findings)}
`)

phase("review", "审稿和回炉")
for (let i = 0; i < 3; i++) {
  const review = await agent(`
检查报告是否回答问题、证据是否够、结构是否顺。
报告:${report}
  `)

  const needRewrite = await assert(`
审稿意见里是否有必须修改的问题?
意见:${review}
  `)

  if (!needRewrite) break

  report = await agent(`
根据审稿意见输出完整新版报告。
旧稿:${report}
意见:${review}
  `)
}

phase("finalize", "最终验收")
const ok = await assert(`
判断这份报告是否可以交付。要求:回答原问题,有证据,限制讲清楚。
报告:${report}
`)

if (!ok) throw new Error("final report failed validation")
return report

这段伪代码里,真正有意思的不是语法,而是边界。

Promise.all 决定并行,for 决定最多回炉三次,if 决定何时跳出,throw 决定失败不静默吞掉。这些都是代码控制流。模型不需要记住"研究完要审稿、审稿不过要重写、最多三轮",脚本会逼着它走。

模型出现的地方只有两类:agent() 干活,assert() 判断。它们被代码点名调用,而不是在流程里自由漂移。

agent() 不是一次调用,而是一道质量门

很多人第一次看 Workflow,会把 agent() 理解成"调一次模型"。这个理解太薄了。

更准确地说,agent(taskPrompt, verificationPrompt?) 是一个带验收标准的 ​worker​。第一个参数告诉它做什么,第二个参数告诉它什么叫合格。实现上,它可以搜索、反思、重试、修正,直到通过内部的 ​verification​,才把结果吐给外层脚本。

这有个很实用的效果:重试逻辑不需要到处写。

外层 Workflow 不必写一堆 retryscorefix 的样板代码。它只需要声明每个 worker 的准出门。worker 自己负责把事情做到能交差。这就把脚本层和工作层拆开了:脚本层管路线,worker 层管产出质量。
inline-02-quality-gate.png

图:agent() ​更像带验收标准的质量门,而不是一次裸模型调用

assert() 则站在更高一级。它不处理某个 worker 的内部质量,而是决定阶段是否能往下走。比如审稿意见是否需要回炉,终稿是否能交付。这里的判断仍然可能由 LLM 完成,但它被包成了一个清晰的布尔信号,能驱动代码分支。

一条可复用 loop 需要哪些部件

把研究任务拆完之后,可以得到一套更通用的检查表。设计 Workflow 时,我会先问这些问题:

部件 设计时要回答的问题
Trigger 这条 loop 被什么启动?用户手动触发、定时任务,还是某个外部事件?
Planner 大任务是否需要先拆解?拆解出来的子任务能不能并行?
State 中间结果放在哪里?变量、文件、数据库,还是外部任务系统?
Workers 哪些部分交给 agent 做?每个 worker 的输入输出是什么?
Evaluator 每个阶段怎么判定过关?用规则、测试,还是 LLM-as-a-Judge?
Loop / Branch 哪些地方允许回炉?最多回几次?失败后是否降级处理?
Stop / Resume 中途断掉怎么办?从哪一步恢复,状态如何校验?
Repeatability 同一脚本重复执行时,哪些差异是允许的,哪些差异必须被记录?

可以把它画成一个更抽象的状态机:
mermaid-04.png

图:长任务 Workflow 的状态、回炉、暂停和失败路径

这张表的价值不在于每条 Workflow 都要凑齐八个部件。简单任务用不上完整的 Stop / Resume,也未必需要复杂 Planner。但只要是长任务,Trigger、Workers、Evaluator、State 这几样绕不过去。少想一个,后面就会多一个黑箱。

可观测性不是装饰,是长任务的安全带

一个 loop 跑十几分钟,用户看不到进度,会天然不信任它。更糟的是,用户不知道它正在错。

phase()log() 看起来只是 UI 细节,其实是 Workflow 可观测性 能投入使用的底层条件。phase() 告诉用户当前在哪个阶段,log() 记录细粒度动作。它们不参与业务逻辑,却让系统从黑箱变成可以旁观的机器。
inline-03-observability.png

图:长任务自动化越强,越需要进度、状态和人工接管接口

还需要两类人机接口。

第一类是 Workflow 主动停下来问人。比如规划阶段出现两个方向,一个偏技术实现,一个偏市场分析。脚本不应该假装自己知道用户要哪个,而是通过 askUserQuestion() 暂停,把选择权交回去。

第二类是用户主动打断。长 loop 正在跑,用户突然发现方向不对,不能等最后交付才纠偏。脚本可以在循环检查点调用 drainInbox(),把用户中途发来的 steering 消息并进当前状态。

mermaid-05.png

图:Workflow 通过进度上报、主动询问和中途纠偏保留人的控制权

loop 越自动,越要给人留接口。否则它只是更有条理地犯错。

什么时候不该写 Workflow

Loop Engineering 容易被讲成万能方案,但它不是。

如果任务只做一次,边界还很模糊,先开一段对话更便宜。如果任务依赖大量临场判断,过早把流程钉死,反而会限制模型发挥。如果验收标准写不清楚,assert() 也救不了你,宽松的裁判会让错误安静地通过。

Workflow 适合的是另一类场景:​任务会反复出现,阶段相对稳定,产出需要验收,过程需要复盘,成本还需要压下来​。比如研究报告、内容生产、批量代码迁移、资料整理、周期性监控、复杂工单处理。这些任务不一定每一步都确定,但“该有哪些步骤”通常是确定的。

这时,把流程编译成脚本就划算了。

它给你的不是绝对正确,而是工程上的抓手:阶段可见、状态可存、错误可定位、结果可比较。模型仍然会犯错,但错会发生在几个明确的调用点,而不是散落在整段对话的雾里。

结语

Agent 的下一步,不只是更聪明的模型,也包括更可靠的运行方式。

​ReAct 把 loop 放在模型脑子里,灵活,但不稳。Dynamic Workflow 把 loop 放进脚本里,少一点即兴,多一点可复盘。​两者没有谁取代谁的问题,关键是看任务要什么:探索要弹性,交付要结构。

我觉得 Loop Engineering 真正改变的,是工程师和 Agent 的关系。你不再只是在写 prompt,而是在设计一个会不断提示模型、调用模型、验收模型的运行时。Prompt 仍然重要,但它退到更小的边界里。外层的 loop,才是长任务能不能稳定跑完的关键。

当这些 loop 未来能被 Agent 自己读懂、修改、组合,Workflow 就不只是执行脚本了。它会变成 Agent Harness 的一部分:既能调用模型,也能约束模型;既让模型发挥,也让系统留下证据。

这可能才是最值得投入的地方。不是让模型一次表现得像天才,而是让一套系统在第十次、第一百次执行时,仍然知道自己正在做什么。

推荐阅读

Google AX 控制面拆解:分布式 Agent 如何把断点恢复、审计策略和执行调度收进同一条链路

AI Native 竞争力:真正稀缺的不是会用 AI,而是把事往前推的人

Harness Engineering:Agent 真正能交付,靠的不是更强模型,而是上下文、执行协议和验收闸门

Agent 工具链工程化: Skill 负责编排判断,CLI 稳定交付的执行边界

AI Coding 如何影响交付链路重构:写代码更快了,为什么人反而觉得更累了?