OpenClaw部署
服务器与系统环境
腾讯云轻量应用服务器 4核CPU,4GB内存,70G系统盘
ubuntu 22.04.5 LTS 64bit,根据chatGPT推荐兼容性最好
安装OpenClaw
更新系统并下载依赖
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装基础依赖
sudo apt install -y git curl wget unzip build-essential
# 安装nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
# 安装node.js
nvm install --lts
nvm use --lts
# 验证安装成功,查看版本号
node -v
npm -v
下载OpenClaw
npm install -g openclaw@latest
启动OpenClaw
# 初始化配置并安装
openclaw onboard --install-daemon
# install-daemon 自动将 OpenClaw 的 Gateway 服务安装为后台守护进程,静默运行,
# 开机自动启动及崩溃自动重启
from chatGPT
| 配置项 | 含义 | 作用 | 选择建议 | 跳过后如何配置 |
|---|---|---|---|---|
| model / auth provider | 选择模型提供商和认证方式 | 决定可用模型、调用方式、成本与延迟 | 选择你能用到的最强模型或最稳定的 provider,如 OpenAI / Anthropic / Ollama | 后续可通过 openclaw configure 或手动修改 models.providers 补齐 |
| filter models by provider | 筛选某个 provider 下的模型 | 避免模型过多,防止误选不支持的模型 | 新手可选单一 provider,高级用户可精确筛选 | 使用 openclaw models list + openclaw models set <model> 或修改配置文件 |
| default model | 默认使用的模型 | 决定 agent 默认调用的 primary 模型 | primary: 强模型,fallback: 便宜模型 | 手动设置:openclaw models set <model> 或修改 agents.defaults.model.primary |
| model check | 检查模型可用性 | 检测 API key 是否有效、provider 是否可用 | 必做,保证后续 agent 可用 | 手动执行:openclaw models status |
| select channel | 选择 bot 的入口渠道 | 决定用户如何与 agent 交互 | Telegram/Discord/Web/UI,本地测试可用 Web/CLI,生产建议 Telegram 或 Docker + channel | 后续可通过 openclaw configure 或修改 channels 配置 |
| web search | 是否开启联网搜索能力 | 让 agent 可查最新信息,不局限于训练数据 | 做助手或查询最新信息可开,内网环境可关 | 后续可在 tools 或配置文件中添加搜索工具 |
| search provider | 选择搜索引擎 | 决定搜索质量、返回结果结构和成本 | 优先稳定 API,如 SerpAPI | 后续通过 tool 配置或 openclaw configure 添加 |
| hooks | 生命周期钩子 | 可插入自定义逻辑,如安全检查、日志、工具权限 | 新手可跳过,安全/企业级必配 | 后续通过编写插件或修改 gateway 配置补充 |
| How do you want to hatch your bot? | 决定 agent 初始化方式 | 控制 agent 创建方式和配置复杂度 | 选TUI,二者不冲突,web UI仍可访问,但是没有配置LLM API时TUI无法交互 | 后续可通过重新 run openclaw onboard 或手动修改配置 |
远程访问web UI
在本地电脑命令行执行以下命令,然后在浏览器访问127.0.0.1:18789
初步体验下来web UI用于配置参数的体验并不好,开发者更多是为开发人员设计的这款产品,配置项不是傻瓜式的,也没有提示文案,比如配置LLM的API居然要自己在输入框里输入JSON格式的配置内容,而且没有告知格式规范,反而TUI更加简单。
# 创建一个 SSH 本地端口转发(Local Port Forwarding)隧道,用于安全地将远程服务器上的服务通过 SSH 加密通道映射到你本地的电脑上访问。
ssh -N -L 18789:127.0.0.1:18789 你的系统用户名@你的服务器ip
关于LLM api配置
# 配置命令
openclaw configure

QQ Bot配置 - 通过QQ与龙虾对话
session按入口和会话实例隔离,TUI和QQ聊天属于两个main session,彼此不共享上下文与记忆。
https://q.qq.com/qqbot/openclaw/
Agent初始化
初次见面 Bootstrapping
在.openclaw/workspace下,有BOOTSTRAP.md文件,首次在tui界面与agent对话,LLM会先阅读该文件,遵循指示与用户交互以完成身份定位,然后会改写agent.md等文件,并删除BOOTSTRAP.md
注意到直接通过QQ Bot与Agent对话,没有触发Bootstrapping,需要通过TUI或web UI对话

关键配置
控制层(怎么思考)
├── SOUL.md
├── model config
记忆层(记住什么)
├── session(短期)
├── memory(长期)
├── RAG(外部)
执行层(怎么做事)
├── workspace
├── tools
├── skills
├── sub-agents
| 配置项 | 作用 | 是否隔离(按session) | 是否持久化 | 是否影响token | 典型用途 |
|---|---|---|---|---|---|
| workspace | agent的工作目录,存储文件、代码、运行产物 | 是 | 是 | 否(间接影响) | 文件处理、代码执行、任务输出 |
| SOUL.md / AGENT.md | agent的核心行为规则(系统提示词) | 否(全局注入) | 是 | 是(高) | 控制agent策略、角色、执行方式 |
| memory | 长期记忆存储(结构化/非结构化) | 视配置而定 | 是 | 是(中) | 记录用户偏好、历史信息 |
| session(主会话) | 当前对话上下文(聊天历史) | 是 | 否(短期) | 是(高) | 多轮对话、上下文推理 |
| sub-agent session | 子代理的独立执行上下文 | 是(完全隔离) | 否 | 是(低) | 执行复杂或耗时任务 |
| compaction(压缩) | 对长上下文进行摘要压缩 | 是 | 否 | 是(降低) | 控制上下文长度、节省token |
| tools | agent可调用的工具集合 | 否(全局配置) | 是 | 否 | 执行外部操作(API、代码等) |
| skills | 封装好的高阶能力(工具组合) | 否 | 是 | 否 | 提供复用能力(如任务流) |
| model config | 模型参数(maxTokens、temperature等) | 否 | 是 | 是(高) | 控制生成行为与成本 |
| RAG / embeddings | 外部知识库检索系统 | 否(通常全局) | 是 | 是(中) | 提供长期知识支持 |
| 机制 | 触发方式 | 是否依赖时间 | 是否在主session执行 | 是否有上下文 | 是否创建任务记录 | 核心特点 | 典型用途 |
|---|---|---|---|---|---|---|---|
| cron job | 时间调度(精确时间 / cron表达式) | 是(精确) | 可选(main / isolated) | 可无(isolated) | 是 | 精确调度、可隔离执行 | 定时报告、提醒、批处理任务 |
| heartbeat | 固定间隔触发(默认30分钟) | 是(近似) | 是(主session) | 有(完整上下文) | 否 | 周期性“思考/检查” | inbox检查、通知、状态监控 |
| hook | 事件触发(生命周期/工具调用等) | 否 | 视事件而定 | 视情况而定 | 否 | 事件驱动、即时执行 | 自动化流程、拦截/增强行为 |
- 如果没有需要agent定期判断的事项,可以把heartbeat关闭来节省token。 cron = 我让它什么时候做 heartbeat = 它自己定期想一想 hook = 有事发生就自动做
Sub Agent与Muti Agent
设置主agent在遇到复杂耗时问题时启动子代理处理任务,并将最终的任务结果反馈给主agent,以此来节省token与时间。
- Sub-agent 是“非阻塞”的,主agent不需要等待子agent,可以继续与用户进行其他对话,子agent任务执行后将结果返回给主agent实现闭环。
- 子agent是独立session,不会继承主agent的上下文与SOUL.md,因此可以节约token。
- 子agent是临时工,在后台执行任务,结束后将结果返回给主agent。
- 适合长任务、并行任务、专业分工 通过设置SOUL.md来指导主Agent何时启用sub agent,定义行为规则,并给子agent一段提示词设定其身份、守则用于更好的完成指定任务。
多个长期独立存在的agent,具备独立 workspace、memory、SOUL.md、session。
- 用于设定多个长期角色,比如一个长期专门写代码,一个长期做调研,各自有记忆和灵魂
- 可以设置不同的权限、不同的模型、不同的消息通道(微信 or QQ)
Context window相关配置
初步感受是非常的消耗token,简单的对话都会消耗上万token,而如果使用了不够聪明的LLM的话一旦思考陷入循环消耗更是惊人,解决复杂任务单词消耗token可达百万token。
基于模型的能力设置合理模型的上下文窗口,比如minimax2.5本身支持200k的上下文,更大的上下文可以使得AI的对话连贯性更好,避免频繁的压缩信息。
SKILL实践
基于Notion数据库进行时间管理
https://clawhub.ai/xiangtaoxiao/notion-time-management-matrix
基于自己搭建的notion的数据库模版(四象限时间管理)作为数据源,openclaw通过notion api 接口调用来实现。通过微信聊天的方式添加及结束代办事项,临近日期自动提醒,提供事项的相关文件及信息,更新进度。接口调用参考notion skill。
- 比传统模式好在哪?通过微信交互更自然,AI秘书可以提供情绪价值🐶
- 其实直接记在openclaw里效果最好,但是缺少一个好看界面,以及需要防止LLM不稳定导致数据出错的情况。
- 可以基于openclaw本身的cron定时任务来实现定时检查待办事项及提醒。cron本质就是在指定时间通过指定session向AI发出一个指令。
遇到的问题:
- TRAE不遵循openclaw的规范:提供openclaw的skill文档链接,让agent阅读。
- 安装后agent不识别:在TOOL.md里加提示词要求AI使用这个技能,或者首次对话明确要求使用这个skill;至于如何让skill安装好后agent识别语义触发这个skill,我估计是因为openclaw的系统提示词或者agent提示词默认了待办任务的处理方式,因此优先级更高。
- skill的状态不ready:执行命令看看是哪个配置不满足,修改即可
openclaw skills check - 调试困难,看不到agent的思考和工具调用过程:安装clawmetry解决
- 系统拼错路径,乱加空格,导致命令无法执行,问了gpt,进行两处修改:一个是是skill的文件夹名称,把‘-’改成‘_’,然后提示词里的路径,增加了./script/,这次很顺利,AI没有再试错,直接执行成功了。
- AI写的任务似乎逻辑的严谨程度不是特别高,遇到了AI不读取状态文件直接通过记忆行事的情况,理论上这是聪明的做法,但是如果提示词不做要求,AI对情况的变化缺乏判断。(miniMax2.5)
- openclaw的原生记忆能力不好,目前看memory文件记住了很多不重要的甚至错误的内容,并且这些内容严重污染上下文。有时候明确指出其错误并要求记忆,反而不会记录到memory文件。
- 也许可以试一下直接用notino api调用(也就是notion技能),然后魔改一下让AI记住不同数据库的用途、结构,然后能否做到同步管理我的待办事项、知识库?
总结经验
提示词技巧:
- 避免AI随意发挥:找官方文档让AI先看完,然后严禁AI违反官方文档设置的规范
- 避免AI只改动局部,不做全局考量:
- 规避部分模型对‘-’等token处理能力以及指令拼接能力差的问题:根据不同大模型的能力,以及temperature,其拼接路径及系统指令的能力有所区别,对于不稳定的情况最好是把指令固化下来作为工具,然后AI输出指令调用工具。这个问题可能随着LLM的强大得到解决
- 避免AI总是根据记忆行事:虽然openclaw提供了memory结构,但一些关键数据如果发生变更,而AI仍遵循记忆的内容执行操作,就会导致失败或数据异常更新。关键配置项最好要求AI读取配置文件,而禁止从上下文与记忆中获取,尤其是在调试功能时。