Skip to content
This repository was archived by the owner on Sep 18, 2026. It is now read-only.

Latest commit

 

History

17 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QwenWorkCN for Linux (Unofficial)

[!IMPORTANT]

🛑 项目已终止 (Project Archived)

千问办公官方已发布 Linux 版本,本非官方移植项目即日起终止维护,仓库转为只读存档 (public archive)。

  • 官方 Linux 安装包已可从千问办公官网获取,请直接使用官方渠道,体验更完整、更新更及时。
  • 本仓库不再接受 Issue 提交、Pull Request 或新功能请求。
  • 现有构建脚本与文档仅作为历史参考保留,不保证在新版本上继续有效。

千问办公 (QwenWorkCN) 的非官方 Linux 自动化移植与安装构建脚本工具(已归档,不再维护

Debian Ubuntu Support AUR Package Fedora RHEL Support
Supported Version Electron Version Status Archived Based on workbuddy-linux


目录


项目状态

🛑 已终止 / Archived(2026-09-18)

千问办公官方已发布 Linux 版本,本非官方移植项目的使命已完成,仓库已转为 public archive

  • ✅ 官方 Linux 安装包已上架,请直接从千问办公官网下载安装。
  • ⛔ 本仓库不再接受 Issue 与 Pull Request,Issue 模板与讨论渠道均已关闭。
  • 📦 现有构建脚本、补丁与文档仅作为历史参考保留,不保证在官方新版本上继续有效。
  • 🔒 仓库处于只读状态,如需基于本工具二次开发,请自行 Fork。

项目简介

历史项目:千问办公官方于 2026 年发布 Linux 版后,本工具已完成历史使命并归档,以下内容仅作参考。

非官方社区工具,将你自行获取的官方千问办公 (QwenWorkCN) macOS Intel/x64 DMG转换为可在 Linux x64 运行的 Electron 应用。

本仓库仅作为转换工具,不分发任何官方软件:请从官方渠道下载正版 DMG 放入 downloads/,产物仅保留本地且已加入 Git 忽略规则。

工具链架构借鉴 workbuddy-linux,并针对 QwenWorkCN 做了适配(差异对照见 docs/porting-notes.md)。

特性亮点

  • 一键转换:DMG 放入 downloads/,四条命令完成构建,自动识别发行版产出 deb / rpm / pkg.tar.zst
  • CLI 完整移植:自动下载官方 Linux 版 qoderclicn(按 glibc/musl 与 AVX2 选择变体)
  • 原生模块 Linux 化:5 个原生模块针对 Electron 37.10.3 重建,平台包版本对齐 DMG,产物 100% ELF
  • 最小补丁面:asar 补丁覆盖 8 处关键点,采用正则化锚点,上游 minifier 重命名常量时自动适配
  • 安全构建:零硬删除(隔离式移动),依赖自动识别(apt / dnf5 / dnf / pacman / zypper)

版本适配说明

归档提示:以下为项目活跃期间的验证记录。官方已发布 Linux 版,请以官方版本为准。

已基于官方 1.0.0(2026-08-24)与 1.0.1(build 26082607,Electron 37.10.3)验证通过,并在 0.1.6 / 0.1.7 / 0.1.8 上完成实测。补丁采用正则化锚点,上游发版重命名常量时自动适配,不会硬失败。

项目已归档,不再接受构建失败的 Issue 提交。

快速安装

归档提示:官方已发布 Linux 安装包,建议直接使用官方渠道。以下步骤仅作为历史方法保留。

  1. 克隆本项目;
  2. 从官方渠道下载 Intel/x64 架构 DMG,放入 downloads/(仅放唯一一份);
  3. 依次执行:
make deps
make build-app
make package
make install

scripts/install-deps.sh 会自动识别包管理器(apt / dnf5 / dnf / pacman / zypper),一键装齐依赖。

构建与运行

make build-app                     # 使用 downloads/ 下唯一的 DMG
make build-app DMG=/path/to/dmg    # 手动指定 DMG 路径
make run-app                       # 直接运行生成的应用(未安装)
make fix-rpaths                    # 就地清理原生模块里的构建机私有 RPATH
make package                       # 按当前发行版生成 deb/rpm/pkg.tar.zst(按 /etc/os-release 自动识别)
make install                       # 本地安装最新产物
make check-update                  # 查询官方是否发布新版本(免登录)
make clean                         # 清理构建产物
make check                         # bash 语法自检

实现原理

  1. 7z 提取 DMG 内的 QwenWorkCN.app,识别上游 Electron 版本并替换为 Linux 运行时;
  2. 复制应用载荷(app.asar + unpacked + 16 个资源目录);
  3. 原生模块(node-ptybetter-sqlite3keytarzstd-napiuiohook-napi)从源码重建为 ELF,Linux 平台包按 DMG 版本对齐安装,并下载官方 Linux 版 qoderclicn
  4. app.asar 应用 Linux 补丁并重打包,生成启动器、桌面入口、图标与各发行版安装包。

移植后的已知限制

  1. Agent 沙盒 VM 不可用:上游仅发布 darwin/windows 构件,Linux 下自动跳过,Agent 回退无沙盒直接执行。这是唯一的核心功能降级。
  2. 自动更新禁用:原生 Updater 仅 macOS/Windows 版。需更新请下载新版 DMG 重新构建。
  3. macOS 专属能力降级:原生通知、拖拽面板、mac 权限等回退 Electron 标准 API,不影响主流程。
  4. 剪贴板依赖 xsel:Wayland 会话下的体验取决于 XWayland 的 xsel 兼容性。

常用自定义配置

PACKAGE_FORMAT=rpm make package                # 强制指定打包格式(deb/rpm/pacman)
QWENWORK_INSTALL_DIR=/opt/tmp/qwenwork-app bash install.sh               # 自定义安装目录
ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ bash install.sh  # Electron 镜像源
ELECTRON_HEADERS_URL=https://artifacts.electronjs.org/headers/dist bash install.sh  # 头文件地址
QODER_CLI_VERSION=1.0.47 bash install.sh                                 # 指定内置 CLI 版本
QODER_CLI_PATH=/path/to/qoderclicn bash qwenwork-app/start.sh            # 运行时自定义 CLI 路径
QWENWORK_OZONE_PLATFORM=wayland ./qwenwork-app/start.sh                  # 切换 ozone 平台

排障

  • 界面卡顿 / 启动慢(NVIDIA + Wayland):原生 Wayland 下 NVIDIA 触发 GPU 崩溃循环并回退软件渲染 → 启动器默认 XWayland(--ozone-platform=x11);改用原生 Wayland:QWENWORK_OZONE_PLATFORM=wayland ./qwenwork-app/start.sh。核验:grep -c libGLX_nvidia /proc/<gpu-pid>/maps
  • 升级新版 DMG 后卡顿:上游 minifier 重排常量导致补丁锚点静默失效 → 重建后检查构建日志的 patched ... 行是否齐全、有无 WARN: ... anchor not found
  • 启动即闪退,终端报 Error: No native build was found ... uiohook-napiuiohook-napi 被主进程在启动时硬加载(全局输入钩子),但其 Linux 原生构建缺失。原因通常是构建机缺 X11 开发头(libXt-devel/libXtst-devel/libXinerama-devel 等,X11/Intrinsic.h 缺失),重建静默失败 → 先 make deps 装齐头文件再 make build-app。已将该模块列入关键模块并在构建后校验 .node 存在,缺失会直接报错而非交付坏包;已构建产物可 make build-app 重建或按报错修复。
  • make rpmERROR 0002: file '...' contains an invalid rpath '/home/<user>/anaconda3/lib':conda / Anaconda / Linuxbrew 的 gcc 排在 PATH 前面,它每链接一个动态库都会注入 -Wl,-rpath,<前缀>/lib(为了找到自带的 libstdc++),于是 node-ptybetter-sqlite3 等源码重建的 .node 被烙上构建机私有路径,rpmbuild 的 check-rpaths 因此拒绝打包 → 旧产物执行 make fix-rpaths 就地剥离(保留 $ORIGIN 相对路径);新构建已强制使用系统编译器(/usr/bin/gcc)并清空 LDFLAGS/LD_RUN_PATH/LIBRARY_PATH,另在重建后自动做一遍 RPATH 清理,无需手动干预。
  • make rpm / make packageBad exit status from rpm-tmp ... (%install)/(rmbuild):本机若运行着 WorkBuddy(或其它通过 $BASH_ENV 注入命令垫片的工具),其 rm 垫片会在 rpmbuild/makepkg 的构建与清理阶段拦截批量删除并提示确认,导致 rpmbuild 中途失败。已内置修复:打包脚本用 env -i(纯净环境)启动 rpmbuild / makepkg,自动丢弃继承的 PATH 垫片、$BASH_ENVBASH_FUNC_rm* 函数,无需手动干预。若仍失败,可手动验证:command -v rm 应为 /usr/bin/rm
  • 启动报 bad option: --no-sandbox:环境导出了 ELECTRON_RUN_AS_NODE=1env -u ELECTRON_RUN_AS_NODE ./qwenwork-app/start.sh
  • 安装包/产物含 :com.apple.provenance 之类的侧车文件:7z 解包 DMG 会把 macOS 的 APFS 扩展属性写成 <名字>:com.apple.* 的独立侧车文件(非法冒号文件名,Linux 无用,还会混进 RPM)。已在拷贝 app.asar.unpacked 与 Resources 载荷时统一排除(tar --exclude='*:com.apple.*')。旧产物清理:隔离到 ~/.cache/qwenwork-linux/quarantine/ 后重新 make package
  • 隔离目录:被替换的 macOS 二进制与旧构建树移至 ~/.cache/qwenwork-linux/quarantine/,不硬删,可随时清空。

目录结构与维护规范

qwenwork-linux/
├── install.sh          # 主构建脚本
├── Makefile            # make deps/build-app/package/install 等入口
├── scripts/            # 依赖安装、打包、DMG 提取、原生模块、asar 补丁
│   └── lib/            # 各阶段实现(dmg/electron/native-modules/cli/linux-patches)
├── packaging/linux/    # deb control 与 desktop 模板
├── docs/               # 架构分析笔记与原生模块审计报告
├── downloads/          # [忽略] 官方 DMG
├── qwenwork-app/       # [忽略] 构建产物
└── dist/               # [忽略] 安装包产物

downloads/build/qwenwork-app/dist/ 已被 Git 忽略,切勿手动提交 DMG、解压后的 .app、生成的应用目录与安装包产物。

致谢

工具链架构深度借鉴 workbuddy-linux@JipZeonGit,MIT)及其早期实践 codebuddy-ide-cn-linux。喜欢本项目也请为上游点个 Star。

免责声明

本项目为非官方社区开源工具,与阿里巴巴/钉钉官方无任何关联。本工具不分发任何官方软件,仅自动化格式转换流程;使用产生的应用仍受官方协议约束。请自行确保 DMG 来源合法并遵守 EULA,工具按"现状"提供、无任何担保。

项目已归档:千问办公官方已发布 Linux 版,本仓库仅保留历史代码与文档,不再维护,也不对任何使用后果负责。

开源许可证

转换脚本采用 MIT 许可,详见 LICENSE。MIT 仅覆盖本仓库的转换工具,不延伸到通过本工具安装的 QwenWorkCN 二进制文件


English Summary

⚠️ Archived — QwenWorkCN has been officially released for Linux. This unofficial port is no longer maintained and the repository is read-only. Please use the official Linux package instead. Issues and pull requests are disabled.

An unofficial community tool that converts your legally obtained official QwenWorkCN (千问办公) macOS Intel/x64 DMG into a locally-built Linux x64 Electron application. It never redistributes upstream software: place the DMG into downloads/, then run make deps && make build-app && make package && make install.

Verified against the official 1.0.0 (2026-08-24) and 1.0.1 (build 26082607, Electron 37.10.3), and tested across 0.1.6 / 0.1.7 / 0.1.8. The asar patches use regex-generalized anchors, so they survive upstream minifier constant renames.

The port swaps in the Linux Electron runtime, rebuilds native modules from source, installs version-aligned Linux platform packages, downloads the official Linux build of the bundled CLI (qoderclicn), and applies a small set of asar patches.

Known limitations: the agent sandbox VM is unavailable (no Linux artifacts upstream — agent tasks fall back to unsandboxed execution); auto-update is disabled (Updater binary is macOS/Windows-only); macOS-only integrations degrade to their Electron fallbacks. See docs/porting-notes.md for the full analysis.

Acknowledgements

Toolchain architecture is deeply inspired by workbuddy-linux by @JipZeonGit (MIT) and codebuddy-ide-cn-linux. Please consider starring the original repositories.

About

千问办公(QwenWork)的非官方 Linux 自动化移植与安装构建脚本工具

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages