@asiainfo-sdd/multica-cli — multica(daemon 客户端)安装帮助包
通过 npm 安装数字工厂 multica 命令(daemon 客户端二进制,含主机线能力)。
本包负责安装二进制与部署级配置:npm install 时按平台自动下载、sha256 校验、落位,
并把 server_url / app_url 合并写入 ~/.multica/config.json(只填空,不覆盖已有值);
不写 token、不登录、不启动/停止 daemon——个人凭据与 daemon 生命周期始终由用户掌控。
部署级配置的取值优先级
MULTICA_SERVER_URL / MULTICA_APP_URL 环境变量(安装时)
> manifest.json 顶层 server_url / app_url(运维改下载源即可,无需重发 npm 包)
> 包内 lib/dist-config.json(发布时按 profile 固化)
二进制下载源基址同样三级:MULTICA_DOWNLOAD_BASE 环境变量 > manifest 对应环境的 lib/dist-config.json 的 download_base > 包内置默认。
用户 ~/.multica/config.json 中已有的值一律不覆盖,仅提示。
适用人群与前置
- 内网办公电脑/服务器上的开发者,机器可访问下载源(可覆盖)
- 已安装 Node.js ≥ 18 与 npm
- 支持平台:darwin / linux / windows × amd64 / arm64
安装
# 全局安装(推荐:npm 全局 bin 目录已在 PATH)
npm i -g @asiainfo-sdd/multica-cli
# 或项目内安装(用 npx 调用)
npm i @asiainfo-sdd/multica-cli
npx multica version
安装完成后按提示自行完成剩余步骤(若下载源已带 server_url 则只需两步):
multica config set server_url https://<服务器地址> # 仅当安装时未自动写入
multica login --token mul_<个人令牌> # 令牌在 Web 端“设置→令牌”生成
multica daemon start # 需本机已装至少一个 agent CLI(claude/codex/opencode…)
日常管理:multica daemon status / multica daemon logs / multica daemon stop。
环境变量
| 变量 | 作用 |
|---|---|
MULTICA_DOWNLOAD_BASE | 覆盖二进制下载源基址(源根需有 manifest.json 与 v<版本>/ 目录) |
MULTICA_SERVER_URL / MULTICA_APP_URL | 安装时写入 ~/.multica/config.json 的部署级配置(优先级高于 manifest 与包内置;不覆盖已有值) |
MULTICA_SKIP_BINARY_INSTALL=1 | 跳过 postinstall 下载(--ignore-scripts 环境或自备二进制时用) |
http_proxy / https_proxy / NO_PROXY | 走内网代理时识别(Node 自带 fetch 不认这些变量,本包已自实现) |
故障恢复
| 症状 | 处理 |
|---|---|
| 安装时看不到“上手”提示 | npm ≥ 7 默认隐藏 postinstall 输出(脚本失败时才显示);加 --foreground-scripts 参数即可看到,或安装后执行 multica version 确认可用 |
执行 multica 提示二进制未下载 | npm rebuild @asiainfo-sdd/multica-cli(常见于 --ignore-scripts 安装或当时下载源不可达) |
| 提示“multica 不是命令” | 重新打开终端;或用 npx multica ... |
| 升级时提示文件被占用 | daemon 正在运行:先 multica daemon stop,再 npm i -g @asiainfo-sdd/multica-cli@<版本> |
| 下载源不可达 | 确认 MULTICA_DOWNLOAD_BASE;检查代理变量 |
升级
npm i -g @asiainfo-sdd/multica-cli@<新版本>
npm 包版本与二进制版本一一对应;postinstall 检测到版本变化会重新下载。 daemon 的 auto-reload 默认开启:二进制替换后运行中的 daemon 会自动重启到新版本。
卸载
用 multica-uninstall,不要只用 npm un -g。原因:
- npm v7 起不再执行
preuninstall等卸载生命周期脚本,npm un -g只能移除 npm 包, 不会停 daemon、不会删~/.multica配置、也不会删独立安装的~/.local/bin/multica; - 同机可能同时存在多个 npm 全局目录(nvm prefix、
%APPDATA%\npm、历史 prefix), 而npm root -g只报当前一个 —— 会出现“卸了还能用”。
multica-uninstall 一次覆盖全部安装产物:
multica-uninstall # 交互确认后卸载
multica-uninstall --yes # 非交互(脚本/CI)
multica-uninstall --keep-config # 保留 ~/.multica(保留登录令牌与配置)
multica-uninstall --dry-run # 只打印将执行的操作,不改动任何文件
执行内容依次为:停 daemon → 删 ~/.multica(除非 --keep-config)→ 删独立二进制
~/.local/bin/multica[.exe] → 删 PATH 上的命令入口(npm shim)→ 逐个前缀卸载 npm 全局包。
卸载后请重开终端以确保 PATH 刷新;再执行 multica version 应提示命令不存在。
若某 npm 包因文件占用未能删除(Windows 常见),脚本会打印出对应
npm uninstall -g --prefix <prefix> <包名>命令,重开终端后手动执行即可。
版本发布(维护者)
本包位于 multica 仓 apps/multica-cli-installer/(与 server/ 同仓管理,随主仓 git 提交发布)。
同一份源码按 profile 发布两个 npm 包(差异仅包名与内置部署级配置),发布流程:
- 本仓
server/extensions/agentfoundry/build/build.sh cli-all <版本>: 6 平台 CLI 产物 +manifest.json落server/extensions/agentfoundry/dist/cli/ - 如需随包分发部署级配置,在
manifest.json顶层加server_url/app_url - 将
dist/cli/整目录同步到目标环境下载源的 HTTP 静态根(MinIOdaemon-download/前缀) - 在
apps/multica-cli-installer/下按 profile 发布:- 生产包:
node scripts/publish.mjs prod [版本] - 测试包:
node scripts/publish.mjs test(连接测试环境,配置见publish/profiles.json) - 加
--dry-run只打 tarball 检查,不实际发布
- 生产包:
- 版本号在源
package.json上推进(lib/dist-config.json保持生产默认值;测试包的差异由 profile 注入)
两包 bin 命令名均为
multica,同一台机器互斥安装;切换环境用npm rm -g <A> && npm i -g <B>,安装时会自动覆盖式更新~/.multica/config.json的 server_url/app_url 并提示(token 需重新登录生成)。
FAQ
Q: 为什么不把二进制打进 npm 包? 每个平台 17-68MB,6 平台约 200MB;HTTP 运行时下载让 npm 包保持 KB 级,且安装哪台机器才拉哪个平台。
Q: postinstall 下载失败了怎么办?
安装不会失败到阻断——失败时打印修复指引,之后 npm rebuild @asiainfo-sdd/multica-cli 重试。
Q: daemon 会自动升级吗? self-host 场景下 daemon 的 auto-update 默认关闭;升级由你通过 npm 主动控制。