docs: add agent API reference, onboarding guide, and universal skill

- docs/agent-api-reference.md (473 lines): complete HTTP API reference for all 12 endpoints
- docs/agent-onboarding-guide.md (272 lines): ssh_cli and http_pull workflows, Forgejo integration
- skill/SKILL.md (281 lines): universal agent skill, platform-agnostic, curl-based examples

All content in English. No code changes.
This commit is contained in:
Zer4tul 2026-05-12 14:57:05 +08:00
parent e39a16498c
commit d1a746a8cb
9 changed files with 1250 additions and 0 deletions

View file

@ -0,0 +1,2 @@
schema: spec-driven
created: 2026-05-12

View file

@ -0,0 +1,65 @@
## Context
agent-fleet 核心功能已经实现并部署到 arm0 上运行。但没有任何 Agent 知道怎么用它。项目的可用性完全取决于 Agent 能否正确接入。
需要两个交付物:
1. **API 参考文档**:给 Agent 看的 HTTP API 手册
2. **通用 Skill**:遵循标准 skill 规范的能力描述,不绑定特定平台
关键约束Skill 必须是平台无关的。承担 Team Leader 角色的不一定是 OpenClawCodex、Claude Code、OpenCode、Hermes Agent 都可能是调度者。
## Goals / Non-Goals
**Goals:**
- 提供完整、准确、可直接使用的 API 参考文档
- 提供通用 Skill任何 Agent 加载后就知道如何与 agent-fleet 交互
- 覆盖两种执行模式ssh_cli + http_pull的完整工作流
- 覆盖 Forgejo 集成的 Git 工作流
**Non-Goals:**
- 不写人类运维文档(部署、配置、排障)→ 这是另一个 change
- 不写特定平台的集成脚本(如 OpenClaw skill 的安装脚本)
- 不实现 SDK 或客户端库
## Decisions
### Decision 1: 通用 Skill 规范,不绑定平台
**选择**: Skill 使用标准 YAML frontmatter + Markdown body 格式
**理由**:
- 所有主流 Agent 平台都支持这种格式OpenClaw、Claude Code、Codex CLI、OpenCode
- 不包含任何平台特定语法Agent 自行转换
- curl 格式是通用语言,所有 Agent 都能理解
**替代方案**:
- OpenClaw 专用 skill限制了使用范围
- 多平台各自写:重复劳动,容易不一致
### Decision 2: 文档放在 repo 内
**选择**: `docs/` 目录放 API 参考和接入指南,`skill/` 目录放 SKILL.md
**理由**:
- 与代码同仓库,版本一致
- Agent 可以通过 Forgejo 直接读取文档
- Skill 可以被各平台 fork 或 symlink
### Decision 3: 文档从代码自动生成 + 手动补充
**选择**: API 端点列表手动维护Phase 1后续考虑从代码注释自动生成
**理由**:
- Phase 1 端点数量有限(~12 个),手动维护成本低
- 自动生成需要额外工具链(如 `utoipa`Phase 1 不值得投入
## Risks / Trade-offs
- **[文档过时] 代码变更后文档可能不一致** → 文档与代码同仓库PR review 时检查
- **[Skill 通用性限制] 通用意味着不能利用平台特性** → 通用是正确选择,平台特定优化由各 Agent 自行处理
## Open Questions
_(resolved)_
- ~~Skill 是否需要包含多语言版本(中/英)?~~ → 全部使用英文。原因LLM 训练语料以英文为主,英文更 token-efficient、语义歧义更小。Skill 的受众是 Agent 不是人类。

View file

@ -0,0 +1,37 @@
## Why
agent-fleet 的所有核心功能双执行模型、Forgejo 集成、Receipt 验证)已经实现并在 arm0 上跑通。但没有任何 Agent 知道如何使用它。
当前状态:
- API 端点已经实现注册、心跳、dequeue、status、receipt、webhook 等)
- 双执行模式ssh_cli + http_pull已经实现
- 但没有任何文档告诉 Agent "怎么接入、怎么调 API、怎么配合工作流"
项目的可用性完全取决于 Agent 能否正确接入。没有文档和 skillagent-fleet 就是一个没人会用的 API。
同时,需要的是一个**通用 skill**(不绑定 OpenClaw因为
- 承担 Team Leader 角色的不一定是 OpenClaw
- Codex、Claude Code、OpenCode、Hermes Agent 等都需要能理解和使用 agent-fleet
- Skill 是通用的 Agent 能力描述,遵循通用规范
## What Changes
- 新增 `docs/agent-api-reference.md`:完整的 HTTP API 参考文档,供任何 Agent 阅读
- 新增 `docs/agent-onboarding-guide.md`Agent 接入指南,包含两种模式的完整工作流程
- 新增 `skill/` 目录:通用 Agent Skill 定义SKILL.md遵循通用 skill 规范
- Skill 内容API 调用方式、认证、任务生命周期、Forgejo 工作流、错误处理
## Capabilities
### New Capabilities
- `agent-api-reference`: HTTP API 完整参考文档(端点、请求/响应格式、错误码、示例)
- `agent-skill`: 通用 Agent Skill 定义,描述 Agent 如何与 agent-fleet 交互
### Modified Capabilities
_(无)_
## Impact
- **文档**:新增 2 个 Markdown 文档 + 1 个 Skill 定义
- **代码**:无代码变更
- **项目**Skill 目录是新增结构,可能需要考虑放在 repo 的哪个位置

View file

@ -0,0 +1,43 @@
## ADDED Requirements
### Requirement: Complete HTTP API reference documentation
项目 SHALL 提供完整的 HTTP API 参考文档(`docs/agent-api-reference.md`),供任何 Agent 阅读。文档 SHALL 覆盖所有公开端点,包含请求/响应格式、错误码、示例。
#### Scenario: Agent reads API reference to understand available endpoints
- **WHEN** Agent 阅读 `docs/agent-api-reference.md`
- **THEN** 文档 SHALL 列出所有端点healthz、agents/register、agents/heartbeat、agents/deregister、agents (GET)、tasks (GET)、tasks/{id} (GET)、tasks/dequeue、tasks/{id}/status、tasks/{id}/retry、tasks/{id}/complete、receipts、webhooks/forgejo
- **AND** 每个端点 SHALL 包含HTTP 方法、URL、请求体格式、响应格式、错误码、curl 示例
#### Scenario: Agent checks authentication requirements
- **WHEN** Agent 查看 API 参考的认证部分
- **THEN** 文档 SHALL 说明http_pull 模式需要 Bearer token注册时获取ssh_cli 模式不需要 Agent 认证webhook 端点需要 HMAC-SHA256 签名
#### Scenario: Agent understands error responses
- **WHEN** Agent 收到错误响应
- **THEN** 文档 SHALL 列出所有错误码401 Unauthorized、403 Forbidden、404 Not Found、400 Bad Request、500 Internal Server Error
- **AND** 每个错误码 SHALL 包含触发场景描述
### Requirement: Agent onboarding guide
项目 SHALL 提供 Agent 接入指南(`docs/agent-onboarding-guide.md`),描述两种执行模式的完整工作流程。
#### Scenario: New agent team leader reads onboarding guide
- **WHEN** 新的 Team Leader Agent如 Jeeves阅读 onboarding guide
- **THEN** 文档 SHALL 描述两种执行模式的区别和使用场景:
- ssh_cliOrchestrator 主动调度,适用于 Codex、Claude Code、OpenCode 等有 CLI 的 Agent
- http_pullAgent 自主拉取,适用于 OpenClaw/Jeeves、Hermes 等有自己的调度器的 Agent
#### Scenario: Agent follows ssh_cli workflow
- **WHEN** Agent 按 ssh_cli 模式接入
- **THEN** 文档 SHALL 描述完整流程:配置 host → Agent 安装 CLI → Orchestrator 自动发现 → 任务自动分配和执行 → PR 创建 → webhook 回调
#### Scenario: Agent follows http_pull workflow
- **WHEN** Agent 按 http_pull 模式接入
- **THEN** 文档 SHALL 描述完整流程:调用 register API → 获取 token → 定期 heartbeat → 调用 dequeue 拉任务 → 执行 → 调用 complete/receipt API
#### Scenario: Agent understands Forgejo integration
- **WHEN** Agent 阅读 Forgejo 集成部分
- **THEN** 文档 SHALL 描述Issue 如何变成任务webhook → label 解析)、任务如何关联 Git 分支(`task/{task_id}`、PR 生命周期如何驱动状态更新opened → review_pending、merged → completed
#### Scenario: Agent understands structured prompt format
- **WHEN** ssh_cli 模式的 Agent 需要理解传入的 prompt
- **THEN** 文档 SHALL 描述结构化 prompt 的格式Task ID、Type、Goal、Constraints、Branch、Expected output、Validation

View file

@ -0,0 +1,41 @@
## ADDED Requirements
### Requirement: Universal Agent Skill definition
项目 SHALL 提供一个通用 Agent Skill`skill/SKILL.md`),遵循标准 skill 规范YAML frontmatter + Markdown body。Skill SHALL 不绑定任何特定 Agent 平台OpenClaw、Claude Code、Codex、OpenCode、Hermes 等均可使用)。
#### Scenario: Any agent discovers and loads the skill
- **WHEN** 任意 AgentCodex、Claude Code、OpenCode、Hermes 等)加载 skill/SKILL.md
- **THEN** Skill SHALL 包含 YAML frontmatter`name: agent-fleet-integration``description` 描述用途和触发条件
- **AND** Skill body SHALL 使用标准 Markdown 格式(标题、代码块、示例)
#### Scenario: Skill teaches agent how to interact with agent-fleet
- **WHEN** Agent 阅读 Skill 内容
- **THEN** Skill SHALL 包含 Quick Start 部分最简单的接入示例3 步以内)
- **AND** 包含 Instructions 部分(详细的 API 调用流程)
- **AND** 包含 Examples 部分(每种操作的 curl 示例)
- **AND** 包含 Guidelines 部分(错误处理、重试策略、认证规则)
#### Scenario: Skill covers both execution modes
- **WHEN** Agent 需要选择执行模式
- **THEN** Skill SHALL 清晰说明 ssh_cli 和 http_pull 的区别
- **AND** 指导 Agent 如何判断自己应该使用哪种模式:
- 如果有 CLI 且在配置的主机上 → ssh_cli由 Orchestrator 调度)
- 如果有自己的调度器或不在配置的主机上 → http_pull自主拉取
#### Scenario: Skill includes Forgejo workflow
- **WHEN** Agent 需要理解 Git 工作流
- **THEN** Skill SHALL 描述分支命名约定(`task/{task_id}`、PR 创建流程、webhook 触发机制
#### Scenario: Skill includes error recovery guidance
- **WHEN** Agent 遇到 API 错误
- **THEN** Skill SHALL 提供常见错误的处理方式:
- 401 → 检查 token必要时重新注册
- 404 → 任务可能已完成或不存在
- 409/400 → 检查任务状态是否允许该操作
- 网络错误 → 重试(指数退避)
#### Scenario: Skill is portable across agent platforms
- **WHEN** Skill 被不同平台的 Agent 使用
- **THEN** Skill SHALL 不包含任何平台特定的语法或指令(如 OpenClaw 的 `sessions_send`、Claude Code 的 `hooks` 等)
- **AND** 所有交互通过标准 HTTP 请求描述curl 格式)
- **AND** Agent 可根据自身能力将 curl 转换为对应的 HTTP 调用方式

View file

@ -0,0 +1,36 @@
## 1. API 参考文档
- [ ] 1.1 创建 `docs/agent-api-reference.md`
- [ ] 1.2 列出所有公开端点(~12 个每个包含HTTP 方法、URL、请求体、响应体、错误码、curl 示例
- [ ] 1.3 认证部分http_pull token、webhook HMAC-SHA256 签名
- [ ] 1.4 错误码汇总401/403/404/400/500每个附触发场景
- [ ] 1.5 通用说明base_url、Content-Type、字符编码、分页如有
## 2. Agent 接入指南
- [ ] 2.1 创建 `docs/agent-onboarding-guide.md`
- [ ] 2.2 两种执行模式对比表ssh_cli vs http_pull
- [ ] 2.3 ssh_cli 模式完整工作流:配置 host → CLI 安装 → 自动调度 → PR 工作流
- [ ] 2.4 http_pull 模式完整工作流register → heartbeat → dequeue → execute → complete/receipt
- [ ] 2.5 Forgejo 集成说明Issue → Task、分支命名、PR 生命周期
- [ ] 2.6 结构化 prompt 格式说明ssh_cli 模式下 Agent 收到的 prompt 结构)
- [ ] 2.7 常见问题 FAQ
## 3. 通用 Agent Skill
- [ ] 3.1 创建 `skill/SKILL.md`YAML frontmatter + Markdown body
- [ ] 3.2 Quick Start最简接入示例3 步以内)
- [ ] 3.3 Instructions详细 API 调用流程register → heartbeat → dequeue → execute → complete
- [ ] 3.4 Examples每种操作的 curl 示例
- [ ] 3.5 Guidelines错误处理、重试策略、认证规则
- [ ] 3.6 执行模式选择指南Agent 如何判断自己用 ssh_cli 还是 http_pull
- [ ] 3.7 Forgejo 工作流说明分支命名、PR 创建、webhook 触发)
- [ ] 3.8 验证Skill 内容与 API 参考文档一致、curl 示例可执行
## 4. 验证
- [ ] 4.1 API 参考文档覆盖所有已实现端点
- [ ] 4.2 curl 示例基于 arm0 实例可执行
- [ ] 4.3 Skill 格式符合标准规范YAML frontmatter + Markdown body
- [ ] 4.4 Skill 不包含任何平台特定语法
- [ ] 4.5 接入指南与当前代码实现一致