Docker+本地部署openclaw+接入IM+创建Agent
<h1 id="dockerdeepseek云模型本地部署openclaw">Docker+deepseek云模型本地部署openclaw</h1><h1 id="一配置openclawqqbot">一、配置openclaw+QQBot</h1>
<h2 id="docker">docker</h2>
<p>请确保电脑上已配置好 Docker 和 Docker Compose。</p>
<p>下载链接: Docker: Accelerated Container Application Development或 Docker中文网</p>
<p>根据系统选择适用版本,安装步骤可查。</p>
<pre><code class="language-bash"># 检查 Docker 版本
docker --version
# 检查 Docker Compose 版本
docker compose version
</code></pre>
<p>配置openclaw需确保 Docker Compose 在v2以上,直接更新到新版即可。</p>
<h2 id="部署docker">部署Docker</h2>
<ol>
<li>创建一个工作目录,命名为openclaw即可,</li>
</ol>
<p>在该目录下创建文件 <code>.env</code> ,进去后写下以下内容:</p>
<pre><code class="language-cpp">VOLC_API_KEY=xxxxxxxx
LARK_APP_ID=xxxxxxx
LARK_APP_SECRET=xxxxxx
</code></pre>
<p>注意,此文件里控制API KEY 和 环境变量等,有需要可以修改。</p>
<ol start="2">
<li>创建文件 <code>docker-compose.yml</code> ,并填写以下内容:</li>
</ol>
<pre><code class="language-bash">services:
# --- OpenClaw 主程序 (Gateway) ---
openclaw-gateway:
image: crpi-a1liy20beodq2bdl.cn-beijing.personal.cr.aliyuncs.com/bujic/openclaw:v2026.3.12
container_name: openclaw-main
restart: unless-stopped
init: true
environment:
TZ: Asia/Shanghai
NODE_ENV: production
HOME: /home/node
TERM: xterm-256color
OPENCLAW_GATEWAY_TOKEN: "YOUR_CUSTOM_TOKEN" # 请更换为你的安全Token
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS: "true"
PATH: "/home/node/.openclaw/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
VOLC_API_KEY: ${VOLC_API_KEY} #敏感信息采用环境变量注入
LARK_APP_ID: ${LARK_APP_ID}
LARK_APP_SECRET: ${LARK_APP_SECRET}
volumes:
- ./openclaw_data:/home/node/.openclaw
- ./workspace:/home/node/.openclaw/workspace
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "18789:18789"
- "18790:18790"
- "9222:9222" #无头浏览器端口
command: ["node", "dist/index.js", "gateway", "--bind", "lan", "--port", "18789"]
# --- 无头浏览器 (Headless Shell) ---
headless-shell:
image: crpi-a1liy20beodq2bdl.cn-beijing.personal.cr.aliyuncs.com/bujic/headless-shell:latest
container_name: headless-shell
network_mode: "service:openclaw-gateway"
restart: unless-stopped
shm_size: "2g"
</code></pre>
<p>注意,一定要将 <code>YOUR_CUSTOM_TOKEN</code> 换为自己的安全Token, 并且记住这串字符串,我们需要使用Token访问webUI。</p>
<p>Token生成命令如下:</p>
<pre><code class="language-bash"># 生成 256 位(32 字节)随机 token
openssl rand -hex 32
# 示例输出: a1b2c3d4e5f6...
</code></pre>
<h2 id="配置openclaw文件">配置openclaw文件</h2>
<p>在openclaw目录下创建子文件夹 <code>openclaw_data</code>,再在openclaw_data目录下创建文件 <code>openclaw.json</code> 。</p>
<p><strong>路径:</strong> <code>./openclaw/openclaw_data/openclaw.json</code></p>
<p>在openclaw.json文件写以下:</p>
<pre><code class="language-json">{
"meta": {
"lastTouchedVersion": "2026.3.12"
},
"browser": {
"enabled": true,
"attachOnly": true,
"defaultProfile": "browserless",
"noSandbox": false,
"headless": false,
"ssrfPolicy": {
"dangerouslyAllowPrivateNetwork": true
},
"profiles": {
"browserless": {
"cdpUrl": "http://127.0.0.1:9222",
"color": "#00AA00"
}
}
},
"models": { //这里的模型是deepseek
"providers": {
"deepseek": {
"baseUrl": "https://api.deepseek.com/v1",
"apiKey": "你的api key",
"api": "openai-completions",
"models": [
{
"id": "deepseek-chat",
"name": "DeepSeek V3",
"reasoning": false
}
]
}
}
},
"channels": {
"feishu": {
"enabled": false,
"appId": "${LARK_APP_ID}",
"appSecret": "${LARK_APP_SECRET}",
"connectionMode": "websocket",
"dmPolicy": "allowlist",
"allowFrom": [
"YOUR_USER_ID"
],
"streaming": true,
"footer": {
"elapsed": true,
"status": true
}
}
},
"agents": { //模型
"defaults": {
"model": {
"primary": "deepseek/deepseek-chat"
}
}
},
"commands": {
"native": "auto",
"nativeSkills": "auto",
"restart": true,
"ownerDisplay": "raw"
},
"gateway": {
"mode": "local",
"controlUi": {
"dangerouslyAllowHostHeaderOriginFallback": true,
"allowInsecureAuth": true,
"dangerouslyDisableDeviceAuth": true
}
},
"plugins": {
"entries": {
"feishu": {
"enabled": false
},
"openclaw-lark": {
"enabled": true
}
},
"installs": {
"openclaw-lark": {
"source": "npm",
"spec": "@larksuite/openclaw-lark",
"installPath": "/home/node/.openclaw/extensions/openclaw-lark",
"version": "2026.3.12",
"resolvedName": "@larksuite/openclaw-lark",
"resolvedVersion": "2026.3.12",
"resolvedSpec": "@larksuite/openclaw-lark@2026.3.12",
"integrity": "sha512-MNcDrerQrO42I09w+M8q6dwnWHMKxOnXSCLG4qNwcekjGeDmA53lIuWJtGMpjTzvDjYkoWnN+8Zg78+FRCSV9w==",
"shasum": "113a4f9e9802fbb6b8c65677f1ede2c36e823a72",
"resolvedAt": "2026-03-13T08:59:23.563Z",
"installedAt": "2026-03-13T08:59:32.378Z"
}
}
}
}
</code></pre>
<p>上面两处注释的地方可更改其他模型配置</p>
<p><strong>获取deepseek API KEY:</strong></p>
<p>进入deepseek官网,购买API即可,实验时充3元就够了。</p>
<h2 id="启动与运行">启动与运行</h2>
<ol>
<li><strong>启动容器:</strong>在openclaw目录下打开终端</li>
</ol>
<pre><code class="language-bash">#启动
docker compose up -d
#关闭
docker compose down
</code></pre>
<ol start="2">
<li><strong>进入 CLI 管理界面:</strong> 如果需要使用交互式命令行,可以执行:</li>
</ol>
<pre><code class="language-bash"># 进入容器内部
docker exec -it openclaw-main/bin/bash
# 交互式设置向导
openclaw configure
</code></pre>
<ol start="3">
<li><strong>检查日志:</strong></li>
</ol>
<pre><code class="language-bash">docker logs -f openclaw-main
</code></pre>
<ol start="4">
<li><strong>Web登录</strong></li>
</ol>
<pre><code>http://127.0.0.1:18789/#token=你的安全Token
</code></pre>
<p>Token正确后在浏览器中进入网址即可</p>
<h2 id="接入qq机器人">接入QQ机器人</h2>
<h3 id="一创建qq机器人">一、创建qq机器人</h3>
<p>快速注册创建QQ机器人</p>
<p>点击链接后登录,点击创建机器人</p>
<p><img alt="1773913525937" loading="lazy"></p>
<p>创建后,会有个AppID和AppSecret,这个需要留着。</p>
<p>然后下方有一个安装插件的教程,需要先进入docker容器。</p>
<h3 id="二安装插件">二、安装插件</h3>
<pre><code class="language-bash">#docker compose exec 进入docker容器
docker compose exec openclaw-gateway openclaw plugins install @tencent-connect/openclaw-qqbot@latest
</code></pre>
<h3 id="三-配置绑定当前qq机器人">三、 配置绑定当前QQ机器人</h3>
<p>直接把第2步的命令复制即可,仍然需要进入docker容器</p>
<pre><code class="language-bash">docker compose exec openclaw-gateway openclaw channels add --channel qqbot --token "AppID:AppSecret"
</code></pre>
<p>"AppID:AppSecret"里的AppID和AppSecret需要换成自己的。</p>
<h3 id="四重启本地openclaw服务">四、重启本地OpenClaw服务</h3>
<pre><code class="language-bash">docker compose exec openclaw-gateway openclaw gateway restart
</code></pre>
<p>或</p>
<pre><code class="language-bash">docker compose restart openclaw-gateway
</code></pre>
<h3 id="五验证-qq-机器人状态">五、验证 QQ 机器人状态</h3>
<pre><code class="language-bash"># 查看已配置的渠道
docker compose exec openclaw-gateway openclaw channels list
# 查看日志
docker compose logs -f openclaw-gateway | grep qqbot
</code></pre>
<p>参考:</p>
<p>(https://bujic.cc/blogs/OpenClaw 部署指南)</p>
<p>使用Docker部署OpenClaw完整指南 - 栈上堆语</p>
<p>别再花钱买云服务器了!OpenClaw 本地部署保姆级教程,10分钟拥有私人AI助手 - warm3snow - 博客园</p>
<h1 id="二创建agent">二、创建agent</h1>
<h2 id="agent-管理">agent 管理</h2>
<p>注意:下面所有命令均需在容器内部输入</p>
<p>方便复制:</p>
<pre><code class="language-bash">docker exec -it openclaw-main/bin/bash
</code></pre>
<pre><code class="language-bash"># 列出所有 Agent
openclaw agents list
# 详细信息
openclaw agents list --verbose
</code></pre>
<p>输出示例:</p>
<p><img alt="1774446092965" loading="lazy"></p>
<h2 id="创建agent">创建agent</h2>
<pre><code class="language-bash"># 创建名为 coder 的 Agent
openclaw agents add coder #coder是新建的agent的名字,根据需要更换
</code></pre>
<h3 id="过程">过程</h3>
<p>可能是每次更新都不同,向导问题也不同,所以这里就不给出过程了。</p>
<p>根据自己的需要选择就行了。</p>
<h2 id="删除agent">删除agent</h2>
<pre><code class="language-bash"># 删除 Agent
openclaw agents remove coder
</code></pre>
<p>我尝试remove反馈无指令,然后使用delete可以。</p>
<pre><code class="language-bash">openclaw agents delete coder
</code></pre>
<h2 id="agent配置文件">agent配置文件</h2>
<h3 id="soulmd---性格定义">SOUL.md - 性格定义</h3>
<p>定义 Agent 的性格、行为准则和能力边界。</p>
<p>创建好后打开workspace-coder目录,发现里面已经有了默认文件,打开后直接编写即可。</p>
<p><img alt="1774446755303" loading="lazy"></p>
<p>示例内容:</p>
<pre><code class="language-markdown"># Coder Agent
## 核心原则
- 专注于代码审查、编写和技术问题解答
- 遵循最佳实践和代码规范
- 提供清晰的技术解释和示例
- 注重代码质量、性能和安全性
## 风格定位
- 技术专业、逻辑清晰
- 代码示例丰富
- 善于发现潜在问题
- 提供建设性的改进建议
## 能力范围
### 擅长领域
- 代码审查和重构建议
- Bug 诊断和修复方案
- 性能优化建议
- 安全漏洞识别
- 技术架构讨论
### 边界限制
- 不处理非技术问题
- 不提供项目管理建议
- 不涉及商业决策
- 专注于代码质量和技术实现
## 交互风格
- 直接、简洁
- 提供代码示例
- 解释技术原理
- 给出多个方案供选择
</code></pre>
<h3 id="usermd---用户信息">USER.md - 用户信息</h3>
<p>记录用户的基本信息、偏好和项目背景。</p>
<p>示例:</p>
<pre><code class="language-markdown"># 用户信息
## 基本信息
- 姓名:张三
- 角色:全栈开发工程师
- 团队:技术部
- 时区:Asia/Shanghai
## 技术栈
- 前端:React, Vue, TypeScript
- 后端:Node.js, Python, Go
- 数据库:PostgreSQL, MongoDB, Redis
- 工具:Git, Docker, Kubernetes
## 项目信息
### 当前项目
- OpenClaw:开源 AI Agent 平台
- 角色:核心开发者
- 主要职责:后端开发、架构设计
### 历史项目
- ProjectA:电商平台(2024-2025)
- ProjectB:数据分析系统(2023-2024)
## 偏好设置
- 代码风格:遵循 ESLint 规范
- 注释语言:中文
- 测试框架:Jest
- 文档格式:Markdown
## 常用命令
- 测试:`npm test`
- 构建:`npm run build`
- 部署:`npm run deploy`
</code></pre>
<h3 id="agentsmd---工作方式">AGENTS.md - 工作方式</h3>
<p>定义 Agent 的工作方式、记忆机制和协作规则。</p>
<pre><code class="language-markdown"># Agent 工作方式
## 会话管理
### 会话读取规则
- 读取最近 50 条消息作为上下文
- 优先读取标记为重要的消息
- 自动过滤无关的系统消息
### 会话写入规则
- 重要决策和结论写入长期记忆
- 代码片段和配置保存到知识库
- 定期清理过期的临时信息
## 记忆机制
### 短期记忆
- 当前会话的上下文
- 最近的对话历史
- 临时的工作状态
### 长期记忆
- 项目架构和设计决策
- 常见问题和解决方案
- 代码规范和最佳实践
- 用户偏好和习惯
## 心跳任务
### 每日任务(9:00)
- 检查 GitHub 新 PR
- 汇总未解决的 Issues
- 推送每日技术摘要
### 每周任务(周一 10:00)
- 生成周报
- 分析代码质量趋势
- 提醒待办事项
## 群聊礼仪
### 响应规则
- 被 @提及时立即响应
- 技术问题主动参与讨论
- 非技术话题保持沉默
### 消息格式
- 代码使用代码块格式
- 长消息分段发送
- 重要信息使用引用格式
## 协作规则
### 与其他 Agent 协作
- 技术问题转给 Coder Agent
- 用户支持转给 Support Agent
- 项目管理转给 PM Agent
### 权限边界
- 只能访问技术相关的仓库
- 不能修改生产环境配置
- 敏感操作需要人工确认
</code></pre>
<h3 id="identitymd---身份配置">IDENTITY.md - 身份配置</h3>
<pre><code class="language-markdown"># IDENTITY.md - Who Am I?
- **Name:** CodeMaster
- **Creature:** Code Whisper
- **Vibe:** Technical, precise, helpful
- **Emoji:** 💻
- **Avatar:**
</code></pre>
<p>身份配置好后,可以输入以下命令设置身份:</p>
<pre><code class="language-bash">openclaw agents set-identity --agent coder --from-identity
</code></pre>
<h2 id="路由配置">路由配置</h2>
<h3 id="基于渠道路由">基于渠道路由</h3>
<p>将不同渠道的消息路由到不同的 Agent:</p>
<pre><code class="language-json">{
"bindings":
{
"type": "route",
"agentId": "coder", #agent名
"match": {
"channel": "qqbot",//信息渠道为qqbot
"accountId": "default",
"textMatches": ["代码", "编程", "bug", "审查", "技术", "Python", "JavaScript", "Java", "Go", "C++", "算法", "数据结构", "调试", "优化", "重构", "测试", "部署"]
},
"priority": 10
},
{
"type": "route",
"agentId": "main",
"match": {
"channel": "qqbot",
"accountId": "default"
},
"priority": 1
}
],
}
</code></pre>
<p>检查QQBot状态</p>
<pre><code class="language-bash">openclaw channels status --probe
</code></pre>
<p>然后就可以在qqbot上的机器人上测试了,如:</p>
<p> 你好,你介绍一下你自己吧。</p>
<h2 id="多agent待做">多Agent(待做……)</h2>
<p>通过创建多个agent,可以实现多agent团队帮助我们项目的管理与开发。</p>
<h3 id="openclaw创建agent">openclaw创建agent</h3>
<p>偶然发现,只需把任务给openclaw,事实上它可以自己创建好一个agent !!!</p>
<p>参考:</p>
<p>多 Agent 配置 | 指南 | OpenClaw 中文教程</p>
<h3 id="持续更新">持续更新……</h3><br><br>
来源:https://www.cnblogs.com/losting-R/p/19738458
頁:
[1]