问题1: 执行命令无法查到环境变量
agent 在跨服务器远程ssh操作或者在non-interactive shell的中执行命令的时候经常找不到一些你在环境变量或者key,你明明在zshrc配置文件里设置过。于是它会到处找,或者执行source ~/.zshrc,显得很笨。
关键在于非交互式shell中, ~/.zshrc 不会被自动加载,包括以下场景:
| 场景 | 示例 |
|---|---|
| 执行脚本 | zsh script.sh / ./script.sh(shebang 是 #!/bin/zsh) |
| SSH 带命令 | ssh user@host 'command' — 非交互式非登录 shell |
| make / CI/CD | 子进程执行命令,非交互式 |
| OpenClaw exec 工具 | spawn 子进程执行命令 |
| IDE 内置终端执行 | 如 VS Code 的 task 运行命令 |
| git hooks | pre-commit 等钩子脚本 |
| find -exec / xargs | 通过子 shell 执行命令 |
解决方案一(最简单)
openclaw.json中要加上这个,解决环境变量不被龙虾载入的问题:
"env": {
"shellEnv": {
"enabled": true,
"timeoutMs": 15000
}
}
解决方案二(从根本上解决)
.zshenv 环境变量文件会在所有shell实例都会加载,包括上面提到的场景。在 .zshenv 中添加你认为重要的环境变量 export 的 PATH 和 key,而不是将他们存放在 .zshrc。

问题二:飞书垃圾插件刷屏info日志
每次cli中执行openclaw命令的时候都会出现大量的飞书插件日志。
方法很简单,在 zshrc 或 zshenv 中添加一行即可(只显示warning or errors):
export OPENCLAW_LOG_LEVEL=warn

发表回复