
只给一个 logo 和名字就能打包出定制桌面客户端Qwen Code 品牌构建快速指南【免费下载链接】qwen-codeAn open-source AI coding agent that lives in your terminal.项目地址: https://gitcode.com/GitHub_Trending/qw/qwen-code想象客户想拿到一套贴着自家 Logo 的桌面客户端却不想自己重写任何界面代码。Qwen Code 的 Tauri 桌面壳packages/desktop-shell里内置了一个叫Desktop Brand Builder的品牌构建技能你只交出一个品牌名和一张 logo它就能替你产出一套带独立皮肤、独立安装包的白标客户端。这篇带你把这套 Qwen Code 品牌构建流程从零跑通。它替你做了什么一次配置整窗换肤 你把两样输入交给它之后真正干活的是技能自带的brand-create.mjs放在packages/desktop-shell/.agents/skills/desktop-brand-builder/目录下。这个脚本一口气做完三件你不想手动碰的事改写src-tauri/tauri.conf.json把应用名、Bundle Identifier、描述和更新端点换成品牌值用你的 logo 重新生成src-tauri/icons/里那一整套尺寸各异的图标给bootstrap/启动 UI 换品牌名、换 logo让客户开机第一眼就看到自己的牌子。先别急着手动去改这三个文件——脚本才是唯一的权威来源它把配置补丁、图标重建、启动页换肤一次做完你只负责核对结果。这里藏着一个容易踩的坑脚本开头会先检查productName是不是还叫Qwen Code Desktop一旦发现已经被改过就直接报错停下、不写任何文件因为它是一次性的同一份克隆里不能跑第二遍。另外它调 Tauri CLI 生成图标时不走 shell、把 logo 路径当普通参数直接传过去替换品牌名时也会按 JS 和 HTML 两种语境分别转义——配置一不对脚本会先报错停下而不是悄悄交付一个坏包。你只需要准备两样东西其余它自己推输入真的很少通常就这两样外加一个可选的websitebrandId品牌标识要满足^[a-z][a-z0-9-]*$也就是小写字母开头、只能带小写字母数字和短横线logo本地图片路径文件必须真实存在建议给一张 1024×1024 的方形 PNG。至于应用名、Bundle Identifier、产物前缀、版权、更新端点你都不用给缺什么它就按下面的规则自己推appName把brandId按短横线拆开、每段首字母抬高再空格拼接acme-ai就变成Acme AIartifactPrefix同样的抬高处理但用短横线连起来acme-ai变成Acme-AIappId若website有合法域名就把域名标签反过来加.desktophttps://acme.ai推出ai.acme.desktop推不出来时回落到app.brandId.desktopupdaterEndpoints默认就是空数组。有个贴心细节ai、api、cli、ide、sdk、ui、url这类缩写词会整体大写所以acme-cli推出来的显示名是Acme CLI而不是Acme Cli。操作主线从干净克隆到产出安装包⚙️ 全程在一个隔离的干净克隆里进行别污染你手头的仓库。先拉一份只含main的分支git clone --branch main --single-branch https://gitcode.com/GitHub_Trending/qw/qwen-code brand-builds/brandId-时间戳/qwen-code再git checkout -B brand-brandId origin/main。记住clone 或 checkout 只要失败就停下来报告别装作分支建好了继续往下走。接着在构建目录里写一份临时的brand.jsonlogo 记得填绝对路径{ brandId: acme-ai, logo: /absolute/path/to/logo.png, website: https://acme.ai }依赖要装两遍先npm install装仓库根部的build:runtime会用到根部的cross-env、esbuild 等工具再进packages/desktop-shell跑npm install --workspacesfalse装它自己的。然后直接用纯 Node 启动品牌脚本node packages/desktop-shell/.agents/skills/desktop-brand-builder/scripts/brand-create.mjs \ --shell-root /absolute/path/to/qwen-code/packages/desktop-shell \ --config /absolute/path/to/brand.json脚本跑完会吐一份 JSON 报告把最终appName、appId、artifactPrefix、更新端点以及被改过的tauri.conf.json、图标结果、bootstrap 文件列表都列给你。核对无误后进packages/desktop-shell打包npm run build:runtime --workspacesfalse npx tauri build产物会落在src-tauri/target/release/bundle/下按平台分成dmg/、nsis/、appimage/、deb/四个子目录。跨平台编译与更新源的两条红线 第一条红线是交叉编译build:runtime会根据QWEN_DESKTOP_TARGET环境变量决定给哪套平台捆绑 Node 运行时不填就按当前宿主来。当你打包的目标平台跟当前机器不同时每次执行npx tauri build --target ...之前都要带着对应的QWEN_DESKTOP_TARGET比如aarch64-apple-darwin把build:runtime重跑一遍。漏掉这步包里塞进去的就是错误架构的 Node 二进制客户一启动就报 exec format error。要出all的话就得逐个目标平台重复重跑 build:runtime → tauri build而且只有产物文件真的躺在src-tauri/target/triple/release/bundle/里才算数。第二条红线是更新源隔离品牌包永远不该去轮询官方 Qwen Code 的更新源官方源也永远不会来更新你的品牌包所以updaterEndpoints默认留空。如果品牌方要自建应用内更新就得自备一套 Tauri 签名密钥对updaterPubkey必须和签名私钥严丝合缝地对上——端点填了却漏公钥脚本会当场报错因为更新器就是拿这把公钥去验每个更新签名的配不上就等于永远更不了。生成密钥对用npx tauri-apps/cli signer generate -w ~/.tauri/my-brand.key.key是私钥设到 CI 的TAURI_SIGNING_PRIVATE_KEY对应的.pub里那份 base64 公钥贴进brand.json。怎么确认打包成功出错了又该怎么办✅ 打包完先做一遍自查到src-tauri/target/release/bundle/交叉编译则看src-tauri/target/triple/release/bundle/确认dmg/、nsis/、appimage/、deb/下确有文件给每个产物算一遍sha256summacOS 上用shasum -a 256在 macOS 上对生成的 DMG 再跑一次hdiutil verify最后把产物路径、SHA-256、应用名、appId 和构建目录一起报给用户。出问题时按场景对症下药brandId不合法就把那条正则丢给用户请他改logo 不存在就补一个合法的本地路径如果brand-create.mjs压根找不到就说明脚本缺失把预期命令原样报出来。最典型的两种卡死要特别记牢构建失败了别删构建目录留着它加最后几行有用的报错、完整日志路径或失败命令方便事后排查配置写错了也别在同一份克隆里重跑脚本——它是一次性的正确做法是丢掉这份克隆、从新的干净克隆重新开始。【免费下载链接】qwen-codeAn open-source AI coding agent that lives in your terminal.项目地址: https://gitcode.com/GitHub_Trending/qw/qwen-code创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考