第 3 课
安全审计、改配置与定时任务
用 openclaw security audit 找出小模型开着联网工具的高危项,用 config set 先 dry-run 再写入禁用规则并用 get、validate 复核,复查审计清零;用 openclaw cron 添加每小时运行的命令任务和每天 9 点的智能体任务,手动运行、查看记录后停用删除;最后按官方文档了解飞书、QQ 等渠道接入、配对码审批和命令所有者。
学习位置仅保存在当前浏览器,有效期 180 天。
图文教材
本课对照的官方页面:openclaw security、Running the audit、openclaw config、Cron jobs、openclaw cron、Pairing。第 1–4 步在 Linux x64(OpenClaw 2026.10.9)上实测,输出为节选;第 5 步需要真实的聊天账号,按官方文档整理,未实测。
OpenClaw 能读写文件、跑命令、上网,权限很大。这一课先用官方的安全审计找出风险并修掉,再加一个定时任务让它按时干活,最后了解怎么把它接到飞书、QQ、Telegram 等聊天软件上。
第 1 步:跑一次安全审计
openclaw security audit 会按官方的检查清单扫一遍配置,并按严重程度分级:
openclaw security audit
对照结果(节选,长行已折行):
OpenClaw security audit
Summary: 1 critical · 1 warn · 1 info
CRITICAL
models.small_params Small models require sandboxing
and web tools disabled
- ollama/qwen3:0.6b (0.6B) @ agents.defaults.model.primary
(unsafe; sandbox=off; web=[web_search, web_fetch, browser])
Uncontrolled input tools allowed: web_search, web_fetch,
browser.
Fix: ... tools.byProvider["provider/model"].deny=
["group:web","browser"] ...
WARN
gateway.trusted_proxies_missing Reverse proxy headers are
not trusted
CRITICAL 这一条的意思是:小模型(300B 参数以下)更容易被网页里藏的恶意指令带偏(提示注入),却开着联网搜索、抓网页和浏览器工具。WARN 那条只在你用反向代理把控制台暴露出去时才相关,本机使用可以不管。
第 2 步:用 config set 关掉小模型的联网工具
按审计给的修复建议,给这个模型单独加一条禁用规则。先用 --dry-run 只校验不写入,确认没问题再正式写:
openclaw config set \
'tools.byProvider["ollama/qwen3:0.6b"].deny' \
'["group:web","browser"]' --strict-json --dry-run
openclaw config set \
'tools.byProvider["ollama/qwen3:0.6b"].deny' \
'["group:web","browser"]' --strict-json
对照结果:
Dry run successful: 1 update(s) validated against
~/.openclaw/openclaw.json.
Updated tools.byProvider["ollama/qwen3:0.6b"].deny. Change
will apply without restarting the gateway.
读回来并校验整个配置文件:
openclaw config get tools.byProvider
openclaw config validate
对照结果:
{
"ollama/qwen3:0.6b": {
"deny": [
"group:web",
"browser"
]
}
}
Config valid: ~/.openclaw/openclaw.json
第 2 课换上的 ollama/qwen3:1.7b 也是小模型,同样执行一遍,把路径里的模型名换掉即可。网关会热加载,不用重启。
第 3 步:复查审计结果
openclaw security audit
对照结果(节选):
Summary: 0 critical · 1 warn · 2 info
INFO
models.small_params Small models require sandboxing
and web tools disabled
- ollama/qwen3:0.6b (0.6B) @ agents.defaults.model.primary
(ok; sandbox=off; web=[off])
No web/browser tools detected for these models.
CRITICAL 清零,原来那条降为 INFO,状态从 unsafe 变成 ok、web=[off]。审计还建议再开沙箱(agents.defaults.sandbox.mode)做纵深防御,需要 Docker 等运行环境,见官方 Sandboxing 文档(https://docs.openclaw.ai/gateway/sandboxing)。另外 openclaw security audit --deep 会做更深入的检查;只读的总体检可以用 openclaw doctor --non-interactive。
第 4 步:加一个定时任务
OpenClaw 的定时任务(cron,CLI 里也叫 automation)有两类负载:给智能体发一条消息(--message),或者直接在网关上跑一条命令(--command)。先加一个每小时查一次磁盘的命令任务,--no-deliver 表示结果不往聊天渠道发:
openclaw cron add --name disk-check --every 1h \
--command 'df -h / | tail -1' --no-deliver
openclaw cron list
对照结果(cron add 输出 JSON,这里只保留关键字段;列表有压缩):
{
"id": "cba1dc4d-51b7-447d-9fd8-3d0235ae5b00",
"name": "disk-check",
"enabled": true,
"schedule": { "kind": "every", "everyMs": 3600000 },
"payload": { "kind": "command",
"argv": ["sh", "-lc", "df -h / | tail -1"] },
"delivery": { "mode": "none", "channel": "last" }
}
Name Schedule Status Target
Heartbeat (main) every 30m idle main
disk-check every 1h idle isolated
Memory Dreaming... cron 0 3 * * * (exact) idle isolated
列表里另外两条是 OpenClaw 自带的:每 30 分钟一次的心跳,和每天 3 点整理记忆的任务。
不想等一小时,可以立刻手动跑一次,再看运行记录。run 和 runs 要用上面输出里的 id,用名字会报「Automation not found」:
openclaw cron run cba1dc4d-51b7-447d-9fd8-3d0235ae5b00
openclaw cron runs --id cba1dc4d-51b7-447d-9fd8-3d0235ae5b00
对照结果(节选):
{ "ok": true, "enqueued": true, ... }
"status": "ok",
"completionStatus": "succeeded",
"summary": "/dev/vdb 128G 42G 86G 33% /",
"durationMs": 31,
"nextRunAtIso": "2026-11-01T01:13:39.113+08:00"
练习完把它停掉并删除:
openclaw cron disable cba1dc4d-51b7-447d-9fd8-3d0235ae5b00
openclaw cron rm cba1dc4d-51b7-447d-9fd8-3d0235ae5b00
对照结果(disable 只保留关键字段):
"enabled": false,
"lastRunStatus": "ok",
{ "ok": true, "removed": true }
给智能体发消息的定时任务写法类似。下面这条每天早上 9 点(上海时间)让它整理待办,--disabled 表示先建好但不启用,--agent main 指定由哪个智能体执行:
openclaw cron add --name morning --agent main \
--cron "0 9 * * *" --tz Asia/Shanghai \
--message "整理今天的待办" --no-deliver --disabled
对照结果(只保留关键字段):
"name": "morning",
"enabled": false,
"schedule": { "kind": "cron", "expr": "0 9 * * *",
"tz": "Asia/Shanghai" },
"payload": { "kind": "agentTurn",
"message": "整理今天的待办", "toolsAllow": ["*"] },
实测时没带 --agent,会多一行提示「No --agent specified」,任务交给默认智能体。toolsAllow: ["*"] 表示定时运行时可用全部工具,想收紧可以看 openclaw cron add --help 里的工具相关参数。确认无误后用 openclaw cron enable <id> 启用。
第 5 步:接入聊天渠道与配对(官方文档描述,未实测)
到这里智能体只能在命令行和本机控制台里用。OpenClaw 支持把它接到聊天软件上,中文用户常用的有飞书(https://docs.openclaw.ai/channels/feishu)、QQ 机器人(https://docs.openclaw.ai/channels/qqbot)、企业微信(https://docs.openclaw.ai/channels/wecom),另有 Telegram、Discord、Slack 等。每个渠道都要先在对应平台申请机器人,再按官方页面运行 openclaw channels add 填写。
接上之后,陌生人私聊你的机器人时不会直接被处理。按官方 Pairing 页面,默认的私聊策略是「配对」:对方会收到一个 8 位配对码(1 小时内有效),你在本机批准后才放行:
openclaw pairing list telegram
openclaw pairing approve telegram <CODE>
批准也可以在 Control UI 的 Settings → Channels → DM access requests 里点 Approve。批准只开放私聊,不包括群聊。
另外,本课实跑 openclaw doctor --non-interactive 时提示还没有「命令所有者」(command owner)。它是唯一能通过聊天让 OpenClaw 升级、重启、改配置的人,接好渠道后按提示设置:
openclaw config set commands.ownerAllowFrom \
'["telegram:123456789"]'
123456789 换成你自己在该渠道的用户 ID。最后可以用 openclaw skills list 看看自带了哪些技能(实测 55 个里有 22 个开箱可用,其余要先装对应命令行工具),按需启用。
小结
openclaw security audit分级列出风险,并直接给出修复用的配置路径。openclaw config set先--dry-run再写入,config get、config validate复核;网关热加载。- 小模型要禁用联网与浏览器工具:
tools.byProvider["provider/model"].deny。 openclaw cron add支持命令和智能体两类任务,run、runs、disable、rm都用任务 id。- 接聊天渠道后靠配对码和命令所有者控制谁能用、谁能管,详见官方 Pairing 与 Security 文档。
