631 Commits

Author SHA1 Message Date
zizi
c1bf28f15b fix(tier2): C1 trace 加 workdir 存在守卫(免 scaffold 前刷 FileNotFoundError)
008 实证:首轮 scaffold_init 之前会有早期 SSE 事件,此时工程 workdir 还没建 → trace 追加写刷
FileNotFoundError(best-effort 已吞、但刷屏)。加守卫:dirname 不存在即静默跳过(不抢先建目录、
免干扰 scaffold 的"已存在不覆盖"逻辑)。scaffold 后正常落 trace。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 12:57:14 +00:00
zizi
3156a2a9db fix(tier2): C1 trace 抓对工具名字段(tool_call_name/tool_call_id/state)
008 真跑实证:C1 trace 工作(119 行/28 工具调用捕获),但 TOOL_CALL 事件没记到工具名——
_compact_sse_event 误取 tool_name/name/id,而 2.0.2 真实字段是 tool_call_name(START 带)+
tool_call_id + state(TOOL_RESULT_END 的结果态)。修正取这三个真字段:trace 现在能看清
「agent 调了 scaffold_init→write_source→build→run_gates… 哪一步、成没成」——这才是"看见卡在哪"。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 12:54:11 +00:00
zizi
21472811be fix(tier2): run_gates 缺 driver 时默认 business-sim play_spec(修服务态假性不收敛根因)
★ 收敛根因实证(cp-smoke-006/007 真跑 + 007 现成游戏带 driver 重跑):服务态 play_spec=None →
游戏永不被真玩 → F_wiring(calls=0 expected=[])挂 + 富游戏三门拿不到观测=None(不是 False=没法评估)→
agent 看到 verdict=fix 却在"修一个不存在的问题"→ 反复 thrash 到 budget_exhausted。**游戏本身是好的**
(007 boot/render/live 全绿、暴露 resource.addCoins/consumeIngredient call-ID、latch 终态、bindInput 路由)。

铁证:用默认 business-sim play_spec 对 007 现成游戏重跑门 → decision=accept / L1.passed=True /
九门全绿 / 富游戏三门(tripleLink/economy/latch)全绿。即 M3 单写 + 设计阶段【已经】产出过门富游戏,
"不收敛"纯是控制面没传 driver 的假象。

修:run_gates 在 play_spec 缺 driver 时 setdefault DEFAULT_BUSINESS_SIM_PLAY_SPEC(driver 按参数驱动、
不靠逐像素坐标,对任何契约合规 business-sim 游戏通用;bakery feie-005 / coffee 007 同款过门),显式
play_spec 仍优先。一处修复同时惠及 agent 自己的 run_gates 工具(thrash 根)与控制面评门。richGame 仍据数据表自派生。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 12:43:27 +00:00
zizi
99a6afe08c docs(review): 非后端四模块代码评审收口 + _index 登记
game-runtime / game-studio / tier2 / wg1 四个非后端源码模块的跨模块代码评审:
4 个并行后台 workflow × 三阶段(静态分析在 mini-desktop / 接口协议+大厂规范+项目铁律深审 / 逐条 file:line 对抗证伪)。
结果 0 P0、9 P1、7 P2、9 P3(另 1 条候选证伪)。核心代码语言规范达大厂基线、无 error 级问题;
真风险 = 生成 worker 成本与幂等闸、活层 3 处旧品牌+品牌门覆盖洞、契约真空/v1→v2 漂移、game-studio 构建门。
逐模块明细嵌于评审档 §七,_index §6 已登记。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 12:41:33 +00:00
zizi
ffd22f22c2 feat(tier2): C1 trace 中间件接 with_studio(开 Studio 即旁路推 OTLP span)
C1 此前建了 observability.with_studio + studio_sink(OTLP→Studio),但没 wire 进真正跑的
Tier2TraceMiddleware(它在 worker/middleware.py、C1 没动)。本提交把中间件新建 adapter 的路径从
TraceAdapter(...) 换成 with_studio(...):drop-in——TIER2_STUDIO_URL/infra_config[studio] 取不到时
studio sink 自动 no-op,行为与原 TraceAdapter 完全一致(CLI/服务两线不开 Studio 即无感);取到地址则
每步在原 sink 外旁路推一份 OTLP span 给 AgentScope Studio(observe-only,best-effort,不阻塞主链)。
存 _studio_sink 句柄供收口 flush。配合 mini-desktop 起 Studio(创始人:now)即得真跑可视化。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 11:49:03 +00:00
zizi
b1217301c8 feat(tier2): C1 轻量观测——控制面把 SSE 事件记成每局可读 trace
C1 观测的轻量兑现(创始人:没有完整的 C,B 迭代很慢)。不起 Node Studio(它在 6c6g 非 mini-desktop、
是 Node monorepo,重)——而是在控制面客户端侧顺手把逐帧消费的 SSE 结构性事件(跳过 *_DELTA 逐 token 噪声)
记成 per-run JSONL 时间线:模型调用/工具调用(带工具名)/工具结果/推理/reply 边界/卡死信号
(REQUIRE_USER_CONFIRM/REQUIRE_EXTERNAL_EXECUTION)。落工程 workdir/control-plane-trace.jsonl,跨 attempt
追加=整局多轮时间线。零服务改动、零 Studio 依赖、best-effort(写失败只告警不中断)。

迭代时一眼看清「agent 调了哪些工具、按什么序、卡在哪」——这正是这轮 debug 反复要的可见性。
observability/studio_sink.py 的 OTLP/Studio 全量 UI 路仍在、是将来可选(待 mini-desktop 起 Studio)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 11:01:06 +00:00
zizi
34336d3204 feat(tier2): C3 证路基线接 deepseek-v4-pro 跨族 cross-check(创始人 2026-06-24 裁定)
网关现实(实测):new-api 只有 MiniMax + deepseek-v4-pro,无 Opus/Fable/Claude/GPT;
build_baseline_model('Opus') 真调返 503 model_not_found。创始人裁定证路当前用 deepseek-v4-pro
跨族 cross-check(不比 M3 明显强、证路力偏弱,但能跑;真强模型证路待网关开 Opus/Fable 渠道、
改 generation.yaml 即接,代码已就绪)。

加 BASELINE_CROSSCHECK + _BASELINE_NAME_BY_KEY 的 crosscheck/deepseek 聚合 key + generation.yaml
model.baseline_crosscheck=deepseek-v4-pro。实测 deepseek-v4-pro 在 new-api 上 Anthropic 原生路可用,
build_baseline_model('deepseek-v4-pro') 真调返「跨族已通」——证路走 Anthropic 路与 M3 同协议同线对照。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 10:56:55 +00:00
zizi
d0b30ddace feat(tier2): 设计阶段接进服务路径(修服务态不收敛根因)
006 真跑实证:服务态 writer 拿空 design_text → 富游戏三门(tripleLink/economy/latch)全挂、
4 次 resume 不收敛(产物结构合法能渲染,但三系统联动没接对)。CLI 线 run_studio 先跑工作室设计
阶段再写、故更易过门;服务路径此前整段跳过设计(app.py 文件头标的 followup)。

修:bootstrap 加 _run_design_phase——在控制面进程内(有 agentscope+模型)复用 studio._design_stage
(工作室星形多 agent 团队 + 失败 degrade 回单 agent)产出 design_text,喂进 AgentRecord.system_prompt
(roles.writer_system 第二参)。每局建 agent 时跑一次,不随 resume 重跑。best-effort:设计失败返 ""
不阻断生成。do_design 经 drive_generation 透传(control_plane --no-design 可关,对照用)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 10:53:38 +00:00
zizi
34b9ce3be0 fix(tier2): BYPASS PATCH 须带 query agent_id(修 422 missing agent_id)
上一修的 PATCH /sessions/{id} 设 BYPASS 返 422:missing query agent_id——该端点与 SSE stream
一样要 query 参数 agent_id。修:_patch 支持 params,_set_permission_bypass 把 agent_id 作 query 传。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 08:55:51 +00:00
zizi
9630c1ece7 fix(tier2): 服务态会话设 BYPASS 权限(修工具调用卡死 ASK)
toolkit 抠取修好后,agent 能调工具了,但每个 chat run 抛「Agent is waiting for 1 tool calls...
but received no event」(agent/_agent.py:931):tier2 九工具默认 check_permissions 返回 ASK
(_adapters.py:99),服务态无人确认 → 工具调用进 ToolCallState.ASKING 等永不来的确认事件 →
生成零产出(workdir 只有 play-spec.json,九工具一个没执行)。

CLI 线靠 studio.py 的 _bypass_state()(AgentState permission=BYPASS)解决;服务态此前没设。
修:bootstrap 建 session 后 PATCH /sessions/{id} permission_mode=bypass
(app/_router/_session.py:334 更新 AgentState.permission_context.mode;PermissionMode.BYPASS="bypass"),
start_new_game / iterate_existing_project 都设;resume_session 复用同 session 自动继承。加 _patch helper。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 08:52:29 +00:00
zizi
e06ddc887a fix(tier2): thinking 关时 budget 归一为 None(修基线模型 Parameters 校验)
C3 Opus 基线探针实证:build_baseline_model('Opus') thinking 关时传 thinking_budget=0,被
AnthropicChatModel.Parameters 的 thinking_budget>0 约束拒(ValidationError),基线根本构不出。
C3 代码落地时假设 budget=0 可行,但从没真跑过基线、未暴露。

修 build_model:thinking_enable=False → thinking_budget 归一为 None(Parameters 字段 int|None,
Anthropic 仅 thinking_enable 时才用它)+ 跳过 max_tokens>budget 校验(该约束只在 thinking 开有意义)。
M3 路(thinking 开、budget=8000)行为不变,硬校验保留。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 08:46:07 +00:00
zizi
01a3229a9e fix(tier2): 服务态从 Toolkit.tool_groups 抠九工具(修 chat run 起手即崩)
B1 控制面真驱 :8200 暴露:每个 chat run 起手即抛 RuntimeError「无法从 Toolkit 抠出
FunctionTool 列表」→ 服务态生成零产出(M3 没写任何文件、SSE 只有心跳、4 次 attempt 全 null
verdict)。P4 只验了服务能启 + BackendStore 往返,从没真跑过一回合 chat,故此 bug 一直潜伏。

根因:_extract_function_tools 按 tools/_tools/function_tools 扁平探测,但 2.0.2 Toolkit 把工具按组
存 self.tool_groups(构造传入的 tools 被包进 "basic" 组,group.tools 是 list[ToolBase];源码
tool/_toolkit.py:127-135 + :515)。修:先从所有 tool_groups 收 .tools(得九个 FunctionTool),
旧扁平探测降为兜底。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 08:39:19 +00:00
zizi
9945e2aa9a docs(tier2): 部署档补 B1 控制面真驱配方 + 凭据/chat 体口径 + setsid 起服务铁律
团队共享(创始人「记录部署位置/端点」铁律):
- B1 control_plane 跑一款到门绿落库的 detached 命令 + game_id=session_id 评门口径;
- 凭据注册体 {data:{...}} / chat input.content 须内容块列表(smoke 实证定稿);
- 起常驻服务必 setsid 脱离 ssh 会话(nohup 会挂通道致启动被 timeout 打断)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 08:00:39 +00:00
zizi
76aab8d703 fix(tier2): bootstrap /chat input.content 须为内容块列表(控制面 smoke 实证)
credential/agent/session 已通后,POST /chat/ 返 422:body.input.content「Input should be a
valid list」。根因 = Msg.content 经 REST 传 JSON 必须是内容块列表,而 bootstrap 发了裸字符串
(Python 端 UserMsg(content=str) 的字符串自动包块只在构造器内发生,不经 REST JSON 校验那条)。

修:加 _user_input(text) helper 统一组 input = {name,role,content:[TextBlock]},三处 chat
调用(start_new_game/resume_session/iterate_existing_project)改用它。TextBlock JSON 形状
{type:"text",text:...} 据源码 message/_block.py:11 核实。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 07:57:39 +00:00
zizi
295f232d20 fix(tier2): bootstrap 凭据注册体对齐活服务 schema(控制面 smoke 实证)
B1 控制面真驱 :8200 时 POST /credential/ 返 422:Field required body.data。根因 = bootstrap
的 _resolve_m3_credential_payload 发了扁平 {type,base_url,api_key,model},而 create_app 的
CreateCredentialRequest 要 {data: dict}(凭据载荷嵌 data 下),且 model 不是凭据字段。

据活服务 GET /credential/schemas 的 Anthropic schema + 源码 app/_service/_model.py:get_model
(模型类由 CredentialFactory.from_dict(data).get_chat_model_class() 据 data.type 决定)定稿:
data = {type: "anthropic_credential", api_key, base_url};模型名仍在 session.chat_model_config.model。
agent/session/chat 体经源码核对结构一致(CreateAgentRequest/CreateSessionRequest/ChatModelConfig/
ChatRequest),无需改;X-User-Id 头通(返 422 而非 401 证明已过鉴权进 handler)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 07:55:34 +00:00
zizi
bd8b2c80a6 feat(tier2): B门重机器并行落地——控制面有界resume + Studio观测 + MCP工具面 + 基线client/Prompt门
B 门(AgentScope 重机器)四单元并行建设,文件不相交,均过 6c6g 静态校验(py_compile +
惰性 import 安全 + 机器门)。真跑收敛/Studio/门验证属 mini-desktop,作为下一步 e2e。

B1 控制面有界 resume(service/control_plane.py · 皇冠):
  补上 service/app.py 与 bootstrap.py 文件头标的 followup——CLI run_studio:404-458 的外层有界
  resume(M3 看一次 verdict 就停 → 带反馈踹回去续修)此前在服务态(create_app :8200)缺失。
  drive_generation() 复用 bootstrap REST 原语 + run 纯代码门:每回合消费 SSE(REPLY_END/
  EXCEED_MAX_ITERS)等 chat run 结束 → 独立跑 run.run_gates 机器判门 → 门绿据 on-disk 源工程
  重建七要素 + persist 落库 / 否则 verdict_feedback 续修,直到门绿/预算耗尽/熔断。不靠内存
  session 判收敛(服务态九工具每回合工厂新建 Tier2Session),贴合「门机器判、控制面绝不自评翻绿」。

C1 AgentScope Studio 观测(observability/studio_sink.py + trace.py):
  把统一 trace 事件按 OTLP(经核实 Studio = OpenTelemetry,非私有 REST;HTTP 3000 /v1/traces)
  映射成 span 推 Studio,traceId→gen_ai.conversation.id 聚成一条 run。私有 TracerProvider 避免
  抢 otel 全局单例。默认关闭(无 TIER2_STUDIO_URL 即 no-op)、observe-only、绝不改 decision。

C2 MCP 工具面(worker/mcp_tools.py + toolkit.py 加性挂点):
  图说 E 族——build_toolkit 末尾加配置门控挂点,默认关闭时 build_mcp_clients() 返回 []、
  Toolkit(tools, mcps=[]) 与原构造等价,九工具(spike 已验证主链)行为零改。Toolkit 接受 mcps=
  形参已对源码核实(tool/_toolkit.py:93)。

C3 基线 client + Prompt 一致性机器门(config.py + genconfig.py + generation.yaml + ci/):
  build_baseline_model(Opus 经 new-api Anthropic 原生)供 A 门「证路」,build_model M3 路零回归;
  check-prompt-registry.sh 文件级三向一致 + import 级命中 registry,6c6g 实跑 exit 0。

修复 design_team 配置外置兑现(design_team.py):
  leader_max_iters/per_expert_cap/timeout_s 改 None→genconfig.get('design_team',...),此前硬编码
  默认 240 导致改 generation.yaml 的 timeout 不生效;已验 genconfig 真读到 YAML 值。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 07:46:59 +00:00
zizi
1a4c6970b0 docs(deploy): 记 tier2 P4 服务化部署拓扑(团队共享)——Agent Service @ mini-desktop:8200 + 真落库 MySQL/MinIO + 运行环境
内网开发阶段、明文记端点+凭据(铁律授权)。Agent Service 起法/REST 路由/Redis 后端、BackendStore 的 MySQL 库表+MinIO 桶+key 约定、venv/worktree/装依赖法,全部落档供团队共享。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 07:20:13 +00:00
zizi
ce491314c8 feat(tier2): P4 服务化核心——Agent Service(create_app)+ 第二装载真落库(MySQL+MinIO)
【U1 Agent Service】service/{app,infra_config,bootstrap}.py + config/infra.yaml:
经 agentscope 2.0.2 官方 create_app 把 tier2 引擎接成 Agent Service 壳——复用 studio 的 agent 装配零件
(roles/九工具/四熔断+trace/BYPASS/历史压缩)接到 create_app 扩展点(extra_agent_tools/extra_agent_middlewares),
不重写生成逻辑。Redis(mini-infra)做 storage(db0)+MessageBus(db1)。session 三路(新建/续接/加载工程迭代)经 REST(bootstrap.py)。
诚实差距:有界resume/工作室多agent/L2-L3/落库=循环外编排,服务态由控制面承接(已标 followup)。

【U2 真落库】store.py BackendStore 真实现(替 P3 NotImplementedError)+ schema SQL:
manifest→MySQL(幂等键 game_id+source_hash)+源文件全文→MinIO(bucket tier2-src);fetch 回填重建。
pymysql+minio 惰性 import;TIER2_STORE=backend 切换。

全 tier2/ 内、零碰 Tier0/1、py_compile+惰性import实证+forbidden-import 通过。真部署(连基建+uvicorn+smoke)待 mini-desktop。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 06:37:37 +00:00
zizi
78ff9f5d86 docs(creds): 补基建数据面凭据(Redis/MySQL/MinIO @mini-infra)——tier2 P4 服务化/落库用
从 mini-infra docker 容器 env 抠出落档(内网 Tailscale 凭据按铁律入仓):
Redis 6379(requirepass)/ MySQL 3306(root)/ MinIO 9000(ragflow)。tier2 Agent Service MessageBus + 第二装载落库要用。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 06:15:29 +00:00
zizi
29e081626c Merge 'feat/tier2-phaser-engine' → dev/2.0.0:tier2 富游戏自治引擎 B门 P1-P3+配置外置 收拢主干
并入 tier2 引擎线 4 提交(P1 验收质量层 advisory / P2 自治深化=工作室Team+工作记忆+洋葱钩子+¥熔断 /
P3 装载与品类=落库seam+品类机制 / 配置外置=genconfig+prompt Registry)。
合并干净(merge-tree 零冲突)——tier2/ 与 A-model 的 game-runtime/ 不重叠。
引擎机制 token 真跑通(mini-desktop 全链 import OK + 金标冒烟 GREEN 九门9/9+富三门3/3);过门率优化(spike ~20%)在 dev 继续。
既无并行开发,收拢到主干;feat 分支保留。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 06:10:54 +00:00
zizi
c9dbd50d80 feat(tier2): B门-配置外置——生成器旋钮 + prompt 全部数据驱动(调生成=改数据重跑、不改码)
让"调生成"从改代码变成改数据,直接给"优化 20% 过门率"的迭代提速。默认值=现有硬编码值、行为字节不变,改外部数据才生效。

【生成配置层】genconfig.py + tier2/config/generation.yaml:
把硬编码旋钮(model 选择 / 熔断·预算 rmb_hard_limit=3.0 / 迭代 writer_max_iters=40 / 工作室 Team leader_max_iters=12·per_expert_cap=2 / 品类参数)
抽成中央 YAML、运行时读(env TIER2_GENCONFIG 覆盖 + 缺省回落内置默认);config/middleware/studio/design_team 改读 genconfig。
回归:4 关键旋钮默认取值 == 改造前硬编码值;整 worker 包编译过。
(未externalize:fallback_tree ★阈值 + harness HUMAN_MIN_PATIENCE 门阈值——门阈值次要、gates 现 advisory,留后续。)

【Prompt 外置】prompts.py + contracts/prompts/09-tier2-richgame/(8 .md)+ registry.yaml:
tier2 的 8 条 system prompt(writer/design-leader/4 专家/player/design-system)外置到 Prompt Registry(契约#8),
运行时按 id 读 + 三级回落(env > registry .md > 内置原文)+ best-effort 不中断;{{input.*}} 字符串替换(避开裸 JSON 花括号噎 format)。
roles.py 改读 registry 但对外接口字节不变(studio/design_team call site 零改)。
回归:13/13 产物逐字节 == 改造前(含带参 design_leader/writer 四种入参组合);registry 缺失回落内置原文。Tier0/1 既有 8 条 prompt 零改动(red line)。

全 tier2/+contracts/prompts/ 内、零碰 Tier0/1、compileall + forbidden-import 通过。注:两 workflow 中 U1(genconfig)结构化报告解析失败(基建层),代码已落盘且主会话直接复核(编译+默认值回归过)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 05:32:37 +00:00
zizi
5b35e61f89 feat(tier2): B门-P3 装载与品类——落库seam+versionId+projectType分流 + 品类可插拔机制
【U1 第二装载落库(F族)】store.py + run.persist + studio收口 + index.template分流:
SourceProjectStore 接口 + LocalFsStore 真实现(GEN_DIR/_store 内容哈希寻址/版本归档/可重建,9 round-trip 测试过)
+ BackendStore seam(MySQL+OSS 交 Java 后端,forbidden-import 守着不实连)。versionId=v<秒>-<hash前12>,
改源得新版本/保留旧版/fetch 按 version 取回。projectType 分流闸:index.template 从"工厂存在性隐式判断"
升为显式分流(tier2-phaser 现行路 / gamedef-legacy / amodel-2.0 留 seam 报错不静默)。result 新增 store_addressing。

【U2 品类可插拔机制(G/E族)】archetypes.py 注册表 + run/harness 泛化:
品类注册表(key→{数据表schema/脚手架/driver/门/fixture}),business-sim 唯一注册、五件套全指现有资产。
scaffold_init/gate_spec/prompt_hint 改读注册表;business-sim 铺出脚手架/spec/hint 与旧逐字节一致(回归验证)。
富游戏门按品类选(business-sim→现三门;未注册品类→"门待建"占位 passed:false、decision 不会 accept)。
"加新品类=补 5 样内容(非引擎码)"配方写进 archetypes.py。

全 tier2/ 内、零碰 Tier0/1、py_compile+node --check+forbidden-import 通过、金标装配冒烟不受影响。token 真跑验证待 mini-desktop。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 04:49:59 +00:00
zizi
cb7f5c44e8 feat(tier2): B门-P2 自治深化——工作室 Agent Team + AgentState 工作记忆/历史压缩 + 洋葱全钩子+¥硬熔断
B门可靠性核心(直攻 spike ~33% 过门率),全在 tier2/、零碰 Tier0/1,py_compile + forbidden-import 通过:

【工作室 Agent Team 阶段1】design_team.py + studio._design_stage 接线 + roles.py 5 角色:
替单 design agent 为星形多 agent——leader 拆题面 → 4 专家 worker(系统/经济/玩法/表现层)分头设计 → leader 汇总连贯设计稿。
2.0.2 纯库无 MsgHub/Team 原语(那在 create_app 服务层)→ 落 worker-as-tool(专家包成 leader 的 FunctionTool,
ReAct 调度 + BYPASS 权限),与 E3 星形语义等价、零拼接零新依赖。预算闸(per_expert_cap/leader_max_iters/timeout)
+ model_sink 计 token + 失败 degrade 回单 agent;产物=design str 形状不变(阶段2 单写零改)。

【AgentState 工作记忆 + 历史压缩】work_memory.py + config.build_context_config + studio resume:
AgentState 三字段(context/cur_iter/tasks_context,源码核验=2.0.2 真实字段名)承载工作记忆 + 轻量 JSON checkpoint;
--resume 读回续跑(不从零重写)。历史压缩走 2.0.2 ContextConfig(换 tier2 富游戏语义压缩提示词/模板,
保住锁定文件/数据表 schema/latch 约定),防 12+ 文件生成丢上下文。

【洋葱全钩子 + ¥硬熔断】middleware.py + trace.py:
补 on_reasoning/on_acting/on_model_call 三钩子产相位段 typed event(经 phase-marker 走 adapter 同路、不与 on_reply 重复计步)。
¥累进硬熔断:on_model_call 动手前按累计¥+预估判,越 DEFAULT_RMB_HARD_LIMIT=3.0/局 fail-closed;活价取不到 degrade 回次数闸。

注:workflow 中 U1 的结构化报告调用解析失败(基建层),但代码已落盘且经主会话直接复核(真 2.0.2 API、依赖满足、编译通过)。
token 真跑验证(多 agent 设计真跑 / 过门率提升 / 压缩保约定 / resume 续跑 / ¥闸按金额拦)待 mini-desktop。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 04:26:12 +00:00
zizi
2c4e2e2248 feat(tier2): B门-P1 验收质量层(advisory)——人可玩门 + L2 full + L3 升门判据
修「gate 通过≠人能玩」盲区(feie-005 实证:过九门+富三门却棋盘渲染空 + 8s 耐心人玩不了)。
补齐 D 族三层校验,全 advisory(写 verdict 不碰 decision;自带 Goodhart 守护:advisory 全挂也不翻 decision):
- 人可玩门(play-phaser.cdp.cjs):render-reflects-state(状态有 item→该格 canvas 像素须非空)
  + render-sanity(无 [object Object]/undefined/NaN 漏底文本)+ human-timing(订单耐心 ≥ HUMAN_MIN_PATIENCE_MS=12000·★directional)
- L2 设计符合 full(run.py compute_l2_signals):systemsPresent/mergeDag/ordersReachable/economyConsistent 四硬判据,
  从落盘源工程确定性算(替桩)
- L3 升门判据(run.py derive_l3_egregious + studio.py):消费 humanPlayability 的恶性渲染失败→suggestFatal 信号
- schema additive:humanPlayability 段 + L2.mismatches + L3.egregiousRenderFailure

离线验证:py_compile / node --check / JSON 合法 / 24 断言单测(含 Goodhart 守护:advisory 全挂 decision 字节不变)/
金标 L2 离线 passed=True + 反例精确报错。
**fatal 提升 + 金标冒烟集成验证待 mini-desktop**:确认金标仍 ACCEPT(新检查不抛、全 pass)+ feie-005 被挂后,
逐条提 fatal(品类限定有 board/orders 档)。校准数据:金标 patience=16-20s / feie-005=8s / 阈值候选 12s。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 03:46:19 +00:00
zizi
a1e9265305 Merge 'feat/mac-amodel-foundation' → dev/2.0.0:A-model 地基(Tier1 agentic 优化)
并入 A-model 分支 22 提交:4 编排插件(hud-ui/scene-fsm/session-score/timer-scheduler,
各带 api.d.ts/impl/manifest/test)+ catch-fruit 样板游戏 + amodel-gen 工具链
(gen/m3/play/prompt/tools/publish.mjs)+ boot-game-host/all-plugins/plugin 扩展 +
source-project.schema.json 升 oneOf(1.0 gamedef-legacy / 2.0 A-model 多文件代码工件)。

唯一冲突 = contracts/agent-loop/source-project.schema.json 顶层 description(两侧都改):
取 A-model 的 oneOf 结构升级为基底,再补回 dev 侧的 tier2-边界 note(本 schema 限 Tier0/1;
tier2 真 Phaser 引擎另立独立 schema、不复用本路)——两侧意图互补不矛盾(HANDOFF 已预判)。
JSON 校验通过,oneOf 2 支 + 两侧意图均在。

dev/2.0.0 侧 ~20 提交(tier2 计划/细图/接口协议/agentscope 2.0.2 订正)全在 docs/tier2/contracts,
与 A-model 的 game-runtime 改动零代码重叠。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 03:33:30 +00:00
lili
0ccce16aa2 feat(amodel-gen): gen.mjs --brief-file + SAA→A-model 执行版 plan(集成C)
--brief-file 容大段富化设计稿(避 argv 长度/引号坑;U3 Java shell-out 复用),design+saa 双模式生效。plan 已折叠两轮 Codex+Opus 双评审。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 19:45:33 -07:00
lili
4ed9d2a90f test(saa): M3 openai 流式静默挂死最小复现(诊断脚手架)
门控 -Dsaa.stream.repro=1 + NEWAPI_KEY,不破普通构建。逐验:stream() 是否真流式 / thinking 开时 content 帧是否到达 / blockLast 是否返回。全程显式超时不挂 900s。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 19:45:33 -07:00
lili
d342de088e feat(saa): 零-LLM driver 内置绑定 injectDriverByArchetype + 5 单测
design 只声明 gatespec 不写 driver→amodel 路无人绑 driver→游戏停菜单→九门 E_live/H 名存实亡。按 classify archetype 确定性补内置 driver(经营/反应→tap occupied、三消→placement、跑酷→key-cycle),显式 driver 不覆盖、无合适内置(如 bubble)不强补。WIP:未在 mini mvn 验;archetype→targets 契约假设正于 driver 调查中复核。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 19:45:33 -07:00
zizi
d6e977a5ac feat(tier2): 图说对账补全核心引擎待补——n≥30 runbook基建+观测成本接线+L3软检(全加性/observe-only)
按 tier2 图说目标做缺口分析(8族逐元素比对),补齐 0号 spike 为过门收窄掉、
但图说明确要求的「核心引擎待补」项。全部加性/observe-only:金标冒烟仍 ACCEPT
(九门9/9+富游戏三门3/3,门一道没放松),真依赖下全链 import+自测+一款真 M3 跑验证通过。

G族(n≥30 runbook 执行基建):
- worker/config.py: build_model_openai 便宜档 client(deepseek 经 new-api OpenAI 兼容路,与 M3 Anthropic 路并存)
- worker/run_record.py: G4 采集字段表 → 可序列化 RunRecord(含退路树分流键 fail_system)
- worker/fallback_tree.py: 退路树五出口判定器(Q1–Q4 数字触发线,★阈值常量区待校准)
- batch_run.py / aggregate.py: model×variant×n 批跑(断点续跑/失败隔离)+ 矩阵聚合三图喂判定器

H族(观测/成本接线,把孤儿件缝进 run 主链):
- observability/newapi_pricing.py: 活读 new-api /api/pricing 倍率(取不到回落显式参数+告警)
- middleware.py: Tier2TraceMiddleware 挂 writer agent 最外层洋葱,ReAct 全事件旁路 ingest
- agent_loop/studio.py 收口: records→cost_for_run 折¥;真跑实测 cost_rmb=1.29(newapi-live)、trace 647事件 dropped=0
- contracts/trace/: additive trace 事件契约位(忠实 trace.py 落 sink 形状)

D族(L3 视觉软检接线,observe-only):
- agent_loop/studio.py: 收口调一次 M3 多模态(真截图+真玩取证→fun映射0-100),只写 verdict.L3,绝不参与 decision
- 真跑实测 L3 score=25 准确指出空心表现层;decision=fix 仍由 L1硬门/熔断裁、与 L3 无关(防 Goodhart 成立)

留后(不投机抢建):工作室 Agent Team/第二装载落库/控制面/Agent Service 等按 plan 决策②⑤ gate 到 B门后;
n≥30 等统计相是「跑」非「写」(批跑底座已就位);A-model 4插件复用待合并对账;4处图说 spec-drift 待 doc 线回写。
详见 tier2/HANDOFF.md「图说对账补全」节。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 02:11:59 +00:00
zizi
c543f7c921 docs(tier2): 记 0 号 spike 收敛结果——feie-005 decision=accept + 四根因机器门
HANDOFF.md 补 spike 结果段:M3 自治写的面包店经营合成富游戏跑到 decision=accept
(9 L1 门 + 富游戏三门全过、finished=True、无熔断);从首跑 5/9 收敛靠四道机器门
(外层 resume 自纠 / datatable schema 门 / 平台文件锁 / play-scene 工厂契约门)。
判断=go(留观微调):中等模型被机器门挡在正确契约上能自治写出过门富游戏,
但强依赖机器门把契约违规变响亮反馈;下一步 n≥30 测真实成功率。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 22:21:03 +00:00
zizi
8f2bbce5d5 fix(tier2): 数据表加破产路 patience 可达性预检——经济/H/latch 门提前可修
spike feie-005 实证(F/G/tripleLink 全转绿后):H_progress/经济/latch 仍挂在「到不了终态」。
真因=数据表 patience 太长(M3 填了 45~65s),但破产路 driver 只跑约 16.8s(bankruptSteps 60×280ms)、
要连续 3 单流失才判 lose → 订单在有界 run 里耗不尽 → bankruptPathLose/bothReachedTerminal/H/latch 全挂
(金标用 16~20s 正为此)。M3 看 economy 反馈后能自己把 patience 调到 [8,8,8,8,12] 修这条,
但反馈不够直白时会绕弯。故 validate_datatable 加 patience 可达性预检:最小 streak 单订单的最大 patience
须落在有界 run 墙钟内(1.5× 余量),超了响亮提示「调小到金标 16~20s 量级」。
单测:金标(16-20s)PASS / feie-005式(45-65s)FAIL。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 22:14:16 +00:00
zizi
f64dcc6532 fix(tier2): play-scene 工厂契约门——拒 class+init(data) 反模式(根因3 最后一环)
spike feie-004 实证(play-runtime 抽离 + bindInput/tick 都接上后):D_render/E_live/F/G/H 仍全挂。
看 play-scene 源码:M3 把工厂写成无参 `createPlayScene()` 返回 `class extends Phaser.Scene` +
`init(data){this.core=data.core}` 取 core。但锁定的 main.js 用工厂模式建 scene
(createPlayScene({core,caps,assets,Phaser}) → scene.add(返回的配置对象)),不走 Phaser 的 init(data)、
也不传 data → this.core=undefined → scene 整个空转 → 所有门挂。

扩 validate_play_scene 加工厂契约检查:① 工厂必须收 deps 入参(非无参);② 禁 class extends
Phaser.Scene + init(data) 取 core 的反模式;③ 必须暴露 handleNormalizedInput(harness injectInput 路径)。
单测:golden PASS / M3 class+init(data) 三条精确报错。prompt/hint 给出正确工厂骨架正反例。

至此根因 3(M3 破坏平台接线)四道机器门齐:文件锁(main/systems/...)+ 数据表 schema 门 +
play-runtime 抽离锁定 + play-scene 工厂契约门。门未放松,全是结构性契约检查(防 Goodhart)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 22:03:31 +00:00
zizi
0fd0d4fb10 fix(tier2): 抽平台命脉进锁定 play-runtime.js + play-scene 契约门(根因3 另一半)
spike feie-003 实证(lock+schema 都修对后):F_wiring 仍 calls=0、E_live distinct=1/N、
latch=false。diff 出真因——M3 重写 play-scene 时把两件平台命脉一起改没了:
① 输入路由(doHitTest/doHandleInput/this.input.on pointerdown):没了或坐标错位
   (用 (col,row) 调 core.tapCell 而非 (i,j))→ driver 注入的 touch 落空/落错格 → 没合成 → F/G 门挂。
② 逐帧 core.update(dt):没了 → 订单耐心不倒计时、赢/输 latch 永不触发 → E_live/H/经济/latch 全挂。

这俩原先混在 agent 可写的 play-scene 里、只靠注释「别动」——无机器门=必被 M3 改掉。
现抽进平台锁定文件 src/scenes/play-runtime.js(bindInput 输入路由 + tick 逐帧推进),
加进 LOCKED_PLATFORM_FILES;fixture play-scene 重构成 create 调 bindInput(this,core)、
update 调 tick(core,delta),薄委托命中给锁定实现(坐标 layout 同源、driver-tap 焊死)。
加 validate_play_scene 契约门(build 段跑):play-scene 必须 import play-runtime 且调 bindInput+tick,
缺了响亮回喂精确指引。prompt/hint 同步:你只管画 render,别碰输入路由与 tick。

门未放松(judge 纯代码判);fixture 重构后须重跑金标 smoke 验仍 ACCEPT(下一步)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 21:53:53 +00:00
zizi
f8ec30c875 fix(tier2): 焊死平台锁定文件——write_source 拒改装载胶水/三系统(根因3)
spike feie-002 实证:loop 自纠(commit b43d59c)已让 M3 续修、数据表 schema 也修对了
(mergeChains/currencies/requires:{id:qty} 全对,三联动门 requiresReachable/dagAcyclic 转绿),
但 F_wiring/G_input/H_progress/callsAddCoins 仍连环挂。diff 出真因:M3 重写了平台锁定的
src/main.js(装载胶水,130 行差异)——丢了 recHook 透传 → 资源系统 addCoins/consumeIngredient
不再记进 window.__engineCalls → F 门 calls=0、合成不记调用、G/H 门跟着挂。

fixture-spec 预建分工本就规定平台预建文件「写死不动」,但只是 prompt advisory、没机器门。
现把它焊成硬约束:write_source 对 9 个平台锁定文件(main.js/game-core.js/systems/*/layout.js/
tables.js/util/*)的真实修改直接拒(幂等回写放行),并提示「只改 play-scene.js + 数据表」。
agent 可写域 = src/scenes/play-scene.js + data/datatable.gold.json + src/scenes/ 新增表现文件。
单测:9 锁定文件命中、play-scene/datatable/新 scene 放行。prompt 同步加固铁律⑦。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 21:37:41 +00:00
zizi
b43d59cc9a fix(tier2): loop 自纠三杠杆——外层有界 resume + 数据表 schema 预检 + finish 门
spike feie-001 实证三根因(verdict.json):
① loop 不自纠(最大):AgentScope 2.0.2 原生 ReAct 在「模型产无 tool_call 纯文本回合」即退出;
   M3 调一次 run_gates 看到 decision=fix 就产空文本收尾(tool_calls=9/40、breaker=None、finished=False)
   = 看一次 verdict 就放弃。补编排层有界 resume:agent 停下后若没真 finish 且门没绿且有预算,
   带 verdict 失败反馈再 reply(跨 reply 保留 memory=原地续修),上限 6 次;middleware 硬熔断 60/80 仍兜底。
② 数据表 schema 不匹配(F_wiring/三联动门真因):平台锁定 tables.js 按固定 key 读
   mergeChains/currencies/orders{requires:{id:qty}};M3 自创 recipes/initialCoins/数组 requires →
   合成系统空转却仍 boot(假绿)。加 validate_datatable(schema+DAG+可达性预检),build 段自动跑,
   失败响亮回喂精确修复指引(平台读哪些 key、你缺/错哪个)。单测:金标 PASS / M3 自创 FAIL 精确报错 / sentinel PASS。
③ finish 门:验收零自评——没真跑过门或门没绿不许 finish,把失败反馈塞回逼续修。

prompt 同步加固:scaffold hint + writer system 强约束「就地填 sentinel、禁改 key、列平台确切 key、
看到 fix 不许停」。门未放松(judge 纯代码判),防 Goodhart。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 21:27:32 +00:00
zizi
135a368f2b fix(tier2): RecordingChatModel usage 取字段防 KeyError——M3 经 Anthropic 端点 usage 缺 cache 字段
getattr(u,'cache_read_input_tokens',None) 对 M3 的 ChatUsage 抛 KeyError(缺字段时抛 KeyError 而非 AttributeError,默认值兜不住)→ design 阶段首次 M3 调用即崩。改:每个 usage 字段经 _ug() try(KeyError/AttributeError/TypeError)安全取。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 21:07:23 +00:00
zizi
27da8d22ae fix(tier2): play-spec richGame 对齐金标 + 去 controlCheck(I 门经营档 SKIP)
① richGame.mergeChains/orders 原是 flour/dough 旧样例,与 fixture 金标
   datatable.gold.json(wheat/bread/jam/soda/chocolate/cake) 不一致——三联动门
   requiresReachable 虽自洽但不反映真游戏。改成金标 6 链/5 订单同源。
② 去掉 controlCheck:business-sim 经营档=离散点击 + driver 驱动到终态(win),
   非「控制体跟手」;且 controlCheck 在游戏已 latch win(终态忽略输入)后 tap →
   selected 必不变、I_control 必假,还触发 CDP Input.dispatchTouchEvent 卡死(40s
   超时)中断后续富游戏三门。按 harness 文档(I 门对经营档缺省 SKIP)不声明 →
   I_control SKIP(向后兼容通过),流程得以走到富游戏三门。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 21:00:09 +00:00
zizi
e05a1a8b76 fix(tier2): mapToClient 坐标映射去掉错误的 /dpr——driver tap 落对格
CDP 探针实证:tap 逻辑(85,175) 本该选中棋盘格(0,0),实际选中(2,1)——坐标整体被
放大 dpr(=2) 倍、点击全落错格 → 合成永不成、coins 卡 20、E_live/G_input/F_wiring/
H_progress 连锁红(且 latch=true 是破产路误判,非真赢)。

根因:mapToClient 旧算法假设「Phaser canvas backing-store 含 DPR、逻辑=c.width/dpr」,
但 host 用 Phaser Scale.NONE,canvas backing-store=逻辑 390×844(不含 DPR 乘子),
故 c.width/dpr=195 错、sx=r.width/195=2。修:sx=r.width/c.width(client↔canvas
内部坐标标准换算,与 DPR 无关;游戏逻辑像素=backing-store 像素)。

real 浏览器实证(probe5):tap(85,175)→selected{0,0}正确;driver 驱动 step16 达
win/coins116;__engineCalls=17 含 resource.addCoins/consumeIngredient(F门/三联动门真接线)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 20:55:56 +00:00
zizi
8ea6133e63 fix(tier2): recHook 透传到资源系统——F 门/三联动门记 resource.* call-ID
F 门/三联动门读 window.__engineCalls 找 resource.addCoins/consumeIngredient 前缀,
但旧版只有 engine-caps(粒子/音频)经 recHook 记 __engineCalls,资源系统只记内部
_callCounts、不进 __engineCalls → calls=0、F 门 + 三联动门真接线判据永假。

修(additive,不破契约必填项):host 经 boot 上下文透传 recHook → main.js 喂
createGameCore → resource-system 完单真调 addCoins/合成真调 consumeIngredient 时
recHook('resource.addCoins'/'resource.consumeIngredient') 记进 __engineCalls。
headless/静态校验下 recHook 缺省 no-op、不抛错。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 20:48:40 +00:00
zizi
44d1b45583 fix(tier2): 修真接线三处——pointerdown 闭包/逐帧补桌/patience 缩到有界可达
CDP 探针实证 driver tap 抛「this.handleNormalizedInput is not a function」→
state0/state1 全 null、E_live=1、F_wiring=0、九门连锁红。三处根因+修:

① Phaser 用「配置对象」实例化 scene 时只搬 create/update/preload,不搬对象上其它
   方法 → create 内 `this.handleNormalizedInput`/`this.hitTest` undefined,玩家点屏即抛。
   修:把 hitTest/handleNormalizedInput 抽成闭包 doHitTest/doHandleInput,pointerdown
   与 host.injectInput 都调闭包、不依赖 this(对象方法保留为薄委托)。

② 合成清空棋盘格、产物只进库存不回落棋盘 → 棋盘很快只剩单件、driver 无对可合成、
   赢路卡在中途(offline sim:coins 停 54)。修:core.update 逐帧 merge.refillFromInventory()
   (幂等,把库存里没上桌的基础料补进空格)→ offline sim 赢路达 coins116/win。

③ gold patience 440~600s 在有界 driver run(~30s)里订单永不流失 → 经济门破产路
   不可达。修:patience 缩到 16~20s(赢路~6s 完成远早于;破产路~20s 内 3 单流失=lose)。
   忠实 offline sim 验:patience≤30s 两路都达终态,≥60s 破产路 stuck=play。

验证:headless-smoke + logic-smoke 全绿(赢/输双路可达 + latch 不回弹)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 20:43:10 +00:00
zizi
712547d212 fix(tier2): fixture readState 投影成 driver 契约形状——破 board is not iterable
C_frame 后 harness 抛「board is not iterable」:business-sim.driver findMergePair
对 state.board 做 for...of,但 game-core readState 旧导出 board=merge.boardView()
={size,cells[i][j],selected}(对象,非数组,无可点坐标)→ 抛错、其后八门全「门未执行」。

根因=fixture 导出态与 driver 契约(business-sim.driver §读什么 state)不一致。改:
- 抽 layout.js 单一源(棋盘 BOARD_*/CELL + 订单面板 PANEL_* 逻辑坐标),game-core 与
  play-scene 同源不漂移。
- game-core readState 投影成 driver 契约形状:board=扁平格数组[{idx,i,j,x,y,item}]、
  orders 补 id 别名=instId、新增 submitTargets[{orderId,x,y}]、mergeChains、
  lostStreak(=failStreak 别名)、selected(I 门读)。
- play-scene 填平台侧 TODO-4 订单命中:面板行 k → ordersView()[k].instId →
  core.fulfillOrder,与 submitTargets 同源,driver 交单 tap 真可达。
内部网格视图(merge.boardView)仍供 scene 渲染,两者各取所需不冲突。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 20:31:25 +00:00
zizi
da184f067c fix(tier2): build-phaser 用 alias 垫片替 external 解 phaser——破 A_boot 工厂缺失
iife 格式下 external:['phaser'] 会把 import Phaser from 'phaser' 编成顶层
__require("phaser")(iife 里是抛 Dynamic require not supported 的存根),
bundle 顶层求值即抛 → var __Tier2GameBundle 拿不到赋值 → host 报「工厂缺失」(A_boot)。
改:新增 phaser-window-shim.js(default 导出 window.Phaser),build 用 esbuild alias
把 'phaser' 解析到它(绝对路径,不受 cwd 影响)。普通 ESM 解析不抛错,Phaser 本体仍不进
bundle(垫片只读 window.Phaser),与 host opts.engine 注入边界(Q4)同源。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 20:26:24 +00:00
zizi
9f95ec6612 fix(tier2): play-phaser harness 从 game-runtime 解析 ws
harness 在 tier2/(game-runtime 外)、play 步 cwd=仓根,裸 require('ws') 解析不到 game-runtime/node_modules/ws。改:createRequire(../../game-runtime/package.json) 显式解析(同 browser-evidence 口径)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 20:19:01 +00:00
zizi
b5acf7c4b5 fix(tier2): build-phaser 从 cwd(game-runtime) 解析 esbuild
裸 import('esbuild') 按模块位置(tier2/engine/)解析,找不到 game-runtime/node_modules 的 esbuild。改:裸 import 失败则从 cwd(集成段总是 cd game-runtime)createRequire 解析。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 20:17:25 +00:00
zizi
856a583325 feat(tier2): Phaser 自治生成引擎全栈首落(workflow 9 agent 建·6c6g 静态全过)
override spike-first(创始人 06-23 裁),全栈铺 Phaser tier2 引擎。recon→契约→6模块并行→集成 workflow 产出 ~60 文件,全 6c6g 静态校验过、红线零碰 Tier0/1 产线:
- 契约(6):tier2-source-project.schema / tier2-verdict.schema(fork·round放开·三层校验+富游戏门)/ toolkit 签名 / 探针钩子 / boot-phaser-host.d.ts / mini-肥鹅 fixture 规格
- M1 Phaser scaffold+装载 host+引擎能力面(19;logic-smoke 13/13:五耦合点真接线+赢输双路径+latch不回弹)
- M2 CDP 探针 Phaser 重写+business-sim driver+九门+富游戏三门(5;verdict 过 schema)
- M3 Python 单写 ReAct agent loop+9 工具 toolkit+M3 Anthropic接法+四熔断(9;mini-desktop 真 2.0.2 venv 验:import/9工具/中间件注册 OK)
- M4 datatable schema+金标+资产占位(4)/ M5 prompt+Phaser skill+rag(13)/ M6 成本 RecordingChatModel+trace adapter(3)
- 集成:run_engine.py 入口 + 接线断点已修 + RUN-ON-MINI-DESKTOP.md

待 mini-desktop 真跑(esbuild build + CDP 九门 + M3 生成 = 本质即 0号 spike)。AgentScope 2.0.2 API 逐条对 /root/oss/agentscope 源码核验。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 20:13:44 +00:00
zizi
accff77e52 chore(knowledge): 去重 agentscope facts——保留更全的 agentscope-2.0-facts(别session 99299404,补编排/沙箱/部署),删我的冗余 -2.0.2-facts,README 指向订正
跨 session 撞车:两边都做 2.0.3→2.0.2 facts 更正、改名目标不同(我 -2.0.2 / 别 session -2.0)→git 保留两份。别 session 那份更全(+pip install [full]/Redis/create_app/Studio=开发追踪/agentscope-runtime 已归档),留它。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 18:45:22 +00:00
zizi
a0ccb6dd95 Merge 'docs/interface-protocol-design' → dev/2.0.0: 接口协议层与可插拔模块设计(opus 终审通过·无 P0)
固定契约 vs 可换实现的接口协议层(A1-A13 + B 可插拔),换引擎/框架=接适配器。两轮 workflow 设计+对抗评审 + 主会话纠漂移 + opus 子代理终审整改。§7 14 项开放问题待创始人定。
2026-06-23 18:40:29 +00:00
zizi
456653cbe1 docs(design): 接口协议 plan opus 终审整改(无 P0)——行号 696→692 / 成本血统钉 new-api / verdict 硬前置与 Q2 口径统一 / readState per-品类层 / §7 补 Q14(A4.5)/ 去元叙述
opus 子代理对抗终审判'无 P0、可合',逐条整改其 P1/P2:
- P1-1: _bash.py 行号 696→692(实锤;§4 行号读的就是本机 v2.0.2 tag、准确,不软化)
- P1-3: A2.5 成本归集留 §7 Q6 定 + 成本权威钉 new-api 计费行(trace 只携关联键、agent 自报金额不作账)
- P1-2: §7 补 Q14(A4.5 构建产物+feed→play 入口 提独立A类 vs 字段待spike)
- P2-1: A6 readState 劈引擎级(per-engine)vs 语义 state(per-品类·接 A10)
- P2-2: §6 verdict 硬前置=纪律(机器判禁自评焊契约层),结构选择归 §7 Q2,消两处口吻冲突
- P2-3: 去元叙述(诚实说在前面/必须纠正)
状态置 opus 终审通过、作设计基线合入。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 18:40:26 +00:00
lili
f5918e449e feat(amodel-gen): Phase1 MVP-first 设计护栏(治"富设计→code thrash")
v5/v6 e2e 实证一个系统张力:driver-可达护栏让设计转单击成单(✓),但也让策划 agent 产出越来越富
(v4 5.3KB → v5/v6 7.5KB:离线收益/6级/广告/7商品/hitstop/9插件)→ **code agent 实现负担过重 →
read-thrash → loop-detection 截停、finished:false**(v5 26步/v6 27步均未收敛;对比 v4 精简设计 9 步收敛)。

护栏(design prompt + sim skill §8 加 MVP-first 铁律):设计聚焦可玩核心 = 核心循环 + 1 主机制
+ 1 资源环(进货)+ 3–4 级解锁 + 基础数值/音效,商品 ≤3 起步;离线收益/广告/雇员/多档 BGM/hitstop
/6+ 商品 一律标「后续·MVP 不做」。**先出能玩核心,再谈丰富** —— 降 code agent 负担、保收敛。

待:v7 验(精简设计 → code 收敛 + 单击成单 → H 过 → 护栏闭环全绿)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 11:36:47 -07:00
zizi
1a36a7279e docs(design): 接口协议草案 agentscope 2.0.3→2.0.2 + 克隆路径订正
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 18:31:42 +00:00