杨夏陵 發表於 2026-3-19 13:34:00

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]
查看完整版本: Docker+本地部署openclaw+接入IM+创建Agent