Threaded Mode 下定时任务配置教程

详解在 Threaded Mode 话题模式下如何正确配置定时任务,包括权限设置、Thread ID 查询和任务创建。

Thu Feb 19 2026
1052 字 / 6 分钟

Threaded Mode 下定时任务配置教程

之前写了两篇关于 Openclaw 任务隔离的文章,自己在配置定时任务时遇到一些问题。详细研究了一下,把过程记录下来。

问题来源

在 Threaded Mode(话题模式)下配置定时任务,默认会发到”新聊天”(All)那个总对话框里,而不是当前子话题。

比如你在”博客”话题里想配置一个每天提醒写博客的定时任务,结果消息每次都跑到”新聊天”去了。这就是问题所在。

这篇文章的目的就是解决它——让定时任务能发送到正确的独立话题下面。

最简单的方式:让 Openclaw 帮你配置

不需要 SSH 到服务器,不需要改配置文件。直接在 Telegram 对话框里发给 Openclaw 就行。

发给 Openclaw 的话术:

我需要在 Threaded Mode(话题模式)下配置定时任务,但遇到沙箱权限受限的问题。
请帮我做以下配置:
1. 修改 ~/.openclaw/openclaw.json,在沙箱配置中:
- 从 deny 列表移除 cron,确保 allow 列表包含 cron
- 将 sandbox.mode 设为 "all",sandbox.scope 设为 "session"
2. 在 cron 配置中:
- 确保 enabled 为 true
- 设置 maxConcurrentRuns 和 sessionRetention
3. 配置完成后执行 openclaw gateway restart
完成后,在当前话题创建一个测试定时任务,验证是否配置成功。

Openclaw 会自动帮你完成:查询 Thread ID、配置权限、创建定时任务。

常用话术模板

完整流程(获取 Thread ID + 设置任务)

你是 Telegram 设置的 Threaded Mode 下的一个子话题。
1. 请先告诉我这个话题的 Thread ID 是多少
2. 然后帮我设置一个每小时执行一次的定时任务
3. 任务内容:查询当前天气情况并发送到群聊
4. 每次汇报都在这个 Thread ID 下面进行

每小时汇报

我需要在当前话题配置一个每小时执行一次的定时任务。
任务内容:查询当前天气情况并发送到群聊
请帮我:
1. 获取当前话题的 Thread ID
2. 配置定时任务,每次在这个 Thread ID 下执行

每日汇报

配置一个每天早上6点的定时任务。
任务内容:查询明天天气情况
请获取当前话题的 Thread ID 并设置任务

提醒任务

创建一个每天晚上8点的提醒任务。
任务内容:提醒我喝水
在当前话题执行,并告诉我这个话题的 Thread ID

一般来说,上面的自动配置步骤会自动进行,Openclaw 会帮你完成配置。但如果有人想尝试手动配置,或者想了解在 JSON 文件中是如何修改的,可以参考以下步骤(当然,还是推荐使用上面的自动配置步骤):

手动配置步骤

1. 权限配置

找到 ~/.openclaw/openclaw.json,添加或修改以下内容:

{
"agents": {
"defaults": {
"sandbox": {
"mode": "all",
"scope": "session",
"deny": ["browser", "canvas", "nodes", "discord", "gateway"],
"allow": ["cron", "exec", "bash", "process", "read", "write", "edit", "sessions_list", "sessions_history", "sessions_send", "sessions_spawn"]
}
}
},
"cron": {
"enabled": true,
"maxConcurrentRuns": 2,
"sessionRetention": "24h"
}
}

改完配置后,重启 Gateway:

openclaw gateway restart

2. 查询话题 Thread ID

在目标话题发一条消息,然后运行:

Terminal window
cat ~/.openclaw/agents/main/sessions/sessions.json | python3 -c "
import json, sys
data = json.load(sys.stdin)
for key, val in data.items():
if 'thread' in key:
origin = val.get('origin', {})
thread = origin.get('threadId')
print(f'Thread ID: {thread}')
"

3. 创建定时任务

关键是把 Thread ID 加到 —to 参数里:

openclaw cron add \
--cron "Cron表达式" \
--tz "Asia/Shanghai" \
--message "任务内容" \
--channel telegram \
--to "telegram:用户ID:ThreadID" \
--name "任务名称" \
--session isolated

到 Thread 1114:

openclaw cron add --cron "0 * * * *" --tz "Asia/Shanghai" --message "查询当前天气情况" --channel telegram --to "telegram:7121476065:1114" --name "天气整点汇报" --session isolated

每天晚上8点到 Thread 1079:

openclaw cron add --cron "0 20 * * *" --tz "Asia/Shanghai" --message "提醒我喝水" --channel telegram --to "telegram:7121476065:1079" --name "喝水提醒" --session isolated

4. 管理任务

openclaw cron list
openclaw cron rm <任务ID>

5. 验证

tail -20 /tmp/openclaw/openclaw-*.log | grep "thread:1114"

出现 lane=session:agent:main:main:thread:1114 就表示成功。



Thanks for reading!

Threaded Mode 下定时任务配置教程

Thu Feb 19 2026
1052 words · 6 minutes