1 引言
本系列主要记录openclaw部署过程中的一些问题,本期问题主要有两个,一个是关于gateway的滚动log;另一个是qmd部署问题。
配置说明:windows11+openclaw(版本2026.3.28)
2 日志迁移问题
openclaw有两个主要日志:
• 会话(session)日志:记录UI界面与小龙虾的对话,主要存放路径是 .\.openclaw\agents\main\sessions;• 网关(gateway)日志:记录每天网关运行的动态信息,主要存放路径是 C:\Users\你的用户名\.openclaw\logs\openclaw-YYYY-MM-DD.log。
会话日志的路径设置很简单,在配置文件openclaw.json中修改workspace路径,加上设置环境变量OPENCLAW_HOME即可。
• 管理员方式打开powershell设置环境变量
[Environment]::SetEnvironmentVariable("OPENCLAW_HOME", "D:\openclaw\config", "Machine")• 修改workspace路径
openclaw config set agents.defaults.workspace "D:\openclaw\config\.openclaw\workspace"网关日志的路径设置按照官方,是通过设置logging.file来实现,但是此代码修改并不能实现,这是一个官方bug。

所以这个bug等官方补丁较为可靠。
3 qmd部署问题
qmd能够优化小龙虾的token消耗,版本2026.3.28置留了qmd的接口,但需要自行拉取。
但是部署qmd会出现几个问题。
3.1 /bin/sh问题
通过bun拉取qmd,然后测试qmd是否拉取成功,会出现错误提示:
error: interpreterexecutable "/bin/sh" notfoundin %PATH%这是因为qmd是为Unix/Linux环境设计的,然后运行qmd就在寻找/bin/sh.exe,然而这个路径在根本不不存在。
解决方式有两种:
• 在运行qmd的根目录下放置sh.exe
-- 注意windows的sh.exe通过下载安装git bash实现• 通过符号链接实现,骗取qmd实现
-- 通过管理员身份打开cmd
mklink /D C:\bin "D:\Program Files\Git\bin"运用这个方法后,可以单独运行qmd了。
但是在openclaw部署qmd时,可能依然遇到了"/bin/sh" not found的问题。
所以,在网络上查询后,打算采用第二种方法。
3.2 shell问题
第二种解决方式,就是通过npm拉取qmd,然后修改代码。
• 注意,先把bun拉取的删除。 • 修改具体过程可参考https://blog.csdn.net/m0_60387100/article/details/159208307 • 这种方法要把 "D:\Program Files\Git\bin"加入环境变量
修改"PATH/npm/global"路径下的qmd.cmd文件。
• PATH为你设置的npm拉取路径
直接将其修改为通过node运行qmd:
@echo off
node "PATH\npm\global\node_modules\@tobilu\qmd\dist\cli\qmd.js" %*但是在实际openclaw部署过程中,又遇到了问题,提示错误:
Error: qmd.cmdwrapperresolved, butnoexecutable/Nodeentrypointcouldberesolvedwithoutshellexecution.意思是openclaw找到了qmd.cmd,但要运行它不能直接通过powershll或者cmd启动,也就是说一定要通过sh。
到这里,就有点抓狂,然后仔细解读了qmd的文件启动路径,整个过程如下:
• 在 "PATH\npm\global"路径下有个qmd.cmd,这个文件的作用是利用sh来调用"PATH\npm\global\node_modules\@tobilu\qmd\bin"路径下的qmd文件• "PATH\npm\global\node_modules\@tobilu\qmd\bin"路径下的qmd是用node来启用"PATH\npm\global\node_modules\@tobilu\qmd\dist\cli"路径下的qmd.js
非常的绕,要启动qmd.js,先用cmd调用sh,接着用sh调用node,就是这个逻辑。
所以针对版本2026.3.28的openclaw,"PATH/npm/global"路径下的qmd.cmd文件不能修改,因为它能调用sh.exe。
3.3 解决方法
如果不修改,openclaw能一致读取到"PATH\npm\global\node_modules\@tobilu\qmd\bin"路径下的qmd文件。
但是到这一步,openclaw就开始用node来读取"PATH\npm\global\node_modules\@tobilu\qmd\bin\qmd"了,所以,非常奇怪。
由于该路径下的qmd文件是Unix shell脚本,只适合用sh.exe来读取,node它读不了,在openclaw部署中,就会出现提示代码语言错误:
SyntaxError: Invalidorunexpectedtoken所以,为了配合这个版本的openclaw,需要修改的是这个文件,改成JavaScript语言。
#!/usr/bin/env node
import { pathToFileURL } from 'url';
import { dirname, join } from 'path';
import { fileURLToPath } from 'url';
const__filename= fileURLToPath(import.meta.url);
const__dirname= dirname(__filename);
constDIR= dirname(__dirname);
constqmdJs= join(DIR, 'dist', 'cli', 'qmd.js');
// 使用 pathToFileURL 将 Windows 绝对路径转换为 file:// URL
import(pathToFileURL(qmdJs));这样,openclaw就能部署qmd成功了,但是在cmd中就不能单独调用qmd了,也算是曲线救国吧。
夜雨聆风