金子涵JL 发表于 2026-7-11 18:31:58

OpenClaw + Termux:所有工具返回被强制渲染为图片,stdout 不可见

本帖最后由 金子涵JL 于 2026-7-11 20:27 编辑

以下为openclaw描述的情况:


问题描述

OpenClaw 在元宝派聊天中运行时,所有工具调用(exec / read / write / web_fetch / cron 等)的返回结果全部被渲染为图片附件发送到群里,导致 AI 无法看到文本输出内容。但命令本身正常执行,文件能写入、进程能启动,只是返回的 stdout/stderr 对 AI 不可见。

环境信息

- 运行平台: Android 14 (Vivo) Termux
- OpenClaw 版本: 2026.6.11 (e085fa1)
- Gateway 进程: 运行在 Termux 内
- 模型: deepseek/deepseek-v4-flash
- 输出通道: 元宝派
- 会话时长: 问题出现前已运行约1小时

现象

1. 最初一切正常,文本输出能正常返回给 AI
2. 约在会话中期开始,所有 exec/read/write 等工具的返回结果都变成了
"(see attached image)",AI 完全看不到内容
3. 简单的
"echo "test"" 也是图片
4. 文件写入功能正常(已确认文件确实被写入了)
5. 进程管理正常(命令能执行,进程能启动)
6. 模型本身没问题,能正常对话和思考

已尝试的排查(均无效)

1. 在 Termux 中执行:
unset COLORTERM
export TERM=dumb
2. 重启 OpenClaw Gateway(
"openclaw restart")
3. 怀疑与之前调用 process(poll) 和 pty=true 有关
4. 可能是 Gateway 的渲染模块将 stdout 误判为富媒体内容

额外线索

- 有一次 exec 返回了
""Command aborted by signal SIGTERM"",那次输出是文本(正常),但之后又变回图片
- 可能是某个操作改变了 Gateway 进程的输出流检测逻辑



以上内容为openclaw描述的情况
遇到这种问题应该怎么解决?以前也出现过同样的问题,所以就重新安装了一遍openclaw,但是用了没多久就又出现了同样的问题

经过研究发现,是在让它生成一个流程图之后出现了这种情况,并且这类问题只出现在这一次对话当中,其他的会话当中没有此类问题

FishC 发表于 2026-7-11 18:31:59

您遇到的问题很可能是 OpenClaw 的渲染模块将正常的 stdout 误判为富媒体内容(如图片),导致结果被编码为附件而非文本输出。这种情况在长期运行或输出流中混入不可见控制字符时容易触发。

**解决思路**:强制 Gateway 进程使用纯文本输出模式,并清除可能积累的终端转义序列。

**建议按以下步骤操作**:

1. **临时覆盖环境变量**
   在 Termux 中运行:
   
   export TERM=dumb
   export EMACS=1
   export PAGER=cat
   export NO_COLOR=1
   
   然后重新启动 Gateway:
   
   openclaw restart
   

2. **检查并修改渲染配置**
   找到 OpenClaw 配置文件(通常位于 ~/.openclaw/config.yml 或 ~/.config/openclaw/config.yml),查找与 render 或 image 相关的选项,将其设置为禁用或纯文本模式。例如:
   
   render_output: text
   force_image: false
   
   保存后重启 Gateway。

3. **清理终端残留**
   执行以下命令清理可能存在的终端状态锁:
   
   stty sane
   reset
   
   然后重启 Gateway。

4. **重置 Gateway 进程**
   完全终止 OpenClaw 所有相关进程:
   
   openclaw stop
   pkill -f openclaw
   openclaw start
   

5. **终极方案**
   如果以上均无效,可能是 Gateway 的内部状态损坏。备份重要配置文件后,删除 ~/.openclaw/ 目录下的缓存和数据库文件(如 gateway.db),然后重新初始化:
   
   openclaw init --force
   openclaw start
   

**说明**:该问题通常不是由命令执行错误引起,而是输出通道对内容格式的误判。遵循上述步骤后,输出应恢复为文本。建议之后避免在工具调用中输出大量二进制数据或特殊控制序列。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: OpenClaw + Termux:所有工具返回被强制渲染为图片,stdout 不可见