# @affordance/core 中文文档

规范地址：https://npmcn.com/package/%40affordance/core/

版本：0\.6\.0
npm 元数据更新时间：2026-09-17T18:53:34.355Z
中文译文更新时间：2026-11-05T18:48:50.606Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：479 kB，117 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=22\.12
- 运行依赖：2 个
- 首次发布：2026-09-07T01:12:08.519Z
- 最新版本发布：2026-09-17T18:53:34.033Z
- 近 30 天下载量：55216（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：6（近 12 个月 6 个）

## 中文简介

适应性案例管理,有防守步骤,自动执行,并可插入存储.

## 安装

```sh
npm install @affordance/core
```

也可以使用：`pnpm add @affordance/core`、`yarn add @affordance/core`、`bun add @affordance/core`

## README

# @ 支付/ 核心

从当前域名事实和演员权限来计算可用的作品. 一个步骤 操作者拥有持久性、交易、最后业务招生和外部 打电话 承接验证了状态/投入,评价了"卫兵"并引用了一次.

```ts
import { actor, caseType, createBackgroundRuntime, createEngine, stepsOf } from '@affordance/core'
import { z } from 'zod'

const State = z.object({ ein: z.string().nullable() })
const step = stepsOf(State, actor<{ id: string }>())
const definition = caseType({
  name: 'deal', state: State,
  steps: [
    step({
      name: 'record-ein', input: z.object({ ein: z.string() }),
      handler: async ({ reference, actor, input, state }) => {
        const saved = await deals.recordEin(reference, actor, input)
        return { ...state, ein: saved.ein } // Already persisted; evidence only.
      },
    }),
    step({
      name: 'notify',
      handler: async ({ reference, executionId }) => {
        await notifications.send(reference, { executionId })
        // No return: success without a diff journal.
      },
    }),
  ],
})

// Bind an authoritative loader using your adapter, e.g. storage.bindCase(definition, { load }).
const runtime = createBackgroundRuntime()
const engine = createEngine({
  storage, caseTypes: [binding],
  operations: { journalTimeoutMs: 1000 },
  launch: { runtime, leaseMs: 60_000 },
})
const result = await engine.run(caseId, 'record-ein', { actor, input: { ein: '12-3456789' } })
// result.journal.status: 'skipped' | 'recorded' | 'failed'
const { executionId } = await engine.launch(caseId, 'notify', { actor })
const execution = await engine.getExecution(executionId)
// running | completed | unresolved | resolved; null for unknown IDs and ordinary runs.
await runtime.drain() // Stop new launches and await owned tasks during application shutdown.
```

`run` 等待处理器的补全和设定的可选日记尝试. `launch` 在运行时间拥有剩余工作时返回处理器条目后。 双用 同样的 `Promise<State | void>` 合同和处理器上下文。 没有注射 寄存器、交易回调或补全包. `undefined` 跳过 日记; 有效国家制作 `observed` diff,即使没有改变. 返回国从未成为目前的个案国。 随后读取使用约束.

丢弃的处理器出错不会从 `run`;承诺效果可能 已经存在。 启动的处理器错误显示为未解决状态 。 无效 参数和日记失败不会使处理器成功完成或 重试业务代码 。 日记超时包括适配器获取等. 已经启动的写作可能会在原执行ID下完成后.

提供的运行时间是一个长寿的节点进程,并保留未完成的任务 活到他们安顿下来 它无法活下来处理死亡或没有服务器的主机 请求后冻结。 这样的主机需要一个独立自主的运行时间 真正的操作员入场承认。 单是排队接受是不够的. 没有重播、心跳、自动重试、补偿或恢复工作者.

发射所有权不包括同一情况下的其他参与发射. 过期会留下一个块直到应用程序/操作器对齐:

```ts
await engine.resolveExecution(executionId, { actor, reason: 'Reconciled with provider' })
```

决议不是取消。 租赁不设栅栏或提供商写作; 旧的处理器在过期或解析后仍然可以写作. 普通运行和 不相关的作者不参加。 主办方必须授权地位和解决.

安全演员归属默认为字符串演员或字符串 `actor.id`,否则 无效。 配置 `operations.actorIdentity` 用于另一个字符串身份。 请求 输入和认证对象不通过此管道进行分录。 定义大小写 作为预定日记投影的状态;在和 过后. 保存证书和无关数据 从计划.

此断取β去除 `execute`, (中文(简体) ), `executeNonAtomic`,交易 处理器寄存器和原子适配器端口。 框架期刊/租赁数据 未迁移。 见 [结构](https://github.com/mochicodecom/affordance/blob/main/docs/architecture.md)。 。 。 .

## 常见问题

### @affordance/core 是什么？

适应性案例管理,有防守步骤,自动执行,并可插入存储\.

### 如何安装 @affordance/core？

在项目目录运行 npm install @affordance/core，或使用 pnpm add / yarn add / bun add。

### @affordance/core 支持 TypeScript 吗？

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

### @affordance/core 支持 ESM 还是 CommonJS？

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

### @affordance/core 需要什么版本的 Node\.js？

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

### @affordance/core 可以商用吗？

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

### @affordance/core 的下载量有多少？

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

### @affordance/core 还在维护吗？

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

