@agent_forge/forge-darwin-x64 1.66.1 → 1.68.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/README.md +17 -5
- package/bin/forge +0 -0
- package/package.json +1 -1
package/bin/README.md
CHANGED
|
@@ -157,7 +157,7 @@ Forge 退出码三态(`BLOCKED` 硬阻断 / `ADVISORY` 软信号 / 无前缀
|
|
|
157
157
|
每个开发任务自动走 3 道门禁:
|
|
158
158
|
|
|
159
159
|
```bash
|
|
160
|
-
forge task start --ref feat/add-login --branch --accept "go test -v ./... :: PASS" # 创建任务+分支+登记验收标准(--accept 可重复;Expected 是输出子串匹配;go test 带 Expected
|
|
160
|
+
forge task start --ref feat/add-login --branch --accept "go test -v ./... :: PASS" # 创建任务+分支+登记验收标准(--accept 可重复;Expected 是输出子串匹配;go test 带 Expected 或 contains/not-contains 断言忘加 -v 时 start 自动补——无 -v 无 PASS 行永不匹配)
|
|
161
161
|
forge task start --ref feat/login --worktree [--base main] [--wt-dir <父目录>] # 在 repo 树外为此任务创建独立 worktree+分支+绑定(多任务并发隔离形态,multi-task-concurrency L4;<repo 父目录>/<repo 名>-wt/<分支> 默认)
|
|
162
162
|
forge task start --ref feat/add-login --scope "internal/auth/*.go" # 声明计划改动白名单(规划前置→可度量契约,advisory 检测 scope-drift)
|
|
163
163
|
forge task start --ref feat/frontend --assignee kimi --role frontend --depends-on feat/api # 创建即分派给 kimi(offered),声明上游依赖 feat/api(DAG 环检测;task-verify/task-complete 在 feat/api 交付前阻断)
|
|
@@ -175,7 +175,7 @@ forge task score # 查看质量评分
|
|
|
175
175
|
<details>
|
|
176
176
|
<summary><b>📖 门禁细节:退出码契约 / PlanScope / Cheat-scan</b></summary>
|
|
177
177
|
|
|
178
|
-
门禁之间有时间和活动检查,防止 AI 跳过阶段直接提交。`task-implement` 的编译/断言检查为 advisory 提醒(由 agent 自检,不阻塞)——forge 技术栈无关,适配 loop engineering。`forge task verify-acceptance` 实跑 `task start --accept` 登记的验收标准(`Run :: Expected`),把 dev-workflow Plan 的验收条件从 plan 文本变成不可伪造的 deterministic 证据——对冲 agent 自述"满足验收"
|
|
178
|
+
门禁之间有时间和活动检查,防止 AI 跳过阶段直接提交。`task-implement` 的编译/断言检查为 advisory 提醒(由 agent 自检,不阻塞)——forge 技术栈无关,适配 loop engineering。`forge task verify-acceptance` 实跑 `task start --accept` 登记的验收标准(`Run :: Expected`),把 dev-workflow Plan 的验收条件从 plan 文本变成不可伪造的 deterministic 证据——对冲 agent 自述"满足验收"却没真跑的盲区。`forge task complete` 对非 generic 任务硬前置至少一条登记验收标准(零验收 = 考卷缺位拒绝完成;考卷来源分级盖章:spec-extract > start > conventions 兜底 > manual 补登,交付验收单如实披露各层级计数)。
|
|
179
179
|
|
|
180
180
|
**门禁退出码契约**:`forge task gate` 非 0 退出(输出 `BLOCKED:` 前缀)= 硬阻断,必须修复后重跑;零退出但见 `ADVISORY:` 前缀 = 软信号(gate 仍过、已记 checklog,应修不阻断)。按退出码而非文案行动——硬错误的散文易被误读成提醒而跳过。
|
|
181
181
|
|
|
@@ -213,7 +213,7 @@ Agent 无法通过 `node -e "fs.writeFileSync()"`、`cat > file`、直接编辑
|
|
|
213
213
|
| **read-before-edit** | Write/Edit 前(活跃任务内) | 编辑本会话未 Read 过的现存源文件 → 硬阻断(`BLOCKED`)。Edit 需精确匹配旧文本,未读即凭记忆盲改——old_string 撞中即错改入库,先 Read 再 Edit。豁免新建文件/测试文件/非源码;批量重构逃生 `forge task override --work-activity disable`(记 checklog 审计;work-activity 是节奏门禁,不降 evidence 强度)。reads-log 落盘随会话存活,压缩后仍累计 |
|
|
214
214
|
| **assertion-check** | Write/Edit 前 | 检测断言弱化(t.Fatal → t.Log、assert! 被删除等),advisory 提醒不阻塞(agent 自检) |
|
|
215
215
|
| **bash-guard** | Bash 前 | 检测命令中的写文件模式(writeFile、cat >、sed -i 等),无任务时 WARN(源码随后被 file-sentinel 隔离) |
|
|
216
|
-
| **gate-cmd-form** | Bash 前 | 门禁命令嵌组合形态(分号续行/截断管道/grep 掩蔽/\|\| 链/多门禁连刷)时
|
|
216
|
+
| **gate-cmd-form** | Bash 前 | 门禁命令嵌组合形态(分号续行/截断管道/grep 掩蔽/\|\| 链/多门禁连刷)时 **BLOCKED 拦截**——分号让前一门禁 BLOCKED 后链条照走、截断管道吞掉 BLOCKED 文本面,退出码契约被系统性削弱(设计 C;delivery-hardening 墙-1a:1.67 机械版本门 ratchet 生效,会话阻断上限 5 有界;逃生 FORGE_GATE_CMD_FORM=0 落 checklog 审计;重发为单条门禁命令或仅用 && 串联) |
|
|
217
217
|
| **hazard-guard** | Bash 前 | 高危命令(`rm -rf`、`git push --force`、`DROP TABLE/SCHEMA`、`TRUNCATE`、`GRANT ALL`、`kubectl delete`、`docker system prune`、无 WHERE 的 `DELETE/UPDATE`、解释器内联删除如 `python -c "os.remove(...)"` 等)human-in-the-loop 拦截:block + 指引用户确认 → `forge hazard confirm` 登记 5min 限时标记 → 重试放行(confirm 链是唯一放行路径,`FORGE_ALLOW_HAZARD` 已移除) |
|
|
218
218
|
| **auto-compile** | Write/Edit 后 | advisory 提醒用对应技术栈编译命令自检(go build / cargo check / mvn / tsc 等),不强制编译 |
|
|
219
219
|
| **workflow-test-guard** | Write/Edit 后 | 改 `.github/workflows/*.yml` 后自动跑 `internal/ci` 守护测试,把"沙盒异常"即时反馈给 agent(不依赖 CI 兜底),是 release.yml test→goreleaser→npm needs 链的实时守护层 |
|
|
@@ -290,14 +290,25 @@ Agent 无法通过 `node -e "fs.writeFileSync()"`、`cat > file`、直接编辑
|
|
|
290
290
|
| `forge task intent "<注记>"` | 追加意图注记(三段工件之 intent 段):append-only——没有覆写/删除入口,意图历史即决策史,防轮次重写导致的语义漂移(rot) |
|
|
291
291
|
| `forge task checklist add/tick/drop` | 操作对账单(checklist 段):勾选即进度、断点存活,task-complete 硬门禁要求全勾(report 写完不算 done,checkbox 才算) |
|
|
292
292
|
| `forge task start --invariant "run :: expected"` | 析出不变量(instrument 段):声明期校验必须是可执行命令(叙述性约束被拒并指引降级到 checklist/intent),映射进验收标准——机器对账/freshness/complete 前置全覆盖 |
|
|
293
|
+
| `forge task start --accept "..." --assert "type:arg :: expected"` | v2 结构化断言(spec-as-gate):五型机械可判 `exit`(期望退出码)\|`contains`\|`not-contains`(输出子串/反作弊)\|`file-changed`\|`file-untouched`(glob 对任务 diff——freeze 语义的任务级版,保护对象含 .md/.yml 等非源码);`--assert` 附属于同命令中 preceding `--accept`,file-\* 型可独立出现(无 Run);regex 刻意排除(ReDoS + 不可判——意见不走 hard);声明期拒绝叙述性与越形断言 |
|
|
294
|
+
| `forge task start --accept-file <yml>` | 批量考卷声明:顶层 `criteria:`,每条 `run/expected/assertions[type/arg/expected]`(键与任务状态 JSON 一致);与 `--accept` 同层级、按 (Run, Expected, Assertions) 三元组去重合并 |
|
|
293
295
|
| `forge task wild "<说明>"` | 野外动作申报:任务管道外的显式留痕出口(比静默绕过诚实、比强制建任务轻)。记会话/分支/HEAD/是否已有任务到 `wild/declarations.jsonl`,累计计数供审计回溯(vNext INV-1 的合法出口之一) |
|
|
294
296
|
| `forge task status` | 查看当前任务门禁状态(含已登记产物链产物与漂移/审批态) |
|
|
295
297
|
| `forge task list --plan-conversion` | plan-first advisory 转化率报告(先测量再翻转):已发/发后已补方案/发后仍无方案/未发自带方案四计数 + 转化率——叙事 stage 是否升档由数据决定而非直觉 |
|
|
296
|
-
| `forge task artifact --set <stage> --file <path> \| --stdin \| --list [--json] \| --verify \| --approve <stage> --by <人> \| --extract` | 产物链操作(L6 契约层,docs/design/artifact-chain-workflow.md):登记阶段产物(哈希引用,漂移探测)/ 查看链态 / 漂移校验 / 人工审批(human 档经 --by 归因到人、签内容哈希,内容再改即作废)/ 从产物提取验收标准(`accept: <cmd> :: <expected>` 行与 \`\`\`accept
|
|
298
|
+
| `forge task artifact --set <stage> --file <path> \| --stdin \| --list [--json] \| --verify \| --approve <stage> --by <人> \| --extract` | 产物链操作(L6 契约层,docs/design/artifact-chain-workflow.md):登记阶段产物(哈希引用,漂移探测)/ 查看链态 / 漂移校验 / 人工审批(human 档经 --by 归因到人、签内容哈希,内容再改即作废)/ 从产物提取验收标准(`accept: <cmd> :: <expected>` 行与 \`\`\`accept 围栏编译成验收门禁——产物成为硬门禁的源码;提取的标准盖考卷层级 spec-extract)。链与档位(advisory\|rubric\|human\|hard,HARD 只守事实)由 `<DataDir>/schemas/schema.yaml` 声明(缺省默认链 proposal→spec→design→plan 全 advisory 零阻断);`task start --artifact "<stage>=<path>"` 开工即登记并就地提取验收;complete 前漂移 pre-flight:hard/human 档漂移阻断、advisory/rubric 留痕、漂移一律作废审批;逃生(落审计)`FORGE_ARTIFACT_CHAIN=disable` 或 `forge task override --artifact-chain disable` |
|
|
299
|
+
| `forge task chain-init [--force]` | 一键接线产物链执法(oracle-pipeline L0):写默认链 schema 且 spec 档升 human——spec 里的考卷围栏(accept: 行/```accept 块)从此需 forge task artifact --approve spec --by <审批人> 签字才算定稿,内容再改即作废(业务正确性的签字入口);已存在 schema 须 --force 显式覆盖;不依赖活跃任务 |
|
|
297
300
|
| `forge task mine [--agent <agent>] [--role <role>] [--all-projects] [--blocked] [--json]` | 列出分派给当前/指定 agent 的任务(`--all-projects` 全仓扫描按项目分组;`--blocked` 仅被依赖阻塞的,标注卡在哪环 [status, gate 进度 passed/total]) |
|
|
298
301
|
| `forge task gate <gate-id>` | 验证单道任务门禁 |
|
|
299
302
|
| `forge task impact --level none\|multi [--repo <key>]... [--note <说明>] [--ref <ref>]` | 声明当前任务的跨仓影响(多仓 workspace 成员的 verify 前置,单仓改动也须显式声明):`--level none` 改动限定本仓;`--level multi --repo <key>` 波及指定成员 repo(`--repo` 可重复)。默认 advisory(未声明只提醒),protocol.yml 配 `cross_repo_impact: required` 升级为 HARD stop(四段式 WHAT/WHY/HOW/REF 报错),详见 docs/design/multi-repo-workspace.md |
|
|
300
|
-
| `forge task verify-acceptance [--ref <ref>] [--trust-foreign]` | 实跑验收标准(task start --accept 登记),记 deterministic
|
|
303
|
+
| `forge task verify-acceptance [--ref <ref>] [--trust-foreign]` | 实跑验收标准(task start --accept 登记),记 deterministic 证据;v2 断言逐条判定并记 `acceptance-assert` 证据行(聚合 `acceptance` 行保留);验收命令来自 task import / .forge migrate(外来标记)时首跑须 `--trust-foreign`(人工审阅命令清单后显式受信,防外来命令串直接执行);登记了 held-out 保留集(`task start --heldout <file>`)时同时实跑双套件并记 gap——可见全过而保留集挂 = test-generalization gap(SpecBench 形态,`FORGE_HELDOUT=disable` 逃生留痕),task-complete 边界复跑;零登记时自动从 conventions 档案兜底登记默认套件(build/test/lint,考卷层级 conventions——项目默认考卷而非实现者自选),并从 held-out 池自动抽 1 套业务坏天气集入卷(池非空时,墙-2b) |
|
|
304
|
+
| `forge task accept <criteria...> [--ref <ref>] [--assert "type:arg :: expected"]` | 补登记验收标准(考卷层级 manual——实现者看过代码后出的题,梯子最弱一级):格式同 --accept("run :: expected",可多条),`--assert` 挂本命令最后一条标准(file-\* 可独立);锁内合并按 (Run, Expected, Assertions) 三元组去重(已存在的同一检查保留原层级);已完成任务拒绝补登(考卷在交付前定稿);交付验收单如实披露 manual 层存在 |
|
|
305
|
+
| `forge task report [--ref <ref>] [--json]` | 交付验收单(验收方单页视图):考卷逐条结果+层级与来源分布、评分与证据强度(deterministic vs agent-claim)、未验证面(UntestedAreas)、残留风险(完成时 open findings)、考卷披露(manual 层告警/held-out 保留集/spec 审批态)、逃生舱库存、审查轮次——附复现入口(verify-acceptance 重跑 / trace 证据链);逃生债行(价-1a:每个验证类逃生转为未验证面披露)、自供申辩计数(价-1c)、自审标记(价-1b:盖章会话=改动生产者时 doc-gate 不消费自录分);--json 结构化输出 |
|
|
306
|
+
| `forge task mutation [--sample N]` | mutation 抽样(oracle-pipeline L2a,机器出题治假绿;作用于当前活跃任务,无 --ref):对任务改动的 Go 源文件注入变异体(比较/逻辑翻转),逐个原地变异→实跑所在包 go test→立即还原——杀不死变异体的测试是装饰品(断言弱化/空断言无论覆盖率多高都查不出)。判定走 go 退出码契约(测试失败=杀灭/构建失败=无效体/通过=存活逐位点点名);确定性均匀抽样(默认 3,硬-1a 提速:只变异磁盘上有配对测试的改动文件,FORGE_MUTATION_TIMEOUT 调单变异体超时);证据落 mutation-sampling deterministic 行(计入证据强度);advisory 不阻断 |
|
|
307
|
+
| `forge task fuzz [--sec N] [--max N]` | fuzz 实跑(oracle-pipeline L2b;作用于当前活跃任务,无 --ref):发现任务改动包的 Fuzz 目标并按预算执行 Go 原生引擎(默认 30s/目标、最多 3 个)——edge 清单再全也是人枚举的,fuzz 是无记忆的对抗者;失败目标分型:退出码 1=真 crasher(崩溃输入由 go 写进 testdata/,证据即语料,修完 go test 回归),构建失败/预算中断则无 crasher 语料;证据落 fuzz-run deterministic 行;advisory 不阻断 |
|
|
308
|
+
| `forge task edgecheck` | edge case 清单(oracle-pipeline L2c;作用于当前活跃任务,无 --ref):任务改动的每个导出函数 × 五维(基数/值域/时序/环境/故障)机械枚举成可勾选骨架,落 DataDir/edgecases/——机器出骨架、验收前逐项填断言;确定性生成(文件序×声明序) |
|
|
309
|
+
| `forge task regression --finding <id> --test <file> \| --none --note <理由>` | 登记 finding 的回归测试绑定(oracle-pipeline L4 修复自证):修前红由 finding 作证、修后绿由 --test 指向的本任务改动 _test.go 作证(三重校验:后缀/任务窗口/真含测试函数);无可测形态走 --none --note 落审计行——`forge task finding --resolve` 的硬前置,没有回归的 fixed 会复发 |
|
|
310
|
+
| `forge task heldout-pool --add <file> --name <名> [--tag <组>] \| --list [--tag <组>] \| --draw N [--tag <组>] [--apply] [--ref <任务>]` | held-out 池(oracle-pipeline L3 独立出题):把出保留题变成项目资产——业务坏天气集(金额边界/并发/退款链)沉淀进 DataDir/heldout-pool/,任务侧 `--draw N --apply [--ref <任务>]` 名序确定性抽取并入指定/活跃任务保留集(按 Run 去重、保留集计数不清零、落 apply 审计行;verify-acceptance 实跑双套件记 gap);同名拒绝静默换锚;--add/--list/--draw 是项目级动作不依赖活跃任务;「测试的测试」是人工边界——池里的题必须人出 |
|
|
311
|
+
| task-complete 验收登记门禁(自动) | 非 generic 交付任务零验收标准 → 拒绝完成(考卷缺位);考卷质量下限(墙-2a):有测试能力仓库考卷须含 ≥1 条测试类命令——单条 go build 不构成合格考卷;hazard 清账(墙-1b):未确认高危拦截悬账 → 拒绝完成(出口是真人 confirm/release,均需终端 char-device;FORGE_HAZARD_PENDING=disable 留 CI);mutation 复发升硬(硬-1b):Go 改动连续 3 任务零 mutation 证据 → 硬拦(FORGE_MUTATION_GATE=disable 逃生)。考卷层级梯子:spec 产物提取(human 档可签字)> start 登记 > conventions 兜底 > manual 补登(验收单披露)。逃生与 freshness 共用舱:`forge task override --acceptance-gate disable` / `FORGE_ACCEPTANCE_GATE=disable`(落审计、降 evidence) |
|
|
301
312
|
| `forge hazard halt status` / `forge hazard halt release --yes` | safe-halt 语义:hazard-guard 连续拦截 ≥3 次(自最近 confirm/release)→ 会话停机(停止自修复盲试,task gate 推进时明示);人工核查最近拦截命令后 `release --yes` 解锁(记 halt-release 审计事件,agent 不得自我解锁) |
|
|
302
313
|
| `forge task mirror github [--repo owner/name] [--dry-run]` | 分派任务镜像到 GitHub Issues(Forge 台账为主真相、issue 为组织可见面;offered→建 issue 打 forge:状态 label,终态→关闭;映射存 DataDir/mirror-gh.json;经 gh CLI,无 gh 明确报错)——Symphony 验证的组织面入口需求 |
|
|
303
314
|
| `forge compat snapshot [--out <file>]` / `forge compat report [--base <ref>] [--json]` | 可执行兼容工件(七面快照:命令树+flags / CheckName roster / 逃生舱 env / 内嵌载荷 sha256 / 序列化 schema 键 / 阻断位点计数 / 外部桥契约)——golden(compat.snapshot.json)入库、PR diff 呈现;report 对比基线:破坏性变更(removed/changed)exit 2、added 提示同步文档(cargo-semver-checks 契约本地化:0=过 / 2=违规 / 1=工具故障);承诺表见 docs/design/compat-commitments.md |
|
|
@@ -317,6 +328,7 @@ Agent 无法通过 `node -e "fs.writeFileSync()"`、`cat > file`、直接编辑
|
|
|
317
328
|
| `forge eval golden run [--dir <dir>] [--repeats N] [--rewrite-manifest] [--json]` | 门禁 golden 标注集重放:precision/fpr(Wilson 区间)+ 确定性重放一致率;用例集指纹钉在 `evals/forge/golden/MANIFEST.sha256`,不符拒绝运行(`--rewrite-manifest` 仅限显式轮换) |
|
|
318
329
|
| `forge eval golden private-init` / `rotate [--max-cases N]` | 私有 golden 子集(0700,永不进 VCS)与季度轮换(oracle 复验 + 最老优先淘汰 + 审计行) |
|
|
319
330
|
| `forge eval traps run [--dir <dir>]` | 对抗陷阱重放(测试削弱/伪造审计证据/虚假完成——ImpossibleBench 思想);capture 率与行动清单 |
|
|
331
|
+
| `forge eval redteam` | seeded-bug 红队演练(oracle-pipeline L6):对验证链自身注入五类雷(零验收交付/internal 零引用导出/吞错/类型抑制/heldout gap),逐颗用既有检查函数判定拦截——escaped 或设施故障即如实披露(exit 非 0 供 CI 门禁);与 traps 互补:traps 回放过去,redteam 注入现在 |
|
|
320
332
|
| `forge eval judge-audit --scores <file>` | 判分器受审:重放极差 + 与人工标注 Cohen's κ;κ<0.6 该判分器 BLOCKED 决策降级 ADVISORY |
|
|
321
333
|
| `forge eval resume-drill [--dir <dir>]` | 接续演练(C3):脚本化断点续做断言(仅回归对比,绝对值不外宣) |
|
|
322
334
|
| `forge eval run --manifest <file> --profile <off\|gates-only\|full> --model <m> [--repeats N] [--wallclock <d>] [--forge-ref <ref>]` | Track A 端到端基准运行(四元组 scorecard + pass^k 曲线 + 预算截断披露;`--forge-ref` 标注被测 forge 版本,四元组之一);真实执行需 `FORGE_EVAL_SMOKE=1`,否则确定性 scripted 替身 |
|
package/bin/forge
CHANGED
|
Binary file
|
package/package.json
CHANGED