OpenProse:为事件驱动的智能体工作流声明目标

原标题OpenProse: Declaring Outcomes for Event-Driven Agent Workflows

Dan Barrett 和 Raymond Weitekamp 演示 Markdown 契约、pull request 审查和金融模型文档。

DBDan Barrett讲者 · OpenProseRWRaymond Weitekamp讲者 · OpenProse
频道
AI Engineer
发布
2026年10月18日
视频
49:35
阅读
8 分钟
幻灯片
4
原文
英语
在 YouTube 打开
往下滚动阅读时,视频会缩到右下角继续播放。字幕跟随阅读语言。
阅读语言共 2 种语言可读
由 AI 从英语原文翻译。打开“对照原文”可以逐段核对。
摘要

30 秒看懂

OpenProse 创建者 Dan Barrett 和 Raymond Weitekamp 介绍如何用 Markdown 契约表达可复用的智能体工作流,并规定期望成果。他们讨论契约组合、使用现有智能体运行框架和通过事件触发任务。 工作坊演示了 pull request 审查任务和量化模型文档草稿。讲者也讨论模型可靠性、独立验证和仍在开发的构想。

  1. 1声明目标Barrett 提议描述最终状态,让智能体选择实现方法。
  2. 2指定依赖契约可以列出智能体、技能、工具、输入和输出。
  3. 3契约加触发器定时任务或 webhook 可以启动常驻任务。
  4. 4Pull request 审查托管服务演示将事件与审查契约关联。
  5. 5量化模型文档公开的 SOFR 示例展示了需要专家审查的文档草拟过程。
  6. 6组合检查点中间契约可以表达工作过程中必须满足的条件。

要点建议

  1. 用可复用契约表达目标和约束。
  2. 组合较小的契约和检查点来处理复杂工作流。
  3. 常驻任务由契约和事件触发器组成。
  4. 新的审查会话可以提供另一种视角,但不保证正确。
  5. 尤其在受监管的工作流中,必须评估模型行为和输出质量。
  6. 当更明确的指令有助于重复执行时,可以记录成功流程。
全文

按章节阅读整理后的全文

01

从提示词到契约

Barrett 介绍意图、声明式目标与组合。

Dan Barrett 介绍 OpenProse 和同事 Raymond Weitekamp、Jose Montes de Oca。他回顾提示词技巧变化很快,但人与系统沟通自己想要什么仍是一项挑战。

Barrett 说,无论模型或运行框架如何变化,人都必须表达意图。目标没有传达清楚,再强的系统也难以交付正确结果。

他把 OpenProse 描述为一种语言和框架:人可以用语言描述目标,让智能体去实现。问题随之变成应该写什么样的句子或契约。

在他的叙述中,提示技术从续写模式发展到手动组合检索结果和工具调用,再到由运行框架管理上下文。他把声明式契约视为更高一层的抽象,并非证明此前问题已经普遍解决。

Barrett 提议先写明想要的最终状态,再让运行框架选择路径。他借鉴软件工程中的组合思想:把较小的契约组合起来,使团队能够分别管理复杂性。

他倾向于写明智能体要达到什么目标,而不是规定每一步,因为不同模型可能找到不同路径。这是一种设计理念,并不保证模型一定达标或成本更低。

02

Markdown 与事件驱动工作流

Weitekamp 解释契约、工具和常驻任务。

Weitekamp 提出两个要点:OpenProse 程序是 Markdown 文本;它们描述的工作流可以由事件驱动,而不是依靠聊天。开源方案可以在本地运行,他也演示了托管服务。

他表示,拥有既定控制措施的组织可以把文本契约与所选智能体、模型和防护机制结合使用。具体部署是否满足安全和采购要求,仍需组织自行判断。

这门语言有语法,但 Weitekamp 预计,人们更多是阅读和编辑程序,而非从零手写。智能体可以根据描述草拟可复用工作流,再由人检查和修改。

他说运行时和编译器本身也是给智能体的指令。团队将 Markdown 契约作为表达多智能体工作流的方法,同时使用底层编码智能体自身的能力。

契约与智能体编排
幻灯片 1 / 4契约与智能体编排幻灯片比较传统框架与团队采用的契约式方法。

契约可以声明子智能体、它们的技能和工具,以及输入和预期输出。团队可以指定必须使用的搜索工具或内部技能,并要求依赖不可用时停止程序。

定时任务、GitHub issue、pull request 或 webhook 都可以触发工作流。在托管服务示例中,Weitekamp 把常驻任务定义为契约加触发器,每次事件启动一次运行。

契约加触发器
幻灯片 2 / 4契约加触发器幻灯片定义常驻任务、触发器和单次运行。

他说演示时应用支持定时任务和 webhook。处理 issue 的程序可以接收 issue 并以提交为目标;另一个程序则可以审查 pull request。

团队将独立审查与让同一会话检查自己的工作作比较。新的审查会话可以依据书面契约提供另一种视角,但审查结果本身仍需要评估。

03

固定成功的方法

讲者讨论明确流程和依赖模型的可靠性。

有人问是否需要指定方法。Barrett 认为这是一条光谱:可以先写目标、开放实现方法;如果有助于重复执行或降低成本,再把成功轨迹固化成更具体的流程。

Weitekamp 把特别成功的运行称为黄金会话,可以将其转化为工作流。他指出模型行为具有非确定性,因此保留一个好例子并不保证之后得到相同结果。

他说,可见程序只是指令的一部分;更大的提示还描述类型和执行方式。目标是使用宿主运行框架的子智能体机制,而不是用专属于 OpenProse 的框架替代它。

04

Pull request 审查演示

他们创建事件触发任务并讨论独立检查。

在托管演示中,程序以 Markdown 编辑模式展示,配置放在 front matter 中。Weitekamp 说程序可以导出和分享,用户也可以让智能体起草。

他让语音智能体创建一个以持怀疑态度的资深开发者视角审查 pull request 的程序。草拟操作产生费用前,应用要求确认。

他还展示手动设置任务:选择触发器、仓库、契约和模型。对于 GitHub pull request,配置的事件到来时任务可以运行审查。

配置 pull request 审查任务
幻灯片 3 / 4配置 pull request 审查任务演示选择仓库、触发器、契约和模型。

Weitekamp 介绍团队在开发产品时使用这些审查。有些修改一轮通过,有些经过多轮审查,开发智能体再根据反馈调整。

Barrett 强调每个新会话都依据声明式契约进行比较。他认为这有助于减少自我审查偏差,但独立审查仍不能证明所有缺陷都已找到。

05

验证与未来构想

他们比较不同方法,并讨论决策模型的可能用途。

讲者讨论用决策模型检查真实结果是否符合契约中的理想状态。他们说明,这种验证器在演讲时还是未来设想,并非已部署功能的演示。

Weitekamp 比较了 DSPy:他认为 DSPy 把模型调用隔离在结构化代码中,而 OpenProse 给智能体更多解释和执行工作流的自由。这是他对两种方法的概括。

代价是结果高度依赖模型,而且智能体可能自行宣布契约已完成。团队提出独立验证器和事件路由器作为可能的补充。

被问及强化学习时,Barrett 说文本契约可以版本管理和分享,也可能支持训练。讲者表示当时正在讨论这一方向,而非已经实施。

持怀疑态度的审查程序草稿完成。由于之后每个 pull request 都可能触发付费运行,Weitekamp 确认部署,然后展示应用中的常驻任务。

06

金融模型文档

Barrett 演示公开数据示例并讨论审查。

Barrett 转向本地部署场景。他说企业可以把开源应用层与自己的运行框架及获批模型结合;是否完全留在内部取决于实际基础设施和模型选择。

团队把操作流程视为组织知识,也视为指令。对于不希望把敏感数据或做法发送给外部提供商的组织,在内部保留工作流和模型处理可能很重要。

金融示例是量化模型文档。Barrett 说文档可能需要定期或在特定事件后更新,内容包括用途、测试条件、依赖关系及其他合规要求。

他认为这项工作需要投入大量专家时间。由于许多要求以文字写成,团队把它们表达为契约,再通过编码智能体生成草稿。

在演示中,他在 Codex 启动程序,并展示指导智能体查找和理解指令的 Markdown 内核。另一份程序则规定所需文档和条件。

示例使用公开的 SOFR 曲线,而不是银行内部数据。生成的文档显示在屏幕上,但工作坊并未证明草稿已可投入生产或提交监管机构。

SOFR 文档演示
幻灯片 4 / 4SOFR 文档演示示例输出使用公开数据和虚构机构资料。

Barrett 表示团队会把输出与历史工作、耗时及专家评分比较。他也承认,合规团队、审计人员和监管机构的批准是流程中的另一部分。

07

组合与问答

团队讨论表达意图、可复用契约和工作流模式。

一位参与者问人们如何创建契约。Barrett 说智能体可以依据项目指南和反模式协助迭代,但把人的真实意图表达出来仍然困难。

Weitekamp 说,当人还不知道自己想要什么时,聊天可能很有用。任务逐渐明确后,可复用契约才更适合;助手可以帮助制定契约。

Barrett 说,他们面向的是重视可靠性、可重复性和可审计性的重复任务;对于探索性或一次性工作,他建议使用普通聊天。

多个契约可以组合,使一次运行满足多项要求。Barrett 还介绍上游依赖:输入变化时,下游工作可能需要更新。

团队正在探索用决策模型充当语义分类器,检测状态变化并判断是否重新运行下游工作。Barrett 明确表示,这项集成当时仍在开发中。

Weitekamp 以写文章为例:研究员使用指定搜索工具,作者参考示例,编辑检查草稿,由主智能体判断结果是否达到目标。

Barrett 解释,中间契约可以充当检查点。每个阶段满足自己的条件后才进入下一阶段,同时智能体仍可灵活选择满足条件的方法。

Weitekamp 列出并行分发与汇总、对抗式审查,以及带退出条件的循环等工作流形态。团队说,这些模式依赖底层智能体能力;许多复杂场景还需要隔离的子智能体。

被问及框架的依据时,Barrett 提到工程经验和内部实证测试。他说团队用测试检查缩短后的内核是否仍符合预期行为。

Weitekamp 介绍把现有技能组合成分阶段工作流,例如先提问,再使用测试驱动开发流程。讲者表示希望测试具体的规格驱动工作流,而不是声称所有组合都已经可用。

Barrett 最后说,用户不仅把 OpenProse 用于软件开发,也用于运营、产品管理和量化模型文档。共同需求是以可重复的方式表达并执行工作。

同频道的其他文章

9 张幻灯片21:32EN → 简体中文
AI Engineer· 2026年10月29日Shy Ruparel:AI 智能体的可靠性与故障恢复Shy Ruparel · TemporalTemporal 的调查发现,频繁使用智能体与可靠部署之间存在差距。Ruparel 演示了一项模拟付款工作流如何在工作进程停止后恢复。智能体可观测性与可靠性智能体工程+2
7 张幻灯片14:50EN → 简体中文
AI Engineer· 2026年10月29日Cole Gannaway:代码审查、跨仓库风险与 AI 软件工厂Cole Gannaway · Qodo一行重命名代码可能通过本地检查,却影响远端客户端。Qodo 的 Cole Gannaway 解释如何借助审查上下文、共享规则和独立智能体发现这些风险。Code review & verification编程智能体开发流程与测试+2
5 张幻灯片11:47EN → 简体中文
AI Engineer· 2026年10月29日Revolut 的 David Abitbol:大规模自托管 AI 编程模型David Abitbol · RevolutAbitbol 分享工程交付趋势、GPU 服务成本和延迟调优经验,并介绍受监管银行运行这些工具时采用的控制措施。Local inferenceAI cost & performanceDeveloper productivity+2
4 张幻灯片21:47EN → 简体中文
AI Engineer· 2026年10月28日Patrick Smyth:AI 时代的开源供应链安全Patrick Smyth · ChainguardChainguard 的 Patrick Smyth 讨论漏洞利用加速、依赖中的恶意软件、零日漏洞,以及开发者工作流不断扩大的攻击面。CybersecurityOpen-source ecosystemsAI security+2
5 张幻灯片14:09EN → 简体中文
AI Engineer· 2026年10月28日Taylor Luttrell-Williams:用 SonarQube Hunter Agent 发现逻辑漏洞Taylor Luttrell-Williams · SonarSonar 的 Taylor Luttrell-Williams 介绍安全智能体如何梳理代码库、调查逻辑漏洞,并将验证过的发现与常规扫描结果一起呈现。CybersecurityAI securityCode review & verification+2
5 张幻灯片16:29EN → 简体中文
AI Engineer· 2026年10月28日Chris Vela:用 Runpod BenchPod 对 vLLM 配置做基准测试Chris Vela · RunpodRunpod 的 Chris Vela 演示如何通过仪表盘比较大语言模型服务配置,依据具体工作负载的数据选择性能设置。InferenceBenchmarksAI cost & performance+2