@civitai/agent-runner

中文文档
0.1.1发布于 2026/11/01MITTypeScriptES Module构建来源已验证

用于远程模式的持久运行程序:应答作为Postgres上的DBOS工作流运行,通过聊天的运行程序协议(start, events, stop, patch)提供服务。

中文使用文档
文档目录8 节
  1. 安装
  2. 部署提供了什么
  3. Run grants必须说明它们是什么
  4. 草图
  5. 持久的名称:不要随意更改
  6. 测试支持
  7. 开发
  8. 许可证

@civitai / agent-runner

的服务器端 <civitai-chat>的远程模式。该页不再在页面中运行辅助回复,而是在运行器上启动运行,通过SSE跟踪其事件,并可以停止运行。如果页面关闭或重新加载,则继续运行。这个包就是那个跑步者:

  • 每个回复运行为 DBOS Postgres上的工作流。当进程崩溃时,应答从其最后保存的进度中恢复,无论哪个副本恢复它。
  • 它服务于聊天的运行程序协议v1 (@civitai/components-chat/runner-protocol)通过HTTP:启动,查找,停止,通过幂等键停止,修补对话,并从任何偏移读取运行的事件。
  • 查看器一次只能运行一个活动。

Civitai自己的跑步助手就是基于它开发的。该软件包对Civitai的账户、代币或型号一无所知。部署通过几个接口提供这些功能。

安装

pnpm add @civitai/agent-runner @civitai/components-chat

@civitai/components-chat 是对等依赖,因为页面和运行程序必须使用相同的协议。您需要Node 22或更高版本,以及DBOS可以使用的Postgres数据库。

部署提供了什么

跑步者从外部需要的一切都通过内部接口 interfaces.ts:

接口它是做什么的
Authenticator将请求的标头转换为它所代表的用户id。
GrantVerifier检查运行是否允许启动或补丁携带(报头) x-run-grant)。
GrantStore在运行有效期间保持运行的授权,在您自己的表中,而不是在DBOS中。
ConversationStore加载并自动更新保存的会话,即聊天的v2/v3元数据。
ModelProvider提供回复使用的语言模型。一个真实的服务器根据每次请求生成它的凭据。
ToolProvider打开回复工具。跑步者在停止或回复结束时关闭它们。

跑步者从不向模型,工具或商店接缝提供凭证。任何传递到DBOS工作流或从步骤返回的内容都将在Postgres中持久化,因此令牌永远不能作为参数或返回值跨越这些接缝。

Run grants必须说明它们是什么

一、 RunGrant 携带必要的 preview 国旗:

  • preview: false 是跑步补助金。这是一个很好的开始或补丁。
  • preview: true 是预演补助金。只有在需要一辆车的路线上才有用 grantFor(request, conversationId, undefined, true).
  • 没有布尔值的授权 preview 既不。它在任何地方都被拒绝,并且运行API记录拒绝。 Runner.start 在保留赠款之前,还会拒绝除运行赠款以外的任何内容。

规则关闭失败,因此忘记标志的验证器不能让其预览授权开始运行。

草图

import { buildRunApp, loggerOptions, Runner } from '@civitai/agent-runner';

const runner = new Runner({
  models, // ModelProvider
  tools, // ToolProvider
  store, // ConversationStore
  grants: grantStore, // GrantStore
  log,
  wallClockMs: 10 * 60 * 1000,
  stopGraceMs: 20_000,
});

const app = buildRunApp({
  service: runner,
  authenticator, // Authenticator
  grants: grantVerifier, // GrantVerifier
  logger: loggerOptions('info'), // never logs request headers
});

runner.register(); // once per process, before launch
await runner.launch({ databaseUrl, executorId: 'replica-1', workerConcurrency: 8 });
await app.listen({ port: 8080, host: '0.0.0.0' });

buildRunApp 也需要 routes,用于在运行API旁边提供部署自己的路由。他们得到的是一样的 authed, grantFor 和 refuse 运行API使用的helper。它还需要 patchRefusal 和 basePath.

持久的名称:不要随意更改

重新启动的进程恢复的运行将根据DBOS为其记录的内容重播。工作流名称(reply, reply-stop-marker)、排队(replies)、应用程式版本(WORKFLOW_VERSION, reply-1),日志流(events)和回电的顺序因此是合同的一部分。 test/reply-dbos-calls.pg.test.ts 从DBOS自己的表中读取它们,并将它们与黄金记录进行比较。该记录与运行程序移动到此包之前验证的记录字节相同。如果你改变了其中任何一个,bump WORKFLOW_VERSION 随着变化。

@dbos-inc/dbos-sdk 因为同样的原因被固定在一个完全相同的版本上。

测试支持

@civitai/agent-runner/test-support 导出套件使用的组件:脚本化模型、组件工具、承载身份验证器、文件支持的对话存储、SSE读取器,以及 freshDatabase 对于一次性Postgres数据库(它读为 ASSISTANT_RUNNER_TEST_DATABASE_URL)。

开发

pnpm --filter @civitai/agent-runner typecheck
pnpm --filter @civitai/agent-runner build

套件在CI中运行,在 agent-runner job,针对Postgres服务。在CI之外,postgresql支持的套件会跳过unless ASSISTANT_RUNNER_TEST_DATABASE_URL 指向可以在其中创建和删除数据库的服务器。在CI中,丢失的URL会使套件失败,而不是跳过它。 test/core-boundary.test.ts 失败的时候 src/ 从外部导入文件,或导入一个包 package.json 不申报。

许可证

麻省理工学院

版本与发布记录

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

版本发布日期距今
0.1.1latest2026/11/012 天前
0.1.02026/10/286 天前
0.0.0-stage2026/10/286 天前

关于 @civitai/agent-runner 的常见问题

@civitai/agent-runner 是什么?

用于远程模式的持久运行程序:应答作为Postgres上的DBOS工作流运行,通过聊天的运行程序协议(start, events, stop, patch)提供服务。

如何安装 @civitai/agent-runner?

在项目目录运行 npm install @civitai/agent-runner,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@civitai/components-chat(>=0.25.0 <1.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@civitai/agent-runner 支持 TypeScript 吗?

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

@civitai/agent-runner 支持 ESM 还是 CommonJS?

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

@civitai/agent-runner 需要什么版本的 Node.js?

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

@civitai/agent-runner 可以商用吗?

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

@civitai/agent-runner 还在维护吗?

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