Agent 工作流不该只靠提示词拼接:Endo 用高阶 Harness 组合多个 AI 编码助手
当任务需要先研究、再实现、最后交叉审查时,常见做法是把步骤写进一段长提示词,或者用外部自动化工具串起若干模型调用。前者容易把复杂度塞进上下文,后者则可能把 Agent 简化成一次次孤立的模型请求。开源桌面项目 Endo 尝试走另一条路:把 Agent 本身当作可组合的构件,让一个工作流可以调用、并行调度并继续不同供应商的会话。
从 Harness 到 Higher-Order Harness
普通 Harness 通常负责向一个 Agent 发送任务、运行工具并维护对话历史。Endo README 将自身称为 Higher-Order Harness(HOH):它把 Agent 作为工作流的积木,再组合成新的 Agent。这个抽象的实际意义不是“模型越多越好”,而是让流程结构显式化:哪些步骤并行、哪些阶段串行、哪个会话需要延续,都能由工作流表达。
Endo 当前 README 列出的原生 Agent 包括 Codex、Claude Code 与 Antigravity。用户可以在同一线程中切换 Agent,让接手者读取此前的对话历史;也可以定义跨会话工作流,把工作分发给不同供应商的 Agent,再汇总结果。项目还提供定时运行能力,适合重复性的研究或状态整理任务。具体可用提供商、登录方式和功能会随版本变化,实施前应以仓库最新说明为准;项目标注自身处于 0.1.x 阶段,可能存在破坏性变更。
快速启动:先用桌面版验证工作流
官方 README 提供 macOS Apple Silicon 下载入口。若想从源码运行,项目要求 Node.js 24、Bun 1.4.2 和 Just:
git clone https://github.com/longsurf-ai/endo.git cd endo just install --frozen-lockfile just desktop
启动后,至少登录一个支持的提供商。README 提到可使用已有的 codex、claude 或 Antigravity 登录,也可以在 Settings → Models 中配置。先尝试一个简单任务,例如让 Agent 总结待办,再到 Schedule 页面查看定时运行;这比一开始就搭建多阶段复杂流程更容易定位登录、模型和工作区问题。
TypeScript 工作流:并行探索,再交给一个 Agent 汇总
Endo 将工作流定义为工作区中的 TypeScript 文件。README 展示的概念接口包括 agent()、parallel() 和 phase():分别用于调用 Agent、并行分发调用以及组织阶段;传入 session ID 可继续已有会话。以下是流程示意而非可直接运行的完整 API 代码,具体导入路径和参数应照当前项目文档中的示例编写:
阶段一:并行调用两个 Agent,分别提出实现方案和风险点 阶段二:将两份结果交给审查 Agent,要求指出冲突与未验证假设 阶段三:由开发者确认建议后,再执行代码变更
这种设计适合把“生成”与“检查”分开,但并行调用并不自动带来正确性。不同 Agent 可能共享相同盲点,审查结论仍需通过测试、差异审阅和可复现证据确认。尤其是代码写入、部署、删除数据等有副作用的操作,应保留明确的人类批准环节,而不是因为工作流可调度就默认自动执行。
它适合什么场景,又不适合什么场景?
如果团队正在比较多个编码 Agent、希望同一任务中切换工具,或需要把周期性研究流程保存为可复用工作流,Endo 的统一线程和组合模型值得试用。它把运行记录、会话和“Dig In”分支保存在本机,README 表示重启后仍可继续查看;这对需要追溯上下文的个人实验尤其有用。
但它不是现成的企业级编排平台:目前项目处于早期版本,官方快速启动主要面向 macOS Apple Silicon。工作流文件是 TypeScript,也意味着使用者需要理解代码和权限边界。先用只读任务验证流程,再逐步加入受控操作;为每个 Agent 明确输入、输出和停止条件,并保存关键产物,通常比追求一条“全自动”链条更可靠。
Endo 的有趣之处,在于把 Agent 编排从提示词技巧提升为可组合的软件结构。它能否成为稳定的日常工具,还取决于早期版本的成熟度、供应商适配和工作流治理。对开发者而言,最稳妥的试法是从一个可观察、可回滚的小流程开始:并行收集意见,串行验证结论,最后由人决定是否执行。
相关链接