@chamvi/cli

中文文档
0.8.0发布于 2026/11/09Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 3248

Chamvi命令行: dev, 构建, 启动, 运行工作并迁移到一个使用 @ chamvi/ app构建的应用程序 .

中文使用文档
文档目录6 节
  1. 安装
  2. 使用量
  3. 图标
  4. 退出代码
  5. 信号
  6. 许可证

@chamvi/cli

校对:soup

Chamvi 命令行: dev, 构建, 启动( 并启动 -- check), 运行和迁移, 用于构建一个应用 @ chamvi/ app (中文(简体) )。 。 。 .

npm version CI License


安装

npm install @chamvi/app @chamvi/cli ai
npm install --save-dev tsdown   # only for chamvi build

使用量

应用程序是一个条目, src/index.ts,其默认导出为 createApp() 从 @ chamvi/ app (中文(简体) )数字 :

import { createApp } from '@chamvi/app';
import { echo } from './agents.ts';

export default createApp({ agents: [echo] });

package.json 脚本 :

{
    "type": "module",
    "scripts": {
        "dev": "chamvi dev",
        "build": "chamvi build",
        "start": "chamvi start"
    }
}

相对进口 .ts 没有 enum这样 chamvi dev (节点类型去除)和 chamvi build (tsdown) 接受相同的代码. 模板 tsconfig.json数字 :

{
    "compilerOptions": {
        "target": "ES2023",
        "module": "NodeNext",
        "moduleResolution": "NodeNext",
        "strict": true,
        "skipLibCheck": true,
        "verbatimModuleSyntax": true,
        "allowImportingTsExtensions": true,
        "erasableSyntaxOnly": true,
        "noEmit": true
    },
    "include": ["src", "test"]
}

图标

chamvi <command> [args] [flags]附加时 --help 财务报告和审定财务报表 --version。每个命令需要 --entry <path>。 。 。 .

命令参数和旗帜对
dev--entry运行 node --watch [--env-file-if-exists=.env] <cli> start --dev --entry <source entry>:在条目、其进口或 .env (节点监视掩体文件本身,所以没有) --watch-path a. 导言 洞口旗只在 .env 初始时存在( 在 Linux 上, node --watch 丢失的内存文件失败, 所以 .env 创建后需要重新启动 chamvi dev
build--entry, (中文(简体) ), --out-dir <dir> (默认) dist(中文(简体) )将条目套入 tsdown 中 <out-dir>/index.mjs 加上其来源图:无害环境管理, node26,每个 dependencies 财务报告和审定财务报表 peerDependencies 外部软件包,该应用程序自己的模块内含. 输出的目录是先被清空的, 所以其中一个是工程文件夹或上面的, 持有条目, 或持有任何东西, 但是 .mjs 财务报告和审定财务报表 .mjs.map 文件出口 2
start--entry, (中文(简体) ), --check启动应用程序:存储(并迁移),引擎及其频道(其中有克龙),再由HTTP. --check 运行相同的启动路径直到启动( s)app.check(): 配置、 存储连接、 模型设置、 每个模块、 代理文件夹的负载和检查) 和退出, 写不给存储( 没有迁移、 修订标记或取消) , 服务不给, 运行不给: chamvi: start check passed 在stdout和出站0上,每个代理文件夹在自己的stderr行和出站2上发布,一个配置错误出站2,一个存储失败(无法访问,待迁移到 CHAMVI_MIGRATE=false出口 1; 默认 CHAMVI_MIGRATE=true 因此,在移民通过之前, 它需要的是一个开始CHAMVI_TOKENS因此,在CI中运行它与生产或中装入的管道。 见 选择一个模型
run-job<agent>, (中文(简体) ), [subscriptionId], (中文(简体) ), --entry一次性开出一个 cron 订阅并等待运行( Kubernetes CronJob; 没有频道启动); subscriptionId 代理机唯一订阅的默认值
migrate--entry米格拉特斯邮局商店(DATABASE_URL (所需)

条目是 --entry,其他用于源命令(dev, (中文(简体) ), build, (中文(简体) ), start --dev(b) 与《京都议定书》 package.json 字段 "chamvi": { "entry": "<path>" },则 src/index.ts. 已建命令(start, (中文(简体) ), run-job, (中文(简体) ), migrate)从不读取字段并默认为 dist/index.mjs,所以从一个设置它仍然开始的寄存器中构建的图像; a .ts 条目也通过类型剥离。 没有 --entry,没有 chamvi.entry,没有默认文件, dev, (中文(简体) ), start, (中文(简体) ), run-job 财务报告和审定财务报表 migrate 运行默认的应用程序, createApp({}) 由 env 单独配置,其代理来自 ./agents (或 CHAMVI_AGENTS_DIR),并在stderr上这样说; build 2号出入口(无可建设). 一个不见了 dist/index.mjs 旁边 src/index.ts 仍然退出 2 带有构建提示.

chamvi dev 运行 start --dev:来源条目, .env 从工作目录(绝不凌驾于设定变量之上)中取自 createMemoryStore() 除非 DATABASE_URL 被设定,没有另一个验证器,一个随机 * 以警告和较短的时日为标志CHAMVI_DRAIN_TIMEOUT_MS 5000块, CHAMVI_FORCE_EXIT_MS 1550) (英语).

退出代码

代码何时
0成功:一个干净的站站,一个已建成的捆绑,一个迁移的商店,一个 start --check 有问题; run-job 用于完成、等待、跳过、排队的后方核准或信号中断运行
1运行时失败: 启动、 检查、 构建或迁移出错( 无法访问或待转移的存储) , 失败或取消的工作, 强制退出
2用法或配置:未知的命令或旗帜,缺少或没有 chamvi app的条目,缺少或无效的env(名称,其值从未重复),有问题的模型设置,没有模型和默认的代理或没有配置提供者或其软件包缺失的模型字符串,a start --check 找到代理文件夹问题

CLI 设定 process.exitCode 并让节点退出; 它调用 process.exit() 仅限强制退出.

信号

start 财务报告和审定财务报表 run-job数字 :

  • 第一个SIGTERM或SIGINT停止应用(/readyz 503,HTTP关闭,发动机排出(先停)至 CHAMVI_DRAIN_TIMEOUT_MS,存储关闭),然后退出 0,或者当停止报告出错时退出 1.
  • 第二信号即刻出站一站. 在第一个数的一秒之内发出信号 npm run dev 财务报告和审定财务报表 npm start 两次发送一个Ctrl-C(npm将SIGINT转发到脚本,而终端则信号整个组).
  • CHAMVI_FORCE_EXIT_MS (默认9000)第一个信号后,一站仍然运行出站1.

migrate 安装不处理器:节点默认结束它.

在库伯内特保存 preStop + CHAMVI_FORCE_EXIT_MS < terminationGracePeriodSeconds5 s 时 preStop 睡眠和120 s的宽限期最坏的情况是:5+30 (排水量)+5 (接近)+30 (工作空间)=70 s,强制出站时间为95 s,SIGKILLL为120 s.

chamvi dev 将孩子运行在自己的流程组中,所以一个终端Ctrl-C只达到CLI,它转发一个信号(应用程序然后停止一次,而不是得到终端的SIGINT+一个) node --watch 页:1 SIGHUP(终端关闭)和CLI自己的出站用SIGTERM阻止了孩子,而孩子的stdin只是CLI所写的管子:当CLI在没有出站钩(SIGKILL,OOM杀手)的情况下死亡时,管子关闭并被应用结束整个组,所以它永远不会活过CLI. 退出代码是孩子的,0当它以转发信号结束.

许可证

原载 Apache 许可证 2.0。 。 。 .

版本与发布记录

@chamvi/cli 共发布 15 个版本,首次发布于 2026/10/25;过去 12 个月发布了 15 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.8.0latest2026/11/09今天
0.7.32026/11/063 天前
0.7.22026/11/053 天前
0.7.12026/11/054 天前
0.7.02026/11/045 天前
0.6.12026/11/045 天前

关于 @chamvi/cli 的常见问题

@chamvi/cli 是什么?

Chamvi命令行: dev, 构建, 启动, 运行工作并迁移到一个使用 @ chamvi/ app构建的应用程序 .

如何安装 @chamvi/cli?

在项目目录运行 npm install @chamvi/cli,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@chamvi/app(^0.8.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。它还提供命令行工具 chamvi,可以用 npx chamvi 直接运行。

@chamvi/cli 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@chamvi/cli 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@chamvi/cli 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=26.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@chamvi/cli 可以商用吗?

@chamvi/cli 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@chamvi/cli 的下载量有多少?

根据 npm 官方下载统计,@chamvi/cli 在 2026/10/10 – 2026/11/08 这 30 天内被下载 3,248 次,日均约 108 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@chamvi/cli 还在维护吗?

最新版本 0.8.0 发布于 2026/11/09(今天);至今共发布 15 个版本,其中过去 12 个月发布了 15 个;首次发布于 2026/10/25。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。