这个仓库现在采用最小化方案:通知不依赖任何 OpenCode 插件、hook 或额外脚本,全部由 dispatch-opencode.sh 在 opencode run 结束后直接完成。
- 用
tmux异步启动opencode run - 使用固定二进制
/root/.opencode/bin/opencode - 捕获
opencode run的完整终端输出 - 直接调用
openclaw message send发送通知 - 只保留两个运行产物:
task-output.txt和dispatch.log - 所有运行产物默认写到
/root/.openclaw/workspace/opencode-dispatch/
这个工作流本来就是 one-shot、tmux、异步收尾场景,所以最稳定的方式就是让 dispatch 脚本自己承担全部职责。
执行顺序只有这些:
dispatch-opencode.sh调用/root/.opencode/bin/opencode run- 脚本捕获全部 stdout/stderr 到
/root/.openclaw/workspace/opencode-dispatch/task-output.txt - 脚本生成摘要
- 脚本直接调用
openclaw message send - 脚本再调用一次
openclaw message send --media发送task-output.txt - 脚本把全过程写进
/root/.openclaw/workspace/opencode-dispatch/dispatch.log
| 路径 | 作用 |
|---|---|
scripts/dispatch-opencode.sh |
给 openclaw skill 调用的正式脚本 |
SKILL.md |
openclaw skill 说明,要求通过 tmux 调度 |
脚本只会写这两个文件到 /root/.openclaw/workspace/opencode-dispatch/:
task-output.txt:完整终端输出;固定文件名,每次新任务都会覆盖旧内容dispatch.log:dispatch 自己的日志;固定文件名,每次新任务都会覆盖旧内容,并记录本次任务名
运行这个流程前,需要确保:
tmux已安装/root/.opencode/bin/opencode存在且可执行python3已安装openclaw可执行,默认路径为OPENCLAW_BIN=/usr/bin/openclaw
如果你的 openclaw 不在默认位置,可以覆盖:
export OPENCLAW_BIN="/your/path/to/openclaw"默认发 Feishu:
scripts/dispatch-opencode.sh \
--prompt "阅读代码并修复测试失败" \
--name "fix-tests" \
--target "your-feishu-target" \
--channel feishu \
--workdir "/path/to/project"改发 Telegram:
scripts/dispatch-opencode.sh \
--prompt "实现一个 one-shot 命令" \
--name "opencode-task" \
--target "-1001234567890" \
--channel telegram \
--workdir "/path/to/project"| 参数 | 说明 |
|---|---|
-p, --prompt |
任务提示,必填 |
-n, --name |
任务名,用于日志和通知 |
-g, --target |
通知目标,Feishu 或 Telegram 对应的 target |
-c, --channel |
通知渠道,默认 feishu,可选 telegram |
-w, --workdir |
执行 opencode run 的工作目录 |
-m, --model |
指定模型 |
-a, --agent |
指定 agent |
--attach |
连接已有 opencode serve 实例 |
--title |
指定 session title |
--continue |
继续最近一次 session |
最终通知会包含:
- 任务名
- 退出码
- 摘要
- 清洗过 ANSI 控制字符后的 output 摘要片段
脚本会先去掉终端颜色控制字符,避免消息里出现 [ 0m 这类残留;同时只保留前几个命令块和关键输出,尽量把有限的消息长度留给真正有用的信息。文本消息发出后,还会继续把完整的 task-output.txt 作为 --media 附件发送。
仓库里提供给 openclaw 使用的 skill:
SKILL.mdscripts/dispatch-opencode.sh
这个 skill 的约束是:
- dispatch 必须在
tmux里启动 - dispatch 脚本从 openclaw workspace 执行
--workdir必须指向目标项目根目录opencode固定使用/root/.opencode/bin/opencode- 运行产物默认写到
/root/.openclaw/workspace/opencode-dispatch/
典型调用形态:
tmux new-session -d -s "opencode-fix-tests" \
"$OPENCLAW_WORKSPACE/.openclaw/skills/opencode-dispatch/scripts/dispatch-opencode.sh --prompt '阅读代码并修复测试失败' --name 'fix-tests' --target 'your-feishu-target' --channel feishu --workdir '/path/to/project'"如果没有收到通知,可以依次检查:
/root/.opencode/bin/opencode是否存在且可执行opencode run是否正常结束/root/.openclaw/workspace/opencode-dispatch/task-output.txt是否已经生成/root/.openclaw/workspace/opencode-dispatch/dispatch.log是否记录了发送结果OPENCLAW_BIN是否正确target是否传入