Skip to content

wangdahoo/agent-harness

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Agent Harness

Agent Harness 是一个用于管理长期 AI 项目的 Claude Skill,使 Claude 能够跨多个上下文窗口执行复杂的多会话项目。基于 Sprint-Coding Agent 循环模式,确保代码质量和进度可追溯。

核心特性

  • 跨上下文持续 - 通过结构化文件在上下文重置后保持项目状态
  • 多 Agent 协作 - Sprint Agent 规划,Coding Agent 实现,996 Agent 并行执行
  • 进度可追溯 - 每个会话的详细日志和功能状态跟踪
  • 质量保证 - 每个会话结束时代码必须可工作
  • 依赖管理 - 自动处理功能依赖关系和实现顺序
  • 并行执行 - 996 模式支持多任务并行处理
  • 斜杠命令 - 支持简洁的命令快速访问核心功能

安装

npx skills install wangdahoo/agent-harness

兼容性

Agent Harness 支持多种 AI CLI 工具:

CLI 命令格式 配置目录
OpenCode /agent-harness-init .opencode/commands/
Claude Code /agent-harness init .claude/skills/

两种 CLI 的功能完全相同,只是命令格式略有不同。

快速开始

1. 初始化项目

OpenCode:

/agent-harness-init My Project

Claude Code:

/agent-harness init My Project

这将创建:

  • features.json - 功能和 Sprint 跟踪
  • progress.md - 会话日志

2. 规划 Sprint

OpenCode:

/agent-harness-sprint 实现用户认证系统,包括邮箱登录、社交登录和密码重置

Claude Code:

/agent-harness sprint 实现用户认证系统,包括邮箱登录、社交登录和密码重置

Sprint Agent 会:

  1. 归档已完成的 Sprint(如果有)
  2. 分析需求并拆分为原子功能
  3. 为每个功能定义验收标准
  4. 按依赖关系排序
  5. 更新 features.jsonprogress.md

3. 开始编码

OpenCode:

/agent-harness-code

Claude Code:

/agent-harness code

Coding Agent 会:

  1. 查看 progress.mdfeatures.json
  2. 选择下一个待实现的功能
  3. 实现并测试
  4. 更新跟踪文件
  5. 提交代码

4. 查看状态

OpenCode:

/agent-harness-status

Claude Code:

/agent-harness status

显示:

  • 当前 Sprint 和目标
  • 功能完成统计
  • 下一个推荐功能
  • 最近的会话记录

斜杠命令

输入 /agent-harness 可查看帮助信息。所有命令支持自动补全。

OpenCode 格式

命令 用途 示例
/agent-harness 显示帮助信息 /agent-harness
/agent-harness-init <name> 初始化新项目 /agent-harness-init Task Manager
/agent-harness-sprint [req] 创建或更新 Sprint /agent-harness-sprint 添加用户仪表板
/agent-harness-code 开始编码会话 /agent-harness-code
/agent-harness-996 并行执行多个功能 /agent-harness-996
/agent-harness-996 --max-parallel=3 限制并发数 /agent-harness-996 --max-parallel=3
/agent-harness-status 查看项目状态 /agent-harness-status
/agent-harness-archive 归档完成的 Sprint /agent-harness-archive
/agent-harness-force-archive 强制归档所有 Sprint /agent-harness-force-archive

Claude Code 格式

命令 用途 示例
/agent-harness 显示帮助信息 /agent-harness
/agent-harness init <name> 初始化新项目 /agent-harness init Task Manager
/agent-harness sprint [req] 创建或更新 Sprint /agent-harness sprint 添加用户仪表板
/agent-harness code 开始编码会话 /agent-harness code
/agent-harness 996 并行执行多个功能 /agent-harness 996
/agent-harness 996 --max-parallel=3 限制并发数 /agent-harness 996 --max-parallel=3
/agent-harness status 查看项目状态 /agent-harness status
/agent-harness archive 归档完成的 Sprint /agent-harness archive
/agent-harness force-archive 强制归档所有 Sprint /agent-harness force-archive

核心概念

Sprint Agent(规划)

触发时机:

  • 新项目初始化
  • 新 Sprint 迭代
  • 需求更新

职责:

  1. 分析用户需求
  2. 拆分为原子功能(每个会话可完成)
  3. 定义清晰的验收标准
  4. 按依赖关系排序功能
  5. 文档化到 features.json

Coding Agent(实现)

触发时机:

  • 每个开发会话

会话协议:

开始阶段:

  1. 确认工作目录 (pwd)
  2. 查看最近工作 (progress.md)
  3. 检查提交历史 (git log)
  4. 验证项目状态(lint/build)

工作阶段:

  1. 选择 一个 功能
  2. 理解验收标准
  3. 增量实现
  4. 彻底测试

结束阶段:

  1. 更新 progress.md
  2. 更新 features.json 状态
  3. 确保无错误
  4. 提交更改

996 Agent(并行执行)

触发时机:

  • 需要加速 Sprint 完成
  • 多个独立功能可并行实现

工作流程:

预检阶段:

  1. 确认项目目录
  2. 检查未完成的 Sprint
  3. 确保工作树干净(无未提交更改)

分析阶段:

  1. 构建依赖图,识别就绪的功能
  2. 检测文件冲突(使用 files_affected 字段)
  3. 创建执行批次(最大并发 5 个)

调度阶段:

  1. 为每个功能生成子 Agent 提示
  2. 并行调度子 Agent(无文件冲突的功能)
  3. 上下文隔离:每个子 Agent 从全新状态开始

验证阶段:

  1. 检查完成信号
  2. 运行 lint/build 验证
  3. 记录结果

状态更新阶段:

  1. 更新 features.json 中的功能状态
  2. 写入 progress.md 编排摘要
  3. 提交更改

关键约束:

  • 最大 3-5 个并发子 Agent
  • 有文件冲突的功能顺序执行
  • 失败的功能标记为 blocked,其他继续

工作流程

用户需求
    ↓
┌─────────────────┐
│  Sprint Agent   │ ← 拆分需求为功能
└────────┬────────┘
         │
         ↓
   features.json   ← 功能定义和状态
         │
         ├────────────────────────┐
         │                        │
         ↓                        ↓
┌─────────────────┐      ┌─────────────────┐
│  Coding Agent   │      │   996 Agent     │ ← 并行执行
│  (串行模式)      │      │  (并行模式)      │
└────────┬────────┘      └────────┬────────┘
         │                        │
         └──────────┬─────────────┘
                    │
                    ↓
              可工作的代码
                    │
                    ├─→ 更新 progress.md
                    ├─→ 更新 features.json
                    └─→ 提交更改

    (循环直到 Sprint 完成)

模式选择:

  • 串行模式 (/agent-harness-code):一次实现一个功能,适合复杂功能
  • 并行模式 (/agent-harness-996):并行实现多个独立功能,加速 Sprint 完成

文件结构

核心跟踪文件

文件 用途 谁更新
features.json Sprint 和功能定义 Sprint Agent 创建,Coding Agent 更新状态
progress.md 会话日志 所有 Agent
AGENTS.md 项目特定指令 用户

features.json 结构

{
  "project": {
    "name": "Project Name",
    "description": "Project description",
    "tech_stack": ["react", "node.js"],
    "created_at": "2024-01-15"
  },
  "sprints": [
    {
      "id": "sprint-001",
      "name": "Authentication Sprint",
      "goal": "Implement user authentication",
      "status": "in_progress",
      "created_at": "2024-01-15",
      "features": [
        {
          "id": "s1-feat-001",
          "category": "auth",
          "priority": "high",
          "title": "Setup authentication provider",
          "description": "Configure auth provider with proper credentials",
          "acceptance_criteria": [
            "Auth provider is configured",
            "Environment variables are set",
            "Connection can be established"
          ],
          "technical_notes": "Use Auth0 or custom JWT",
          "status": "completed",
          "dependencies": [],
          "estimated_complexity": "small",
          "files_affected": ["config/auth.ts", ".env"]
        }
      ]
    }
  ],
  "metadata": {
    "version": "1.0.0",
    "last_updated": "2024-01-16"
  }
}

功能字段说明

  • id: 唯一标识符 (如 s1-feat-001)
  • category: 功能类型 (core, ui, api, auth, data, infra)
  • priority: 优先级 (high, medium, low)
  • status: 状态 (pending, in_progress, completed, blocked)
  • dependencies: 依赖的功能 ID 数组
  • estimated_complexity: 复杂度估计 (small < 2h, medium 2-4h, large > 4h)
  • files_affected: 将被修改的文件路径

状态值

功能状态:

  • pending - 未开始
  • in_progress - 正在进行
  • completed - 完全实现并测试
  • blocked - 被阻塞

Sprint 状态:

  • planning - 正在定义
  • in_progress - 功能正在实现
  • completed - 所有功能完成
  • on_hold - 暂时暂停

内部脚本(供 slash 命令调用)

以下脚本由 slash 命令内部调用,用户无需直接使用。了解这些脚本有助于理解系统工作原理。

init_project.py

/agent-harness-init 调用,初始化项目跟踪文件。

python3 scripts/init_project.py <name> [-d description] [-o output-dir]

选项:

  • -d, --description - 项目描述
  • -o, --output-dir - 输出目录(默认当前目录)

status.py

/agent-harness-status 调用,显示当前项目状态。

python3 scripts/status.py

validate_structure.py

由 Sprint Agent 和 Coding Agent 内部调用,验证 features.json 结构。

python3 scripts/validate_structure.py

检查:

  • 必需字段存在
  • 有效的状态值
  • 正确的 JSON 结构
  • 功能 ID 唯一性

archive_sprint.py

/agent-harness-archive/agent-harness-force-archive 调用,归档 Sprint。

python3 scripts/archive_sprint.py [--list] [--dry-run] [--force]

选项:

  • --list - 列出已完成的 Sprint
  • --dry-run - 预览归档操作
  • --force - 强制归档所有 Sprint(包括未完成的)
  • --project-dir - 项目目录(默认当前目录)

归档后的 Sprint 移动到 .agent-harness/archived/ 目录。

release.py

打包并发布 Skill 到 GitHub Releases。

python3 scripts/release.py <version> [--dry-run]

选项:

  • version - 版本号(支持 semver,如 v1.0.00.4.0-beta.21.0.0+build.1
  • --dry-run - 预览操作而不执行

功能:

  • 自动打包 Skill 文件(遵循 .skillignore 规则)
  • 创建 Git 标签并推送
  • 使用 gh release create 创建 GitHub Release 并上传

设计原理

为什么需要 Agent Harness?

问题:

  1. 上下文限制 - Claude 的上下文窗口有限,无法在单个会话中处理大型项目
  2. 状态丢失 - 上下文重置后,之前的讨论和决策会丢失
  3. 质量保证 - 多会话项目容易产生不稳定的代码
  4. 进度追踪 - 难以了解项目的整体进度和下一步

解决方案:

  1. 结构化文件 - 用 features.jsonprogress.md 持久化项目状态
  2. 多 Agent 模式 - Sprint Agent 专注规划,Coding Agent 专注实现,996 Agent 并行加速
  3. 单功能会话 - 每个会话只实现一个功能,确保质量和焦点
  4. 强制协议 - 开始和结束会话的固定流程,确保一致性

渐进式加载

Agent Harness 使用三级加载系统:

  1. 元数据 - 始终在上下文中(~100 词)
  2. SKILL.md 主体 - Skill 触发时加载(~150 行)
  3. References - 按需加载
    • Sprint Agent 加载 sprint-agent.md
    • Coding Agent 加载 coding-agent.md
    • 996 Agent 加载 996-agent.md
    • 示例按需从 examples.md 加载

这确保了每个 Agent 只看到相关内容,最小化上下文占用。

Sprint-Coding 循环

Sprint Agent        →  创建/更新 Sprint
    ↓
features.json       →  功能定义和状态
    ↓
Coding Agent (会话 1)  →  实现功能 1
    ↓
Coding Agent (会话 2)  →  实现功能 2
    ↓
Coding Agent (会话 N)  →  实现功能 N
    ↓
Sprint Agent        →  创建下一个 Sprint 或归档

或使用 996 并行模式加速:

Sprint Agent        →  创建/更新 Sprint
    ↓
features.json       →  功能定义和状态
    ↓
996 Agent           →  分析依赖和文件冲突
    ↓
子 Agent 批次 1     →  并行实现功能 1, 2, 3
    ↓
子 Agent 批次 2     →  并行实现功能 4, 5
    ↓
Sprint Agent        →  创建下一个 Sprint 或归档

这个循环确保:

  • 每次只处理一个功能,降低复杂度(串行模式)
  • 或并行处理多个独立功能,加速完成(996 模式)
  • 每个会话都留下可工作的代码
  • 进度可追溯,决策有记录

关键规则

  1. 每个会话一个功能 - 不要试图做太多
  2. 始终留下可工作的代码 - 永远不要破坏构建
  3. 端到端测试 - 像用户一样验证
  4. 频繁提交 - 小提交支持回滚
  5. 永不删除功能 - 只更改状态
  6. 使用进度日志 - 记录每个会话

最佳实践

Sprint Agent

  • 将大功能拆分为原子片段
  • 定义清晰的验收标准(Given-When-Then 格式)
  • 仔细考虑依赖关系
  • 平衡 Sprint 的复杂度组合
  • 文档化决策和优先级理由

Coding Agent

  • 严格遵循会话协议
  • 完成前测试
  • 使用清晰的消息频繁提交
  • 专注于一个功能
  • 遵循项目约定(见 AGENTS.md

项目组织

  • 每个项目维护自己的 features.jsonprogress.md
  • 使用 AGENTS.md 定义项目特定约定
  • 定期归档已完成的 Sprint
  • features.json 中包含实际的技术栈

常见场景

场景 1:启动新项目

OpenCode:

用户: /agent-harness-init Task Manager
Claude: [创建 features.json 和 progress.md]

用户: /agent-harness-sprint 构建任务管理应用,支持创建、编辑、删除任务,以及标签分类
Claude: [分析需求 → 拆分为 8 个功能 → 更新 features.json]

用户: /agent-harness-code
Claude: [实现第一个功能 → 更新进度 → 提交]

Claude Code:

用户: /agent-harness init Task Manager
Claude: [创建 features.json 和 progress.md]

用户: /agent-harness sprint 构建任务管理应用,支持创建、编辑、删除任务,以及标签分类
Claude: [分析需求 → 拆分为 8 个功能 → 更新 features.json]

用户: /agent-harness code
Claude: [实现第一个功能 → 更新进度 → 提交]

场景 2:继续现有项目

OpenCode:

用户: /agent-harness-status
Claude: [显示 Sprint 1 进行中,3/8 功能完成,下一个: s1-feat-004]

用户: /agent-harness-code
Claude: [查看进度 → 选择 s1-feat-004 → 实现 → 提交]

Claude Code:

用户: /agent-harness status
Claude: [显示 Sprint 1 进行中,3/8 功能完成,下一个: s1-feat-004]

用户: /agent-harness code
Claude: [查看进度 → 选择 s1-feat-004 → 实现 → 提交]

场景 3:处理阻塞

OpenCode:

用户: /agent-harness-status
Claude: [显示 s1-feat-005 被阻塞: 等待第三方 API 密钥]

用户: 先跳过这个,实现下一个
Claude: [选择 s1-feat-006 (无依赖) → 实现 → 提交]

Claude Code:

用户: /agent-harness status
Claude: [显示 s1-feat-005 被阻塞: 等待第三方 API 密钥]

用户: 先跳过这个,实现下一个
Claude: [选择 s1-feat-006 (无依赖) → 实现 → 提交]

场景 4:归档完成的 Sprint

OpenCode:

用户: /agent-harness-archive
Claude: [列出完成的 Sprint 1]
用户: 确认
Claude: [归档到 .agent-harness/archived/ → 清理 features.json]

Claude Code:

用户: /agent-harness archive
Claude: [列出完成的 Sprint 1]
用户: 确认
Claude: [归档到 .agent-harness/archived/ → 清理 features.json]

场景 5:强制归档所有 Sprint

当你需要重置项目、清理所有 Sprint 或重新规划时使用。

OpenCode:

用户: /agent-harness-force-archive
Claude: [警告:将归档所有 Sprint,包括未完成的]
用户: 确认强制归档
Claude: [归档所有 Sprint → 清空 features.json 中的 sprints → 保留 project 信息]

Claude Code:

用户: /agent-harness force-archive
Claude: [警告:将归档所有 Sprint,包括未完成的]
用户: 确认强制归档
Claude: [归档所有 Sprint → 清空 features.json 中的 sprints → 保留 project 信息]

使用场景:

  • 项目方向完全改变
  • 需要重新规划整个项目
  • 清理旧的无用 Sprint

注意: 这将归档所有 Sprint,不管它们的状态如何(包括 in_progress、planning、blocked 等)。归档的数据不会丢失,都保存在 .agent-harness/archived/ 中。

场景 6:并行执行多个功能(996 模式)

当你有多个独立功能需要快速完成时:

OpenCode:

用户: /agent-harness-996
Claude: [分析依赖和文件冲突 → 创建执行批次]
       批次 1 (并行): s1-feat-002, s1-feat-003, s1-feat-004
       批次 2 (并行): s1-feat-005, s1-feat-006
用户: [确认执行]
Claude: [调度子 Agent → 并行执行 → 验证结果 → 更新状态]

Claude Code:

用户: /agent-harness 996
Claude: [分析依赖和文件冲突 → 创建执行批次]
       批次 1 (并行): s1-feat-002, s1-feat-003, s1-feat-004
       批次 2 (并行): s1-feat-005, s1-feat-006
用户: [确认执行]
Claude: [调度子 Agent → 并行执行 → 验证结果 → 更新状态]

适用场景:

  • 多个独立功能(无依赖关系)
  • 功能修改不同文件(无文件冲突)
  • 需要加速 Sprint 完成

限制:

  • 最大并发 5 个子 Agent
  • 有文件冲突的功能会顺序执行
  • 需要干净的工作树

故障排除

构建损坏

  1. 检查最近的提交
  2. 查看 progress.md 中的更改
  3. 修复错误
  4. 用 lint/build 验证

功能太大

  1. Sprint Agent 将其拆分为更小的功能
  2. 每个成为独立的功能
  3. 如需要,标记依赖关系

上下文丢失

  1. 读取 progress.md - 最近会话
  2. 读取 features.json - 当前状态
  3. 读取 AGENTS.md - 项目约定
  4. 检查 git log - 最近更改

验证失败

Sprint Agent 和 Coding Agent 会自动验证 features.json 结构。如果需要手动检查:

  1. 使用 slash 命令触发验证(agent 会自动调用)
  2. 查看错误消息
  3. 修复 features.json 中的问题
  4. 重新运行相关命令

参考

技术要求

  • Python 3.8+ - 脚本使用标准库,无外部依赖
  • Git - 用于版本控制和提交
  • 文本编辑器 - 用于查看/编辑跟踪文件

许可

此 skill 可自由用于 Claude AI 助手。

贡献

欢迎改进和扩展!核心设计原则:

  1. 无外部依赖 - 脚本必须仅使用 Python 标准库
  2. 向后兼容 - 更改不应破坏现有的 features.json 文件
  3. 清晰的错误消息 - 所有错误应该是可操作的
  4. 渐进式加载 - 按 Agent 角色组织参考文档

致谢

基于 Anthropic 关于长期运行 agent 的有效 harness 研究。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages