手搓你的专属AI特工:从Woclaw仓库开启OpenClaw个人定制之旅

⚠️ 前方高能预警:本文长达3000字,包含密集技术细节、代码示例和深度分析。如果你只想快速动手,不想听我“絮叨”,那么——请直接点击右上角,Fork这个badhope/Woclaw仓库,然后关闭此页面。剩下的勇士们,我们出发!

📜 目录


🤔 为何要“手搓”AI特工?

OpenClaw横空出世,犹如AI Agent领域的“安卓开源”。各大厂商(如微软Copilot、阿里通义、百度文心)都在推云端AI助手服务,这确实方便,但你真的愿意把自己所有的操作习惯、工作流、甚至隐私数据都交给“云上他人”吗?

专业视角:AI基础设施正从“中心化服务”向“边缘化部署”演进。本地化、可定制的AI代理(Agent)是未来核心技术栈之一,它代表着:

  • 数据主权:所有计算和决策在本地完成,敏感数据永不外泄。
  • 个性化深度:可以针对你的特定工作流、技术栈、甚至个人怪癖进行深度定制。
  • 成本可控:一次部署,长期使用,无需为API调用次数支付持续费用。
  • 技术储备:掌握本地AI Agent部署与开发,是在AI原生应用浪潮中建立核心竞争力的关键。

情绪化表达:别再当“云上韭菜”了!别人的AI再好,也是别人的规则。今天,我们要亲手打造一个只听你命令、只懂你需求、只在你电脑上撒野的专属数字伙伴。这不仅仅是配置软件,这是创造生命(数字意义上的)!


🚀 开局:解剖Woclaw

badhope/Woclaw 是一个基于OpenClaw的优秀实践仓库。它不是一个简单的复刻,而是提供了清晰的目录结构和配置范例,是我们“手搓”之旅的完美起点。

其核心结构揭示了OpenClaw的个人化配置精髓:

Woclaw/
├── agents/               # 你的特工们在这里安家
│   ├── coder/            # 比如:编码特工
│   │   ├── IDENTITY.md   # 特工的身份定义
│   │   ├── SOUL.md       # 特工的“灵魂”(行为准则)
│   │   └── openclaw.json # 特工的启动配置
│   └── researcher/       # 研究特工
├── skills/               # 共享技能库(工具集)
├── configs/              # 主配置文件
├── data/                 # 运行数据(记忆、会话等)
└── README.md             # 你的作战手册

这个结构完美体现了OpenClaw“安装与数据分离、高度模块化、文件化存储”的设计哲学。我们将在此基础上进行构建。


🛠️ 第一步:环境熔炉——搭建你的数字地基

OpenClaw运行在Node.js生态之上。请务必使用Node.js 22或更高版本,这是官方硬性要求。

Windows/Mac/Linux 基础环境配置

# 1. 检查Node.js版本,不够22就快去官网下载安装!
node -v

# 2. 强烈推荐使用pnpm,依赖管理更快更可靠(npm或yarn也可)
npm install -g pnpm

# 3. Fork并克隆我们的“蓝图”仓库 Woclaw
git clone https://github.com/你的用户名/Woclaw.git my-openclaw
cd my-openclaw

# 4. 安装项目依赖
pnpm install # 或 npm install

关键点:依赖安装过程可能会因网络问题卡住。如果遇到 node-gyp 编译错误,通常需要安装对应平台的构建工具(如Windows的 windows-build-tools)。

Docker化部署(高级玩法,可选)

如果你追求环境纯净和可复现性,Docker是最佳选择。Woclaw仓库可能提供了 docker-compose.yml 的雏形,我们可以强化它:

# docker-compose.yml - 强化版
version: '3.8'
services:
  openclaw:
    image: node:22-alpine
    container_name: my_openclaw
    working_dir: /app
    volumes:
      - ./agents:/app/agents    # 将本地的agents目录挂载进去
      - ./configs:/app/configs  # 挂载配置
      - ./data:/app/data        # 持久化数据
      - ./skills:/app/skills    # 挂载技能
    ports:
      - "3000:3000"             # Web UI端口
    command: sh -c "pnpm install && pnpm start"
    restart: unless-stopped
    # 环境变量可以在这里注入
    environment:
      - NODE_ENV=production

运行:docker-compose up -d。你的OpenClaw就在一个隔离的容器中运行了。


🧠 第二步:智能注入——连接你的“大脑”

一个没有“大脑”的Agent只是空壳。OpenClaw支持多种AI模型后端。

方案A:使用云端大模型API(最简单)

configs/openclaw.json (或环境变量)中配置你的API密钥:

{
  "model": {
    "provider": "openai", // 或 "anthropic", "qwen", "deepseek" 等
    "apiKey": "sk-your-api-key-here", // 请务必保管好!
    "baseURL": "https://api.openai.com/v1", // 若用国内镜像或代理可改此处
    "modelName": "gpt-4o-mini" // 根据你的预算和需求选择模型
  },
  "gateway": {
    "port": 3000
  }
}

⚠️ 安全警告:永远不要将包含真实API Key的配置文件提交到Git!使用 .env 文件并通过 process.env.API_KEY 读取,并将 .env 加入 .gitignore

方案B:本地大脑部署(硬核之选,隐私至上)

这才是“手搓”的精髓!使用 Ollamallama.cpp 在本地运行开源大模型。

  1. 安装并运行Ollama

    # Linux/macOS 一键安装
    curl -fsSL https://ollama.com/install.sh | sh
    # 拉取一个模型(例如小巧强大的Qwen2.5)
    ollama pull qwen2.5:7b
    # 启动服务
    ollama serve
    
  2. 配置OpenClaw连接本地模型
    修改 configs/openclaw.json

    {
      "model": {
        "provider": "ollama", // 指定Ollama提供商
        "baseURL": "http://localhost:11434/v1", // Ollama的本地API地址
        "modelName": "qwen2.5:7b", // 你拉取的模型名称
        "apiKey": "not-needed" // 本地运行通常无需密钥
      }
    }
    

    现在,你的AI特工完全在本地思考,数据零出户


🤖 第三步:创造分身——定义你的专属特工

让我们在 agents/ 目录下创造第一个特工,例如一个“全能编程助手”。

  1. 创建特工目录

    mkdir -p agents/super_coder
    cd agents/super_coder
    
  2. 定义特工身份 (IDENTITY.md)

    # Super Coder - 你的全能编程伙伴
    
    ## 我是谁?
    我是Super Coder,一个深度集成在你开发环境中的AI编程专家。我精通Python、JavaScript、Go、Rust等主流语言,熟悉React、Vue、Spring等前后端框架。我的使命是理解你的意图,并提供最优的代码解决方案。
    
    ## 我的原则
    1.  **安全第一**:绝不生成已知有安全漏洞的代码模式。
    2.  **解释清晰**:不仅给代码,更解释为什么这么写,提供多种方案对比。
    3.  **符合规范**:代码风格严格遵循项目已有的ESLint、Pylint等规则。
    4.  **关注前沿**:时刻留意GitHub Trending和AI编程的最新进展(如Cursor、Devika)。
    

    这个文件定义了特工的“人格”背景,是引导模型生成符合预期内容的关键。

  3. 注入特工灵魂 (SOUL.md)

    # Super Coder 行为准则
    
    ## 核心响应模式
    - 当用户提出编程问题时,先**分析问题本质**,再给出代码。
    - 代码块必须包含**语言类型标注**,如 \`\`\`python。
    - 复杂代码必须附带**简要注释**和**使用示例**。
    - 如果用户需求模糊,主动**提问澄清**,而不是猜测。
    
    ## 特定场景指令
    - **调试请求**:逐步分析,假设可能原因,提供验证方法。
    - **代码审查**:从性能、安全性、可读性、可维护性四个维度给出反馈。
    - **学习新框架**:提供官方文档链接、核心概念解释和一个“Hello World”级别的示例。
    - **优化代码**:同时给出优化前和优化后的代码,并量化提升(如时间复杂度从O(n²)到O(n log n))。
    

    SOUL.md 是更具体、更可操作的“系统提示词”,直接塑造特工的对话和行为风格。

  4. 配置激活参数 (openclaw.json)

    {
      "agent": {
        "name": "Super Coder",
        "type": "assistant",
        "description": "A full-stack coding expert assistant.",
        "identityPath": "./IDENTITY.md",
        "soulPath": "./SOUL.md"
      },
      "model": {
        // 可以继承全局配置,也可以在这里覆盖
        "temperature": 0.1, // 低temperature,让代码生成更稳定、少胡言乱语
        "maxTokens": 4000   // 足够生成较长的代码段
      }
    }
    

⚙️ 第四步:技能武装——让特工“无所不能”

OpenClaw的真正威力在于其**技能(Skills)**系统。特工可以通过调用技能来操作你的电脑、访问网络或处理特定任务。

示例技能:文件查找与操作

查看 skills/ 目录,Woclaw可能提供了一些基础技能。我们来创建一个自定义技能 fileManager.js

// skills/fileManager.js
const fs = require('fs').promises;
const path = require('path');

module.exports = {
  name: 'file_manager',
  description: '管理本地文件系统:查找、读取、创建、删除文件。',
  parameters: {
    type: 'object',
    properties: {
      action: {
        type: 'string',
        enum: ['list', 'read', 'write', 'delete', 'find'],
        description: '要执行的操作。'
      },
      targetPath: {
        type: 'string',
        description: '文件或目录路径。'
      },
      content: {
        type: 'string',
        description: '当action为write时,要写入的内容。'
      },
      keyword: {
        type: 'string',
        description: '当action为find时,用于搜索的关键字。'
      }
    },
    required: ['action', 'targetPath']
  },
  async execute(args) {
    const { action, targetPath, content, keyword } = args;
    const fullPath = path.resolve(process.cwd(), targetPath);

    try {
      switch (action) {
        case 'list':
          const items = await fs.readdir(fullPath);
          return { success: true, files: items };
        case 'read':
          const data = await fs.readFile(fullPath, 'utf-8');
          return { success: true, content: data };
        case 'write':
          await fs.writeFile(fullPath, content, 'utf-8');
          return { success: true, message: `文件已写入: ${fullPath}` };
        case 'delete':
          await fs.unlink(fullPath);
          return { success: true, message: `文件已删除: ${fullPath}` };
        case 'find':
          // 简单的递归查找(仅示例,生产环境需优化)
          const results = [];
          async function search(dir) {
            const entries = await fs.readdir(dir, { withFileTypes: true });
            for (const entry of entries) {
              const entryPath = path.join(dir, entry.name);
              if (entry.name.includes(keyword)) {
                results.push(entryPath);
              }
              if (entry.isDirectory()) {
                await search(entryPath);
              }
            }
          }
          await search(fullPath);
          return { success: true, matches: results };
        default:
          return { success: false, error: `未知操作: ${action}` };
      }
    } catch (error) {
      return { success: false, error: error.message };
    }
  }
};

将技能注册到特工:在 agents/super_coder/openclaw.json 中添加:

{
  "agent": { ... },
  "skills": [
    "file_manager", // 引用我们定义的技能名
    // 可以添加更多内置或自定义技能,如 "web_search", "shell_exec"
  ]
}

现在,你就可以对你的特工说:“帮我查找项目里所有包含‘TODO’的JavaScript文件”,它就能调用 file_manager 技能来完成任务了。


🔗 第五步:与世对话——打通外部世界接口

一个孤立的特工价值有限。OpenClaw可以通过**网关(Gateway)插件(Plugin)**连接到外部系统。

配置Web UI网关

默认情况下,启动OpenClaw后会运行一个Web UI服务器(通常在 http://localhost:3000)。这是与你的特工进行聊天交互的最直接方式。确保 configs/openclaw.json 中网关端口配置正确:

{
  "gateway": {
    "port": 3000,
    "host": "0.0.0.0" // 如果需要远程访问(注意安全风险!)
  }
}

集成钉钉/微信等IM工具(企业级场景)

参考OpenClaw社区生态,例如 openclaw-channel-dingtalk 插件,可以将你的特工变成钉钉群里的一个机器人。

核心配置步骤

  1. 安装插件pnpm add openclaw-channel-dingtalk
  2. 创建钉钉应用:在钉钉开放平台创建一个“企业内部”应用,获取 AppKeyAppSecret
  3. 配置Webhook:在插件配置中填入上述凭证,并设置钉钉应用的消息接收地址为你的OpenClaw网关地址(如 https://your-domain.com:3000/dingtalk/webhook)。
  4. 发布与对话:在钉钉群里@你的机器人,它就能像真人一样回应了。

这种集成让你的AI特工从个人工具升级为团队协作者


🚦 第六步:启动与调优——让你的特工跑起来

启动命令

在项目根目录(你的 my-openclaw)下运行:

# 开发模式启动,带有热重载
pnpm start:dev

# 或者,生产模式启动
pnpm start

如果一切顺利,你将在终端看到服务启动成功的日志,并可以通过浏览器访问 http://localhost:3000 看到Web UI界面。

遇到问题?典型排错指南

  1. 端口占用:如果3000端口被占用,修改 configs/openclaw.json 中的 gateway.port
  2. API Key错误:检查 .env 文件或环境变量中的API密钥是否正确,是否有余额。
  3. Ollama连接失败:确保 ollama serve 正在运行,并且 baseURL 配置正确(默认 http://localhost:11434)。
  4. 技能加载失败:检查技能JS文件的语法,以及 openclaw.json 中技能名称的引用是否正确。
  5. Web UI无法访问:检查防火墙设置,是否允许了对应端口的入站连接。

🔥 进阶:时事热点赋能与未来展望

将你的OpenClaw特工与当前技术热点结合,能极大提升其价值:

  1. 接入“AI搜索”:利用 web_search 类技能,让你的特工能实时获取信息。结合RSS或特定API(如某个新闻或科技资讯站),每天早上让它为你生成一份个性化技术简报
  2. 化身“Sora提示词工程师”:创建一个专精于文生视频提示词(Prompt)的特工。在 SOUL.md 中注入Sora、Runway等模型的提示词撰写规则,让它帮你将模糊的想法转化为高质量的视频生成指令。
  3. 应对“AI PC”浪潮:随着微软推出Copilot+ PC等AI PC概念,本地化AI能力成为核心卖点。你的OpenClaw特工正是AI PC的软件灵魂。可以专门优化一个在低功耗模式下(如用CPU运行量化小模型)仍能处理文档摘要、代码建议等任务的“节能特工”。
  4. 拥抱“多模态”:虽然当前OpenClaw以文本交互为主,但未来可期。你可以为其集成本地的多模态模型(如LLaVA),通过技能让特工分析你上传的截图、图表,甚至用语音与你交互。

最终,你获得的不仅是一个工具,而是一个可无限进化、深度融入你数字工作流的智能伙伴。你定义它的身份,塑造它的灵魂,武装它的技能,选择它连接的世界。这,就是“手搓”的终极魅力。

现在,回到你的终端,输入 pnpm start。你的AI特工,即将苏醒。


参考来源

 

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐