Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

English | 简体中文

loop-kit —— 自主推进循环(通用骨架)

给自主运行的 AI 代理一套可审计的持续推进循环:八步协议、状态机、八道一致性门、 候选—裁决—合并流、定义行守卫与快照、一轮一条命令。自带 toy 命题域最小参考实现, 已端到端跑通 R1:八门 ALL GREEN

它解决的是长跑代理的三类真实失效:

失效 症状 loop-kit 的对策
失忆 / 凭印象续写 代理"醒来"后不看状态文件就接着干,越跑越漂 状态机四件套 + loop/status.py 一键恢复上下文(协议第 1 步机制化)
不可审计 "我做完了"无法验证;结论没有产物支撑 判定只认产物与退出码;八道门收口,全绿才允许递增轮次
空转伪装成推进 每轮看起来在跑,实际什么也没被分开 close.json 强制校验:负对照非空、发现必须带产物路径、禁止残留占位

出处:机制条款不是风格偏好,全部来自一个跑了 250 轮的自主科研循环(aiFEP) 期间的真实事故(第 71–93 起教训)——每一条都曾产出一个错误结论。本仓库把其中 与领域无关的部分剥离成通用骨架;领域对象(正文/条目/实验/审计器)通过 domain/ 插槽接入。


目录

路径 是什么
control/agent_protocol.md 在架协议(八步 / 收敛 / 数字 / 环境 / §11 自我改进)——只有人类能改
control/state/ 状态机:current.json 焦点与队列、rounds.jsonl 台账(唯一时间线源)、track.md 推进日志、agenda.md 五要件议程、protocol_state.json 基线指纹
control/scripts/ 控制面工具:协议门 protocol_check.py(K 臂 + --seal/试加载)、protocol_selfref_scan.pygen_resolution.py(裁决拟稿)
control/protocol_candidates/ 协议改进候选(_template.md,格式纪律见同目录 README)
gates/ gates.json 门清单 + run_gates.py 一把梭(新增领域门 = 改清单,不动脚本)
loop/ 收口链:round.sh(一轮一条命令)、speclib.py(close.json 骨架/校验)、rclose.py(落卷+四同步)、count_guard.py(定义行守卫 + 快照,配置见 gates/guard.json
loop/status.py 上下文一键恢复:一屏给出 轮次/焦点/下一任务/队列余项/开放异常/负结果/近期产物/seal 状态/待裁决候选 + 下一轮该敲的那条命令--json 机器可读,--pending 只打印待裁决数
loop/new_round.py 一轮骨架python loop/new_round.py <R> → 生成 logs/r<R>_run.py。结构给全、内容留空,未填就跑必定判负
loop/domain_add.py 换领域脚手架:复制 sample 结构 + 注册两个 json;默认不动配置,--activate 才切换并备份
domain/ 领域接入位(契约见 domain/README.md);sample/ = toy 参考实现
handover/ 新实例交接/自举模板(复制为 HANDOVER.md 填空)
logs/ 每轮 .out / close.json / 快照 / protocol_trials/

快速开始(自带 toy 域已验证,仅需 Python 3 标准库)

cd loop-kit
export PYTHONIOENCODING=utf-8        # Windows 中文环境建议
# export PY=<python 绝对路径>        # 依赖特殊时才需要;协议门用 sys.executable

# 0) 上下文恢复(代理每轮开工前先跑这条;一屏给出状态 + 下一轮该敲的命令)
python loop/status.py

# 1) 协议基线初始化(人类动作,一次)
PROTOCOL_HUMAN=1 python control/scripts/protocol_check.py --seal

# 2) 生成/拼装 + 八门自检(应全绿)
python gates/run_gates.py --install
python gates/run_gates.py --tag init --expect 0,0,0,0,0,0,0,0

# 2.5) 新轮次骨架(结构已给,内容自填;未填就跑必定判负)
python loop/new_round.py 2                 # → logs/r2_run.py,照打印的清单填 9 项

# 3) 一轮一条命令(seal 预检 → 实验 → 落卷 → 守卫 → 拼装 → 八门 → 门后补记 → 快照 → 待裁决时出拟稿)
bash loop/round.sh 2 r2 logs/r2_run.py     # 你的下一轮

R1 就是这么收口的(bash loop/round.sh 1 r1 logs/r1_run.py)。

round.sh 开局会检查协议是否已盖章:未盖章直接中止并打印 --seal 命令,不让代理白跑一整轮。 收口全绿后若存在未裁决的协议候选,会自动重生成裁决拟稿(control/state/resolution_draft.md)。

八道门(判定只认产物与退出码)

管什么
claims 条目定义行与 curate 一致;台账声称的产物真实存在(可验性审计)
probes 每条门的负对照必须真的会响(漏咬 = 门失效)
evidence 每条 evidence 必须在正文逐字命中
registry 登记表 round-trip:registry.json ↔ curate ↔ 正文附录逐格一致
build 单体/登记表与应然逐字节一致(手改生成物立即红)
protocol 协议纪律:候选状态机、基线指纹、试加载授权、门读数回填
pcheck 协议门自身的 selftest(审计者也要被审计)
selfref 协议内部引用完整性(断引用 = 0 才放行)

换领域(一条命令搭结构 + 填内容 + 自举)

结构(一条命令)

python loop/domain_add.py <name> --word 定理 --numbers 一,二,三          # 只搭目录,不动配置
python loop/domain_add.py <name> --word 定理 --numbers 一,二,三 --activate # 同时切换两个 json(自动备份)

默认不激活,保护正在跑通的当前域;--activate 会把 gates.json 的路径与 guard.jsondir/word/numbers/holes 切到新域,并备份为 *.bak_domain_<name>

内容(这才是真工作;脚手架一律留空,现在跑门会红——故意的)

  1. domain/<name>/body/00_head.md__待命名__ → 真条目名,__待填__ → 真证据锚。
  2. domain/<name>/items_curate.jsonitems 填真条目(status 取值见同文件 status_vocab)。
  3. domain/<name>/gates/*.py:五件套按需领域化(尤其 claims 的状态词表与产物可验性)。
  4. word/numbers 有变 ⇒ 重跑 domain_add.py 并加 --activate

自举:照 handover/HANDOVER_template.md--sealrun_gates.py --install + --expect 0×8 → 开第一轮)。

把「正文/条目/实验/审计」想成插槽:机制不关心里面装的是什么命题。

设计要点

  • 自动化结构,绝不自动化内容。骨架/脚手架只预置键位、留空内容且刻意留成会判负的形状; 预填"看起来合理"的 negative/judge 会让空转伪装成推进,直接腐蚀质量门。
  • 判定只认产物与退出码;每个声称配一台会判负的仪器;负对照必须站得住。
  • 协议本身也在此循环内被审计(§11):改进写候选、人类裁决合并、--seal 认基线; 常驻授权只授「试」不授「合」。--seal 与候选 status 只有人类能动——这是信任锚点,不做自动化。
  • 正文分卷是源、单体是生成物;编辑事故由 定义行守卫 + 快照 + 行号锚 三道兜底。
  • 机制条款来自真实事故,不是风格偏好;详见 control/agent_protocol.md 各节。

现状

  • toy 域 3 条命题(命题一 成立 / 二、三 思辨存量);台账 1 行;R1 八门 ALL GREEN; 裁决拟稿可随时 python control/scripts/gen_resolution.py 重生成(当前无待处理候选)。
  • 数字唯一源 = control/state/rounds.jsonl + control/state/current.json

License

MIT

About

提供一个"让一个 Agent 自己持续推进某件事、且每轮都可被客观审计"的循环框架。Provide a loop framework that lets an Agent keep advancing something on its own, with every round objectively auditable.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages