OpenClaw多端同步:千问3.5-9B实现手机与电脑任务协同

1. 为什么需要跨设备任务协同?

上周六晚上11点,我正躺在沙发上用手机浏览技术文档,突然想到需要把几篇参考文章整理成Markdown笔记。如果按照传统方式,我需要:

  1. 在手机备忘录记下文章链接
  2. 第二天到电脑前手动复制到浏览器
  3. 逐个打开网页复制内容到Markdown文件

这个过程中至少有三次信息丢失的风险:可能记错链接、可能忘记操作、可能复制错内容。于是我决定用OpenClaw+千问3.5-9B搭建一个跨设备任务系统,现在只要在手机上说句话,电脑就能自动完成所有操作。

2. 基础环境搭建

2.1 电脑端部署OpenClaw

在MacBook Pro上执行以下命令完成基础部署:

curl -fsSL https://openclaw.ai/install.sh | bash
openclaw onboard --install-daemon

配置向导中选择:

  • Mode: Advanced(需要自定义模型地址)
  • Provider: Custom(后续手动配置千问3.5-9B)
  • Channels: 跳过(先完成核心功能)

2.2 接入千问3.5-9B模型

修改配置文件 ~/.openclaw/openclaw.json,添加模型配置:

{
  "models": {
    "providers": {
      "qwen-local": {
        "baseUrl": "http://localhost:8000/v1",
        "apiKey": "your-api-key",
        "api": "openai-completions",
        "models": [
          {
            "id": "qwen3.5-9b",
            "name": "千问3.5-9B本地版",
            "contextWindow": 32768
          }
        ]
      }
    }
  }
}

启动服务并验证:

openclaw gateway start
curl -X POST http://localhost:18789/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"qwen3.5-9b","messages":[{"role":"user","content":"你好"}]}'

3. 手机端控制方案设计

3.1 微信小程序方案(国内最简实现)

通过Serverless函数搭建中转服务,核心逻辑:

  1. 手机发送指令到微信小程序
  2. 云函数验证身份后转发到家庭网络
  3. OpenClaw接收指令执行任务

配置Ngrok内网穿透(开发测试用):

ngrok http 18789

在云函数中处理请求:

exports.main = async (event) => {
  const task = decodeURIComponent(event.task);
  const resp = await fetch('https://your-ngrok-url.ngrok.io/v1/chat/completions', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      model: "qwen3.5-9b",
      messages: [{role: "user", content: task}]
    })
  });
  return resp.json();
}

3.2 安全加固措施

为避免家庭网络暴露,建议:

  1. 在路由器设置IP白名单,仅允许云服务商IP访问
  2. 为OpenClaw接口添加Basic Auth认证
  3. 使用短期有效的JWT令牌

修改网关启动命令:

openclaw gateway start --auth-user admin --auth-pass your-strong-password

4. 实战案例:跨设备文档整理

4.1 场景需求分解

当我在手机上说:"把刚看的3篇AI文章整理成Markdown,保存到~/Documents/AI学习笔记"时,系统需要:

  1. 获取手机剪贴板内容(含多个URL)
  2. 在电脑端依次打开网页
  3. 提取正文核心内容
  4. 按固定模板生成Markdown
  5. 保存到指定路径

4.2 技能链配置

安装必要技能模块:

clawhub install web-extractor markdown-builder

创建自定义技能 url-processor

// ~/.openclaw/skills/url-processor/index.js
module.exports = {
  process: async (urls) => {
    const results = [];
    for (const url of urls) {
      const content = await openclaw.browser.fetch(url);
      const summary = await openclaw.llm.chat(
        `提取以下文章的核心内容,用中文输出:\n${content}`
      );
      results.push({ url, summary });
    }
    return openclaw.tools.markdown.generate(results);
  }
}

4.3 完整执行流程

  1. 手机复制多个URL后,发送语音指令
  2. 云函数收到指令,触发电脑端OpenClaw
  3. 千问3.5-9B解析意图,调用url-processor技能
  4. 技能模块依次处理每个URL,生成Markdown
  5. 结果保存到本地并同步返回手机通知

5. 踩坑与优化记录

5.1 中文编码问题

初期发现生成的Markdown在Windows记事本显示乱码,解决方案:

// 在保存文件时显式指定编码
fs.writeFileSync(path, content, { encoding: 'utf-8' });

5.2 长文本处理优化

千问3.5-9B的32K上下文在实际测试中处理10K以上文本时会出现响应变慢,通过以下策略改善:

  • 先让模型提取摘要再处理细节
  • 设置超时自动分段:openclaw.config.set('llm.timeout', 30000)
  • 启用流式传输避免长时间等待

5.3 手机指令模糊匹配

测试发现语音转文字可能存在误差,在云函数添加预处理层:

const fuzzyMatch = (text) => {
  const patterns = [
    { regex: /整理.*?文章/, action: 'process-urls' },
    { regex: /保存到(.+?)$/, action: 'set-output-path' }
  ];
  return patterns.find(p => text.match(p.regex));
}

6. 效果验证与使用建议

经过两周的实际使用,这个系统帮我完成了:

  • 37次跨设备文档整理
  • 23次即时信息查询(手机问→电脑查→手机回)
  • 15次定时任务设置(如"明早9点打开会议链接")

几点实用建议:

  1. 家庭网络建议使用DDNS代替Ngrok
  2. 复杂任务建议拆分成子任务链
  3. 关键操作前添加确认步骤
  4. 定期检查 ~/.openclaw/logs/ 下的执行记录

这套方案最让我惊喜的是千问3.5-9B对中文指令的理解能力,即使是"把昨天那个项目资料发我微信"这样的模糊指令,配合适当的上下文记忆也能准确执行。现在我的手机和电脑终于不再是割裂的工具,而成为了真正的智能工作伙伴。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐