lili
|
cbfd4d871b
|
feat(acceptance): 闭合 playtest v3 与 A+ 可信消费链
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
固化 Match-3 生产者、视觉、音频与双 Judge 证据闭包。
将《山海行纪》r1.1 绑定新的不可变 release,并以生产预检现场核验 bundle、Registry/2 和 25 项 Writer 快照。
同步地图1平衡锁值、跨游戏回归修复、验收契约与 SoT 证据。
|
2026-07-28 20:16:13 -07:00 |
|
lili
|
686aaaa421
|
feat(reference-assets): 签认《山海行纪》并闭合可信消费门
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
冻结地图1二十分钟纵切版的平衡、证据与金标登记。
新增 ReferenceAsset/2 清单、策略、release、受信快照及 CLI/Service/acceptance provenance /4 消费链;保持 survivor live、R1 签名与部署关闭。
|
2026-07-28 09:11:54 -07:00 |
|
lili
|
87777975c7
|
feat(w-axis): R1 生成可信闸代码收口(actor/judge闭合+W-GOLD-LIVE+full_gate+三批闸门)
actor/judge prompt eval 闭合: actor 3.0.5 正文强化+baseline(7轮); judge 3.0.14 正文强化+anyTerms同义词补全+baseline(judge-a 13轮/judge-b 33轮); registry/checker 版本对齐+顺序锚点 fail-closed 双保险
W-GOLD-LIVE live_prompt: play-loop 契约开口(request/3+provenance/3+ReferenceAssetRecord/1+Registry/1+迁移清单15条); cheap_verify 切v3+消费对账六闸(只消费active)+生成prompt注入接线(0 active不注入); Node runner playtest-v3.cdp.cjs 升/3+绊线恢复; 真模型回归验向后兼容
full_gate+三批基线: full_gate.py 集成runner串六子门+降级+22测; baseline_gates.py fresh25阈值+historical11预期表(2 needs_human交创始人定标)+shadow20框架+38测
注: registry cheap-system 登记 1.8.0→1.8.1 同步此前在途 cheap-system.md frontmatter 升版(修 pre-commit 版本漂移); cheap_verify/cheap_studio/validate/test_acceptance_v3/test_cheap_service_driver 为在途M含本会话叠加+此前W-AXIS在途(同一线无法hunk分离); 3红测试根因与raw审计未入本提交
|
2026-07-25 18:47:47 -07:00 |
|
lili
|
8d851ea716
|
feat(cheap-gen): W-AXIS-V2 波2——取证契约退役+提示全加载链清洗,四门∧测试员为唯一验收链
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
opus 执行位交付、主会话四步验收过(三套测试亲跑/红线 diff 亲读/冒烟截图亲眼):
- 验收消费:check 新增源码级插件调用存在断言(_pluginCallPresenceErrors 词法层,
接替 F_wiring 真接线护栏);_forensicsView「必须实现」拦截摘除,降级为可选调试
接口(handleTap 输入契约与 ctx.log 日志纪律保留);gate_judge 放行措辞对齐四门
- play-spec/驱动器退役(逐件裁定 10 件):gen.mjs done 门自动产 play-spec 摘除、
cheap_gates/cheap_studio/cheap_modify/service_driver 调用摘除、_read_driver_type
改读 evidence/playtest/playtest.json;golden-spec 三工具(auto_vs_golden/bake_off/
compare_node)显式封存;ensure_play_spec 两实现保留一个版本窗口(只摘调用不删码)
- prompt 全加载链清洗:cheap-system.md v1.6.3→1.7.0(删 _forensicsView 自动验收
契约红线与全部 targets/occupied 语义,五法句/品类指路同步),cheap_roles 内置
回退逐字节同步(test_roles 12/12 证 parity),modify 切片经运行时切块自动同步;
5 品类 skills+littlejs 手册+recipes×2+模板 8 件+README 6 件教学清洗,真设计
价值(单击 casual/可解性质/双层反馈/latch)保留
- 批账:hard_genre_batch/xtheme 行加 playtest 段,_row_total_cost 修 shadow 下
测试员成本漏算(v2 取 max 防双计)
验收(主会话亲验):pytest cheap-worker 512 绿 + tier2 141 绿 + node 49/49;
25 局基线新旧口径重放对照——真坏 5 局全拦(floor 拦 2/测试员拦 3)、无一例旧拦
新放,翻案 2 局均为破案坐实的仪器误杀;n=3 冒烟(mode=v2)全链绿:w2v2-sim
harness verdict.pass=True 而测试员 reject(机械放行测试员逮住,盘上双证)、
w2v2-sim-fix 现象反馈两轮回喂→fix2 收敛(配方显示修成,局内截图亲眼);
rg 零残留(模板残留均为「验收不读它」的降级调试接口合规形态);真跑 ¥8.4。
已知余项:repairFeedback 有产地、Service 续修环消费者未接(测试员 reject 不入
RepairMiddleware,续修判据仍四门)——是否接入随波3 校准数据一并裁;v1 配置级
回退窗口关闭为创始人知悉项,genconfig 默认 mode 仍 shadow、切 v2 归创始人。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-10 09:21:04 -07:00 |
|
lili
|
5bcaf6ac1e
|
feat(cheap-gen): W-AXIS-V2 波1——测试 agent 生产化+三路统一验收编排器+字段迁移
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
opus 执行位交付、主会话四步验收过(测试亲跑/红线 diff 亲读/硬证亲眼):
- playtest.cdp.cjs 生产版(§3 八件:DPR=1 playtest/1 坐标协议/坐标尺/落点回显/
同点硬提示/反早退/预算 14→24 随进展扩/fail 二掷显式 seed+清存档/图像自检
fail-closed exit=3)+ serve-and-playtest.sh;证据落 evidence/playtest/roll-N/
- cheap_verify:project_floor 四门投影(预筛权威唯一产地,绝不复用 harness 原生
verdict.pass)+ run_playtest(子进程/超时/记账/playtest.json 真相层/端口派生避
Chrome unsafe 5060/5061)+ run_acceptance 编排器(v2=floor∧测试员阻断/
shadow=旧口径+shadowV2Accepted 对照/v1=旧判定器;修复反馈只引现象段)
- 三路接线:cheap_studio/cheap_service_driver/cheap_modify 两档全改调编排器,
create 与 modify 单一验收标准
- §4 字段迁移:run-summary acceptanceVersion+playtest+floor 段、trace.playtest
additive(firstPlay 三字段镜像 ReadinessScorer 口径)、批账 floorPass+accepted+
acceptanceVersion(verdictPass 仅对照);result_out 三级取值(floor→verdictFull
投影→verdict.pass 回落)、gate_judge 续修触发器切四门、xtheme 同批;判定语义单轨
- §5 Java 读侧:ReadinessScorer 可玩性/firstPlay 优先读 trace.playtest,
GenMetrics 归因加 playtest/tester_degraded(向后兼容,未编译验证——本机无后端
构建环境,待 mini-desktop 构建窗口)
- genconfig/generation.yaml:acceptance.mode 三态(波1 灰度默认 shadow)+
playtest 旋钮(steps/二掷/超时/成本上限);judge 段未动
- 单测 32 项新增(二掷/图像 fail-closed/mode 三态/投影/现象分离/退出码/unsafe 端口)
验收:pytest 512 绿 + node 44/44(主会话亲跑);10 局考卷生产件重跑判对 9/9
(真坏 3/3 零放行、假阴 0/6,heritage-r4/puzzle-r1 二掷翻案、sb2 假超时根因=
Chrome unsafe 端口已修);Service E2E(w1v2-e2e1 shadow→v2 一发收敛)与 modify
回归(w1v2-mod1 ROUND_MS 60000→45000,src 与局内截图双证)真浏览器硬证;
总成本 ¥2.3。已知余项:真续修回喂环仅单测覆盖(波2 n=3 冒烟自然覆盖)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-10 07:07:08 -07:00 |
|
lili
|
882ca3f357
|
feat(cheap-gen): W-AXIS 波2 判定语义重置——独立模型玩法判定阻断+拆残笼+判定档切 M3
裁定三落地:accepted = 机械预筛 ∧ 独立模型玩法判定,九门 pass 降为「未见明显死」预筛。
- 波2a 玩法判定器(cheap_verify.py):读 brief+run-summary+全程截图(含新增局中连拍
midplay-1..N,play.cdp.cjs 只读并发拍、不进任何门判据),布尔裁 broken/hollow/off_brief,
fail-closed;判定真相层落 evidence/judge.json + verdict.json 写回 accepted/judge 段;
金标夹具 fixtures/judge-golden/ + judge_golden.py 校准跑批
- 波2b 拆残笼:check 词法 tokenizer 替换 stripCode 正则(字符串内 // 假阴根修,292 在册
源零差异);prompt v1.6.3 外科清洗(两层奖励→纯设计语/删盲驱动器围设计/删熔断恐吓),
registry 热取==内置逐字节一致(cheap_roles 内置回退同步);edit_file 空白归一+近似片段提示
- 判定器补修:空输出有界重试一次(glm 思考吃光 max_tokens 时 content 空)+重试放大公式
反缩 bug 修(旧 min(×2,6000) 大 base 反缩)+finishReason 落盘;imagesSeen 模型自报+
盲检微扰重掷、两掷均盲=仪器故障 degraded(闲鱼中转静默丢图实锤,不再错杀 hollow)
- 判定档切 MiniMax-M3(创始人 2026-07-10 拍板,裁定三①边界随 v2 plan 修订):
generation.yaml judge.model+max_tokens=202752(512K 网关实探 400 拒,取实探上限);
3 例盲案 M3 重判全 accept、¥0.026/局
- 三路消费对齐:CLI 预筛语义修(cheap_studio 喂 verdict.pass 而非 finished,违裁定三的
放行已纠)/Service 路 apply_gameplay_judge 显式 prefilter 参数/result_out 权威改读
accepted(无键回落预筛,旧产物兼容)+trace.gameplayJudge additive 透传;
tier2 gate_judge/genconfig 同步判定配置与消费
测试:test_gameplay_judge 33 项新增,全仓 pytest 480 绿;真判定闭环 accept ¥0.061。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-10 04:27:18 -07:00 |
|
lili
|
dc89701fcc
|
feat(cheap-gen): W-AXIS 波1 真相层——turns 全文落盘+per-run 归档+evidence 清单化+failureLayer
治「真相层缺失」病根(历史上模型文本/工具返回/门反馈零落盘、失败 run 被同 gid 重跑
覆盖,归因只能建在聚合数字上):
- cheap_turns_sink.py:逐 turn 全文落 amgen-<gid>/turns.jsonl(模型文本/工具全参/
工具返回/门续修反馈);observe-only middleware、best-effort,接线失败绝不阻断生成;
CLI 与 Service 双路接线(cheap_run/cheap_service_app)
- per-run 归档:同 gid 重跑前工程整体归档 _amgen-archive/<gid>-<ts>/,失败现场不再被覆盖
- evidence 清单化清理:按白名单保留,跨 run 残留(旧截图/旧 verdict)开跑即清,防证据串局
- failureLayer 三层归因:run-summary 落 generation/gate/gameplay 失败层字段,
聚合报表可分「生成没跑完/机械门挂/玩法层拒」
主会话亲验:两局真跑归档 179KB、turns 含门反馈全文;pytest 新增三个测试档全绿。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-10 04:27:17 -07:00 |
|
lili
|
231b17194a
|
fix(cheap-gen): new-api 额度耗尽真机探测揪出误判——401+「额度已用尽」修为 quota_exhausted
内测开放项真环境探测(2026-07-08,dev 栈恢复后):建 remain_quota=0 测试 token 打 new-api
/v1/chat/completions,坐实 new-api 对额度耗尽返 HTTP 401 + message「该令牌额度已用尽
!token.UnlimitedQuota && token.RemainQuota = 0」——非代码假设的 402/403,且关键词只认「额度不足/
insufficient」漏了「额度已用尽」。旧 classify_newapi_failure_reason:401→llm_error(可重试)、
关键词不匹配 → 把耗尽误判成可重试 → 反复重试到 15min watchdog 超时,而非干净"额度用尽"。
修:message 额度关键词优先(含实测「额度已用尽」「RemainQuota = 0」),401 不再无脑判 llm_error
(401 与凭据失效重叠,按 message 分辨:耗尽→quota_exhausted、真凭据失效→llm_error 可重试);
402/403 保守保留判耗尽。删代码 §3.9【阶段2 待验】TODO(已真机坐实)。新增真机 401 回归用例,
26 测过。正是代码自带 TODO 与「真环境>桩」要抓的:桩测永远发现不了 new-api 用 401 不用 402/403。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-08 07:52:57 -07:00 |
|
lili
|
29da237307
|
test(cheap-gen): 死圈修复外科修复回路确定性集成测试(fix①-A × fix②-check 成环)
n=5 收敛环的确定性内核(不含大模型,只证工具能组合成环):scaffold 合规起点 → 注入一处
裸 Math.random(模拟模型自造回退)→ check 经真 node tools.mjs 报「红线 + 确切行号 +
edit_file 补救指向」→ edit_file 精修那一行 → check 红线消失、整体回 ok=True。
证的正是死圈出口:过去=产物带违规 + 只有整文件覆盖 write_file + 报错无行号 → agent 整文件
重写、漏 path、连撞熔断;现在=报错点名到行 + 给 edit_file → 一行精修即出圈。「大模型会不会
照做」交真环境 n=5 收敛环。1 测过(scaffold→inject→check→edit→check),exit=0。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-08 02:28:51 -07:00 |
|
lili
|
8f700c4b42
|
fix(cheap-gen): 死圈修复 fix③ brief 落 evidence/brief.json 供根因取证
问题:一局 brief 原只内联在 run-summary.json,收口末尾才落——run 硬失败/挂死(如熔断
os._exit)时收不了口、brief 丢失,死圈根因取证断链;且无完整性戳、无限长策略。
改动(cheap_studio.py):scaffold 就绪后即调 _persist_brief_forensics 落
game_dir/evidence/brief.json,字段 {brief(限长)、bytes、sha256、truncated、promptMax、source}:
· 早落——硬失败/挂死也留得下,取证不断链;
· sha256/bytes 按【完整原文】算——核 worker 收到的 brief 与后端下发字节一致(查是否 brief
被截断/篡改害翻车),截断不掩盖完整性核对;
· 超 PROMPT_MAX=1000 截断 brief 字段 + truncated=True——脱敏 + 防超长撑爆;
· 落 evidence/(forensics,不随 src/ 进素材市场交易),【绝不】落工程根——源工程会被交易、
brief 是用户私有输入,不得泄进可交易源;
· 非阻塞铁律:落盘任何异常只告警、绝不咬生成主链(try/except 兜底)。
测:新增 test_brief_forensics.py 4 测(落 evidence 非工程根/字段齐 + sha256 按完整原文/
超长截断但摘要仍完整/空与 None 非阻塞),+ 回归 test_edit_file_toolkit 6 测,pytest exit=0;
cheap_studio import smoke 通过(import hashlib + 接线未破坏加载)。
待续(本计划剩项):fix①-B 共享 tier2 熔断窄口径纠偏(最险,另做)、n=5 收敛环。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-08 02:23:36 -07:00 |
|
lili
|
596ea13666
|
feat(cheap-gen): 死圈修复 fix①-A 增量 edit 工具 + fix②-prompt 克隆纪律/check-early
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
死圈根因(双评审坐实):产物带小红线违规→check FAIL→agent 想修但只有整文件覆盖的
write_file→改3行变重写22KB→MiniMax 漏 path 连撞→stuck 熔断→九门没跑→ok=False。
fix①-A:cheap_run.edit_file(读现文件→校验 old 唯一命中→精确替换→经 write_file
回写继承 L1_FIXED/game_dir 保护)+ cheap_toolkit edit_file 工具(whitelist 把关)注册进
七工具面;edit_file 加入软停 blocked-tools(middleware.py,越软停线同 write_file 拦)。
edit 自身失败面(old 未找到/不唯一)给结构化提示。6 单测(命中/未找到/不唯一/L1拒改/
越界/缺文件)+ 现有 toolkit 8 测全绿。
fix②-prompt(cheap_roles.py):① 工具清单纠正为七工具、明确 edit_file 小改优先(修
之前"没有 edit_file"的错误引导——否则 agent 不会用新工具);② 克隆纪律"rng/nowMs 照
_template 逐字克隆、禁自造 Math.random/Date.now 防御回退、check 函数内裸调照拦";
③ check-early"先写最小核心→立即 check→edit_file 修红线→再扩玩法"。
待续(本计划剩项):fix②-check 报错行号(tools.mjs)、fix③ brief 落 evidence、
fix①-B 共享 tier2 熔断窄口径纠偏(最险另做)、n=5 收敛环(ok=True 判据)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-08 01:46:22 -07:00 |
|
lili
|
e8f7dc8347
|
feat(worker): WU2 §3.7 worker 取 job.userToken + §3.9 额度耗尽/凭据失效分辨
per-user 额度按用户扣的最后一环:三 worker 入口从「读全局 env NEWAPI_KEY」改「优先
job.userToken、缺失回落全局 env key(WARN 脱敏)」;新失败因 quota_exhausted 干净失败。
§3.7 F(取 job token,默认关时字节不变):
- cheap_service_driver._resolve_key(user_token) 优先 per-user token、缺失回落 env+WARN;
drive_cheap_generation 从 job.userToken 取、透传给凭据体;token 日志脱敏(前后各 4 位)。
- worker_service 整 job(含 userToken)透传给 driver;do_POST 记 userToken 存否(脱敏)。
- wg1 _client.get_api_key/get_client/chat 支持 user_token override、回落 env(WARN 一进程一次)。
§3.9(分辨两类失效,one-api 惯例初值,确切 message 阶段2 待验):
- result_out 新增 quota_exhausted 入枚举 + _map_failure_reason 认 summary.failureReason +
classify_newapi_failure_reason/newapi_error_status_text(402/403→quota,401→llm_error 可重试)。
- cheap_service_app collector 崩溃路 best-effort 分辨 402/403→写 sidecar failureReason,
driver→result_out 落 quota_exhausted;凭据失效/其他维持 llm_error,纯旁路不咬生成。
- wg1 _client.chat 额度耗尽抛 NewapiQuotaExhaustedError(不重试);service.handle_job 映射
quota_exhausted。注:两 worker 主生成经 AgentScope 模型封装调网关,402 埋框架内,主路
额度耗尽分辨待阶段2 拦模型封装;本次覆盖直连 _client.chat 路 + cheap 崩溃路分辨。
自证:test_result_out 25/25、test_worker_service 17/17(stdlib 直跑);driver/wg1 token 与
分辨逻辑 standalone 断言全过;八文件 py_compile 绿。test_cheap_service_driver 需 pytest
(本机未装),已同步桩签名待阶段2 e2e 真验(per-user token 调网关/used_quota 按用户增/耗尽落 quota_exhausted)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-07 12:44:08 -07:00 |
|
lili
|
958f78f523
|
feat(obs): 阶段四观测面二 Python 侧 token metric——llm_tokens{kind} + llm_cache_hit_rate
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
补面五(game-cloud GenMetrics)拿不到的两个纯 Python 侧 token 维度 metric:
llm_tokens(Counter,kind=input/output/cached)与 llm_cache_hit_rate(Histogram,
每 run 命中率 [0,1])。复用波③ 既有 OTLP 基础设施(开关 CHEAP_OTLP_ENDPOINT、
端点解析、代理旁路、service.name=cheap-gen-worker、best-effort 铁律),换 OTLP
metrics 通道;默认关字节不变、绝不咬生成、与面五 5 个 metric 零重叠不双计。
关键约束(主控亲验坐实):生产 Service 路拿不到 cached——trace.py 组 cost.tokens
只填 in/out,agentscope ModelCallEndEvent 只有 input_tokens/output_tokens 无
cached 字段。故 Service 路(on_reply 只读嗅探 in/out、_metric_emitted 幂等)传
cached=None 如实降级:只发 input/output 计数,不发 cached 计数与 cache_hit_rate,
绝不塞 0 伪造命中率。CLI/批跑路(RecordingOpenAIChatModel.records[2])cached 可得、
两 metric 全发。生产 Service 路发 cached 需 per-POST RecordingModel 或 tier2
breaker 存 cached token,均超本次最小改动边界,列 follow-up。
主控终审:亲跑 tests/test_cheap_otlp_sink.py + test_cheap_service_app.py 29 passed、
全量回归 392 passed/1 skipped;逐条读承重 diff(默认关守卫/best-effort/不双计/
cached 诚实降级/MeterProvider 进程单例防线程泄漏/cached 截 [0,input]/除零守卫)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-05 23:57:40 -07:00 |
|
lili
|
c6d6d39a2a
|
feat(cfg): W-CFG-KB K3 知识包治理接线——knowledge 配置块+激活发布 Nacos+worker 订阅热物化(复用阶段二三·默认关)
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
把切片一知识件外置接进受治理配置集,一条「改知识件→定版→激活→worker 物化生效」链,复用配置控制面阶段二/三治理机器零重造:
game-cloud:knowledge 作 content_json 第四内容块(仿 readiness),与 routeA/routeB/readiness 互斥、sanity(packageId/
activeVersion 非空);走向相反=真下发(readiness 进程内空载荷,knowledge 跨进程),激活编成一条路 B 载荷
{knowledge.packageId,knowledge.activeVersion}、经 KNOWLEDGE 档独立 dataId gen-hot-params-knowledge publish 给 worker;
pathA=null→dispatch/reconcile 只走路 B、激活编排一行未改。加 AigcConfigTierEnum.KNOWLEDGE+KnowledgeConfigKeys+NO_ROUTE 文案。
worker:kb_store 加进程级激活版本源槽+attach/detach(对称 genconfig),resolve_active_version 取值链改为治理源(Nacos)>
env 钉版>最新 committed;新 kb_nacos.py(KbActiveVersionSource 订阅 dataId、按 packageId 匹配、激活变更即重物化)+
setup_knowledge_activation() 启动物化+(Nacos 启用时)attach,cheap_service_app 紧接 genconfig 热源挂它。复用 genconfig_nacos 启用旗+代理旁路。
默认关字节不变(TIER2_KB_ROOT 未配→不物化不订阅、read_file 回落仓根;无源→resolve 回落 env/最新);缺文件显式失败沿用
(materialize_active 照抛保留 kb_root、kb_nacos 只在 best-effort 边界接住不咬生成);全 best-effort。admin 本轮做前端契约点
sanity.ts,富编辑视图=紧接下一片(与 readiness 一致)。
主控终审:git 完整(HEAD 未动·无破坏操作)+11 文件精确+读码坐实互斥/routeB载荷/取值链/best-effort/默认关/缺文件失败没削弱
+亲跑 Java codec 34+activation 21(BUILD SUCCESS)+Python test_kb_externalize 21 全绿。真 Nacos 激活端到端排窗口。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-05 22:50:10 -07:00 |
|
lili
|
21b5320f3f
|
feat(cheap): W-CFG-KB 知识件外置切片一——知识包存储(复用 ASSET-SRC 范式)+ 物化 + read_file shadow(路乙 MinIO·默认关)
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
知识件(喂 agent 学怎么生成的设计范式:skills/黄金脚手架/few-shot/tier2 RAG)原散在 worker repo 检出、
read_file 按硬编码路径自取,改一条范式得重部署。本切片(K1 路乙 MinIO,创始人拍)外置成可热换知识包:
- kb_store.py:KnowledgePackageStore(LocalFs/Backend)存 MinIO + manifest 落 MySQL(专用表
cheap_knowledge_package_version + 专用桶 cheap-kb,与 ASSET-SRC 正交不合表);复用 store.py 纯工具
(_canonical_content_hash/derive_version_id/_is_safe_rel_path,store.py 零改动)+ manifest-first 半落库
(pending→put→committed、fetch 只返 committed、缺源标 missingContent 不静默)。
- materialize_active:按激活版取回→staging 逐文件 sha256 校验(K2 寻址断言)→原子换入知识根(旧挪 .prev);
缺文件/取不到/指纹不匹配【显式失败】(类比 ASSET-SRC 缺源),kb_root 不动=回落上一份完整包。落点
TIER2_KB_ROOT 在 git 检出之外(deploy-safe,防 reset --hard 抹)。
- cheap_run.py read_file shadow:先查知识根同相对路径(热换即生效)、回落仓根(api.d.ts 等代码不外置);
TIER2_KB_ROOT 未配时短路、read_file 字节不变(默认关);两根守只读+200KB+路径不逃逸、越界即拒。
cheap_roles.py 硬编码路径不改(shadow 在解析层处理)。
K3(yudao 治理+激活推送+admin)= 后续切片,留接缝点(resolve_active_version/materialize_active/default_kb_store)。
主控终审:store.py 零改动 + read_file 默认关字节不变 + 缺文件显式失败/原子回落读码坐实 + 独立表桶 +
亲跑 test_kb_externalize 14 + read_file 回归 18 全绿。真 MinIO 物化闭环排窗口(cheap venv 无 pymysql/minio)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-05 21:37:50 -07:00 |
|
lili
|
5b34807e73
|
feat(cheap): 面四 Python 三跳 traceparent 打通——便宜档生成串成单条 trace 树(观测阶段四)
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
Java agent(面一b)已在派发出网自动注 traceparent;本片补 Python 侧三个断点,让一次便宜档生成
在 Tempo 里是 Java→worker(:9501)→cheap-service(:8300)生成 的单条 trace 树而非散落 root:
- 断点①:worker_service.do_POST 抓入站 traceparent 进 job._otelCarrier(self.headers 仅此可得);
process_job 用 worker_span_scope 在入站 context 下建 worker SERVER span、包住真生成调用(span 建在
真处理 job 的 worker 线程,非只入队即 202 的 do_POST)。
- 断点②:driver 读当前 context(worker span 经 asyncio.run 透传进协程)inject 成 W3C carrier,随出站
:8300 各 POST header 带上;同份 carrier 写会话 sidecar。
- 断点③:/chat reply 在 AgentScope 后台任务跑、与 HTTP 请求解耦读不到实时 context——故走既有 C2 sidecar
桥:cheap_service_app 工厂读 sidecar traceparent → parent_carrier → CheapOtlpSink 每步生成 span 挂入站
context 当子 span(不再私有 root)。
传播 helper 集中 cheap_otlp_sink(extract/inject/worker_span_scope);全程 best-effort(otel 不可用/carrier
坏/Collector 不可达都退化成少串一段 trace、生成异常原样穿出)、CHEAP_OTLP_ENDPOINT 默认关时零行为变化
(parent=None 退私有 root、sidecar 不写 traceparent 字节不变)、代理旁路红线未破、业务 traceId 并存(§10 决策5)。
test_trace_propagation.py 14 例(含端到端三跳单条 trace 树,InMemorySpanExporter 证父子链+同 trace_id)
+ test_worker_service +2;主控亲跑 40 passed(3 文件)+ 全量 364 passed 1 skipped 无回退。
真跨进程 Tempo trace 树验证 = dev 开 CHEAP_OTLP_ENDPOINT 重跑 follow-up。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-05 20:30:04 -07:00 |
|
lili
|
daa49e5864
|
feat(obs): 便宜档主生成路 OTLP span sink + 双入口 fan-out 并接(阶段四观测 波③ T3-1)
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
便宜档 Service(cheap_service_app)+ CLI(cheap_studio)主生成路此前只经 make_jsonl_sink
写 trace.jsonl、不产 OTLP span,观测栈 Tempo 看不到便宜档生成。新接 cheap_otlp_sink:与
make_jsonl_sink 同签名,把每步 TraceStep 推成 OTLP span 发 mini-infra Collector
(service.name=cheap-gen-worker),span 属性映射对齐 tier2 studio_sink 的标准 gen-ai 键。
- 默认关(env CHEAP_OTLP_ENDPOINT / infra_config 取不到即 no-op),build_trace_sink 原样返回
jsonl sink、现有行为字节不变;开则 fan-out(jsonl 先落盘照旧、OTLP 额外发一份,各 best-effort)。
- best-effort 铁律:缺 otel / Collector 不可达 / 发送失败 → 记一次告警、永久降级 no-op、绝不抛、
绝不咬生成主链(设计 §8);observe-only 从不回写生成/门判定字段。
- 惰性 import otel(顶层零重依赖,对齐 build_cheap_app 惰性红线)+ 代理旁路(T3-4,建 exporter 前
把 Collector host 并入 NO_PROXY,绕 clash fake-ip)。
- provider 做进程级共享单例(非 per-run):长驻 Service 中间件工厂 per-turn 建 sink,per-run 会逐局
泄漏后台上报线程;trace_id 只作 per-span 属性,BatchSpanProcessor 一条后台线程跨局复用,atexit 兜底 flush。
- 双入口都接(Service :273 + CLI :214),fan-out 不破坏既有 jsonl 落盘。
终审(亲跑非照搬):cheap-worker/.venv 全套 350 passed/1 skipped(含 span sink 11 例)、零回归、
py_compile 三文件过、docs-gate 七检绿。跨机 OTLP 命门已验(mini-desktop→mini-infra:4318=200)。
真发 Collector→Tempo 见 span 排 mini-desktop 起服务后验。
T3-3 metrics 空口按红线#7(不留孤儿)剔除:本波无生产调用方,真值填充随波⑤ T5-2 带埋点调用方一起落。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-05 09:16:16 -07:00 |
|
lili
|
0f55a6f77d
|
merge(工单h): 便宜档 Service 工具面再封口——关 Planning/Team/Schedule 三组框架注入(源码证据链坐实·包裹 _chat.get_toolkit 本地绑定·重建干净 Toolkit·fail-open 降噪件)· 333+1skip · fable 终审过(skip 件=apscheduler 集成测,部署树复跑)
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-04 00:50:23 -07:00 |
|
lili
|
c5ee8ef5e9
|
feat(cheap): 便宜档 Service 收窄工具面——关 Planning/Team/Schedule 三组框架工具(工单 h)
2.0.2 get_toolkit(app/_service/_toolkit.py)除 workspace 内建外,还无条件并入 Planning
(Task* :109-110 "always on")/Team(Team*·AgentCreate :144-168),并按 session model 挂
Schedule(schedule_tools 组 :117-142)。便宜档单机单游戏用不到,纯工具面噪声(80011 flail:
12+ 工具语义重叠是根因之一;护城河 I1 六工具白名单邻域治理)。
修法:cheap Service 进程内 monkeypatch 包裹 _chat.get_toolkit(_chat.py:33 本地绑定、:240 唯一
装配调用者),调原函数拿到 Toolkit 后重建干净版:basic 组按 .name 剔 Planning+Team、丢整个
schedule_tools 组;workspace skills/MCP、六工具、后台控制 ToolStop 一律原样保留。钉 agentscope
==2.0.2、版本漂移响亮告警仍应用;作用域=cheap Service 进程(只跑便宜档 agent),tier2 独立进程
不受影响;绝不改 venv/site-packages 本体。惰性 import _chat(牵 apscheduler)保无 [service] 环境
可 import 本模块。
测试(tests/test_planning_team_tools_patch.py):4 filter/wrapper 单测(补丁后无三组 / 保六工具+
ToolStop / 过滤幂等 / 装配幂等)本机全绿 + 1 真 _chat 集成测 importorskip apscheduler(本机跳、
mini-desktop 全跑)。全套 pytest tests/ -q = 333 passed, 1 skipped。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-04 00:46:09 -07:00 |
|
lili
|
eb95441dd6
|
fix(cheap): 收口采集重复打印幂等(工单 f)+ bake_off brief 全缺 fail-fast(工单 i)
工单 f:_CheapRunCollector._flush 在 on_reply 的 REPLY_END / except / finally 三条降级路
会被调 ≥2 次,落盘每次覆盖是幂等的(采集语义不变、driver 恒读到最新),但「收口采集落盘」
成功行重复打印纯观感噪声。加实例标记 _flush_logged 只在首次成功落盘时打,后续静默覆盖
(失败行不受此门、每次都报便于诊断)。
工单 i:run_bakeoff 对无 brief 品类 skip+continue,全缺时 valid 空 → aggregate(genre_runs,[])
的 overall=(not [])and(not [])=True → 在 0 款上打「达标 ✅」exit 0(S5b 第一跑生产实录的
空过陷阱 / 无声截断)。抽 _resolve_briefs 纯解析 valid/missing;采样列表为空 → 立即
SystemExit(2)、stderr 打印缺失清单(品类 + 期望 run-summary 路径)、绝不进入判定;有样本
但部分缺 → 逐条告警后按既有逻辑继续(不升级为全停,judge_genre/aggregate 判定口径不改)。
测试 +6:工单 f 直接三次 _flush + 崩溃路端到端各验只打一行(capsys);工单 i 全缺 fail-fast
+缺失清单 / 正常路径行为不变 / 部分缺继续 / _resolve_briefs 拆分。全套 335 passed(329+6)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-04 00:41:56 -07:00 |
|
lili
|
11436f07cc
|
test(cheap): test_a11_m3/m4 模块级 game_dir/dedup 替换收进可恢复 autouse fixture——根除 game_dir 跨模块隔离污染(基线二分钉死:5 个失败,非 12) (尾波小单)
test_a11_m3_deterministic 与 test_a11_m4_regenerate 在 import 时无恢复地替换
cheap_run.game_dir(两文件同构),污染同会话后续测试模块:受害者按真 games/ 根校验
write 边界,game_dir 被改指临时目录后一写即判越界。改为 module 级 autouse fixture
(yield 后恢复原值),__main__ 独立运行路径同装(单进程无需恢复),dedup 登记表一并收拢。
证据:全套 12→7 failed、三种文件顺序结果恒定(7 failed / 322 passed);二分钉死纯
game_dir 污染 = 5 个,均已恢复 = test_run::test_scaffold + test_toolkit::{write_l1_rejected,
write_l3_ok,check_shape_drawbutton_ok,check_shape_define_fail}。
余 7 个非本污染、隔离下同红,系环境前置:worktree 无 esbuild →
test_run::{test_stage,test_play_real}、test_toolkit::test_check_and_build_clean_pass;
缺真实 e2e 产物 → test_studio_smoke×4(须先跑 cheap_studio 单局)。须集成段 mini-desktop
才具备,未纳入本单。同族但未致失败的 test_worker_service 模块级 dedup 泄漏按最小改动未动。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-03 21:11:31 -07:00 |
|
lili
|
a6d5c29ad3
|
fix(cheap): Service 关 workspace 内建工具(Bash/Edit/Glob/Grep/Read/Write)——内建 Write/Bash 旁路六工具写白名单(护城河击穿)+ M3 12+工具面语义重叠混乱税(80009 死圈/80011 失败目录:Bash CWD 混乱/read_file 被串 Read 参数/Edit 连败,签名富化观测实证) (cutover S2 工具面封口)
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-03 19:12:35 -07:00 |
|
lili
|
3495470d89
|
feat(quality): ⑨升通用底座第12条「核心操作非无脑」落 RICHNESS_CHECKLIST(L2 6→7,前11条一字不动,prompt 计数改动态 len 同源防漂)+ 测试分母随升;图说预算两段式「待实施/CLI仍hard」翻已落实态(cheap_budget 同源工厂+真M3实证) (质量SoT §4 规范一 12条口径,ba55508e 配套;金标复验=C波)
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-03 14:51:36 -07:00 |
|
lili
|
51144f1a3b
|
feat(cheap): T5 Service 壳合成终结事件(run 崩快失败,封 600s 慢失败出口)+ 压缩崩根因坐实与 fail-open 补丁
- 压缩崩根因(venv 2.0.2 代码级证据,4 次实证 'important_discoveries' required):reply 每轮推理前
compress_context(_agent.py:609)→ generate_structured_output 用 SummarySchema json-schema(五字段全
required+maxLength,_config.py:11-53)强制 M3 tool_choice 产摘要 → dict 路 jsonschema.validate
(model/_base.py:566-567)对缺字段/超长抛 ValidationError → 非 retryable 直接 raise(_base.py:426-428)
→ _compress_context_impl 非 overflow 支 raise e from None(_agent.py:461)→ 穿透 reply;ChatService.run
吞异常不发终结事件(app/_service/_chat.py:166-176)→ driver 600s 慢失败
- ctx_compress_patch:fail-open 包 Agent.compress_context(压缩=旁路优化件,失败只跳过不杀主链;连续 2 次
断路防每轮白烧压缩计费调用;钉 2.0.2 不改 venv 本体,纪律同 m3_stream_patch);Service 与 CLI 两处 apply
- collector on_reply 增崩溃支:先 flush 收口采集,再 yield 合成 ReplyEndEvent(消费侧先 publish 到 bus →
driver 立刻收到回合终结按盘面快速失败),原异常原样重抛不掩盖;正常路零行为变化
- 测试 9 用例:成功透传/失败吞掉/2 次断路/成功清零/按实例隔离/apply 幂等;崩溃合成终结+异常上抛+崩溃路
flush/正常路不追加/合成兜底不遮原异常
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-03 14:21:34 -07:00 |
|
lili
|
d2b916f112
|
feat(cheap): T4 生产 create 路 genre 最小路由(brief→五类确定性词表·先验序=特异性降序·无命中回退通用) (M3 cutover 放行检查单增补)
- cheap_genre_route:纯词表路由(零 LLM/零 IO/确定性),规则表数据化单源(_GENRE_RULES 顺序即先验序:
非遗>TRPG>经营>解谜>剧情,特异词前泛词后);映射对齐 GENRE_BY_TEMPLATE 五类模板
- cheap_service_driver:取代硬编码 scaffold_template=None——命中选 per-genre 黄金骨架+genre 透传丰富度评分
(生产 create 路与 S5 bake_off 复验同轨);无命中 (None,None) 走通用 _template(路由只加不减)
- tests/test_genre_route:五类命中/无命中回退/多类共现先验序/GENRE_BY_TEMPLATE 一致性/确定性/脏输入 14 用例
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-03 14:17:54 -07:00 |
|
lili
|
9e1e943503
|
feat(budget): T3 预算两段式统一(软停线 ¥10/¥50 只许收尾+RMB 硬地板 ×1.5 fail-closed 封上界+CLI/Service 同源工厂) (W-ARCH②,创始人 2026-07-03 裁决)
- middleware:soft 档升两段式——越软停线置软停+on_acting 拦新增生成面工具(write_file/write_source/scaffold_init,
收尾类 finish/check/build/跑门/只读恒放行);越硬地板(软停线×rmb_hard_floor_ratio=1.5)fail-closed 抛熔断,
spent>floor 后 est≥0 使下次调用必拦 → 整局 ¥ ≤ floor+单笔,上界数学可证明;hard 档单段语义逐字不变
- genconfig+generation.yaml:rmb_hard_limit 3.0(spike 占位)→50.0(富档软停线裁决值)、新增 rmb_hard_floor_ratio=1.5
/ cheap_rmb_hard_limit=10.0 登内置默认,带裁决出处中文注释
- cheap_budget.build_cheap_breaker:便宜档 breaker 唯一装配点——CLI(cheap_studio,原 hard 单段 ¥10 改两段)与
生产 Service(cheap_service_app,原 soft 无地板补地板)同源读 genconfig,档位参数不可被 overrides 改
- 测试:两段式 11 用例(软停区间放行/生成工具拒·收尾放行/硬地板到线即停/spent>floor 次调必拦/工厂同源 env 同变);
test_budget_soft_stop 旧「soft 无界」口径按裁决更新为两段式并补越地板用例;既有 hard 档测试全量不动全绿
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-03 14:15:59 -07:00 |
|
lili
|
234c076f51
|
feat(cheap): T1 驱动器约定收敛·C5 考卷契约接线(startRitual 起局仪式+driver 显式化+sourceHash 陈旧重生·金标 held-constant 不误杀) (W-S1 修复三单·单①)
- cheap_run:_build_play_spec 产 C5 形状(schemaVersion/derivedFrom/selectionBasis;key-cycle 带默认 startRitual);
ensure_play_spec 以 derivedFrom.generator 区分本产线自动 spec 与手工金标——自动 spec 按 sourceHash 判陈旧重生,
金标/旧世代 held-constant 永不覆盖;产出走 C5 best-effort 自校验(强校验在单测)
- play.cdp.cjs:NONPLAY 升模块级;runStartRitual(tap-selector 读 state 坐标/input-sequence/默认 Enter→Space→中心点,
进游玩态即止);主流程 runDriver 前执行声明仪式(无声明零行为变化);runKeyCycle 对 MENULIKE 前置态做默认起局尝试
(镜像 runTapTargets 扫点范式,治 fx4c 卡 menu 驱动器约定漂移)
- tests/test_play_spec_contract.py:两族过 C5 强校验/显式字段/hash 重生/金标不误杀/保守支 14 用例
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-03 14:02:53 -07:00 |
|
lili
|
974011a150
|
merge: rubric 挂点归一——四品类三套机制收敛为单一 fixture 数据源(GENRE_CHECKLISTS 内联退役·TRPG 条目 ast 迁出逐字节保真·非遗接线生效键收敛 heritage)+ 三品类真 LLM 金标复验全过(puzzle 锚对失效实锤修正:模板天然不薄、改合成薄壳锚)
剧情品类缺口立此存照:无 rubric 数据件、无 few-shot 正例锚,按锚定纪律不无锚造条目,待 fewshot-story 后补。
复验方法发现:M3 judge 单次采样方差可达 ±2~3,锚定容差建议补「超线先复采样定性」条款(候选进质量 SoT 规范三)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-03 00:21:44 -07:00 |
|
lili
|
af8d63f418
|
feat(cheap): 非遗品类 rubric 接线——heritage.rubric.json 规整为约定形状 + _template-feiyi 登记 (rubric 挂点归一②)
非遗 rubric 此前是死数据(文件名不合 <genre>.json 装载约定、数据键 entries 非 items、
GENRE_BY_TEMPLATE 未登记——生产路走不到)。本步接线:git mv 改名 heritage.json、entries→items、
顶层 _genre→genre;5 条条目文本(含 id/正反例)逐字节零变更(机器比对核过);groupMaxes 与
2026-07-02 首评 anchors 原样保留。
品类键收敛裁定:同一品类三键并存(feiyi/heritage/heritage-craft)→ rubric/接线键统一 'heritage'
(与 rubric 文件名、散文同源 skill heritage-game-design.md 同名,改动面最小);模板目录
_template-feiyi 是资产目录名(GENRE_BY_TEMPLATE 登记映射),金标 spec _genre='heritage-craft'
是金标名(driver/assert 承重,一律不动)——映射依据留档 heritage.json _note + 代码注释。
GENRE_BY_TEMPLATE += _template-feiyi→heritage:run_studio 生成非遗品类起即评品类扩展 5 条
(分母独立小计落 richness.genre)。新增接线测试(loader 可加载/条目名顺序锁定/登记/正反例形状),
33 测试绿。金标复验(正=_fewshot-feiyi vs 薄反=_template-feiyi,对照 anchors 首评)随工单后续步骤。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-03 00:08:22 -07:00 |
|
lili
|
cf0d93464f
|
merge: fix400 封死 M3 400 流式聚合炸弹(决策③硬前置)——A 主防线 parallel_tool_calls=False 透传(实测被 M3/new-api 忽略)+ B 纵深聚合补丁实证兜住(6 局 628 tool_call 零指纹零 400)+ C tier2 两路对账免疫不动
docs-gate / docs-gate (push) Has been cancelled
e2e 诚实账:两局全绿 1/2 未达(fix4xx-2 9/9);其余失败=既有生成质量(卡 menu 族×3 有独立第二根因、
工具死圈族×3),与 fix400 零因果(零指纹零 400,续修轮 4 局真跑通)。follow-up:①卡 menu 族三案归因
(未定义标识符族 vs 门驱动器约定漂移)②Service 壳为 run 崩发合成终结事件(慢失败出口)+压缩 schema 崩排查。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-03 00:07:33 -07:00 |
|
lili
|
5725f4683e
|
refactor(cheap): 品类 rubric 挂点归一——TRPG 内联迁出 fixture、查找只剩单源一路 (W-GENRE 收敛)
机制迁移(rubric 挂点归一工单第①步):品类条目唯一数据源 = fixtures/genre-rubrics/<genre>.json
(items 键,经 load_genre_checklist 加载);cheap_verify.GENRE_CHECKLISTS 内联字典退役、
verify_richness 查找逻辑去掉「内联优先、fixture 兜底」两路,只剩 fixture 一路。
TRPG 5 条自内联**机器迁入** trpg.json(git show 基线 ast 提取直写,非手抄;逐字节比对
name/layer/meaning 全等)——meaning 内嵌「(正:…;反:…)」为内联时代原文原样保留,保 judge
prompt 逐字节不变;positive/negative 为机器拆出的同文抄录(金标锚材料,不进 prompt)。
锚定纪律机器验证(基线版模块独立加载对拍):品类路/无品类路 judge user prompt、两个 system
prompt 与 db4aadd7 基线**逐字节恒等**=迁移零评分尺漂移;金标复验随本工单后续步骤统一跑。
单测适配:4 处 GENRE_CHECKLISTS 引用改经 load_genre_checklist('trpg')(断言语义不降级),
trpg 条目名/顺序锁定断言补齐(同通用 8 条锁定),新增单源守门测试(GENRE_CHECKLISTS 不存在,
防两路复活)。test_cheap_verify 20 + test_genre_puzzle_assets 6 + test_golden_specs 6 = 32 绿。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-03 00:06:16 -07:00 |
|
lili
|
db4aadd785
|
merge: W-GENRE 解谜品类四件套(skill puzzle-game-design + _template-puzzle 9/9 + _fewshot-puzzle 正例 + rubric fixture/金标 spec + 范例签名机器门)——品类路由并集 v1.4.0(剧情6/TRPG7/非遗8/解谜9)
docs-gate / docs-gate (push) Has been cancelled
合并裁定(rubric 挂点两套实现收敛,fable 亲审):评分尺主干 = TRPG 机制(单 checks 数组契约+嵌套
richness.genre,19 单测钉住);从分支嫁接 fixtures/genre-rubrics/<genre>.json 加载器为第二来源
(内联 GENRE_CHECKLISTS 优先、fixture 兜底,puzzle.json 即刻生效);分支平铺 genreHits/genreChecks
双数组契约弃用,其接线测试适配主干形状。run_studio 增显式 genre= 参数(None→按模板推断,原行为不变)。
GENRE_BY_TEMPLATE += _template-puzzle。顺手补账:.agents/README 索引四个品类 skill(前三次 merge 欠账)。
验收(本机):金标 7 品类 6/6 + cheap_verify 19/19 + 解谜资产门 6/6(含 node scaffold/check 真 shell-out)
+ 模板 node 13/13 + check_registry 17 条 + node --check/py_compile 全过;test_roles 2 红=主干既有基线
(回落分叉,归一单已排)。
诚实记录:分支验收唯「n=3-5 小批全过门」BLOCKED(4/7;三失败=AI 大面重写引入运行时 bug,九门正确
拦截,根因已回写 skill §9 品类红线;spike 路无续修环是结构缺口,生产路 RepairMiddleware 覆盖)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-02 23:48:41 -07:00 |
|
lili
|
496f8b6de7
|
merge: W-GENRE 非遗品类四件套(skill heritage-game-design + _template-feiyi 9/9 + _fewshot-feiyi 正例 + rubric fixture/金标 spec;n=5 过 4/5·首败根因=import 断链已加护栏后 3 连过·幻觉 0)——品类路由并集 v1.3.0(剧情6/TRPG7/非遗8)
docs-gate / docs-gate (push) Has been cancelled
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-02 23:16:52 -07:00 |
|
lili
|
718f7d2e6f
|
fix(cheap): 修 TRPG merge 调解脚本误伤——test_golden_specs 函数 docstring 块被误替换成模块级集合致 IndentationError(管道吞退出码漏检,补跑金标+评分尺测试全绿)
docs-gate / docs-gate (push) Has been cancelled
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-02 23:10:36 -07:00 |
|
lili
|
8301f650fa
|
Merge branch 'p11-trpg' into dev/2.0.0
docs-gate / docs-gate (push) Has been cancelled
# Conflicts:
# cheap-worker/cheap_roles.py
# cheap-worker/tests/test_golden_specs.py
# contracts/prompts/04-config/cheap-system.md
# contracts/prompts/registry.yaml
# game-runtime/tools/amodel-gen/prompt.mjs
|
2026-07-02 23:09:27 -07:00 |
|
lili
|
caadfe4c06
|
feat(cheap): TRPG 品类 rubric(5条·分母独立)+ 金标 play-spec(W-GENRE 品类件④)
品类扩展 rubric(质量模型 SoT §4 规范二·五六):cheap_verify.GENRE_CHECKLISTS['trpg'] 5 条
(掷骰过程可见 L2 / 风险回报取舍 L2 / 成长进判定公式 L2 / 难度爬坡登顶 L3 / 冒险战报炫耀 L4),
每条 0/1 标层 + 一对正反例;仍是喂 LLM judge 的评分尺数据、纯 LLM 非阻塞(红线:不写代码校验
/不进九门/不进 verdict/不进脚手架)。同一次评分 additive 追加品类条目,**分母独立小计**落
richness.genre{key,hits,score,max,groups},通用 11 条 groups/score 分母不混(规范二);
接线 = run_studio 据 scaffold_template 查 GENRE_BY_TEMPLATE 透传 genre,未登记/None 行为
与既有完全一致(无品类路 judge prompt 逐字节不变,锚定纪律)。
金标 play-spec:fixtures/golden-specs/trpg.play-spec.json(tap-targets occupied 反应族
+ score increased + expectLatch,formalize 件② p11c-tpl 已验的 occupied spec;不用货币
递减门——SoT §3 裁定二门级判据不跨档);test_golden_specs 期望集同步纳 trpg(schema/
契约依赖/无坐标绑定 20/20 绿)。
金标复验(规范三,真跑 M3):正例 _template-trpg 骨架 品类 5/5、通用 8/11;薄反例(黑箱
点卡+无骰无取舍无成长无终点)品类 0/5、通用 0/11——正反例拉满、评分尺有鉴别力;同一正例
品类路 vs 基线路通用 11 条漂移 = 0(≤±1,加品类段不扰动通用判定)。单测 +5(条目形状/
独立分母/位置兜底偏移/无品类向后兼容/judge prompt additive)= test_cheap_verify 19/19 绿。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-02 22:46:45 -07:00 |
|
lili
|
2f51439c55
|
feat(genre): 品类 rubric 喂 LLM 验证 agent 接线 + 解谜金标 play-spec(W-GENRE 品类件④)
cheap_verify 品类扩展接线(全 additive):load_genre_checklist 读 fixtures/genre-rubrics/<genre>.json(缺失/坏 JSON 退化为空,best-effort 绝不抛);同一次 judge 调用并入品类条目(规范四:每款一次评分),输出独立 genreHits/genreGroups 分组小计(规范二:分母与通用底座分开、不混合平均);genre=None 时 judge prompt 与解析输出与既有版本逐字节/逐键一致(锚定纪律,单测锁死)。run_studio 加 genre 透传(缺省 None=原行为);rubric 仍纯 LLM 非阻塞、不进 verdict/九门/达标判定;service driver 路不动(genre 路由进服务请求时再接)。
解谜金标 play-spec fixtures/golden-specs/puzzle.play-spec.json:tap-targets occupied 反应族 + score 递增断言 + expectLatch,只依赖 forensics 契约不绑定坐标(formalize p11b-tmpl 已验证过的 occupied spec);test_golden_specs 品类集同步加 puzzle(金标机器门)。
验证:test_genre_puzzle_assets 6 项全过(含 prompt 逐字节恒等/分组小计分母/漏答 genreChecks 兜底)、test_golden_specs 6/6、test_cheap_verify 14/14 零回归;test_roles 10/12 与 test_studio_smoke 0/4 为基线既有失败(主仓同状态,与本改动无关)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-02 22:36:15 -07:00 |
|
lili
|
932b4f6d8c
|
feat(genre): 解谜 few-shot 过门正例 _fewshot-puzzle + 范例签名机器校验门 + 品类 rubric 机器版(W-GENRE 品类件③+④rubric)
few-shot 正例「深海寻宝谜航」:从 _template-puzzle 骨架换身份加深度的完整成品范例(主题全换/6 关维度递进带 intro/星级评价按错点数/称号+save 跨局星星收集/结算炫耀面板/GENRE_META 同款钩子元数据/8s 卡壳软提示),取证契约与骨架一致。独立过九门 9/9(p11b-fewshot,score 0→833、latch 真到 over,verdict= game-runtime/games/_wg1-gen/p11b-fewshot/evidence/verdict.json)。
范例签名机器校验门 test_genre_puzzle_assets.py(防范例成下一代漂移源,设计档 §3 决策⑥):scaffold 克隆两件解谜范例 → tools.mjs check(API 存在/形状/红线/结构契约)必须 PASS,模板缺失回落也判红;另静态兜底取证契约面 + GENRE_META + rubric fixture 形状(≥4 条/层标/正反例)。纯机械零 LLM。
品类 rubric 机器版 fixtures/genre-rubrics/puzzle.json:5 条品类扩展(谜题规则递进 L2/顿悟距离 L2/关卡阶梯可见 L3/卡壳兜底 L2/成绩可炫耀 L4),逐条 0/1+层标+正反例,与 puzzle-game-design §10 同源;金标锚=正例 _fewshot-puzzle/薄反例 _template-puzzle。喂 LLM 验证 agent 的接线随下一提交(cheap_verify 品类扩展)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-02 22:25:26 -07:00 |
|
lili
|
c18e7f5324
|
feat(cheap-worker): 非遗品类件①②④+品类路由——heritage-game-design skill + _template-feiyi 工序节拍骨架(独立过九门) + 品类rubric/金标spec fixtures (W-GENRE)
① .agents/skills/heritage-game-design.md:非遗品类设计手册(照 sim-business 体例:玩法化
范式/工序节奏目标值/双层奖励/文化表述红线/§11 品类 rubric 5 条 逐条 0/1+层标 L2×3/L3×1/
L4×1+正反例,对齐质量模型 SoT §4 计分制;成长轴按 SoT §7 申报为工艺步骤解锁)。
② game-runtime/games/_template-feiyi/:工序节拍品类骨架(轻起点):一条工序链依次就绪→
火候窗口内点击完成→出成品,过窗回炉不判死;L1 plumbing 逐字节复用 _template-shop;
core.js 顶部多样性参数空间(CRAFT_CHAIN/WORKS/节奏常量);_forensicsView targets/score
取证契约(occupied=当前就绪且窗口内可点的工位)。独立过九门:A-I 全绿、H_progress
score 0→302、latch advisory(限时类口径,同经营打样)(verdict=
games/_wg1-gen/p11d-tpl/evidence/verdict.json,本品类金标 spec 驱动);tools.mjs check
机器门 PASS;单测 11/11(core 8 + headless 3,headless 按本品类语义重写、不复刻陈旧拷贝)。
④ fixtures/golden-specs/heritage-craft.play-spec.json(tap-targets occupied 族 + score
递增 + expectLatch;test_golden_specs 登记 heritage-craft,6/6 绿)+
fixtures/genre-rubrics/heritage.rubric.json(机器可读评分尺,锚定值待金标复验回填)。
路由(双源+热取三处同改):cheap_roles.py _SYSTEM_PROMPT 与 prompt.mjs 与
contracts/prompts/04-config/cheap-system.md 各加先读手册第 6 步(非遗品类→heritage
skill + _fewshot-feiyi few-shot 指针,正例随品类小批蒸馏后落库);cheap-system
version 1.0.0→1.1.0 + registry 同步(check_registry 17 条对齐 OK)。
既存问题(非本单造成,未扩大):cheap-system.md 自 8ea97234 起领先内置 _SYSTEM_PROMPT
一段「决策层/9 条自检」→ test_roles 两条 hotload 不变量测试基线即红;本单第 6 步在
热取/内置双路对称加入、漂移行数不变(仍 7 行)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-02 22:25:05 -07:00 |
|
lili
|
3223117d49
|
feat(cheap): 剧情品类路由三源同改 + story-branch 金标 play-spec(W-GENRE 品类件③④)
品类路由(保持最小,只加本品类条目):手册列表 +6「剧情/互动叙事/文字冒险类读
narrative-game-design + read _template-story/src/game-logic.js 过门范例(few-shot
read-on-demand 供给,与经营件同构)」+ 自检末行加剧情分支(选项单击即推进/latch/
选择有重量)。三源同改:contracts/prompts/04-config/cheap-system.md(热取生效面,
version 1.0.0→1.1.0)+ cheap_roles._SYSTEM_PROMPT(回落面)+ prompt.mjs(Node 双源,
禁反引号守住,node --check 过)。注:热取面与内置面的逐字节漂移是基线 pre-existing
(test_roles 10/12,fail 集未扩大;两面均已含剧情条目、语义一致)。
金标 play-spec:fixtures/golden-specs/story-branch.play-spec.json(tap-targets
occupied 反应族 + score increased + expectLatch,formalize p11a-tpl 独立九门 9/9
已验证的取证契约;无货币轴,不用货币递减门=质量模型 SoT §3 裁定二档位判据不跨档);
test_golden_specs._EXPECTED_GENRES 追加 story-branch,6/6 绿;
contracts/prompts/check_registry.py 17 条全对齐。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-02 22:22:51 -07:00 |
|
lili
|
21186b81b0
|
fix(cheap): 封死 M3 400 流式 tool_calls 聚合炸弹——parallel_tool_calls=False 主防线 + 同 index 异 id 按 id 分桶兜底补丁 (fix400 A/B/C)
根因(前置诊断坐实):agentscope 2.0.2 _parse_stream_response 按 tool_call.index 分桶,
M3 经 new-api 并行 call 不区分 index → 第二 call 的 arguments 拼进首桶(非法 JSON)→
服务端丢 call → tool result 孤儿 → 400 code 2013 → ChatService.run 吞异常 → SSE 无终结 →
driver idle 600s 慢失败。触发开关 = Service get_model 不传 stream(类默认 True)。
A 主防线:driver session parameters 加 parallel_tool_calls=False(经 Parameters 透传,
_call_api 对 API 带 parallel_tool_calls=false,源头禁并行);fake-SSE 契约测试加断言锚。
B 纵深兜底:m3_stream_patch 运行时 monkeypatch(绝不改 venv 本体;钉 agentscope==2.0.2,
升级必须复核):chunk 流 index 重映射——同 index 但携非空且不同 id 按 id 开新桶;聚合完
args 非法 JSON log.warning 带指纹。挂载 build_cheap_app(import agentscope 后)。
单测 6 项:2.0.2 真聚合函数复刻 93001 炸弹指纹对照 + 补丁分桶 + 正常流不回归 +
同 id 复帧同桶 + 坏 args warning 指纹 + apply 幂等。
C 对账:tier2 服务路 anthropic_credential → AnthropicChatModel(stream 同样默认 True),
但其聚合由 content_block_start 显式开桶(_anthropic/_model.py:359-368 赋值建桶,
非 += 隐式拼接),无本炸弹路径;parallel_tool_calls 参数仅 openai_chat/dashscope 有。
tier2 进程内路 build_model stream=False(worker/config.py)不走流式聚合。均不动。
测试:test_m3_stream_patch 6/6 + test_cheap_service_driver/app 19/19 全绿。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-02 21:09:44 -07:00 |
|
lili
|
ba82e63c82
|
feat(cheap): rubric v2 评分尺 8→11 条 + L2/L3/L4 三分组小计落库(质量模型 §3.3 计分制·前置小工单)
评分尺升级:通用底座 v2 = 现行 8 条(判据文本/顺序锁定、仅补层标)+ 新增 3 条(首3分钟脚本 L3 / 炫耀时刻 L4 / 同款钩子 L4)。逐条 0/1 标层,一次 LLM 评分产 L2×6/L3×3/L4×2 三分组小计;不设单一总分(§3.3 防 Goodhart)。
落库:summary.richness 从单一总分改为三分组小计——新增 groups 字段 + hits 每条带 layer;score 保留为向后兼容字段(供 bake_off.richness_dist 读、非设计总分)。两落库点(cheap_studio/cheap_service_driver)整体赋值自动继承新形状,仅日志 additive 补 groups。
红线:rubric 仍纯 LLM 非阻塞,不进 verdict/九门/达标判定;bake_off.py richness 正交红线一行未动。
验收(本机真跑 M3):金标复验 base1/base4/cheap-run-sc 原 8 条命中数漂移 = -1/0/0(≤±1,base1 唯一 -1 来自「30秒爽点」单条 LLM 边界抖动、非评分尺扰动);落库佐证 run-summary 真出现 richness.groups + hits.layer、既有键不受影响;test_cheap_verify 14 绿(+3 新测)、bake_off/service_driver 27 绿;全套另 14 failed 经 stash baseline 对比证实为 worktree 缺产物/node_modules 的 pre-existing 环境失败、零回归。
follow-up:bake_off.richness_dist 的 max=8 报告口径随 W-GENRE 品类批产接入 richnessByGenre 时对齐分组小计;sim-business skill §10 改口归质量设计档收口。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-02 19:58:20 -07:00 |
|
lili
|
bf7f1aebfc
|
fix(cheap): 阶段一② 终审 merge-before(红线③ unlink×2 防陈旧 verdict 假绿 + setup fail-fast + acquire_ports to_thread + 死码/ReplyEndEvent canary/restricted fail-closed) (切片一 阶段一②/终审fix)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-02 13:34:57 -07:00 |
|
lili
|
8d9bf1e577
|
feat(cheap): worker 归并驱动 Service /chat(单 POST + 洋葱内续修)+ reply 外 result_out 收口 (切片一 阶段一②/T3)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-02 12:36:38 -07:00 |
|
lili
|
1662eb0dc5
|
feat(cheap): 便宜档独立 Service 壳 build_cheap_app + 工厂(soft 预算/三闸失控兜底/端口池/session→gameId sidecar/收口采集) (切片一 阶段一②/T2)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-02 12:12:53 -07:00 |
|
lili
|
e9e7006cb3
|
feat(cheap): 便宜档九门判据 judge_cheap_verdict + run_cheap_gates 同步门跑(端口透传) (切片一 阶段一②/T1)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-02 11:51:39 -07:00 |
|
lili
|
061cf22c87
|
feat(cheap-worker): 续修 middleware 机制 spike 坐实(拦 finish+注入+续跑)(切片一 阶段一前置)
on_reasoning 洋葱拦 finish Msg + 独立跑 fake check + 没过压制+注入 UserMsg 续跑,
4/4 确定性单测绿(stub 模型、零 LLM/chrome)。机制成立,阶段一接真 run_gates。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-01 05:22:49 -07:00 |
|
lili
|
e6525aaa3d
|
feat(cheap-worker): 便宜档生成丰富度 + M1 达标门富化重验(切片一 A/B)
接 sim-business 设计指导到生成 agent(cheap_roles+prompt.mjs 双源,先设计后写码+MVP-first);新建纯 LLM 丰富度验证 agent cheap_verify(非阻塞·不进 verdict·零 code-presence 断言,红线落地);bake_off 加 richness 列;cheap_roles 三级回落配置热取(C2a 加载器);cheap_studio trace 接线(C1b)。富游戏 M1 三品类各 5/5=100% 过九门达标。测试 test_roles 12 / test_cheap_verify 11 / test_bake_off 17 / test_cheap_trace 4 全绿。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-30 01:39:06 -07:00 |
|
lili
|
dc49f5f866
|
feat(cheap-gen): 阶段一B #5 drawButton 改返命中矩形(黄金首件·治 #1 翻车点根因)
降AI参与·阶段一B 改签名第一处(附A #5)。逐插件改逐插件回归的黄金样板。
drawButton 由返 void 改为回吐它绘制的归一化命中矩形 {x,y,w,h}——AI 的直觉写法
const btn = hudUi.drawButton(g,{x,y,w,h},{label}); if (hudUi.pointInRect(px,py,btn)) 现在就对,
治了 #1 翻车点(drawButton 返 void 误用→变量恒 undefined→命中短路→卡菜单)的根因,而非教绕路。
全链路同改(漏一个造新脏数据):
- hud-ui/impl.js:drawButton 模块函数 + 实例方法回吐归一化矩形 r(g=null 也回吐、绝不 undefined)
- hud-ui/api.d.ts:模块函数 + 实例方法 两处 :void → :Rect + JSDoc
- tools.mjs 形状门:删 drawButton 特例分支(api.d.ts 改后自然掉出 void 名集),
泛化判据留给仍真返 void 的方法(drawText/drawPanel/drawBar/play/flashScreen)
- prompt.mjs/cheap_roles.py(双源)/skill:指引由"返void绝不接"翻为"回吐命中矩形可直接 pointInRect"
- check.test.mjs:drawButton 测试反转(赋值不再拦)+ 链式测改 drawText
- test_roles.py/test_toolkit.py:footgun 断言 + 形状门 drawButton 测试随签名更新
验证(逐插件回归矩阵):
- 形状门单测 11/11(amodel-gen)+ cheap-worker test_roles/test_toolkit 16/16 + hud-ui 19/19
- 确定性 impl 铁证:drawButton 回吐 {x,y,w,h}、g=null 不 undefined、回吐矩形直接 pointInRect 闭环
- 真生成代码(菜单+按钮游戏)用了 drawButton、check 未拦 drawButton,证明 #5 不破坏生成
- 双源 drawButton 文案一致;prompt.mjs node --check + cheap_roles.py py_compile 绿
正交发现(非 #5):该局九门 gen 栽在 save.get() 方法名幻觉(save 插件无 get)——
是另一处方法名摩擦,记为阶段一B 后续/补密度候选,不在 #5 范围。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-30 01:39:05 -07:00 |
|
lili
|
9a6feddfee
|
feat(studio): A11 切片三 M5 三结构断言机器门(改对了没/有没有误伤/血缘可查)
九门只验"仍能玩",验不出"改对了没、有没有误伤";三断言补这层(plan① 线 154)。
cheap_assert.py:
- ① change_applied:改动真生效非 no-op(deterministic=manifest found 且 old≠new / regenerate=changed)
- ② nontarget_stable:base→new 真比对算内容差,非目标文件变=误伤——不信执行器自报标记,
防执行器 bug 自证(兑现 Opus 评审 P1-2)
- ③ lineage_queryable:baseVersionId 在(worker 侧验必要条件,DB 真可查由 M1 回填 + 后端 e2e)
- three_assertions 合并 verdict
集成进 execute_*:两档加 base_version_id 参 + 附 assertions verdict + 收紧 status
(succeeded ⟺ 九门 ∧ ① ∧ ②;regenerate 原漏判 ①changed 已补);worker 透传 modify.baseVersionId。
测试:test_a11_m5_assertions 12/12 + 全 85 测试独立复跑全绿(含 M3/M4 桩接 kwarg)。
集成端到端 smoke(真九门):ROUND_MS 30000→19000 + baseVersionId=4096
→ status=succeeded、a1/a2/a3 全 true、allPass=true、落盘 19000。
受计费真后端 e2e(经 studio→aigc→worker→回调→新版本+D12计费+血缘)待 mini-desktop 全栈。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-29 02:34:06 -07:00 |
|