@cogitator-ai/deploy

中文文档
0.7.18发布于 2026/10/29MITTypeScriptES Module近 30 天下载 1.1万

部署1个指挥员

中文使用文档
文档目录17 节
  1. 安装
  2. 快速启动
  3. 通过 CLI
  4. 程序化 API
  5. 配置
  6. 服务器或工人
  7. 秘诀
  8. 超过部署的数据
  9. 当地奥拉马
  10. 自动检测
  11. 部署目标
  12. 夹克
  13. 飞.io
  14. 自定义提供者
  15. 建筑
  16. 另见
  17. 许可证

@cogitator-ai/部署

一号指令部署引擎 用于协作者特工 分析您的项目,生成一个多克文件并指定目标文物,进行飞行前检查并部署到多克或Fly.io.

指南 : 协调人员.app/docs/部署/部署包

安装

pnpm add @cogitator-ai/deploy

快速启动

通过 CLI

cogitator deploy --dry-run            # analyze + preflight, change nothing
cogitator deploy                      # Docker: build image, start the compose stack
cogitator deploy --target fly         # Fly.io
cogitator deploy status
cogitator deploy logs -f              # docker compose logs / flyctl logs
cogitator deploy destroy

程序化 API

import { Deployer } from '@cogitator-ai/deploy';

const deployer = new Deployer();

const plan = await deployer.plan({
  projectDir: process.cwd(),
  target: 'docker',
  noPush: true,
  configOverrides: { port: 8080, secrets: ['OPENAI_API_KEY'] },
});

console.log(plan.config); // resolved DeployConfig (image, port, services, secrets, ...)
console.log(plan.warnings); // e.g. missing start script, local Ollama on a cloud target
console.log(plan.preflight.passed, plan.preflight.checks);

const result = await deployer.deploy({ projectDir: process.cwd(), target: 'fly' });
if (!result.success) throw new Error(result.error);
console.log(result.url); // https://my-app.fly.dev
方法说明
plan(options)分析+飞行前. 回返 config, (中文(简体) ), preflight, (中文(简体) ), warnings, (中文(简体) ), analysis, (中文(简体) ), provider
deploy(options)plan生成文物 部署 回返 DeployResult (单位:千美元)url, (中文(简体) ), endpoints, (中文(简体) ), error(中文(简体) )
status(target, config, projectDir, options?)DeployStatus (单位:千美元)running, (中文(简体) ), url, (中文(简体) ), instances, (中文(简体) ), uptime(中文(简体) )
destroy(target, config, projectDir, options?)拆掉部署,失败时投出
logsCommand(target, config, projectDir, options?)显示日志的命令的保证( Q)follow, (中文(简体) ), tail, (中文(简体) ), service, (中文(简体) ), timestamps),作为 argv
availableTargets()注册供应商名称(['docker', 'fly'] (默认)
registerProvider(provider)添加自定义 DeployProvider
getProvider(target)注册提供者, 丢弃未知目标

DeployOptions数字 : projectDir, (中文(简体) ), target, (中文(简体) ), dryRun (计划并生成,然后返回) { success: true, url: '(dry run)' } - 不写文物或部署, noPush (放下登记册), configOverrides (单位:千美元) DeployConfig, (中文(简体) ), configPath (要读取的配置文件,默认为 cogitator.yml, (中文(简体) ), cogitator.yaml, (中文(简体) ), .cogitator.yml, (中文(简体) ), .cogitator.yaml 内 projectDir,与 loadConfig和 env (如果秘密来自何处, 默认项目 .env (a) 在进程环境中. status, (中文(简体) ), destroy 财务报告和审定财务报表 logsCommand 带 { configPath } 还有.. logsCommand 决定命令. deploy() 不丢弃失败的飞行前检查: 它返回 { success: false, error } 列出每个失败的检查及其修正.

ProjectAnalyzer (单位:千美元)analyze(projectDir, overrides?, { configPath, env }?), (中文(简体) ), detectBuild(projectDir), (中文(简体) ), ArtifactGenerator, (中文(简体) ), DockerProvider 财务报告和审定财务报表 FlyProvider 用于建造自己的管道.

配置

两者 cogitator deploy 和方案 Deployer 读取 deploy 区域. configOverrides 逐个字段胜出( 内部) services, (中文(简体) ), env, (中文(简体) ), health 财务报告和审定财务报表 resources 双方都赢得了自动探测:

deploy:
  target: fly # docker | fly (default: docker)
  kind: worker # server | worker (default: detected, see below)
  server: express # express | fastify | hono | koa | tetsu | next (default: detected)
  port: 3000 # default: 3000 for a server, none for a worker
  image: my-agent # Docker image (default: package.json name)
  app: my-agent-prod # Fly.io app name (default: image)
  org: acme # Fly.io organization a new app is created in (default: your default org)
  region: iad # Fly.io, default: iad
  instances: 2 # Fly.io only, docker runs one container
  registry: ghcr.io/myorg
  services: # default: detected from the memory adapter and the Ollama models
    redis: true
    postgres: true
    ollama: true # docker: an Ollama container next to the app
  env:
    LOG_LEVEL: info
  secrets: # default: detected, see below
    - OPENAI_API_KEY
  health: # defaults shown
    path: /cogitator/health
    interval: 30s
    timeout: 5s
  resources: # Fly.io VM, default: 256mb, 1 shared CPU
    memory: 512mb
    cpu: 1
  volumes: # default: the directory of a SQLite memory database
    - path: data # relative to the app directory, or absolute
      size: 1 # GB, Fly.io volume size
  hostGateway: true # docker: reach the host as host.docker.internal (set with services.ollama off)
  ollama: # docker, with services.ollama
    models: [qwen3:8b, nomic-embed-text] # default: the local Ollama models of the config
    gpu: true # reserve the host's NVIDIA GPUs (needs the NVIDIA Container Toolkit)
    image: ollama/ollama:0.40.10 # default shown

服务器或工人

kind 决定如何运行和检查应用程序 :

  • server 解答 HTTP 打开 port进行健康检查HEALTHCHECK飞行 [checks])和在"Fly"上,一个HTTP服务,可以停止闲置的机器,并在下一个请求时启动. 从 Cogitator 服务器适配器检测( )@cogitator-ai/express, (中文(简体) ), fastify, (中文(简体) ), hono, (中文(简体) ), koa, (中文(简体) ), tetsu, (中文(简体) ), next),Next.js或平面HTTP框架(Express, fastify, Hono, Koa).
  • worker 运行时不为HTTP服务,比如频道网关(英语:Telegram long power)或排队工人. 它没有健康检查,出版 port 只有在一个被设定,并且在"飞翔"上 从未被代理停止(auto_stop_machines = "off",没有端口的 HTTP 服务。 从 @cogitator-ai/channels 或者说 @cogitator-ai/worker。 。 。 .

一个既不是的工程,如一个使一个呼叫和退出的脚本,在飞行前失败:已经部署,将永远重启. 设定 deploy.kind 当发现错误.

health.path 对检测到的适配器路径的默认 : /cogitator/health 对于快车,快车,Hono和Koa的默认基础路径, /health 为哲也. 当适配器被安装在别处时设定它. Next.js没有自己的健康路线,所以没有已知路径的服务器得不到健康检查和警告. 项目来源 create-cogitator-app 已经设定 : api-server 模板在 /api 写作 health.path: /api/health。 。 。 .

秘诀

除非我们.. deploy.secrets 列出,发现秘密:

  • 模型的提供者无法运行的, 路由像运行时的路线(meta-llama/Llama-3.3-70B-Instruct-Turbo 与 defaultProvider: together 需求 TOGETHER_API_KEY) (中文(简体) ). 阿祖尔需要钥匙和终点, Bedrock 一个区域和证书。 写入的值 llm.providers 按规定计算。 当一个别名被设定而不是主名时( NameGEMINI_API_KEY 页:1 GOOGLE_API_KEY),别名被通过. 设置的可选提供者设置( E)OPENAI_BASE_URL, (中文(简体) ), AWS_SESSION_TOKEN)也通过. PROVIDER_ENV 联 合 国 @cogitator-ai/config 这是后面的表格
  • 代码传递给 requireEnv('NAME') 下级 src/
  • 变量 .env.example 设定
  • 配置读取的变量 loadConfig 读取: ${VAR} 文件的参考文献 COGITATOR_* 覆盖诸如 COGITATOR_LLM_DEFAULT_MODEL,因此应用程序解决了分析方式(在其中所取出的模式)的配置. 左边是 COGITATOR_DEPLOY_*,此机器的 Ollama URL 和 Compose 堆栈运行的服务 URL

当没有发现,但项目 .env 定义变量,飞行前失败而不是没有它们部署应用程序。 列出它所需要的内容 deploy.secrets (空列表无一部署).

从当前环境或项目中读取机密 .env 文档。 在飞行前对其进行检查,经过多克堆栈,然后与Fly.io一起进口 fly secrets import --stage。 。 。 .

超过部署的数据

SQLite 内存 (memory.adapter: sqlite)将其数据库目录保存在一卷上:取名为卷的多克克,或第一个部署时创建并挂载的飞行卷 [mounts],目录也保存在图像之外,因此本地数据从不出船. 工程根中的数据库无法获取音量并获得警告, 移动到目录中, 如 data/memory.db飞行机器挂起一卷, 更多的故障飞行前.

当地奥拉马

当该项目的模型运行在本地Ollama上时,插头目标运行在app旁边(services.ollama,默认情况下). 每个角色都是靠自己看待的. 聊天角色是运行时间使用的每个 Ollama 模型: llm.defaultModel, (中文(简体) ), context.summaryModel 除非 context.enabled 假的, 设定的记忆阶段模型, reflection.reflectionModel 与 reflection.enabled, (中文(简体) ), guardrails.model 除非 guardrails.enabled 是虚假的,而且 security.promptInjection.llmModel 与 classifier: llm角色及其模型由部署得到的环境决定, deploy.env 列入defaultModel: ${CHAT_MODEL:-ollama/qwen3:8b} 拖动模型 deploy.env.CHAT_MODEL 名称),所以 deploy.env.COGITATOR_OLLAMA_BASE_URL 指着一个GPU盒子,就在那里保持聊天. 代码中的代理名的模型不在配置中,请在 ollama.models。嵌入式角色是 memory.embedding 与 provider: ollama (它的模型, nomic-embed-text (默认情况下). 奥拉马云模型(a) :cloud 标记,或没有 URL 的 API 密钥,这意味着 https://ollama.com as in the config schema)是聊天角色的一部分,从未被拉出. 当其 URL 指向此机时, 角色是本地的, 其 URL 指向 URL 之外 , 并保存 URL 及其 所跟踪的变量 GPU_OLLAMA 页:1 baseUrl: ${GPU_OLLAMA}与 llm.defaultProvider: ollama 而配置中没有模型(在代理代码中命名的模型),没有什么可拉动的,因此应用程序以警告到达了主机的奥拉马,除非 ollama.models 列出运行容器的模型。 一个模型名称 ollama pull 拒绝或读作一面旗帜,例如 ollama/--insecure,失败的飞行前.

编译文件获得一个 ollama 服务 ollama/ollama 带有模型的图像 ollama-data 体积、健康检查、一发 ollama-pull 第一次启动时拉动模型的服务:每个模型都是工作的一个参数,一个音量已经跳过,所以以后启动不需要网络. 应用等于二者. 本地聊天角色获得 COGITATOR_OLLAMA_BASE_URL, (中文(简体) ), OLLAMA_BASE_URL, (中文(简体) ), OLLAMA_URL 财务报告和审定财务报表 OLLAMA_HOST 指点 http://ollama:11434,也当其中之一被检测为具有本地主机值的秘密,以及一个在 deploy.env 或者说 deploy.secrets 留给你了。 第一次部署需要时间,只要下载, cogitator deploy logs ollama-pull -f 显示它,而下载失败会与任务最后一行一起失败部署。 与 services.ollama: true 没有一个模型运行在容器上, 分析员警告. ollama.models 替换检测到的列表, ollama.gpu: true 保留主机的NVIDIA GPU, ollama.image 运行另一个发布或 ollama/ollama:rocm。 。 。 .

嵌入服务读取其 URL memory.embedding.baseUrl 只有,所以部署时将显示在容器上的变量: ${OLLAMA_BASE_URL:-http://localhost:11434},或 ${OLLAMA_EMBEDDING_URL:-http://localhost:11434} 当聊天模式使用另一个Ollama时. 变量获得整个 URL, 或只获得主机(http://${EMBED_HOST:-localhost}:11434 获得 EMBED_HOST=ollama),以给定目标 URL者为准,在两者都不给时,则被单独警告。 另一个提供者参考的设置的变量(llm.providers.openai.baseUrl: ${OLLAMA_BASE_URL}/v1)永远不会被重写,一个变量只有在没有移动保持远程的角色时才会被设定,所以GPU盒上的一个聊天模型在嵌入器运行在容器中时会保留它的URL,当嵌入器无法被到达时分析器会发出警告(一个字面的本地主机URL,或者远程聊天URL读取的变量).

与 services.ollama: false 本地角色到达主机的 Ollama: 编译文件地图 host.docker.internal 到主机并指向相同的变量,每个角色都保留自己本地URL的端口,一个警告会列出要拉在那里的模型. 键 services 您设定将检测到的换成一个, 所以 services: { ollama: false } 使 Redis 和 Postgres 从内存适配器中检测到。 在Linux上,Ollama必须听从超越本地主机(OLLAMA_HOST=0.0.0.0 ollama serve) (中文(简体) ). 已经指向另一台机器的 Ollama URL 正在通过。 其他目标警告,因为他们没有奥拉玛.

自动检测

什麽来源示例
类型和服务器package.json 依赖关系@cogitator-ai/express - 快速服务器, @cogitator-ai/channels − 工人
图像/ 应用程序名称package.json name@acme/My Agent → my-agent (倒计时) cogitator-app, (中文(简体) ), deploy.app 命名 Fly 应用程序
软件包管理器锁定文件, packageManager, (中文(简体) ), pnpm-workspace.yamlpnpm-lock.yaml → pnpm install --frozen-lockfile,亚伦 1 → yarn install --frozen-lockfile亚恩·贝里 yarn install --immutable, (中文(简体) ), bun.lock → bun install, (中文(简体) ), package-lock.json → npm ci
安装文件旁边的文件 package.jsonpnpm-workspace.yaml, (中文(简体) ), .npmrc, (中文(简体) ), patches/, (中文(简体) ), .yarnrc.yml, (中文(简体) ), .yarn/, (中文(简体) ), bunfig.toml 在安装步骤前复制
运行时间启动命令 Bun锁文件, @cogitator-ai/tetsubun ... 开始 —— oven/bun:1-alpine 图像, 否则 node:24-alpine (为Bun管理的节点应用程序添加了Bun)
开始命令scripts.start,则 mainnode dist/index.js → CMD ["node","dist/index.js"],任何其他脚本 ~ npm start (单位:千美元)yarn start, (中文(简体) ), bun run start(中文(简体) )
构建步骤tsconfig.json + 键 scripts.build多阶段建设运行 <pm> run build
服务配置文件内存适配器adapter: postgres • 邮递服务
音量配置文件 memory.sqlite.path./data/memory.db 数量 /app/data
所需机密该模型的提供者, requireEnv(), (中文(简体) ), .env.exampleopenai/gpt-6.1-sol → OPENAI_API_KEY贝德罗克 AWS_REGION 和两个 AWS 键
奥巴马云模式标签 :cloud 编号 : -cloudgpt-oss:120b-cloud → OLLAMA_API_KEY

飞行前先检查每个目标份额: package.json 存在(a) cogitator wizard 助理没有,它运行 cogitator up 或者说 cogitator daemon start,项目是服务器或工人 start 脚本不装入 .env 文件为 --env-file (单位:千美元).env 远离图像, 使用 --env-file-if-exists发现了一些秘密 其他问题(无效配置, 无法解析) package.json,缺少开始脚本, tsconfig.json 无 build 脚本,一个没有已知健康路径的服务器, 本地 Ollama, Redis 或 Postgres on Fly, instances > 1 返回为 plan.warnings。 。 。 .

画面为生产建设分三个阶段. base 实值 node:24-alpine,或 oven/bun:1-alpine 当启动命令运行时 bun。 。 。 . builder 添加本地工具链( n)python3, (中文(简体) ), make, (中文(简体) ), g++),从锁文件中安装包管理器在BuildKit缓存挂载中的缓存,运行构建并去掉dev依赖. runtime 复制结果,作为图像的无特权用户运行(node 或者说 bun下 tini,因此,信号到达应用 和孩子进程 收获,并设定 NODE_ENV=production。服务器也会得到 PORT, (中文(简体) ), EXPOSE (单位:千美元) HEALTHCHECK 在健康之路上。 一个以 Bun 为软件包管理器的节点应用程序建立在节点图像上, Bun 复制到并且 node-gyp 已安装,因此本地依赖性如 better-sqlite3 编译. A 类 start 窗体脚本 node [flags] dist/index.js 成为 CMD 直接,没有它的 --env-file 旗帜:容器从部署中获得环境. file: 财务报告和审定财务报表 link: 在安装步骤前复制依赖性 。 在 Plug'n'Play (Yarn 默认链接器) 上的一个 Yarn Berry 工程将它的软件包档案安装到图像中 .yarn/cache中,只保留生产设备,并开始于装入的 PnP 解析器 NODE_OPTIONS (单位:千美元).pnp.cjs,以及 .pnp.loader.mjs 用于ES模块).

部署目标

夹克

手工制品被写到 .cogitator/数字 : Dockerfile, (中文(简体) ), .dockerignore, (中文(简体) ), Dockerfile.dockerignore 财务报告和审定财务报表 docker-compose.prod.yml词根 .dockerignore 当项目无时创建, 所以 .env 财务报告和审定财务报表 node_modules 从不输入图像.

deploy 构建并标记图像( n)<registry>/<image>:latest与 BuildKit (英语:DOCKER_BUILDKIT=1,然后运行 docker compose up -d 用于应用加Redis、PostgreSQL和Ollama服务,它需要这些服务(健康方面,数据以所命名的量表示)。 每个键都出现在应用程序的"编译"中 environment(单位:千美元) REDIS_URL 编号 : DATABASE_URL 内 env 替换已捆绑的服务 URL, 并在 secrets 从您的环境中读取捆绑的 URL 后退。 应用程序容器必须持续运行几秒钟(new DockerProvider({ startupCheckMs }), 默认 8 秒 : 一个退出或重新启动失败的部署与它的最后一个日志行, 因此报告一个缺失的秘密而不是重启循环 。 结果 url 实值 http://localhost:<port> 对于服务器,没有端口的工人没有. status 报告是否 app 服务正在运行, logsCommand 正在建设 docker compose logs (单位:千美元)--follow, (中文(简体) ), --tail,100行默认, --timestamps一个服务, destroy 运行 docker compose down 并保持体积,其中的被拉动的模型.

飞行前检查: 安装了 Docker, 守护进程运行, 配置 v2 可用, BuildKit ()docker buildx),可用于多克文件的缓存挂载,注册证书(从多克配置,证书助手和存储处读取),秘密.

飞.io

生成 .cogitator/fly.toml (你自己的) fly.toml 从未覆盖) [env], VM 大小从 resources页:1 [mounts] 音量,对于服务器来说,一个 HTTP 服务 health 财务报告和审定财务报表 min_machines_running 从 instances (机器自动停车和自动启动) 工人得不到支票 也不会被自动拦截 应用程序是 deploy.app,或者图像名称. deploy 需要时创建应用程序( e)fly apps create --org <org> 与 deploy.org及其数量 阶段 秘密 运行 fly deploy --config .cogitator/fly.toml --dockerfile .cogitator/Dockerfile缩放至 instances。对于服务器,结果列表 https://<app>.fly.dev、其健康URL和A2A代理卡(/.well-known/agent.json) (中文(简体) ). Fly在应用程序旁边没有Redis或Postgres:, REDIS_URL 编号 : DATABASE_URL 成为需要的秘密( 用 fly redis create, (中文(简体) ), fly postgres create 或任何托管服务). status 读取 fly status, (中文(简体) ), logsCommand 正在建设 fly logs --app <app> (单位:千美元)--no-tail 除非跟随,没有服务, tail 或者说 timestamps他不肯答应, destroy 运行 fly apps destroy. 飞行前检查:应用程序名称遵循了飞行规则(小写字母、数字和破折号,以字母或数字开头和结尾,最多63个字符)和 deploy.org 是一颗子弹, flyctl 已安装, fly auth whoami还有秘密 和谁一起工作 flyctl 或者说 fly 打开 PATH。 。 。 .

自定义提供者

import {
  ArtifactGenerator,
  Deployer,
  ProjectAnalyzer,
  type DeployCommand,
  type DeployLogsOptions,
  type DeployProvider,
} from '@cogitator-ai/deploy';
import type {
  DeployConfig,
  DeployResult,
  DeployStatus,
  GeneratedArtifacts,
  PreflightResult,
} from '@cogitator-ai/types';

class KubernetesProvider implements DeployProvider {
  readonly name = 'kubernetes';

  async preflight(config: DeployConfig, projectDir: string): Promise<PreflightResult> {
    return { checks: [], passed: true };
  }
  async generate(config: DeployConfig, projectDir: string): Promise<GeneratedArtifacts> {
    const build = new ProjectAnalyzer().detectBuild(projectDir);
    return new ArtifactGenerator().generate(config, build);
  }
  async deploy(
    config: DeployConfig,
    artifacts: GeneratedArtifacts,
    projectDir: string
  ): Promise<DeployResult> {
    // write artifacts.files to artifacts.outputDir, apply manifests, ...
    return { success: true, url: 'https://agents.example.com' };
  }
  async status(config: DeployConfig, projectDir: string): Promise<DeployStatus> {
    return { running: true };
  }
  async destroy(config: DeployConfig, projectDir: string): Promise<void> {}
  async logsCommand(
    config: DeployConfig,
    projectDir: string,
    options: DeployLogsOptions
  ): Promise<DeployCommand> {
    return {
      command: 'kubectl',
      args: ['logs', 'deploy/agents', ...(options.follow ? ['-f'] : [])],
    };
  }
}

const deployer = new Deployer();
deployer.registerProvider(new KubernetesProvider());
await deployer.deploy({ projectDir: process.cwd(), target: 'kubernetes' });

Deployer.deploy() 运行飞行前,打电话给你的供应商 generate(config, projectDir) 将结果交给它 deploy() (与 dryRun 它停止之后 generate()) (中文(简体) ). 将文件写入磁盘由提供者决定 . logsCommand 可选的,并可以返回命令或承诺: Deployer.logsCommand(target, config, projectDir, options) 决定呼叫者与接通的终端一起运行的命令 cogitator deploy logs 已经 实例重用内置多克文件 : ProjectAnalyzer.detectBuild(projectDir) 报告 TypeScript 设置、软件包管理器、锁定文件、构建脚本并启动命令 ArtifactGenerator 需要帮助.

所有外部命令都是在没有 shell 的情况下执行的,因此带有空格和用户提供值的路径是逐字传递的.

建筑

ProjectAnalyzer  →  DeployProvider.generate  →  DeployProvider.deploy  →  Result
(detect config)     (Dockerfile, etc.)            (docker/fly)              (url, status)

另见

许可证

麻省理工学院

版本与发布记录

@cogitator-ai/deploy 共发布 79 个版本,首次发布于 2026/02/20;过去 12 个月发布了 79 个版本。

版本发布日期距今
0.7.18latest2026/10/2912 天前
0.7.172026/10/2912 天前
0.7.162026/10/2912 天前
0.7.152026/10/2912 天前
0.7.142026/10/2912 天前
0.7.132026/10/2912 天前

关于 @cogitator-ai/deploy 的常见问题

@cogitator-ai/deploy 是什么?

部署1个指挥员

如何安装 @cogitator-ai/deploy?

在项目目录运行 npm install @cogitator-ai/deploy,或使用 pnpm add / yarn add / bun add。

@cogitator-ai/deploy 支持 TypeScript 吗?

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

@cogitator-ai/deploy 支持 ESM 还是 CommonJS?

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

@cogitator-ai/deploy 需要什么版本的 Node.js?

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

@cogitator-ai/deploy 可以商用吗?

@cogitator-ai/deploy 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@cogitator-ai/deploy 的下载量有多少?

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

@cogitator-ai/deploy 还在维护吗?

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