开放目标( CLEO 目标插件)
持续、主机验证的入球模式 打开代码 2描述你想要什么,让捆绑 写入目标 面试将它变为结构化的合同,插件保持会话工作,直到主机——而不是模型——证明每个标准.
状况:已释放(
0.9.4npm 时为@cleocode/goal) (中文(简体) ). 引擎,校验和TUI是用一个脚本模型来构建并测试到以OpenCode 2.0.22为终点的,每个版本都从自己安装的标记中被证明. CLEO作为可选的一等公民融入社会(/goal cleo) (中文(简体) ). 见 文件/手册。 。 。 .名称 : 这个项目是 开放式目标 (雷波语)
kryptobaseddev/open-goal) (中文(简体) ). 这叫opencode-goal直到2026-10; GitHub repo 重定向旧的 URL, 代理邮箱是open-goal-lead@macbook启用open-goal在新代码、文件、邮件和指令中——不是opencode-goal。 。 。 .
为什么另一个目标插件
大多数入球循环让模型宣布自己完成. 研究和用户报告都说这是主要的失败:代理商声称文件不支持的成功. 在这里,工人只能 索赔;插件然后自行运行合同的检查,一个独立的只读验证器必须引用文件,以获取命令无法检查的任何内容,插件则重新读取这些引用. 一项失败的索赔又回到了工人身上,因为有组织的裁决和循环仍在继续.
| 结构化合同 | goal.yaml:结果,二进制标准 有真实的检查,不变量,受保护的测试文件,非目标,计划,假设,可选预算 |
| 主机核查完成 | 命令 / 文件 / 包含 / 不包含 / diff 检查 由插件运行; 有引文重读的验证器; 所有者签名关闭标准 |
| 诚实的循环 | 按工作树变化、摊位和阻塞器检测、零键等待、预算总结、 Esc 暂停测量的进展 |
| 防压缩 | 合同是按每一份要求提出的,从未被保留在历史上 |
| 现场TUI | 侧边栏卡、状态药丸、需要时横幅、土司和桌面通知 |
| 没有模式转换状态 | /goal 命令作为插件代码运行 |
安装
需要打开代码 2.0.22 或晚点 (OpenCode 1.x插件与此插件不相容). 软件包是 @cleocode/goal ("CLEO目标");其本位是: cleo-goal,与 ocg ("开克球入球")作为别名. 垃圾桶运行在平地节点22.14+,不需要Bun.
为一个项目注册插件( 只写) <project>/.opencode/opencode.json键 plugins;同义词:
npm i -g @cleocode/goal
cd your-project
cleo-goal install --project # --dry-run to preview, --json for a machine reply
与 平等机会委员会, (中文(简体) ), cleo goal install --harness opencode 运行同一步骤 cleo doctor goal-runtime 报告已安装的版本.
或通过 OpenCode 本身为每个工程安装它( 此写入用户- 全球配置 ) :
opencode plugin add "@cleocode/goal@<version>"
opencode reload
opencode plugin list # open-goal should be listed
一个版本。 一个git标签仍然可以作为一个 spec: github:kryptobaseddev/open-goal#v<version>。 。 。 .
这个 cleo-goal 选项
| 命令 | 对 |
|---|---|
cleo-goal --version | 指纹 cleo-goal <version> |
cleo-goal status --json | 活的目标(最后完成的目标) status: "none"作为JSON与 schemaVersion: 1; 项目可读时退出 0 |
cleo-goal install --project [--spec <npm-or-git spec>] [--json] [--dry-run] | 将此插件添加到 .opencode/opencode.json; 回复 {schemaVersion, action: installed|already-present|updated|dry-run, file, spec, plugins}; 出口 1 {schemaVersion, error},退出 2 用途 |
cleo-goal tick | jSON在Stdin上, JSON只在Stdout上 |
cleo-goal claim --summary <text> [--evidence C1=<note> ...] | 记录一个没有OCG工具的吊带索赔 |
快开始
/goal new make the checkout test suite pass on Node 24
这个 写入目标 技能检查寄存器( 命令、 失败测试、 基线) , 仅询问它无法查看的决定 —— 几轮可选择的选项, 并附有推荐的答案 .opencode/goals/<slug>/goal.yaml,验证它, 给你看确切的合同, 并要求开始。 选择 现在开始进球。 。 。 .
或自己写合同然后跑 /goal start <slug>。 。 。 .
合同
schema: goal/v1
id: node24-checkout
title: Checkout suite passes on Node 24
intent:
verbatim: "make the checkout test suite pass on Node 24"
outcome: npm run test:checkout exits 0 under Node 24
non_goals: [Upgrading other packages]
criteria:
- id: C1
statement: WHEN the checkout suite runs on Node 24 THE suite SHALL exit 0
check: {kind: command, run: "npx -y node@24 node_modules/.bin/jest checkout", live: true}
- id: C2
statement: 'No deprecated Buffer() constructor calls remain in src/checkout'
check: {kind: absent, pattern: "new Buffer\\(", paths: [src/checkout]}
- id: C3
statement: MIGRATION.md explains each behaviour change
essential: false
check: {kind: verifier, ask: "Does MIGRATION.md explain every behaviour change made for Node 24?"}
invariants:
- id: I1
statement: The full suite SHALL CONTINUE TO pass on Node 22
check: {kind: command, run: "npm test"}
protect: ["test/**"]
plan:
- {id: S1, title: Reproduce the failures on Node 24}
- {id: S2, title: Fix them, proves: [C1, C2], depends_on: [S1]}
检查类型 : command (退出代码/输出预期,超时,重复运行, live 在文件更改后重新运行) \ file • 妇女 contains • 妇女 absent (不得继续比赛) diff (自开始以来路径不变) · verifier (必须引用文件的独立只读法官)- human (你的签注) 可选 : scope, (中文(简体) ), constraints, (中文(简体) ), assumptions, (中文(简体) ), budget {turns, wall, tokens, cost_usd}, (中文(简体) ), stop, (中文(简体) ), autonomy, (中文(简体) ), verification {mode, max_rejections}。完整参考: 技能/写作-目标/参考/目标-设计。 。 。 .
图标
| 命令 | 对 |
|---|---|
/goal new <words> | 运行写目标访谈(录取探测器首先显示现有/类似目标) |
/goal start <slug> [承认-超 | 排练每次命令检查,然后锁定并运行 |
/goal • 妇女 /goal status | 完整状态对话框 |
/goal pause • 妇女 /goal resume | 停止 / 继续循环( 重置摊位和故障计数器) |
/goal verify | 现在运行完成检查 |
/goal amend • 妇女 /goal amend confirm | 提议/重新锁定所有者编辑的合同(生成约束的审计线索) |
/goal archive | 将完成的入球降级到 .opencode/goals-archive/ (从未删除;登记处仍然回答"这是否是一个目标?") |
/goal approve C3 • 妇女 /goal reject C3 <why> | 签个名 human 标准 |
/goal abort | 永远停止跑步(保留脚本和证据) |
/goal validate <slug> • 妇女 /goal list [all] | · 列出现场(+存档)目标 |
/goal cleo • 妇女 /goal cleo install|init|sync | 探测CLEO CLI和这个项目 .cleo 工作空间(初始化/未初始化/没有CLI); install编号 :init 运行精确的文档命令 只有你明确选择 (从来没有沉默,从来没有苏多); sync [<slug>] T123[@sha] … 记录真实的每门 CLEO 证据,并通过 CLI 完成相关任务 |
/goal help | 代理前导:命令、工具分割、存储、中跑规则 |
命令调色板下的动作相同 目标。 。 。 .
模特儿会怎样
工具(仅限 goal_*,按名称可见: goal_status, (中文(简体) ), goal_progress (步骤+一行说明+下行行动), goal_claim (每个标准的证据,然后结束转弯), goal_block (稳定键;一行有3个停止进球), goal_flag (一个标准是矛盾的、不可能的或不安全的), goal_wait (在N秒后恢复,不花费符号), goal_validate, (中文(简体) ), goal_inventory (该项目的每一项合同:草稿、现场/截取/完成、档案), goal_manage (暂停/恢复/核实/附图/破坏/确切目标存档), goal_recover_divergence (磁盘合同与其锁不同), goal_propose_amendment • 妇女 goal_resolve_amendment • 妇女 goal_review (分阶段合同变更和所有者审查), goal_start (仅在你选择之后) 现在开始进球) (中文(简体) ). 单是核查员 goal_verdict。 。 。 .
当一个目标运行该模型不能编辑合同时,文件在 .opencode/goals/,或保护路径,以及向您提出的问题被推迟(每个目标可配置).
保存着的东西
.opencode/goals/<slug>/数字 : goal.yaml (你们的), context.md 财务报告和审定财务报表 decisions.jsonl (从访谈中), run.json, (中文(简体) ), ledger.jsonl (每一个过渡), evidence/<run>/ (合同快照、排练基线、每项判决、核查记录、修正记录)。 完成的目标在 .opencode/goals-archive/<slug>/ (被除名,从未被删除). 在 ~/.local/share/opencode/goal-registry.json (与 OCGOAL_REGISTRY列出各个项目的目标并存存档。 考虑忽略 run.json, (中文(简体) ), ledger.jsonl 财务报告和审定财务报表 evidence/ 在基特语中.
插件选项
使用您 OpenCode 配置中的对象窗体来更改默认值 :
{ "plugins": [{ "package": "github:kryptobaseddev/open-goal#v0.5.0", "options": { "stallTurns": 4, "cooldownMs": 3000 } }] }
backstopTurns (200,仅在合同没有转弯预算时) cooldownMs · 1500年 stallTurns (3) 妇女 recoveryAt (2) 妇女 blockerRepeats (3) 妇女 maxPromptFailures (3) 妇女 verifierAgent ("目标验证人") ^ verifierTimeoutMs (2400) o liveChecks (真实的) launchApprovalMs (600,000) (英语).
发展
bun install && bun test - 端到端套房开始隔离 opencode serve 与脚本模型,所以它从来没有触及您的配置或会话。 见 一般事务人员(其他职等) 财务报告和审定财务报表 文件/手册。 。 。 .
许可证
麻省理工学院