Daily report · 强说 / 弱说

今天有两件事是真的,
也有一句我说早了。

这份报告的排序规则是证据强度,不是好看程度。声音复刻跑通、安全出口通过了行为级验收、JC 回传定到了代码级根因 —— 这些放在最前面,给足篇幅。 没修完的、说早了的、我自己踩的坑,不删也不藏,放在第二部分,逐条写清现状。只有成绩的日报没用,只有问题的日报看不出版本。

VOICE tianyi-versa-v-20260925EGRESS 行为级验收通过JC 根因已定 · 修复未定性NODE grokbot-v-1
0声音样本克隆成功 · model_type 5 / v2
0安全出口验收行为级 · 含反向对照
0JC 最长回传延迟第三次复发 · 同日三次
0根因 handoff13 节 · 9 处文件行号
读法 / How to read

先说清楚,
哪部分我调大了音量。

你要求「有强说的、有弱说的」。我把这条规则显式写出来,免得读者分不清哪些是我有把握的、哪些是我没做完的。

强说

有行为级证据、可复核、今天真的立起来的。放在最前面,写细节、给数字、留出处。

  • 有真实调用结果,不是「配置已落库」
  • 有反向对照样本,能排除误判
  • 结论我已经核过,愿意为它背书

弱说

没做成、还没做完、说早了、以及我自己踩的坑。调低音量,但不删 —— 每一条都写清「现在到哪一步」。

  • 不整段略过,也不放在最显眼处
  • 区分「未修」和「已止血」
  • 明确标出哪些是假设、哪些是事实
01 / 强说

这几件事,
我敢放到最前面。

共同点:都不是「看起来成了」,而是有可复核的行为结果 —— 真实调用、真实发送、真实回读。

01Voice

16 秒样本,换回一个属于你的音色

声音复刻跑通了。但今天真正有价值的不是「跑通」,是纠正了一条错的排查路径 —— 那个卡了一整天的 55000000,跟权限、激活、API Key 都没关系。

speaker_idtianyi-versa-v-20260925
model_type / version5 / v2 · status 2
输入样本16s · 24kHz · 单声道
卡点错误码55000000 · resource ID mismatched
根因不是权限
volc.megatts.timbre 本来就是 active(list_service_resource_pack(blueprint_id=0) 可查)。5 把 API Key、有无 X-Api-Resource-Id、多种 body 组合,全部报同一个错。
真正的原因是 body 形状
后付费自定义音色,speaker_id 必须填字面量 "custom_speaker_id",自定义代号放 custom_speaker_id。改成字面量,一次 200。
也被证明是必填
只给 custom_speaker_id、不给 speaker_id,同样失败。
skill 的问题不是「写错了」
核对原文后纠正:那份 skill 压根没有 55000000 这一支,它的激活段是挂给 45000030(requested resource not granted)的。真实缺陷是缺错误码分流 —— 两族错误都带 resource 字样,于是 55000000 被误路由到账户侧。提案补的就是这条分流。
真实产物 · 用 16 秒样本复刻出的音色(demo-tianyi.mp3)
落地:skill 提案已 apply(6535 → 9824B);「用我的声音」固化为 skills/voice-tianyi/(workspace 级,任何群可触发)+ scripts/voice-tianyi.sh。
边界:22:58 你明确「不授权裸发」→ 明示行「🎙 用天懿的声音,代他念几句话给你听。」成为固定边界,写进 skill 强制面。
02Security

安全出口:验到「行为」这一层才算过

你 22:47 亲自重启网关后,我用真实调用逐项实测 —— 不是看配置有没有落库,是看它到底怎么行为。

sentinel 注入变量长度 36 → 111 字符,且不等于明文pass
白名单 sentinel → 真值替换火山真实调用成功(脚本只从 env 读凭据,无 dotenv)pass
非白名单 + sentinel(header)502 拒绝转发pass
非白名单 + 垃圾值(同一 header)200 通过 —— 关键反向对照对照
6 个纯 HTTP 目标 proxied vs direct全部一致,无连带破坏pass
语音全链路:合成 → STT 回读逐字匹配(V声音链路重启后验证通过。2026年9月25日。)pass
为什么第 4 行才是关键:没有「垃圾值 200」这个反向对照,就分不清代理是「按 sentinel 精确拦截」还是「这个 header 本身被拦」。判据必须带反例 —— 这是今天最值得留下的一条工程习惯。
当前状态:egress proxy 已生效且行为正确,Tianyi 的第 4 点需求(凭据在受保护 store、所有群可用、不必回 DM)已满足。
唯一遗留:~/.openclaw/.env 与 gateway.systemd.env 的火山明文仍在(网关路径已被 sentinel 覆盖,属冗余;清理会影响 native shell 直调,未动,待指示)。
03Root cause

JC 回传:从「第三次又挂了」到代码级根因

同一会话一天卡死三次。第三次最典型:17:55 提需求,17:58:14 成图,然后卡住;JC 20:00 再问一次,20:01 才发出 —— 延迟 2 小时 6 分钟。

12:10:39JC 会话内成图 · wake failed
13:39:59同一会话第二次成图 · wake failed · 靠 JC 追问唤醒
17:58:14JC 17:55 提需求后成图 · wake failed
20:00JC:「怎么又没反应了?」 · —
20:01图才发出 · 延迟 2 小时 6 分钟
根因定论
image_generate 是唯一「异步脱离回合」的工具 → yield 结束的会话被 isCompletionDeliveryAllowed() 判为未就绪 → 120s 硬上限超时报废。图从来没有坏过,坏的是「叫醒会话」。
止血
迟到重投置 suppressed(含备份 db-backups/jc-pending-entry-4f1bff90-20260925.sql)、session_windows + session_nodes 双清 done、全库 pending 归零。
交付
handoffs/2026-09-25-media-completion-wake-fix-brief.md —— 20KB / 13 节,含 9 处文件行号 + 逐字日志 + 最小复现 + 两套方案,已交 Claude Code。
这条要打个折扣再读:注意:这一条的「强」只在定住根因、把 handoff 写清楚。代码还没有修 —— 见下一节。

也在今天落地了

CoS

日板 v2 → v6 收敛

主体从「V 自己做了什么」反转成「管理人 / 工作线」。workstreams.json 6 → 12 条(含 group / attribution / attribution_rules);模型 deepseek-flash → vds;force-run 6.5 分钟 status ok delivered;cron prompt 每次逐字回读一致。

v5 首跑就抓出 v4 漏掉的三个矛盾(振丰带字幕终版被去重规则静默挡掉、康浩源疑夜班被拖炸、台账写入缺陷)。
Compute

远程算力 grokbot-v-1 链路打通

Codex remote-exec 端到端:allowlist 生效,节点 sessionHost=true / 8 slots,worker bundle 装进节点,仓库镜像成功。旧机 grokbot-v 确认已从 tailnet 消失(no matching peer),main.md 已改写为「旧机退役 + 能力迁 -1」。

卡点在文件体积,见弱说。
Delivery

十二家群代念发送成功

22:08,34 秒语音,带回读确认 msg_type: audio。这是「用你的声音对外说话」第一次真实落地,且带着明示行。

边界守住了:不是裸发。
02 / 弱说

这几件事,
我调低音量,但不藏。

第一条是我今天最该说的 —— 它比任何成果都更能说明「验证」这件事该怎么做。

ASaid too early

我今天说错了一句:宣布「验证通过」,然后撤回。

23:18我调用内置 image_generate(白底 + 居中绿方块),看到网关日志 dispatch complete (queuedFinal=true, replies=1),就对外说「修复生效」。
23:19:36你问:「所以做的图呢」—— 你没收到。
23:19:38 前后回查飞书侧地面真值:那张绿方块实际落群是 23:19(om_x100b645d5e1ba8a8b2538a788baf38e),比你发问晚 3 秒,比卡片 23:18:33 闭合晚约 65 秒。
结论无法排除是「被你的消息冲出去的」—— 那就等于原 bug 本身。所以 23:18 的「通过」不成立。
错在哪:我的判据错在层级:queuedFinal=true 只证明网关内部派发,不证明飞书收到附件。我验了日志,没验投递 —— 而 handoff 里恰恰写死了「不许用再发一条消息当验证」,我自己踩了一次。
补做的复验:23:22:25 起做了干净复验(白底 + 居中蓝圈,基线:队列挂起 0、消息末尾 17684):完成事件自己回到了会话 —— 对照 JC 那次必须再问一句才被冲出来,说明「叫醒会话」这一环确已通;但「通到飞书」这一层没能核完。
为什么没核完:核不完的原因是新的故障信号:工具通道被 hook 中继集体超时挡住(bash / gateway_exec / message / sessions_history / sessions_list 连续两轮全部超时),同期日志另有 session transcript reconcile failed … disk I/O error,内存 critical 3.4 GiB。这两个「图没送到」有可能不是同一条 bug,而是本机 I/O / 内存压力掐掉投递 —— 假设,未证实,不当结论。
当前状态:修复未定性。handoff 已交出去,但在补完三个时间戳对差(渲染完成 / 附件落飞书 / 期间入站是否为空)之前,不能让 Claude Code 收口。
23:18 绿方块(第一次验证)网关日志显示派发成功,但飞书端比追问晚 3 秒落地 → 不能算通过1408×768 · 416KB
23:22 蓝圈(干净复验)完成事件自行回到会话 → 「叫醒会话」确已通;「通到飞书」未能核完1408×768 · 102KB
第一次验证的产物绿方块 · wake-fix-verify-green-square.jpgwake fix verify green square
干净复验的产物蓝圈 · wake-fix-verify2-blue-circle.jpgwake fix verify blue circle

其余弱说项

没修完的
JC 代码根因未修
方案 A(改 isCompletionDeliveryAllowed,让 yield 会话排队接收回传 —— 真根因)/ 方案 B(status 收敛兜底)待你拍板。
remote-exec 卡在文件体积
Codex 回合报 file exceeds limit of 1048576 bytes (got 1410108)。超限文件 work/ai-jian-koubo/assets/review-ui.png(1.41MB);managed workspace 上限是单文件 1MB / 总量 4MB。处置未定。
采集链坏
daily-session-review 报 Sessions=0 / tool snippets=0,与米奥 Job A 连报 19 天「0 会话」同源。这份报告主要靠 memory 逐节落档,不是脚本统计口径。
我做得不好的
CoS 同一天改了五版
v2 → v6,你 5 轮纠错才到位。轮次偏多,方向应该更早收敛。
模型切换事故
/moel 拼错静默失效(没有任何报错);gpt5.6 别名实际是 azure vlab-worker,不是 Codex。要验 Codex 链路必须确认 agentRuntime —— vcodex56 才是 Codex + gpt-5.6 的唯一正确选择。

还没清的

  • 明文凭据 38 条:~/.openclaw/.env / gateway.systemd.env 的火山明文仍在(网关路径已被 sentinel 覆盖,属冗余;清理会影响 native shell 直调)。
  • MEMORY.md:36 那行 diff 未落 —— 核心文档,等你一句话。
  • cron 多处 error:companion-01-hourly-heartbeat 3x / dealclaw-reply-trigger 6x / FCloud 全量刷新 / skill-collection-review 3x。
  • 中欧群头像三稿已发进群(00:06,回读 message_position 64/65 确认落地),但未定稿、未设群头像。
  • openclaw secrets audit:plaintext=38 / unresolved=2(slack appToken + botToken 未在 allowlist;channels.slack.enabled=false,既有问题非本次引入)。
  • lark-cli 本机 1.0.94 → 官方 1.0.96(09-16),未表态升级。
中欧群头像(三稿已发群、未定稿):00:06 已按你的要求发进中欧同学会群(说明 + 三稿对照图,--as bot,带幂等键,回读 message_position 64/65 确认落地)。 A 毕业典礼 / B 案例课堂 / C 同学小聚,三版均无文字、无中欧校徽。设群头像属外部状态变更,等你报字母再动。CEIBS avatar three candidates
03 / 机制沉淀

今天的真正产出,
是几条判据。

成果会过期,判据不会。下面每一条都是今天真金白银换来的 —— 尤其是第一条,代价是我自己的一次误报。

网关派发 ≠ 飞书收到

queuedFinal=true、replies=1 只能证明内部派发。要证明投递,必须取目标端的 message_id / create_time 做地面真值。

接口返回 ok ≠ 群里真出现

发送类动作的回执只是「我交出去了」,不是「它落地了」。回读目标端才算核完。

验证窗口必须干净

判断一个异步回传修复有没有生效,窗口期内不能有任何入站消息 —— 否则分不清「自己回来的」和「被冲出去的」。

反向样本是必需项,不是加分项

没有「垃圾值 200」这个对照,就分不清代理是「按 sentinel 精确拦截」还是「这个 header 本身被拦」。判据必须带反例。

错误码要先分流,再排查

55000000 → body 形状;45000030 → entitlement。两族都带 resource 字样。先查免费项(body),再查昂贵项(账户/激活)。

只改行为、不写触发面 = 没改

规则要落在「执行那一刻会被加载」的位置。写进 skill 强制面才会生效,只记在 memory 上会重演同一种旧问题。

一句话总结:昨天的问题不是「能力不够」,是验证的层级放低了。把判据落在用户能看见的那一层,比多做一个功能更重要。
04 / 待决

需要你一句话的,
就这 8 条。

前两条卡着实际推进;其余是待批事项。已闭环的不再问。

01
JC 回传修复方案

A(真根因)还是 B(兜底)—— 定了我才能让 handoff 收口,或继续推进。

02
remote-exec 超限文件

压到 1MB 以下,还是移出会被镜像的目录(改的是已安装 skill 素材)。

03
CoS 周日双周报口径

张寒冰表-群矛盾(9/21-24 表有排期但群零证据)/ 周一产品会与周三周五长老会纪要是取消还是未生成 / 假期短周口径。

04
MEMORY.md:36

那行 diff 是否落盘。

05
中欧群头像

A / B / C 定稿;设群头像属外部状态变更,要你明确点头。

06
Gemini 声音克隆房间

oc_af3f201c… 待三选:有状态 / 无状态 / 走 AI Studio。

07
lark-cli 升级

是否升到 1.0.96(升后需重开 Agent)。

08
明文凭据清理

是否清 ~/.openclaw/.env / gateway.systemd.env 的火山明文。

05 / 已闭环

这几条已经定了,
我不再问第二遍。

  • 裸发授权 = 不做(你 22:58 明确,已闭环,以后不再问)
  • 安全出口验收 = 通过(egress proxy 行为级实测全过)
  • v-sentinel 告警改道 Heartbeat 群 oc_ff5076a2…(含发布漂移,真实发送验证通过)
  • 飞书内图片生成/编辑一律走 Makaron(已写进 AGENTS.md:110)

下一步最该做的:把 JC 回传的三时间戳对差补完 —— 在它定性之前,这条链的修复等于还没验收,handoff 不能收口。其次查那波 hook 中继集体超时,它已经连续挡住两轮工具调用,后面的活都做不稳。