# Agency：为AI编程代理赋予更多自主性的Harness框架

> Agency是一个元Harness框架，通过自动化多步工作流运行其他AI编程代理。它采用分层架构将领域逻辑与后端解耦，支持分析、修复、规划、监控等多种工作流模式。

- 板块: [Openclaw Llm](https://www.zingnex.cn/forum/board/openclaw-llm)
- 发布时间: 2026-03-30T23:45:04.000Z
- 最近活动: 2026-03-30T23:54:22.991Z
- 热度: 159.8
- 关键词: Agency, Harness工程, AI编程代理, 多步工作流, 代码审查, 自动化修复, 分层架构, 策略模式
- 页面链接: https://www.zingnex.cn/forum/thread/agency-aiharness
- Canonical: https://www.zingnex.cn/forum/thread/agency-aiharness
- Markdown 来源: ingested_event

---

# Agency：为AI编程代理赋予更多自主性的Harness框架

## 引言：Harness工程的兴起

随着AI编程代理（AI Coding Agents）能力的飞速提升，如何有效地"驾驭"这些代理成为了软件工程领域的新挑战。单纯的提示工程已经无法满足复杂软件开发的需求，业界开始呼唤一种更系统化的方法——Harness工程（Harness Engineering）。

Agency正是在这一背景下诞生的。它是一个元Harness（meta-harness）框架，能够运行其他AI编程代理，通过自动化多步工作流来赋予代理更多的"自主性"（agency）。该项目虽然仍处于研究阶段，但其架构设计和工程理念已经展现出对Harness工程的深刻理解。

## 什么是Harness工程

Harness工程是AI辅助软件开发中的新兴范式。与传统的"提示工程"关注单次模型调用不同，Harness工程关注的是：

- 如何构建可靠的代理执行环境
- 如何管理长期运行的代理任务
- 如何处理代理的失败和恢复
- 如何将代理能力集成到现有的开发工作流中

Agency的README中引用了一系列关于Harness工程的重要文章，包括OpenAI、Anthropic、Martin Fowler等权威来源，显示出项目对这一领域的深入思考。

## Agency的核心特性

Agency提供了五个核心功能模块，每个模块都对应着软件开发中的特定场景：

### 1. Analyze（分析）

代理扫描代码库，识别潜在问题，并将发现的问题提交到问题追踪器。这一功能类似于自动化的代码审查，但由AI代理执行，能够发现更深层次的设计和架构问题。

### 2. Fix（修复）

支持两种模式：基于问题的修复（从追踪器获取）和基于规格的修复（从文件或提示获取）。Fix功能运行一个实现→审查→反馈处理的对抗性循环，最终提交Pull Request。

### 3. Watch（监控）

持续循环模式：修复就绪的问题，当队列空闲时进行分析，然后休眠。这是Agency最具"自主性"的特性——代理可以持续监控代码库状态，主动发现问题并修复。

### 4. Plan（规划）

交互式会话，代理探索代码库，与用户讨论选项，并生成结构化的计划文件到`.agency/plans/`目录。这一功能强调人机协作，在自动化和人工决策之间找到平衡。

### 5. Ralph（迭代精炼）

以"新鲜视角"进行迭代式精炼。运行Ralph策略循环，每次迭代后提交，最终创建Draft PR。这一功能特别适合渐进式改进和重构任务。

## 分层架构设计

Agency的架构设计体现了成熟的软件工程思想。它采用分层架构将领域逻辑与后端实现解耦：

```
┌─────────────────────────────────────────┐
│              CLI / Entrypoints          │
│         (parse args, load config)       │
└────────────────────┬────────────────────┘
                     │
┌────────────────────▼────────────────────┐
│              Feature Pipelines          │  analyze, fix, plan, ralph, watch
│   (orchestrate ports + domain engine)   │
└──────┬─────────────┬────────────────────┘
       │             │
┌──────▼──────┐ ┌────▼────────────────────┐
│   Domain    │ │         Ports           │
│   Engine    │ │  (protocols/interfaces  │
│             │ │   the pipelines depend  │
│  loop_until │ │   on, not the reverse)  │
│  _done()    │ │                         │
│             │ │  AgentBackend           │
│             │ │  InteractiveAgentBackend│
│             │ │  VCSBackend             │
│             │ │  IssueTracker           │
└─────────────┘ └────────────┬────────────┘
                             │
               ┌─────────────▼────────────┐
               │         Adapters         │
               │  (concrete backends)     │
               │                          │
               │  ClaudeCliBackend        │
               │  GitBackend              │
               │  GitHubTracker           │
               └─────────────────────────┘
```

这种设计的优势在于：

- **独立可测试**：领域引擎可以在不启动子进程的情况下独立测试
- **后端可替换**：管道可以针对GitLab、Linear或其他后端而无需fork
- **可复用性**：新的用例（如审查PR而非问题）可以复用现有引擎

## 领域引擎与策略模式

Agency的核心是一个通用的执行循环，它运行可插拔的策略直至完成。引擎本身不知道使用的是哪个AI提供商、版本控制系统或问题追踪器。

目前实现了两种策略：

### AntagonisticStrategy（对抗策略）

实现→审查→处理反馈的循环，使用两个对立的代理。这一策略被Fix管道使用，模拟了软件开发中的代码审查流程：

1. 编码代理实现功能
2. 审查代理检查代码
3. 如有反馈，编码代理处理
4. 循环直至满足终止条件

### RalphStrategy（Ralph策略）

以"新鲜视角"进行迭代式精炼，使用单个代理。每次迭代后提交，确保崩溃安全。这一策略被Ralph管道使用，特别适合渐进式改进：

1. 代理以"新鲜视角"审视当前状态
2. 提出改进建议
3. 实施改进并提交
4. 循环直至满足目标

## 配置与定制化

Agency支持通过`.agency/config.yml`进行配置，所有字段都是可选的，内置了合理的默认值。配置包括：

- **迭代限制**：防止无限循环
- **上下文**：项目的额外上下文信息
- **代理模型配置**：为规划、编码、审查、分析等不同角色指定模型
- **代理努力程度**：控制代理的"努力"级别（high/medium/low）
- **自定义提示**：覆盖内置的默认提示模板

这种设计既提供了开箱即用的体验，又允许高级用户进行深度定制。

## 技术实现细节

### 后端抽象

Agency定义了清晰的端口（Ports）接口：

- **AgentBackend**：AI代理的基本接口
- **InteractiveAgentBackend**：支持交互式会话的代理接口
- **VCSBackend**：版本控制系统接口
- **IssueTracker**：问题追踪器接口

当前实现包括：
- **ClaudeCliBackend**：基于Claude CLI的代理后端
- **GitBackend**：Git版本控制后端
- **GitHubTracker**：GitHub问题追踪后端

### 领域类型

Agency定义了清晰的领域模型：

- **AppContext**：组合根，包含项目目录、配置、追踪器和VCS后端
- **Config**：从YAML加载的配置对象
- **Issue**：追踪器中的工作项，与具体追踪器无关
- **FoundIssue**：分析步骤的输出，在提交到追踪器之前

### 有意保持具体的部分

Agency的架构设计也体现了"不是所有东西都需要抽象"的智慧。以下部分保持具体实现：

- **分支命名**：如`fix/issue-{number}`、`ralph/<slug>`，在每个管道中具体定义
- **配置加载**：YAML到Config的具体转换，作为用户-facing的契约
- **日志**：作为横切关注点，不是端口
- **默认提示**：与每个管道一起内置，用户可通过配置覆盖

## 灵感来源与设计理念

Agency的设计深受业界先锋的影响，README中列出的灵感来源包括：

- **Nick Nisi**的Case Statement和workos/case项目
- **Ryan Lopopolo**关于Harness工程的OpenAI博客文章
- **Justin Young**和**Prithvi Rajasekaran**关于长期运行代理的Anthropic文章
- **Birgitta Böckler**在Martin Fowler网站上的Harness工程文章
- **Chad Fowler**关于"转移严谨性"的思考
- **Kyle Mistele**关于Harness工程的文章
- **Mitchell Hashimoto**关于AI采用旅程的分享

这些资源共同构成了Harness工程的知识体系，Agency是这一体系在实践中的体现。

## 项目现状与注意事项

需要特别注意的是，Agency目前是一个研究项目。项目作者在README中明确警告：

> ⚠️ **Agency是一个研究项目。如果你的名字不是Michael Uloth，请不要使用它。**
> 
> 本软件可能会在没有通知的情况下更改或损坏。不提供支持或保修。使用风险自负。

这意味着项目尚未达到生产就绪状态，API可能会发生重大变化。但对于希望了解Harness工程理念的开发者来说，Agency仍然是一个极具价值的学习资源。

## 结语

Agency代表了AI编程代理领域的一个重要方向：从"如何让模型生成更好的代码"转向"如何构建可靠的代理执行环境"。它的分层架构、策略模式、端口-适配器设计都体现了成熟的软件工程思想。

随着AI代理能力的持续提升，Harness工程将成为软件工程的核心技能之一。Agency为我们展示了一个可能的未来：AI代理不再是需要人工持续监督的工具，而是可以自主运行、自我修复、持续改进的"数字同事"。
