在Windows环境下搭建AI助手系统一直是个令人头疼的问题,直到我发现了WSL2这个神器。最近我在自己的Windows 11电脑上成功部署了OpenClaw AI助手,并接入了飞书作为交互通道,整个过程比想象中顺利得多。OpenClaw是一个功能强大的AI助手框架,支持多种大语言模型接入,通过飞书等通讯工具提供智能对话服务。
这个方案最大的优势在于:
下面我就把整个部署过程详细记录下来,包括我在实际操作中踩过的坑和总结的经验技巧。
WSL2(Windows Subsystem for Linux 2)是微软推出的Linux子系统,相比第一代有了质的飞跃。我的安装环境是Windows 11 22H2版本,以下是具体步骤:
首先以管理员身份打开PowerShell,执行:
powershell复制wsl --install
这个命令会自动完成以下操作:
重要提示:安装完成后必须重启电脑才能生效。我第一次安装时忘了重启,结果各种命令都无法识别,白白浪费了半小时排查问题。
重启后,系统会自动完成Ubuntu的初始化设置,需要你创建一个Linux用户账户。这里建议用户名不要包含特殊字符,后续配置文件中会用到这个用户名。
验证安装是否成功:
powershell复制wsl -l -v
应该能看到类似这样的输出:
code复制 NAME STATE VERSION
* Ubuntu-22.04 Running 2
OpenClaw是基于Node.js开发的,所以需要先安装Node.js环境。我选择的是Node.js 18 LTS版本,这是目前最稳定的长期支持版。
在WSL的Ubuntu终端中执行:
bash复制curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
安装完成后验证版本:
bash复制node --version
npm --version
这里有个小技巧:如果你之前在其他系统上安装过Node.js,可能会遇到版本冲突问题。我建议先执行sudo apt remove --purge nodejs npm彻底清理旧版本,再重新安装。
安装OpenClaw非常简单,直接使用npm全局安装:
bash复制npm install -g openclaw
验证安装:
bash复制openclaw --version
应该能看到类似OpenClaw 2026.3.8 (3caab92)的输出。
注意:如果遇到权限问题,可以尝试加上sudo,但这不是推荐做法。更好的解决方案是修改npm的全局安装目录权限:
bash复制mkdir ~/.npm-global npm config set prefix '~/.npm-global' echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc source ~/.bashrc
OpenClaw支持多种大语言模型接入,我主要测试了MiniMax和Qwen两种:
| 模型 | 提供商 | 特点 | 适用场景 | 费用 |
|---|---|---|---|---|
| MiniMax M2.5 | MiniMax | 中文优化好,响应快 | 日常问答、客服 | 按token计费 |
| Qwen Coder | 通义千问 | 代码能力强 | 技术问答、编程 | 免费额度 |
| Qwen Vision | 通义千问 | 多模态支持 | 图像理解 | 免费额度 |
对于大多数企业场景,我推荐使用MiniMax作为主模型,Qwen作为备用模型。MiniMax在中文理解和生成方面表现更稳定,而Qwen的免费额度适合开发测试阶段使用。
OpenClaw的配置文件位于~/.openclaw/openclaw.json,我们可以通过命令生成模板:
bash复制openclaw configure
这是我的配置示例:
json复制{
"auth": {
"profiles": {
"minimax-cn:default": {
"provider": "minimax-cn",
"mode": "api_key",
"api_key": "你的MiniMax API Key"
}
}
},
"models": {
"mode": "merge",
"providers": {
"minimax-cn": {
"baseUrl": "https://api.minimaxi.com/anthropic",
"api": "anthropic-messages",
"authHeader": true,
"models": [
{
"id": "MiniMax-M2.5",
"name": "MiniMax M2.5",
"reasoning": true,
"contextWindow": 200000,
"maxTokens": 8192
}
]
},
"qwen-portal": {
"baseUrl": "https://portal.qwen.ai/v1",
"apiKey": "qwen-oauth",
"api": "openai-completions",
"models": [
{
"id": "coder-model",
"name": "Qwen Coder"
}
]
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "minimax-cn/MiniMax-M2.5",
"fallbacks": [
"qwen-portal/coder-model"
]
}
}
}
}
关键配置项说明:
auth.profiles: 配置API认证信息,MiniMax需要提前在官网申请API Keymodels.providers: 定义模型提供商及其参数agents.defaults: 设置默认使用的主模型和备用模型经验分享:contextWindow参数控制模型的记忆长度,值越大能记住的上下文越多,但也会消耗更多token。对于日常对话,200000已经足够;如果是长文档分析,可以适当调大。
飞书机器人的权限控制非常严格,必须开通以下最小必要权限:
| 权限名称 | 权限码 | 说明 |
|---|---|---|
| 读取群聊信息 | im:chat:readonly | 获取群聊基本信息 |
| 读取消息 | im:message:readonly | 读取用户发送的消息 |
| 发送消息 | im:message:send_as_bot | 以机器人身份回复消息 |
| 读取用户信息 | im:user:readonly | 识别消息发送者 |
踩坑记录:我第一次配置时漏掉了"读取用户信息"权限,导致机器人无法识别消息发送者,所有回复都变成"匿名用户"。添加这个权限后问题解决。
在应用详情页的"凭证与基础信息"板块,可以找到:
cli_a9256d37327adbc2SucsVVpSlgcrDgYkHfHf6eiSdeWwQQe1这些信息需要妥善保管,后续配置中会用到。
OpenClaw通过插件系统支持飞书接入,安装命令:
bash复制openclaw plugins install @m1heng-clawd/feishu
安装完成后,需要修改配置文件添加飞书通道配置:
json复制{
"channels": {
"feishu": {
"enabled": true,
"appId": "你的AppID",
"appSecret": "你的AppSecret",
"connectionMode": "websocket",
"domain": "feishu",
"groupPolicy": "open",
"dmPolicy": "open",
"allowFrom": ["*"]
}
},
"plugins": {
"load": {
"paths": [
"/home/你的用户名/.openclaw/extensions/feishu"
]
},
"entries": {
"feishu": {
"enabled": true
}
}
}
}
路径提示:
/home/你的用户名中的用户名就是安装WSL时创建的那个用户名,可以通过whoami命令查看。
Gateway是OpenClaw的核心组件,负责路由和协调各个模块:
bash复制openclaw gateway start
默认监听18789端口,可以通过以下命令检查状态:
bash复制openclaw gateway status
如果端口冲突,可以指定其他端口:
bash复制openclaw gateway start --port 18790
启动OpenClaw主服务:
bash复制openclaw start
建议使用后台模式运行,避免终端关闭后服务停止:
bash复制openclaw start --background
在飞书开放平台完成以下步骤:
发布后,在飞书中搜索你的应用名称,将机器人添加到群聊或直接私聊测试。
发送以下测试消息验证功能是否正常:
如果收不到回复,可以查看日志排查问题:
bash复制openclaw logs -f
OpenClaw可以集成邮箱服务,自动处理收到的邮件。以QQ邮箱为例的配置:
json复制{
"gateway": {
"mail": {
"smtp": {
"host": "smtp.qq.com",
"port": 465,
"secure": true,
"user": "your-email@qq.com",
"pass": "your-auth-code"
},
"pop3": {
"host": "pop.qq.com",
"port": 995
}
}
}
}
安全提示:QQ邮箱需要使用授权码而非登录密码。获取方法:登录QQ邮箱→设置→账户→POP3/IMAP服务→生成授权码。
配置完成后,可以通过飞书给机器人发送指令如"查收邮件",它会读取最新邮件并摘要回复。
OpenClaw的工作空间位于~/.openclaw/workspace/,主要文件说明:
AGENTS.md: 定义多个AI助手的角色和特性SOUL.md: 设置AI的性格特征和回答风格MEMORY.md: 长期记忆存储memory/目录: 日常对话记忆例如,在SOUL.md中可以这样定义AI性格:
markdown复制# 个性设定
- 名字: 小飞
- 性别: 无
- 性格: 专业但友好,回答简洁明了
- 禁忌: 不讨论政治、宗教等敏感话题
- 语言风格: 中文为主,专业术语会附带简单解释
OpenClaw支持cron格式的定时任务,例如设置工作日早上10点的打卡提醒:
bash复制openclaw cron add "0 10 * * 1-5" --task "提醒团队成员打卡"
查看现有定时任务:
bash复制openclaw cron list
删除定时任务:
bash复制openclaw cron remove 1
症状:无法连接外部API或下载包
解决方案:
bash复制# 在WSL中执行
sudo sh -c 'echo "[network]" > /etc/wsl.conf'
sudo sh -c 'echo "generateResolvConf = false" >> /etc/wsl.conf'
sudo rm /etc/resolv.conf
sudo sh -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'
然后重启WSL:
powershell复制wsl --shutdown
症状:机器人回复慢,有时超时
可能原因和解决方案:
%USERPROFILE%\.wslconfig:code复制[wsl2]
memory=4GB
swap=2GB
json复制{
"channels": {
"feishu": {
"connectionMode": "webhook"
}
}
}
症状:回答不准确或胡言乱语
优化方法:
json复制{
"agents": {
"defaults": {
"model": {
"params": {
"temperature": 0.5
}
}
}
}
}
SOUL.md中明确AI的职责范围症状:OpenClaw运行一段时间后自动退出
解决方案:
bash复制npm install -g pm2
pm2 start openclaw -- start
pm2 save
pm2 startup
bash复制openclaw logs --level error
bash复制mv ~/.openclaw /opt/openclaw
ln -s /opt/openclaw ~/.openclaw
bash复制sudo nano /etc/wsl.conf
添加:code复制[boot]
systemd=false
json复制{
"gateway": {
"cache": {
"enabled": true,
"ttl": 3600
}
}
}
json复制{
"gateway": {
"throttle": {
"enabled": true,
"rps": 5
}
}
}
json复制{
"channels": {
"feishu": {
"messageFilter": {
"prefix": "!ai"
}
}
}
}
这样只有以"!ai"开头的消息才会触发AI回复在我们的开发团队中,配置了一个专门回答技术问题的AI:
markdown复制# AGENTS.md
## 技术助手
- 模型: qwen-portal/coder-model
- 知识库: 包含公司内部技术文档
- 能力:
- 解答编程问题
- 给出代码示例
- 解释错误信息
- 回复风格: 直接给出解决方案,附带参考资料链接
使用效果:开发人员遇到问题时,直接在飞书群里@技术助手提问,平均响应时间3秒,准确率约85%。
配置一个专门处理会议记录的AI:
json复制{
"agents": {
"meeting": {
"model": "minimax-cn/MiniMax-M2.5",
"instructions": "你是一个专业的会议秘书,需要从聊天记录中提取关键信息,生成包含以下内容的会议纪要:1. 讨论主题 2. 重要观点 3. 待办事项 4. 下一步计划。使用Markdown格式,中英文双语输出。"
}
}
}
使用方法:在飞书会议群中,发送"生成纪要",AI会自动分析最近的聊天记录并生成格式化的会议纪要。
通过定时任务和邮件功能的结合,实现团队日报自动收集:
bash复制openclaw cron add "0 18 * * 1-5" --task "发送日报提醒"
markdown复制# memory/daily_report_template.md
主题:日报提交 - {date}
请回复本邮件提交今日工作内容:
- 完成事项
- 遇到的问题
- 明日计划
bash复制echo ".openclaw/" >> ~/.gitignore
bash复制export OPENCLAW_FEISHU_APPSECRET='your_secret'
然后在配置文件中引用:json复制{
"channels": {
"feishu": {
"appSecret": "${OPENCLAW_FEISHU_APPSECRET}"
}
}
}
json复制{
"channels": {
"feishu": {
"allowFrom": ["user1@company.com", "user2@company.com"]
}
}
}
json复制{
"gateway": {
"admin": {
"enabled": true,
"password": "your_strong_password"
}
}
}
bash复制openclaw logs --clean --days 7
json复制{
"gateway": {
"logging": {
"redact": ["password", "api_key", "token"]
}
}
}
bash复制openclaw gateway status
openclaw ps
bash复制tar -czvf openclaw_backup_$(date +%Y%m%d).tar.gz ~/.openclaw
bash复制npm update -g openclaw
bash复制openclaw plugins update --all
bash复制openclaw changelog
bash复制openclaw configure --reset
bash复制openclaw start --debug
bash复制npm uninstall -g openclaw
rm -rf ~/.openclaw
npm install -g openclaw
OpenClaw支持自定义插件扩展功能。基本步骤:
创建插件目录结构
bash复制mkdir -p ~/openclaw-plugins/my-plugin/src
cd ~/openclaw-plugins/my-plugin
npm init -y
编写插件入口文件src/index.js:
javascript复制module.exports = {
name: 'my-plugin',
version: '0.1.0',
register: async (server, options) => {
server.route({
method: 'GET',
path: '/my-api',
handler: (request) => {
return { success: true, message: 'Hello from my plugin!' };
}
});
}
};
在配置文件中启用插件:
json复制{
"plugins": {
"load": {
"paths": [
"/home/yourname/openclaw-plugins/my-plugin"
]
}
}
}
通过OpenClaw的HTTP API可以与其他系统集成:
启用API网关
json复制{
"gateway": {
"http": {
"enabled": true,
"port": 8080,
"auth": {
"type": "jwt"
}
}
}
}
调用示例(获取AI响应):
bash复制curl -X POST http://localhost:8080/api/v1/chat \
-H "Authorization: Bearer your_token" \
-H "Content-Type: application/json" \
-d '{"message": "你好", "context": {}}'
将企业文档导入AI知识库:
准备文档目录
bash复制mkdir -p ~/.openclaw/workspace/knowledge
使用OpenClaw CLI导入:
bash复制openclaw knowledge import --format markdown --dir ~/company-docs
在AGENTS.md中配置:
markdown复制## 公司知识专家
- 知识库: company-knowledge
- 指令: 回答问题时优先参考知识库内容
json复制{
"auth": {
"profiles": {
"minimax-cn:default": {
"quota": {
"monthly": 1000000,
"alertAt": 800000
}
}
}
}
}
powershell复制wsl --system info
bash复制openclaw cron add "0 9 * * 1-5" --task "start"
openclaw cron add "0 19 * * 1-5" --task "stop"
| 方案 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| WSL2 | 开发方便,资源占用少 | 性能略低 | 个人开发测试 |
| 云服务器 | 性能好,稳定 | 需要付费 | 生产环境 |
| Docker | 环境隔离,易迁移 | 配置复杂 | 团队协作 |
| 平台 | 优点 | 缺点 | 适合企业类型 |
|---|---|---|---|
| 飞书 | 集成度高,API丰富 | 需要企业账号 | 中大型企业 |
| 钉钉 | 审批流支持好 | 文档能力较弱 | 传统企业 |
| 微信 | 用户基数大 | 接口限制多 | 小微企业 |
| 模型 | 优势领域 | 成本 | 响应速度 |
|---|---|---|---|
| MiniMax | 中文理解 | 中等 | 快 |
| Qwen | 代码生成 | 低 | 中等 |
| OpenAI | 多语言 | 高 | 慢 |
经过一个月的实际使用,这个基于WSL2的OpenClaw飞书助手已经成为我们团队不可或缺的工具。它平均每天处理200+条消息,节省了大量重复性工作的时间。最让我惊喜的是它的稳定性 - 连续运行30天没有出现任何崩溃或内存泄漏问题。