一个刻意保持简单的 Harness 控制面。
本项目的意义建立在以下假设上:
- 每个模型都有 “最适合” 自己的 Harness
- 1 所导致的同模型下 Agent 能力的差异是足够大以至于有实际意义的
- 只有模型训练方才能产出 “最佳” 的那个 Harness
另外,若 ACP v2 退出草稿阶段而趋于稳定,且主流训练方 Harness 皆完成对其的兼容,则本项目将退化为单纯的协议包装层。
本项目的产生动机和具体设计则是来自以下需求和痛点:
- 各家模型商都有自己的 Harness 和订阅套餐,且它们都不太喜欢自己的订阅被转换为 API
- 我有复数个上述套餐,默认情况下却只能分开使用它们
- 我的工作流是基于 Subagent 系统的,用一个旗舰模型 Agent 控制若干能力高低不同的模型 Agent,而因为 1 和 2,我只能在单一 Harness 内用原生能力派生 Subagent
因此需要这样一个控制面,用四个核心动作抽象任意 Harness 上的 Agent 会话:
| 动作 | 语义 |
|---|---|
| spawn | 创建会话并启动首个回合 |
| send | 向会话注入消息;busy 时在消息边界注入,idle 时触发新回合 |
| wait | 等待一个或多个会话的回合完成 |
| interrupt | 停止进行中的回合,保留会话;不携带模型可见消息 |
以上动作被一个针对 Agent 精心设计的 CLI 暴露给消费者。当然核心模型和 Harness 适配器等与具体的控制面是解耦的,因此任何暴露形态(MCP、自有应用等)都是可以实现的。
保持核心动作简单是兼容各家 Harness 的前提,因为它们在设计细节上区别繁多,对外暴露的可编程能力更是参差不齐。