b076815171
feat: 海外化改造(新加坡市场)—— 阶段 0-3
...
Tests / test (push) Has been cancelled
按 U-Claw-海外化改造方案.md 与 范围决策记录.md 实施。这是 fork,不回上游:
海外版删掉的正是上游的中国市场默认值。
阶段 0 地基
- 下载源全部改国际:脚本/CI 61 处 + lockfile 880 条 npmmirror URL 归零
(lockfile 那 880 条是 npm 的 resolved 字段,脚本层参数化根本绕不过它)
- 移除 install.ps1 里三个第三方 GitHub 加速代理,bundle 改直连 + SHA256 校验
(原来只检查"文件大于 1MB"就解压运行)
- 技能内容与分发分离:skills/manifest.json 单一来源,install.sh 1170→658 行、
install.ps1 721→546 行,两者技能内容归零
实测原来是三份不一致:skills-cn 完整、install.sh 约 40%、install.ps1 约 17%,
且 7 个通用技能只有 U 盘版有 —— 一键安装的用户一个能用的技能都没有
- Node 版本三种(v22.14/16/22.1)统一,新建 NODE_VERSION 单一来源
- Config 页三份合一。portable/Config.html 用根相对路径调 API 却只从 file:// 打开,
保存功能已静默失效两个月;现缩为 120 行重定向壳
- 测试接入 CI(此前 node --test 无人运行,所有断言形同虚设)
阶段 1 双语可用
- 浏览器侧 i18n:JSON 为源、生成经典 script(file:// 下 fetch 本地 JSON 被拦)
语言跟盘走不跟机器走:启动器写 data/.openclaw/locale.js
- 8 处硬编码 lang="zh-CN" 归零,data-i18n 覆盖 213 处,词条 en/zh 各 279 条
- B3 单框 Key:12 张模型卡 → 一个输入框,前缀识别 provider,
服务端 /api/test-key 发 1-token 请求实测,错误映射成人话
Key 填错到得知:从"直到对话失败"降到 ≤1 秒
- 区域格式 SG:DD/MM/YYYY、12 小时、S$、Asia/Singapore
(ICU 在 en-SG 下把 SGD 渲染成裸 $,与美元无法区分,故自行拼 S$)
- README 内容分叉而非翻译,§1.3 证据清单逐条清零
阶段 2 降门槛
- 启动逻辑上移 lib/start.mjs:Windows-Start.bat 220→28 行、
Mac-Start.command 235→33 行
修掉 Mac 侧两个 bug:控制台端口硬编码 18788(回落时打开死页)、
微信插件从未在 Mac 上安装
- U 盘根目录 23 → 3 个可点文件,其余进 advanced/
- 首启向导:语言 → 用途(7 角色,manifest 驱动)→ 密钥,答过不再问
- 三档界面,Simple 档隐藏一切技术名词
- 自动自愈:启动失败先自查自修,修不好导出脱敏诊断包
(Doctor 从"用户要知道去点的工具"变成后台机制)
阶段 3 技能库
- 19 个英文技能,planned 归零。sg-weather / sg-transport 的端点均实测过
- SkillHub 从 56 张手写第三方卡片改为 manifest 生成:703→125 行,中文归零
其他
- origin.json 收拢所有运行时地址,tests/origin.test.mjs 保证迁移不会漏
- portable/ 下用户可见中文归零(由断言保证)
- 82 项测试
未验证(本机无 Windows / 无 pwsh):
- install.ps1、setup.ps1 约 210 行改动从未经 PowerShell 解析器
- 完整启动路径仅在假 node + 假 openclaw 上冒烟
- 8 个 .bat 的盘根推导仅静态断言
详见 U盘实测清单.md
受阻:
- 隐藏黑窗口 —— 需代码签名证书(.vbs 已被 Windows 弃用,替代方案都要签名)
- 场景卡 —— OpenClaw 上游 Dashboard 无预填 prompt 接口
- 官网 36 条 —— 上游 2026-04-14 拆到私有仓库,无权限
2026-08-17 18:37:49 +08:00
hfshfg
6ab87c6b67
fix(portable): 微信扫码重定向/Telegram botToken/Windows 启动端口 (v2.1.11)
...
- 微信扫码卡死: config-server 跟随 IDC scaned_but_redirect 把后续轮询切到
redirect_host,刷新二维码时重置 pollBaseUrl(扫码后不再卡住等不到 confirmed)。新增测试。
- Telegram 渠道改用 botToken(顶层 telegram 只认 botToken,旧 token 别名被静默忽略 → 连不上)。
- Windows-Start: 先起 config-server 再探测 gateway 端口,从 runtime.json 读实际
configServerPort 并按该端口开 Config Center / 传给 wait-gateway(18788 被占也能开)。
- wait-gateway.bat: 用 ping 代替 timeout /t(避开 PATH 上 GNU coreutils timeout 冲突),接受 CONFIG_PORT 参数。
- Windows-Menu: IF 块内 echo 的 () 转义为 ^(^),修 v2.1.10 闪退回归。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-24 00:41:20 +08:00
hfshfg
3439db32ad
feat(portable): 内网/局域网可用性工具包 + 启动绕代理 (v2.1.10)
...
便携版在内网/离线/受控浏览器环境下"配不上、用不了、查不清"的三个痛点工具化,
Win + Mac 双端,纯 Node 零依赖脚本,中文提示由 node 打印(.bat 保持纯 ASCII,
.command 保持 LF),三端真机验证(本机 Win / Mac mini / 客户机 pc-7512)。
新增工具:
- lib/intranet-check.mjs (+ Windows-IntranetFix.bat / Mac-IntranetFix.command)
一键体检: 代理env + 直连可达 + 真发一条对话,分清"网络不通 vs 配置错"。
- lib/setup-local-model.mjs (+ Windows-LocalModel.bat / Mac-LocalModel.command)
纯命令行配 Ollama / newapi 并当场实测,绕开打不开的 Control UI;写前自动备份+merge。
- lib/resolve-no-proxy.mjs 接入 Windows-Start.bat / Mac-Start.command:
把配置里的模型 host 写进 NO_PROXY,避免系统代理劫持内网模型请求
(OpenClaw 自身只 bypass loopback CDP,不管模型 host)。
- OpenClaw-Doctor.bat / Mac-OpenClaw-Doctor.command: 官方 doctor 的隔离进阶入口
(只读、非交互;doctor 实跑慢且 TTY-only,故不进客户一键流程)。
测试: tests/windows-launchers.test.mjs 新增回归
- 客户面 .bat 必须纯 ASCII (UTF-8 中文会被 GBK cmd 读乱,报 usebackq 不是命令)
- macOS .command 必须 LF-only (CRLF 触发 bad interpreter: /bin/bash^M)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-22 18:53:21 +08:00
hfshfg
1517152a19
fix(portable): keep config center visible on startup
2026-06-20 12:16:42 +08:00
hfshfg
f715aef9c9
perf(portable): U盘启动加速 — 缓存搬本机 + 启动首屏 + 首轮预热
...
便携版从 U 盘启动慢,瓶颈在 U 盘随机小写 IO + 首屏无反馈 + 首轮冷启动。
移植 v2 u-clawx 4.0 的 4 个可在纯脚本层复刻的手段(均零依赖、静默失败):
- portable-cache.mjs: 把浏览器 user-data(几百 MB 随机小写)+ V8 编译缓存
从 U 盘搬到本机 SSD(win junction / mac symlink 重定向 .openclaw/browser,
NODE_COMPILE_CACHE 落本机)。UUID 隔离让换盘符仍命中同一份缓存。
业务数据(openclaw.json/memory/账号)仍留 U 盘,便携性不变。
- loading.html: 双击即弹的启动首屏,自轮询 /ready,gateway 真就绪后自动跳
Dashboard——天然规避"gateway 没起就开 Dashboard 拒连"(issue #46/#48)。
- prewarm.mjs: gateway 首轮预热,后台静默唤醒 config/model 子系统。
- Windows-Start.bat: 等 config-server 改写死 timeout 为动态轮询 18788。
- wait-gateway.bat 退居兜底(首屏页负责主跳转)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 16:38:05 +08:00
hfshfg
0d88c9b0cc
chore(portable): 回归纯开源 — 移除指纹/自动开户/崩溃上报
...
去掉不适合开源的商业逻辑,保持一个纯粹的开源 U 盘工具:
- 删除设备指纹 (fingerprint.mjs)、虾盘云自动开户 (bootstrap-xiapan.mjs /
xiapan-client.mjs)、自动崩溃上报 (report-bug.mjs),portable 和 Electron 两份都删
- 启动脚本去掉绑定指纹调用 + 全部 --auto 自动上报;保留 bonjour 禁用与括号转义
- config-server 删掉 /api/xiapan/* 和 /api/report-bug 端点
- Config.html:虾盘云改为普通「首选」卡片,强调中转站 / 国内外全部大模型,
和其它 provider 一样需用户自填 Key(去 u-claw.org/cloud.html 注册),不再自动开户
- 报 Bug 表单改为指向 GitHub Issue,不再上传日志
- README / release notes / CLAUDE.md 文案改为「选模型填 Key,不绑定设备、不打指纹、不上传数据」
- OPENCLAW_VERSION 跟进最新龙虾版本 2026.6.6 → 2026.6.8
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-17 11:47:19 +08:00
hfshfg
b1468d455c
feat(portable): 虾盘云插上即用 — 自动开户送试用额度 + Config 首选卡片
...
解决「插上 U 盘选虾盘云模型却 Invalid token」:之前客户端只生成
sk-uc-指纹 key 写进配置,但后台从没注册该 token。
- xiapan-client.mjs 加 provisionApiKey():把设备指纹送到虾盘云后台
(POST api.u-claw.org/internal/token/provision) 自动开一个带试用额度
的 token,返回真正可用的 key。
- bootstrap-xiapan.mjs 改:首启(配置无 cloud key 时)调 provision 拿真
key 写配置;已有 key 则幂等跳过;provision 失败回退指纹 key 不阻塞启动。
后端按 deviceId 幂等,刷不出额度。
- Config.html:模型网格加「虾盘云」首选卡片(一个 key 用全部模型,无需
申请,选中直接启动跳过填 Key);更新过时型号(MiniMax-M2/kimi-k2/
qwen-plus/doubao-seed-1.6/gpt-5.4/claude-opus-4-6/deepseek-v4);
banner 文案改为「已含试用额度」。
注:开户/送额度的商业逻辑在闭源服务端(token-key-service),开源仓只放
调用机制。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-15 16:01:35 +08:00
hfshfg
270cf4bda0
fix(portable): gateway 启动卡死/Dashboard 拒连 (issue #46/#48)
...
根因:Windows-Start.bat 在 gateway 启动【前】就打开 http://127.0.0.1:18789 ,
而慢 U 盘上 OpenClaw 首次启动要几十秒 staging bundled deps,浏览器打开时
端口还没监听 → "127.0.0.1 拒绝连接",用户以为坏了。
修复:
- 新增 lib/wait-gateway.bat:后台轮询端口(每2s,最多~5min),gateway 真正
LISTENING 后才打开 Dashboard;超时回退到 Config Center。
- Windows-Start.bat:移除 gateway 启动前的过早开浏览器,改由 wait-gateway
在 ready 后触发;加"首次启动需 30-90 秒"的明确提示。
- Mac-Start.command 本就先轮询 curl 再开浏览器,无此问题。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-15 12:23:13 +08:00
hfshfg
6eb54f8ea3
feat(portable): bug 一键上报 + 自动崩溃上报 + openclaw 升级 2026.6.6
...
Bug 上报(方便服务器侧排查便携版问题):
- 新增 lib/report-bug.mjs:算设备指纹→sk-uc apiKey,收集 openclaw 版本/
系统信息/最近日志(gzip+base64),POST 到 api.u-claw.org/recharge/bug/submit。
静默失败,绝不影响主流程。复用 fingerprint.mjs + xiapan-client.mjs。
- config-server 加 POST /api/report-bug:本地补齐信息后转发,配置中心加
「🐛 报 Bug」表单(标题/描述/是否附日志)。
- Windows-Start.bat / Mac-Start.command:gateway 端口耗尽或异常退出时
自动后台上报(Ctrl+C 正常停止不上报)。
openclaw 升级:
- OPENCLAW_VERSION 2026.4.29 → 2026.6.6(X 盘真实 USB 实测 gateway
启动/ready、Dashboard 200、旧配置兼容、虾盘云 status 均通过)。
便携性改进(借鉴 OpenClaw-Windows-Portable):
- setup.sh / 启动脚本的 npm install 设 npm_config_cache 指向盘内
app/.npm-cache,避免污染系统缓存,拔盘不留痕。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-15 11:46:42 +08:00
hfshfg
d9dd98d650
feat(portable): 便携版更新检测 — config-server 加 /api/update-status + check/publish 脚本 + CI 剥 BOM
...
config-server 新增 /api/update-status 和 /api/update-check,读取 check-update.mjs
写入的 update-available.json,便携版可提示有无新版本。publish-latest.mjs 用于
发布端生成 manifest。release.yml 顺手修打包时 .bat 的 UTF-8 BOM(BOM 会让 cmd.exe
把首条命令认错报 not internal/external command)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-30 13:12:16 +08:00
hfshfg
cc2984234b
feat(v2.1.2): align with ClawX schema + config-server port fallback
...
Three changes for v2.1.2:
1. bootstrap-xiapan now writes "agents.defaults.model.primary/fallbacks"
(uclaw-cloud/deepseek-v4-flash + 3 fallbacks) and an empty models[],
matching the ClawX commercial schema. Lets OpenClaw runtime auto-discover
models from /v1/models instead of hard-coding a list that drifts.
2. config-server tries ports 18788..18798 with EADDRINUSE fallback and
persists the live port to data/.openclaw/runtime.json so future tooling
can discover it. Fixes silent failure when a second portable instance
started while 18788 was occupied.
3. u-claw-app/package.json version 2.0.0 -> 2.1.2 so .exe/.dmg filenames
align with the release tag.
2026-05-03 00:07:09 +08:00
hfshfg
1f8224561b
fix(bootstrap): use "name" instead of "label" for model schema
...
OpenClaw 2026.4.29 renamed the per-model field from "label" to "name". The
old field is now an Unrecognized key, which fails schema validation at
gateway startup and exits OpenClaw before any HTTP listener binds.
Symptom (v2.1.0 first-launch):
- models.providers.uclaw-cloud.models.0.name: Invalid input: expected string, received undefined
- models.providers.uclaw-cloud.models.0: Unrecognized key: "label"
- throwInvalidConfig() at io-DaEsZ_NY.js:2901 -> process exit
Found via end-to-end H: drive test of v2.1.0 portable zip.
2026-05-02 18:58:05 +08:00
hfshfg
9ecbbd445c
feat: 内置虾盘云 + 设备指纹绑定 + Release 流水线
...
- 新增 portable/lib/{fingerprint,xiapan-client,bootstrap-xiapan}.mjs:
跨平台设备指纹(Win USB/disk + Mac UUID + Linux machine-id + seed 兜底)
生成 sk-uc-{fingerprint} 形式的虾盘云 apiKey,启动时 merge 到 openclaw.json
- Config.html 顶部新增「已绑定虾盘云」横幅:指纹来源 + Key + 余额 + 充值/解绑
- config-server 增加 /api/xiapan/{status,bind,unbind} 三个端点
- Electron app 在 whenReady 调 bootstrap,新增 sync-lib.js 让 build 前自动同步
- 锁 OpenClaw 版本到 2026.4.29(OPENCLAW_VERSION 单一来源)
- 删除死代码 portable/充值.html
- 新增 .github/workflows/release.yml:tag 触发,出 portable zip + Electron exe/dmg
- README 增加内置虾盘云说明 + 直接下载发行版指引
2026-05-02 17:07:42 +08:00
dongsheng123132
4fcd22d4e3
cleanup: remove Linux scripts, unify core dir, fix Intel Mac bug
...
- Delete usb-scripts/, Linux-*.sh, setup-linux-usb.sh, migrate.js
- Rename core-mac/core-win → core (with migration shims for existing USBs)
- Fix Mac-Menu.command ARM64 hardcode — now detects Intel/Apple Silicon
- setup.sh: remove Linux branch, Windows download only with --all-platforms
- Update README.md and CLAUDE.md to reflect Mac + Windows only
2026-03-14 00:08:56 +08:00
dongsheng123132
7766d59e55
merge: resolve conflict in Windows-Start.bat, add Linux scripts and maintain lib
2026-03-13 17:35:55 +08:00