myopenclaw v0.2.4¶
补丁版本(2026-11-10):修复道元 dailyinfo 拉取的错误码解析与重试;飞书行内公式 从图片改为 Unicode 文本,避免每个符号整行换行。不改 dailyinfo 服务端,不改 MCP 契约。
本版变更¶
道元 dailyinfo 拉取健壮性¶
- MCP 工具错误文本是
Error executing tool <name>: <CODE>,此前把整串当成code,导致NOT_FOUND判定与STALE_CURSOR重试在生产完全失配 CONTENT_CHANGED按 dailyinfo 文档「读取期间持续变化,稍后重试」处理: 与STALE_CURSOR一起退避重读 2 次(1s、2s)list_briefings同样走服务端一致性检查,纳入同一重试;此前一次瞬时变化 会让整份 digest 以非 0 退出,而不是单类降级- 单类失败仍降级为
⚠️ …,其余类别照常投递(原有契约不变)
飞书行内公式 → Unicode¶
- 行内
$...$用 pylatexenc 转 Unicode 文本(\eta=0.5→η=0.5、\langle v,u\rangle→⟨v,u⟩、\mathbf{s}→𝐬),保持同一行; 转换失败回退源码 - 块级
$$...$$仍渲染成图片(本就在独立行,不影响行内排版) - 新开关
FEISHU_LATEX_INLINE_IMAGE(默认 off;=1恢复行内嵌图), compose 透传四个 hermes 服务
文档 / 守卫¶
docs/dailyinfo.md记录重试语义与已知误报docs/hermes-channels.md/CLAUDE.md同步公式行为- Release checks 的测试命令加入
pylatexenc
升级注意¶
- 重建 hermes 镜像并滚动四个容器(新增
pylatexenc依赖): ⚠️ 容器重建会丢 lark-cli 的 user OAuth token(存容器内 keychain,不在挂载卷上)。 需要保留时:重建前docker cp <容器>:/root/.local/share/lark-cli /tmp/lark-cli-backup-<容器>, 重建后拷回并chown root:root、chmod 700(本次发布即以此方式保住) - 道元 digest 脚本:重跑
./scripts/start.sh,或直接docker compose cp scripts/dailyinfo_digest.py hermes-daoyuan:/opt/data/profiles/daoyuan/scripts/ - 回滚:镜像
myopenclaw/hermes:pre-inline-fix(行内图片版); 或只设FEISHU_LATEX_INLINE_IMAGE=1恢复行内嵌图
验收¶
pytest tests/:1110 passedbash tests/test-feishu-card-patch.sh:27/27- 真机:道元 2026-11-10 digest exit 0、5 类全出;papers 单类补推成功
- 真机:四个 hermes 容器滚动到新镜像,lark-cli user 身份保留;公式测试消息 确认行内同行、块级成图
已知边界¶
- 行内 Unicode 转换保留
_/^写法(ℒ_MMAE、x_i),不是真正的上下标字形 - 未知 LaTeX 命令可能被 pylatexenc 丢弃或原样保留;转换异常时回退源码
CONTENT_CHANGED偶发误报的根因未证实(2026-11-10 papers 一次:读取窗口内 宿主全树无写入);重试即可恢复,不要据此推断数据损坏