道克桥: 涵盖: - 软件包:@agentskit/harness
@ agentskit/ 痛苦
你SDLC的循环. 一个模糊的目标变成PRD,PRD变成问题,每个问题 成为一份被冻结的合同,一个工人在自己的工作树上,一个经过审查的拉动请求被证明符合以下定义: 完成合并,在人门后释放.
本地 UI 是可选和回回保护的: 它工程 .ak-loop/ 文档和事件,并可以不添加守护进程或数据库而开始输入Harness任务。 其主要流程是第一问题:选择一个现有问题,冻结其合同/简介/限制,将其排入其中,并仅从持久的收件箱中解决人类的决定.
文档 : agentskit.io (英语)
安装
pnpm add -D @agentskit/harness # Node 22+
节点22或更新. 两个二进制 : ak-harness (每样东西)和 ak-verify (常见下相同的二进制)
校验-校正名称).
60秒钟
npx ak-harness loop init # writes loop.config.yaml from a preset
npx ak-harness loop doctor # providers, routing, slots, queue — dispatches nothing
npx ak-harness ui # local operational view at http://127.0.0.1:4321
npx ak-harness loop tick --dry-run --max 1
npx ak-harness loop install # puts tick + deliver on a schedule
然后,它运行没有你: tick 合同和发货, deliver 驱动拉动请求合并 .
跑步的样子
$ ak-harness loop tick --max 1
{"status":"ok","routing":{"orchestrator":"codex/gpt-5.6-sol","builder":"codex/gpt-5.6-luna"},
"results":[{"issue":"REP-141","outcome":"dispatched","branch":"you/rep-141-usage-flag",
"worktree":"rep-141-usage-flag","contractDigest":"9f2c1ab4…"}]}
$ ak-harness loop deliver
{"results":[{"issue":"REP-141","outcome":"fix-round","pr":482,
"reason":"review found 2 blocking finding(s)"}]}
$ ak-harness loop deliver
{"results":[{"issue":"REP-141","outcome":"merged","pr":482,
"actions":["local verify passed before review","verify.json supplied 2 outcome proof(s)",
"definition of done proven (5 item(s))"]}]}
工人留下证据,而不是承诺
3个文件 .ak-loop/ 在它的根 工作树. deliver 在合并门前读取; 缺少
一只像圆形一样回来 命名文件。 。 。 .
// .ak-loop/verify.json — what it ran, outcome by outcome
{ "ranAt": "2026-09-20T18:04:11.000Z", "command": "pnpm test packages/report", "exitCode": 0,
"outcomes": [{ "id": "o1", "status": "passed", "evidence": "42 passed | 0 failed" }] }
// .ak-loop/dod.json — both definition-of-done lists
{ "project": [{ "id": "tests", "status": "passed", "evidence": "212 tests · 212 pass" }],
"outcomes": [{ "id": "o1", "status": "passed", "evidence": "returns 404 for an unknown id" }] }
.ak-loop/plan.md 第三个是:工人实际遵循的计划,该计划偏离了批准的计划
一个.
配置, 按实例
# loop.config.yaml — the project's layer (there are four; the project outweighs the global one)
project: { name: report, repo: acme/report, baseBranch: main }
delivery:
verifyCommand: pnpm lint && pnpm test
review: { minSeverity: med, votes: 1 }
merge: { auto: true, requireChecks: true }
# Every issue must prove the project's list, on top of its own contract outcomes.
dod:
items:
- { id: tests, description: the suite is green, kind: command, command: [pnpm, test] }
- { id: changelog, description: the changelog moved, kind: file-changed, glob: CHANGELOG.md }
# One motor, three kinds of demand. A pin narrows the candidates; it never widens them.
flows:
default: standard
profiles:
standard: { review: { votes: 1, minSeverity: med } }
critical:
review: { votes: 3, minSeverity: nit }
merge: { requireHumanApproval: true }
roles: { review: { provider: codex, model: gpt-5.6-sol, effort: xhigh } }
incident:
merge: { requireChecks: false }
stages: { planner: false, vote: false, review: false }
maxFixRounds: 1
select:
- { flow: incident, anyLabels: [sev1] }
- { flow: critical, anyLabels: ['area:billing'] }
# A layer says which test closes an issue — cheaper than the whole suite on a monorepo.
layers:
- { id: L2, label: 'layer:L2', paths: ['packages/runtime/**'], verify: pnpm test packages/runtime }
GitHub 问题作为已配置的跟踪器
当 UI 和执行环路运行于 GitHub 时, 设置跟踪器到 GitHub project.repo数字 :
connectors:
tracker: github
github:
issues:
state: open
maxIssues: 500
refreshSeconds: 60
labels:
todo: loop:todo
inProgress: loop:in-progress
review: loop:review
done: loop:done
blocked: loop:blocked
机智称现有 gh CLI, 按最近更新的排序, 缓存棋盘于
.ak-loop/ui/github-issues.json。 。 。 . gh auth status 和寄存器写入权限在变异任务之前检查.
生命周期标签是专属的; done 关闭一个问题, 活动状态重新打开它 。 缺少配置标签失败
关闭。 UI 曝光已打入,确认的动作和任务;每个配置只选择一个跟踪器.
谐音读取 loop.config.yaml;它不消耗项目 .github/ai-loop.yaml,其计划属于
不同的执行者.
图标
| 只读 | |
|---|---|
loop doctor | 提供商、用户、线路、插槽、选定跟踪板、安装代理 |
loop debrief | 现在的循环是做什么的,每期 |
loop observe --since 24h | 异常和衡量标准; --precheck 给出调度器退出代码 |
loop retro --since 7d | 文摘、学习和校准建议 |
loop status • 妇女 loop watch --once • 妇女 loop paused | 飞行中停止的飞行阶段时间表 |
| 行为 | |
|---|---|
loop tick • 妇女 loop deliver | 发车证 发车证 发车证 --dry-run(中文(简体) ) |
loop plan start | answer | approve | architect | approve-design | decompose | 目标-PRD-设计-问题-两个人行门 |
loop release status | approve | run | 推动一个批量的人类批准, 捆绑在一头sha |
loop install • 妇女 loop uninstall • 妇女 loop resume | 调度,并清除暂停 |
作为图书馆
import { loadLoopConfig, resolveFlowSettings, assessDod, readPhaseArtifacts } from '@agentskit/harness'
const { config } = loadLoopConfig('loop.config.yaml')
const flow = resolveFlowSettings(config, { labels: ['sev1'] })
// → flow.review.votes, flow.merge.requireChecks, flow.flow.name === 'incident'
const artifacts = readPhaseArtifacts('/path/to/worktree', config)
// → [{ name: 'verify', file: '.ak-loop/verify.json', present: true, valid: true, detail: '2 outcome(s)' }, …]
// plugin.mjs, declared in `plugins.modules` — a gate of your own
export default function register(bus) {
bus.on('pr.merged', (event) => metrics.count('merged', event.issue))
bus.hook('beforeMerge', ({ issue }) => isChangeFreeze() ? { block: true, reason: `freeze: ${issue}` } : undefined)
}
此外:核查议定书
同样的二进制运行循环构建的单运行协议——被冻结的合同,可执行检查绑定 以及一项明确的人类决定:
ak-harness plan approved --by human
ak-harness start
ak-verify run --json
ak-verify approve approved --by human --json
{"status":"passed","criteria":["api-behavior"]}
每张支票的最终输出线是JSON映射到它所证明的结果ID. 证据与罪犯有关
图形 HEAD; 任何源、配置或合同更改将运行移动到 STALE。运行后附加一个散列链
events.ndjson - 核查一个 ak-harness events verify [run-id]。 。 。 .
可运行实例 : examples/minimum-profile.mjs (之后) (中文(简体) ) pnpm build) (中文(简体) ).
再来
- agentskit.io (英语) 概念、指南、实例和生成的 用于每个配置路径、命令和事件的引用.
- 文件/已安装 • 妇女 文件/记录 • 妇女 文件/记录和记录
- 决定: ADR-0027 (英语) (循环).. ADR-0032 (英语) (阶段) AR-0035 (英语) · (已完成的定义) ADR-0037 (英语) (费用)
- 捐款额 • 妇女 变动情况 • 妇女 MANIFESTO.MD 马里福尔大学
释放
这个 publish 任务在 .github/workflows/release-harness.yml 在合并时发布到 main, (中文(简体) ),
通过 npm 信任的出版( GitHub OIDC) — no NPM_TOKEN 随便哪里 它和它的工作流程一样
检查和 needs 每一个,所以一个承诺不能通过红门发布;一个版本还没有在
登记册是触发器。 文件有支票和出版物: npm 信任的出版授权
数据库和工作流程 文件名,因此将它重新命名为断开放出,直到npm设置匹配。 这个
候选清单和任何开放的阻塞器
release/manifest.json 财务报告和审定财务报表 release/notes.md。 。 。 .
麻省理工学院下属的自由开放源代码. 见 自由主义。 。 。 .