蓝香蕉代码 |【鸿蒙电脑使用openclaw小龙虾】

蓝香蕉代码 |【鸿蒙电脑使用openclaw小龙虾】

鸿蒙电脑AI-openclaw

关于openclaw

上次我们讲到鸿蒙电脑如何使用claude code/iflow,这次我们再尝试使用下openclaw

openclaw:钢铁侠的贾维斯

OpenClaw 是一个开源的 AI Agent 框架,本质上是一个能“主动做事”的个人智能代理平台,而不仅仅是一个聊天机器人。它通过自然语言指令,连接大模型与本地系统工具,实现对电脑文件、应用、浏览器、邮件等资源的自动化操作,被许多用户称为“能指挥电脑的数字员工”或“24小时待命的贾维斯”。

核心能力与特点

  • 任务自动化执行‌
    OpenClaw 能理解并拆解自然语言指令,自动完成一系列复杂操作,例如:这些任务无需编程,仅靠日常语言即可触发。
    ‌本地优先,隐私可控‌,它运行在用户自己的设备(如个人电脑或云服务器)上,所有数据处理和记忆存储都在本地完成,避免敏感信息上传至第三方平台,保障隐私安全。
    • “整理本周工作邮件并生成待办清单”
    • “比价10款笔记本,选出性价比最高的并发送链接给我”
    • “每天早上8点从新闻网站抓取AI领域动态,汇总成简报发到钉钉群”
  • 跨平台协同与多模型兼容‌
    支持通过 WhatsApp、Telegram、钉钉、飞书等通讯工具接收指令,可调用阿里云百炼、OpenAI、通义千问等不同大模型,根据任务需求切换 Qwen3-max(强推理)、GPT-4(通用强)等模型,灵活适配场景。
  • 系统级操作权限‌
    具备读写文件、运行脚本、控制浏览器、管理日程等系统级能力,真正实现“替你动手”,而非仅回答问题。

前身与品牌演变‌

OpenClaw 前身为 Clawdbot 和 Moltbot,因商标问题经历更名,2026年初正式统一为 OpenClaw。原有用户配置可无缝迁移,功能架构未变。

注意点

尽管 OpenClaw 功能强大,但也存在潜在风险:由于其拥有高系统权限,若未妥善管理工具调用权限,可能引发数据泄露或误操作,因此建议在可信环境中使用,并启用访问控制机制。

鸿蒙电脑部署OpenClaw

通用工具部署

两款软件均需要海量的工具集,尤其是git、Node.js

  • 设备:我使用的MateBook Pro已经升级到6.0.0.120版本,建议升级到该版本以上
  • 代码管理工具GitNext,作为代码管理工具下载管理三方库等,下载后可在系统终端中使用(个人推荐),也可以使用界面管理
  • Node.js: DevNode-OH,包含了Node.js运行时及npm工具等
  • 编译工具链DevBox,包含了llvmclangautoconfbashcmakemakeninjahdchnpclim4等编译基础工具,安装后可在系统的终端中使用
  • Python环境Python安装器,包含了python3.12的运行时,下载后可在终端中执行python脚本
  • Java环境BiShengJDK8-OH \ BiShengJDK17-OH,用于提供Java虚拟机环境,这个在之前的文章编译获取鸿蒙版本JDK中也讲到过(我这里使用的是JDK17)

华为应用市场下载快捷入口:
应用市场:BiShengJDK17-OH
应用市场:DevBox
应用市场:Python安装器
应用市场:GitNext
应用市场-DevNode-OH

node环境部署

  • 创建并设置node的安装目录
mkdir -p /storage/Users/currentUser/npm npm config set prefix -g /storage/Users/currentUser/npm 
  • 设置环境变量
    由于鸿蒙电脑的终端当前默认为zsh,所以需要将环境变量写入zshrc,环境变量下如下目录
/storage/Users/currentUser/.zshrc 

export PATH=$PATH:/storage/Users/currentUser/npm/bin写入.zshrc

在这里插入图片描述
  • 使能环境变量,保障环境变量写入zsh中(同时下次启动终端会继承,不用每次设置)
source /storage/Users/currentUser/.zshrc 

安装openclaw

直接通过npm安装会报错syscall spawn git,所以需要安装GitNext来使系统有git可用,记得完成sshkey配置

在这里插入图片描述
git config --global user.name "你的名字" git config --global user.email "你的邮箱" ssh-keygen -t rsa -b 4096 -C "你的邮箱" 

直接安装还有另一个问题,openclaw依赖node-llama-cpp,这是一个Node.js 绑定库,基于 llama.cpp 实现,允许开发者在本地机器上运行大型语言模型(LLMs),无需依赖云端服务。依赖本地模型能力,这里先跳过

在这里插入图片描述

最终使用的命令如下:

npm install -g --legacy-peer-deps openclaw@latest 
在这里插入图片描述


至此,openclaw安装完成

本地化适配

首次在终端中执行openclaw会弹出非应用市场扩展程序的提示,按照提示点击去设置打开开关,后续可以通过在设置中搜索运行来自非应用市场的扩展程序手动打开或者关闭

在这里插入图片描述


在这里插入图片描述


再次执行openclaw会提示是否运行xxx,点击运行即可

在这里插入图片描述
指定解释器

指定解释器有两种方案

  1. 方案2
    或者执行node openclaw执行也可以规避该问题(手动指定解释器避免系统自动寻找)

方案1:修改源码
/storage/Users/currentUser/npm/bin/openclaw第一行的#!/usr/bin/env node修改为#!/bin/env node,因为鸿蒙电脑没有usr,所以去掉usr,用/bin/env指定node解释器;
修改前:

在这里插入图片描述


修改后:

在这里插入图片描述

再次执行后,可以看到已经可以执行,但是仍然存在问题

在这里插入图片描述
修改日志

由于鸿蒙电脑中没有/tmp目录,所以这部分需要定制化修改,当前报错主要原因为openclaw的logger模块使用了默认的/tmp目录,所以我们需要定制

  1. openclaw的resolveConfigPath函数遵循用户自定义 > 现有配置文件 > 状态目录覆盖 > 默认目录的优先级解析配置文件路径;该函数遵循用户自定义 > 现有配置文件 > 状态目录覆盖 > 默认目录的优先级解析配置文件路径;
  2. 核心设计目标是兼容旧配置 + 保证路径必有值,同时通过异常捕获避免文件检查时崩溃;
  3. 环境变量 OPENCLAW_CONFIG_PATH 拥有最高优先级,是手动指定配置文件的最佳方式。我们可以通过环境变量直接指定
    首先创建配置目录
mkdir -p ~/.openclaw 

将以下代码写入./zshrc文件,生效长期的环境变量

export OPENCLAW_CONFIG_PATH="~/.openclaw/claw.json" # 指定配置文件路径 
在这里插入图片描述

然后创建配置文件~/.openclaw/claw.json,将以下配置写入文件中;

写入文件的内容

{ "logging": { "level": "info", "file": "~/.openclaw/logs/claw.log", } } 

保存好后,再次source ~/.zshrc使能环境变量,再次执行openclaw cli就可以运行了

在这里插入图片描述
设置Gateway

由于鸿蒙系统没有类似systemd lanchd等守护服务机制,所以我们需要手动拉起Gateway

openclaw gateway --port 18789 --verbose 
在这里插入图片描述


此时我们发现没有设置gateway mode,我们仍然修改~/.openclaw/claw.json文件,在其中增加以下字段

{ "logging": { "level": "info", "file": "~/.openclaw/logs/claw.log", }, "gateway": { // 新增 "mode": "local", "auth": { "mode": "token", // 认证模式(默认token) "token": "my-secret-token-123456" // 自定义认证令牌 } } } 

我们的命令中通过 --port进行了端口指定,当然也可以将该配置写入配置文件,"port": 18789, // 永久指定网关端口,这样的弊端是在端口冲突的情况下,需要反复修改配置文件或再次手动指定端口,不如一步到位,直接使用 --port 参数动态指定
恭喜你,看到以下状态,openclaw的gateway就运行起来了,可以看到首行会提示地址为http://127.0.0.1:18789/__openclaw__/canvas/

在这里插入图片描述
网页客户端验证

我们在gateway中,已经启动服务,我们可以通过浏览器访问本地服务,将上一步的地址http://127.0.0.1:18789/__openclaw__/canvas/修改为http://127.0.0.1:18789/__openclaw__/overview在浏览器打开,如下

在这里插入图片描述


由于我们只配置了token,在上述位置填入我们配置的token my-secret-token-123456,然后点击connect即可建立链接

在这里插入图片描述


此时我们在回到chat窗口既可以开启对话了

配置

由于Gateway配置只是校验是否可以正常启动,因此我们还需要继续配置真正访问的AI服务,先退出gateway配置的页面,然后执行命令启动配置

openclaw onboard 
在这里插入图片描述


现在正处在 OpenClaw 机器人的初始化(onboarding)流程中,核心是需要确认你是否理解其安全风险并选择继续安装流程,当前界面默认选中的是「No」,需要手动切换到「Yes」才能继续。通过左右键选择并使用回车确认

在这里插入图片描述


我们目前选择QuickStart,使用上下键选择回车确认

在这里插入图片描述


这里由于我们已经在配置文件中写好mode为local,因此引导程序跳过了mode配置,这里我们选择Use existing values即可

在这里插入图片描述


这里我选择智谱的GLM做演示(资金有限见谅见谅),光标切换到Z.AI(glm4.7)回车即可

在这里插入图片描述


服务商自动选择,我们直接选择通过API Key的方式,回车即可

在这里插入图片描述


此时j将API key 粘贴后回车就好,没有的同学可以访问ZHIPU·AI注册,创建API Key,注册创建的教程一大把,这里就不啰嗦了

在这里插入图片描述


这里选择保持就行

在这里插入图片描述


接下来我不暂时不需要对接聊天机器人,直接选择跳过即可

在这里插入图片描述


这里我们选择配置skills,所以回车即可

在这里插入图片描述


这里安装直接选择No,后续需要在配置就行

在这里插入图片描述


这里选择npm

在这里插入图片描述


空格选择skip继续

在这里插入图片描述


接下来一系类API Key设置可以暂时跳过

在这里插入图片描述


hook的也可以继续跳过,后续需要可以继续配置

在这里插入图片描述


此时已经完成了所有的配置,提示在鸿蒙上无法支持,我们再次手动启动gateway即可

使用GLM 4.7
  1. 执行openclaw gateway --port 18789 --verbose启动服务

新建shell窗口,执行openclaw tui可以进入终端控制台

在这里插入图片描述

在浏览器中打开http://127.0.0.1:18789/openclaw/overview在看到已经连接,在chat页面就可以聊天了

在这里插入图片描述

更新问题列表

Unsafe fallback OpenClaw temp dir

isSecureDirForUser 排查1 - 2026/02-26

最近的版本openclaw代码有些变化,dist/entry.js代码中,ensureTrustedFallbackDir方法对目录进行了判断,这里不适用鸿蒙的逻辑,所以需要进行修改,核心逻辑在isSecureDirForUser中,这里的 uid判断是不适用的,如下

在这里插入图片描述


因此将这里改为直接return true,openclaw版本变更比较快,关注这个逻辑即可,修改后如下:

在这里插入图片描述
isSecureDirForUser 排查2 - 2026-03-11

问题如下:

在这里插入图片描述


修改~/npm/lib/node_modules/openclaw/dist/subsystem-kzdGVyce.js文件,将isSecureDirForUser直接返回true即可,参考下图

在这里插入图片描述

npm 安装失败 2026-03-11

  • 问题描述:command git --no-replace-objects ls-remote ssh://[email protected]/whiskeysockets/libsignal-node.git
  • 原因:npm 安装 openclaw 时,需要从 GitHub 拉取依赖库 libsignal-node,但使用 SSH 协议 连接 GitHub 时认证失败(Permission denied (publickey))—— 你的系统没有配置有效的 SSH 公钥,或者公钥未添加到 GitHub 账号中,导致无法通过 SSH 访问私有 / 公有仓库。
    • 方案1:临时改用 HTTPS 协议拉取 GitHub 仓库(最简单)
    • 方案 2:配置 GitHub SSH 密钥(长期解决方案)
      参考链接:github官方ssh指导
      配置成功后再次执行npm install -g --legacy-peer-deps openclaw@latest
    • 方案3:手动安装依赖(备用)
      如果以上方案仍失败,可手动下载 libsignal-node 到本地,再安装:

解决方案:

# 全局配置:将 GitHub 的 SSH 链接自动转为 HTTPSgit config --global url."https://github.com/".insteadOf ssh://[email protected]/ # 然后重新执行安装命令npminstall-g --legacy-peer-deps openclaw@latest #(可选)安装完成后,如需恢复 SSH 配置,执行:# git config --global --unset url."https://github.com/".insteadOf
# 克隆仓库(HTTPS 方式)git clone https://github.com/whiskeysockets/libsignal-node.git # 进入仓库目录,安装依赖cd libsignal-node npminstall# 链接到全局(让 openclaw 能找到)npmlink# 回到原目录,安装 openclawcd..npminstall-g --legacy-peer-deps openclaw@latest 

尾声

openclaw提供了各类强大的能力,大家可以部署后尝试验证,后续有空我也也会根据鸿蒙系统进行特定的skill开发和openclaw适配,欢迎大家一起交流。

社区:OpenHarmonyPCDeveloper

QQ群:564903542ZEEKLOG
在这里插入图片描述在这里插入图片描述

附录

应用及环境相关工具开源应用
GitNext
BiShengJDKInstaller
bishengjdk-8
bishengjdk-17
DevPython-OH
DevBox
DevNode-OH|

Read more

『AI辅助Skill』掌握三大AI设计Skill:前端独立完成产品设计全流程

『AI辅助Skill』掌握三大AI设计Skill:前端独立完成产品设计全流程

📣读完这篇文章里你能收获到 1. 🎨 掌握ASCII Design快速验证产品想法的方法 2. 🖼️ 学会Wireframe Design生成专业SVG线稿 3. 💻 了解三种Frontend Design Skills的选择策略 4. 🚀 掌握完整OPC工作流,1-2天完成产品开发 文章目录 * 前言 * 一、三大AI设计Skill工作流 * 1.1 传统流程的核心痛点 * 1.2 AI辅助工作流 * 二、ASCII与Wireframe设计技能 * 2.1 ASCII Design Skill —— 秒级验证产品想法 * 2.2 Wireframe Design Skill —— 专业级设计原型 * ASCII vs SVG:如何选择 * 核心特性 * 工作流程 * 三、Frontend Design Skills选择策略 * 3.1

By Ne0inhk
【通过 Vue 实例劫持突破 Web 编辑器的粘贴限制】

【通过 Vue 实例劫持突破 Web 编辑器的粘贴限制】

逆向实战:通过 Vue 实例劫持突破 Web 编辑器的粘贴限制 * 1. 现象与初探:被禁用的 Ctrl+V * 技术视角的初步审视 * 逆向的逻辑前提 * 2. 逆向分析:寻找逻辑的“命门” * 突破口:利用 I18N 国际化配置追踪 * 核心文件追踪:锁定 `answer-code-editor.js` * 代码逻辑解剖:拦截机制的实现 * 3. 攻克方案:Vue 实例的运行时劫持 * 第一步:获取 Vue 实例的“后门” * 第二步:函数劫持(Monkey Patch) * 第三步:状态机的一致性重构 * 第四步:唤醒底层编辑器 * 4. 最终脚本:一行代码解锁限制 * 4.1 Injection

By Ne0inhk
AI对话应用接口开发全解析:同步接口+SSE流式+智能体+前端对接

AI对话应用接口开发全解析:同步接口+SSE流式+智能体+前端对接

AI对话应用接口开发 我们平时开发的大多数都是同步接口,也就是扥后端处理完再返回。但是对于AI应用,特别是响应时间较长的应用,可能会让用户失去耐心等待,因此推荐使用SSE技术实现实时流式输出,类似打字机效果,大幅度提升用户体验 开发AI对话同步接口 接下来我们先开发AI同步接口,对比学习。首先我们编写一个与"科泰旅游大师"对话的接口,使用常规同步的方式获得对话结果。 在controller包中新建ChatWithAIController,如下图所示: 编写同步接口: @RestController @RequestMapping("/ai") public class ChatWithAIController { // 注入TravelApp实例 @Resource private TravelApp travelApp; /* * 前端可以通过此方法获得一个ID * */ @GetMapping("/chat/new") public String newChat(){ return UUID.randomUUID().toString(); } // 与AI聊天(同

By Ne0inhk