手工川
课程地图/PART 05理解 Agent Harness

H6Yoda:手工川工作室的 Agent Harness

Yoda 是我们开源的 Agent 工作区:把 32 种编码客户端收进一处,并行开工、互相审查,行为看得见。

约 7 分钟全屏播放这一节
展开讲讲

做 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 把这一层做成了产品。
—— Yoda README
项目基本资料
含义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。拿不准用哪种,答下面四个问题。

问题 01 / 04
这次你手上有几件事要同时推进?
同时开好几个主分支直跑的任务,它们可能改到同一个文件。要并行,就用分支隔离;compare 模式会强制隔离,不然几个客户端会互相覆盖。

Agent 的行为要能看见

提示词只是表层。Agent 实际怎么做事,取决于它加载了哪些 Skills、注册了哪些 Hooks、读了哪些 Memory 文件、上下文里塞了什么。这些在终端里是黑盒。

Yoda 把它们一项项摊开:每个客户端的 Skills、Hooks、Memory、可用模型和账号用量都能查,Hooks 还能覆写并持久化;运行中的会话可以打开上下文面板(Claude Code 和 Codex 支持得最完整),看到完整转录、本次注入的 CLAUDE.md 或 AGENTS.md、挂载的 MCP 服务器,以及客户端自己压缩上下文时写下的摘要。

我的判断
多数“Agent 变笨了”的问题,出在 harness 这一层:一个被遗忘的全局 hook,一份过期的 memory 文件,一个没启用的 skill。能看见,才能调。

四个月,从 0.1.0 到 0.20.3

2026-05-10
fork 并改名 Yoda
登录换成 Lovstudio.AI 账号,第二天发布 0.1.0
02 / 07

到 2026 年 9 月初,这个仓库里署我名字的提交有三千多次。7 月写 Yoda 的那篇长文时,我写过这样一段:

最近两个月,我几乎每天都能推翻自己前一天的某个判断。有些功能做出来才发现过度设计,有些被我当成边角的需求,上线后反而得到最多反馈。
—— 手工川《Agent 时代,我们到底需要怎样的 IDE》

任务和会话就是一个例子。原来一个任务下面可以挂好几条会话,界面上多一层。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. 第 1 题单选
    在 Yoda 的术语里,“Agent”指的是什么?
  2. 第 2 题判断
    用 Yoda 必须给每个任务开一个 git worktree。
  3. 第 3 题多选(选出全部正确项)
    下面哪些是 Yoda 的运行模式?