跳转至

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

升级注意

  1. 重建 hermes 镜像并滚动四个容器(新增 pylatexenc 依赖):
    docker compose build hermes
    docker compose up -d hermes hermes-coder hermes-finance hermes-daoyuan
    
    ⚠️ 容器重建会丢 lark-cli 的 user OAuth token(存容器内 keychain,不在挂载卷上)。 需要保留时:重建前 docker cp <容器>:/root/.local/share/lark-cli /tmp/lark-cli-backup-<容器>, 重建后拷回并 chown root:root、chmod 700(本次发布即以此方式保住)
  2. 道元 digest 脚本:重跑 ./scripts/start.sh,或直接 docker compose cp scripts/dailyinfo_digest.py hermes-daoyuan:/opt/data/profiles/daoyuan/scripts/
  3. 回滚:镜像 myopenclaw/hermes:pre-inline-fix(行内图片版); 或只设 FEISHU_LATEX_INLINE_IMAGE=1 恢复行内嵌图

验收

  • pytest tests/:1110 passed
  • bash 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 一次:读取窗口内 宿主全树无写入);重试即可恢复,不要据此推断数据损坏