H6Yoda:手工川工作室的 Agent Harness
Yoda 是我们开源的 Agent 工作区:把 32 种编码客户端收进一处,并行开工、互相审查,行为看得见。
做 Yoda 之前,我每天都在重复一些很荒谬的事:开很多终端,记住每个窗口对应哪个项目,手动建分支和 worktree,在聊天记录里翻上一次做到哪里,再用脑子维护哪个 Agent 在干活、哪个已经完成、哪个其实卡住了。
Agent 明明在替我节省实现的时间,我却把越来越多的精力花在管理 Agent 上。
Claude Code、Codex、Gemini、OpenCode 各有所长,以后还会更多。我缺的是坐在它们上面的一个驾驶舱:它知道项目在哪,任务属于哪个分支,会话跑到哪一步,谁在等我,谁已经交付,我该在什么时候回来做决定。
2026 年 5 月 10 日,我把 General Action 开源的 emdash fork 过来,改名 Yoda,第二天发了 0.1.0。名字展开是 Your Orchestra of Delegated Agents:Agent 是乐手,任务是声部,Skill、提示词和工程规则组成乐谱,Yoda 让人能组织它们、听见它们,必要时叫停或者重来。
Yoda 是什么
如果只留一句话:Yoda 是面向 Agent 时代的开源桌面工作区,也是人编排多个编程 Agent 的驾驶舱。它不替代 Claude Code 或 Codex,它把原本散在终端、分支、配置文件和聊天记录里的东西,收进一个能观察、切换、恢复和验收的界面。
Harness 是 agent 与真实世界之间的那一层:进程、会话、Skills、Hooks、Memory、上下文。agent 的表现好不好,一半取决于模型,另一半取决于这层 harness 搭得好不好。Yoda 把这一层做成了产品。
| 项目 | 基本资料 |
|---|---|
| 含义 | Your Orchestra of Delegated Agents |
| 定位 | Harness for your Agent Workspace |
| 客户端 | Claude Code、Codex、Gemini、Cursor、OpenCode 等 32 种 |
| 平台 | macOS、Windows、Linux 桌面端,另有手机端 |
| 数据 | 本地优先,应用状态存在本机 SQLite |
| 协议 | Apache 2.0 开源 |
Yoda 基本资料,以 2026 年 9 月发布的 0.20.3 为准
很多功能都来自一次被打断
Yoda 现在的很多功能,来路都很具体:某一次,我被打断了。点开下面的卡片,正面是那一刻,背面是后来长出来的功能。
你做自己的工具,也可以照这个顺序来:先把被打断的那一刻记下来,同一件事烦到第三次,再动手。
把角色从客户端里拆出来
Yoda 里有两个词分得很严。客户端是 Claude Code、Codex 这些装在你机器上的命令行程序,提供进程、工具调用和会话恢复。Agent 是你自己定义的角色:System Prompt 加 Skills,再加一个首选模型,不绑定任何客户端。
创建任务时两者自由组合:任务 = 客户端(在哪跑)× Agent(以什么角色跑)。只选客户端,就是它的原生行为;再选一个 Agent,Yoda 会把这个 Agent 的 System Prompt 和启用的 Skills 注入进去。
这么拆,是因为提示词、Skill 和规范是你花时间攒下的资产,它们应该跟着角色走。同一个 Agent 今天在 Claude Code 里跑,明天换 Codex,规矩一条不用重写。写 Agent 的时候,我有三条经验:
- —同样的开场指令写了三遍,就该沉淀成一个 Agent。
- —窄角色比全能角色稳:只做 code review 的 Agent,好过一个“全栈大神”。
- —提示词里写禁区。别动迁移文件、别改 CI 配置,比只写要做什么更有效。
五种运行模式,两种隔离方式
创建任务时还有两个互不相干的选择:代码在哪改,几个客户端怎么协作。工作区可以主分支直跑,不建分支、不开 worktree,开任务、让 AI 干活、归档收尾;也可以分支隔离,每个任务一个 git worktree,做完各自审 diff、各自合并。运行模式有五种:normal、brainstorm、compare、review、team。拿不准用哪种,答下面四个问题。
Agent 的行为要能看见
提示词只是表层。Agent 实际怎么做事,取决于它加载了哪些 Skills、注册了哪些 Hooks、读了哪些 Memory 文件、上下文里塞了什么。这些在终端里是黑盒。
Yoda 把它们一项项摊开:每个客户端的 Skills、Hooks、Memory、可用模型和账号用量都能查,Hooks 还能覆写并持久化;运行中的会话可以打开上下文面板(Claude Code 和 Codex 支持得最完整),看到完整转录、本次注入的 CLAUDE.md 或 AGENTS.md、挂载的 MCP 服务器,以及客户端自己压缩上下文时写下的摘要。
四个月,从 0.1.0 到 0.20.3
到 2026 年 9 月初,这个仓库里署我名字的提交有三千多次。7 月写 Yoda 的那篇长文时,我写过这样一段:
最近两个月,我几乎每天都能推翻自己前一天的某个判断。有些功能做出来才发现过度设计,有些被我当成边角的需求,上线后反而得到最多反馈。
任务和会话就是一个例子。原来一个任务下面可以挂好几条会话,界面上多一层。0.20.1 先去掉了任务下面多余的那层概览,0.20.3 干脆把两者合并:一个任务就是一条会话,fork 直接生成新任务,历史数据自动回填。
几个常见误会
- —Yoda 不替代 Claude Code 或 Codex。它调用你已经装好的客户端,负责编排。
- —不必会 git worktree。主分支直跑没有 git 心智负担,需要并行时再开隔离。
- —本地优先,不等于数据完全不出本机。Yoda 自己把状态存在本地 SQLite,不上传你的代码;可你用的客户端 CLI 可能把代码和提示词发给它自己的云服务,各家政策不同。
- —Agent 并不是开得越多越好。人的注意力也有上限,H9 会专门讲。
Yoda 的代码在 GitHub,文档在 yoda.lovstudio.ai,Apache 2.0 开源。
- 第 1 题单选在 Yoda 的术语里,“Agent”指的是什么?
- 第 2 题判断用 Yoda 必须给每个任务开一个 git worktree。
- 第 3 题多选(选出全部正确项)下面哪些是 Yoda 的运行模式?
- Yoda 开源仓库 lovstudio/yoda
- Yoda 更新日志
- Yoda 文档:Runtime 与 Agent
- Yoda 文档:运行模式
- 手工川《置身 OPC 内 | 深度》,“Yoda:面向超级开发者的 Agent Workspace”一节2026-07-08
- 手工川《Agent 时代,我们到底需要怎样的 IDE》,公众号「手工川」2026-07-16
