# @chernabog/sdk 中文文档

规范地址：https://npmcn.com/package/%40chernabog/sdk/

版本：0\.11\.1
npm 元数据更新时间：2026-11-09T14:00:34.053Z
中文译文更新时间：2026-11-09T13:50:44.462Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40chernabog/sdk
原文对照：https://npmcn.com/package/%40chernabog/sdk/?lang=original
项目主页：https://github.com/dataquail/chernabog#readme
源码仓库：https://github.com/dataquail/chernabog

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：539 kB，31 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- 运行依赖：0 个
- peer 依赖：effect 4\.0\.5，@chernabog/core ^1\.0\.0
- 首次发布：2026-10-19T12:35:44.749Z
- 最新版本发布：2026-11-09T14:00:33.695Z
- 近 30 天下载量：2487（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：14（近 12 个月 14 个）

## 中文简介

块 Chernabog 流量来自( Implement, Review, Plan, Hybrid, Pult Request, poils) , 在 @ chernabog/ core 上写, 它重新导出

## 安装

```sh
npm install @chernabog/sdk
```

也可以使用：`pnpm add @chernabog/sdk`、`yarn add @chernabog/sdk`、`bun add @chernabog/sdk`

## README

# @chernabog/ sdk (英语)

块 Chernabog 流和步骤来自(`Implement`, (中文(简体) ), `Review`, (中文(简体) ), `Plan`, (中文(简体) ), `Hybrid`, (中文(简体) ), `Stack`, (中文(简体) ), `PullRequest`,提示),结束 [`@chernabog/core`](https://www.npmjs.com/package/@chernabog/core),它再出口,所以流 进口所有的东西 从这个包.

一张回购单上写着 `.chernabog/package.json`是因为 `dependencies`,在它所选择的版本上,每个Repo的基分支的快照都安装它:两个在不同的版本上并排运行在一个守护进程上. 这个 `chernabog` 二进制供应其自己的副本 `@chernabog/core` 财务报告和审定财务报表 `effect` 在运行时,当此软件包的对等区域打开时运行 `@chernabog/core` 包括二进制提供的核心. `chernabog recipes upgrade` 将 repo 移动到其二进制发布的版本.

## 流量

```ts
import { Claims, defineFlow, Implement, step } from "@chernabog/sdk";
import { Effect, Schema } from "effect";

export default defineFlow({
  trigger: Implement.triggerFor("auto:eligible"), // the work items to act on
  gate: Implement.gate, // checked before each run starts; fail with Skip to hold it back
  concurrency: 1,
  workflow: (item) =>
    Effect.gen(function* () {
      const issue = yield* Implement.issueOf(item);

      // However the run ends, its claim on the issue goes.
      return yield* Effect.gen(function* () {
        const { branch } = yield* Implement.claim(issue);
        const checked = yield* step(
          "check-scope",
          { issue },
          { output: Schema.Struct({ ok: Schema.Boolean }) },
        );
        // ...
      }).pipe(Claims.releasing(Claims.issue(issue)));
    }),
});
```

| 帮助 | 它会做什么 |
| --- | --- |
| `activity(name, effect, { success })` | 一个持久的步骤。 它运行一次,结果被保存;重放返回所保存的结果. 名字在跑步中是独一无二的,所以循环中的一个步骤带有它的圆: `fix-ci-2`。 。 。 . |
| `step(name, input, { output })` | 运行 `.chernabog/stages/<name>` 作为一种活动. |
| `sleep(name, duration)` | 一个能活过重启的持久暂停 . |
| `awaitSignal(signals, { id, timeout })` | 等待其中一个信号( 触发器报告于 `WorkItem.signals`或时出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出入出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出入出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出 触发器可以用 `wakeOnly` 唤醒等待的跑步 不开始一个新的,或与 `held: "<why>"` 开始不运行并显示原因 `chernabog status`。 。 。 . |
| `renderPrompt(name, values)` | 填充数 `.chernabog/prompts/<name>.md`,或,对于从食谱包中导入的流量(`FlowPackage`),包裹是当repo没有. |
| `Skip`, (中文(简体) ), `NeedsHuman` | 彻底结束逃亡,或者把物品交给一个人. |

`Implement`, (中文(简体) ), `Review` 财务报告和审定财务报表 `PullRequest` 持有审查环路的构件,每个活动流可以重新排序,省去或包装. `Hybrid` 持有混合路径的块,其中一个人在交互式会话中与代理处理一个问题. `Plan` 持有计划食谱的块,一旦一个人批准代理人的计划,将一个分题变成一个分题的史诗. `Stack` 通过合并,包括下层被挤压后,将拉动请求的一叠层与基数更新,并调整层以适应所撰写的会话中移动的内容。 切纳博格的 [食谱](https://dataquail.github.io/chernabog/recipes/) 完全的流出 这些块,一个回波烤成自己的 `.chernabog/flows/`; 以 [`@chernabog/recipes`](https://www.npmjs.com/package/@chernabog/recipes),其来源是 [`packages/recipes/`](https://github.com/dataquail/chernabog/tree/main/packages/recipes)。 。 。 .

流动也可以给 `item: (key) => Effect<Option<WorkItem>>`,键的工作项目 一个人的名字,触发器不报告,因为 `Hybrid.itemFor` 找到问题 `chernabog start` 名称.

副作用属于活动或步骤内部,从不出现在工作流程正文中,每回放一次都会运行.

## 步骤

```ts
// .chernabog/stages/find-work.ts
import { defineStage, GitHub, Skip } from "@chernabog/sdk";
import { Effect, Schema } from "effect";

export default defineStage({
  name: "find-work",
  input: Schema.Struct({}),
  output: Schema.Struct({ issue: Schema.Number }),
  run: () =>
    Effect.gen(function* () {
      const [issue] = yield* (yield* GitHub).queuedIssuesLabelled("auto:eligible");
      if (issue === undefined) return yield* new Skip({ reason: "nothing queued" });
      return { issue: issue.number };
    }),
});
```

## 服务

服务是核心的:每个都是二进制提供的端口.

| 服务 | 封面 |
| --- | --- |
| `Repo` | Repo 合并设置: swit, Base 分支, 标签, 限制, 关口, 笔记 |
| `Run` | 运行:流出、运行 ID 和工作项目 |
| `GitHub` | 被排队的问题、要求、标签、评论、子问题和阻塞器、分支、拉取请求、 CI 状态 |
| `Agent` | 通过适配器开始和恢复代理会话; `withPerson` 在一个人面前打开一个 |
| `Git`, (中文(简体) ), `Worktree` | 提前提交, 更改文件, 推出; 每个分支一个工作树 |
| `Usage` | 账户检查和使用闸门 |
| `RunLog` | 运行日志 |

每个服务都是一层,因此一个团队可以用自己的执行来代替一个,测试可以使用假的.

## 常见问题

### @chernabog/sdk 是什么？

块 Chernabog 流量来自\( Implement, Review, Plan, Hybrid, Pult Request, poils\) , 在 @ chernabog/ core 上写, 它重新导出

### 如何安装 @chernabog/sdk？

在项目目录运行 npm install @chernabog/sdk，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：effect（4\.0\.5）、@chernabog/core（^1\.0\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @chernabog/sdk 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/chernabog\_\_sdk 是否存在。

### @chernabog/sdk 支持 ESM 还是 CommonJS？

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

### @chernabog/sdk 可以商用吗？

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

### @chernabog/sdk 的下载量有多少？

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

### @chernabog/sdk 还在维护吗？

最新版本 0\.11\.1 发布于 2026/11/09（今天）；至今共发布 14 个版本，其中过去 12 个月发布了 14 个；首次发布于 2026/10/19。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

