@contentrain/decide

中文文档
0.2.64发布于 2026/11/04MITTypeScriptES Module构建来源已验证近 30 天下载 4430

关于移徙和治理管道的小规模决定——规则首先是Jev,然后是Claude Haiku,缓存、预算和审计

中文使用文档
文档目录9 节
  1. 使用量
  2. 杰维
  3. 输入形状
  4. 类型
  5. 缓存、预算、断层器、审计
  6. LLM链接:克洛德·海库
  7. 校正
  8. Contentrain生态系统的一部分
  9. 许可证

@ contentrain/ 决定

关于移徙和治理管道的小规模决定。 决定是 从闭合集中选择(a) 选择或固定标题(a)上的位置 分数(b) —— 从未生成文本 。 要求有一个链条:

rule  →  cache  →  Jev (typesafe.ai)  →  LLM (Claude Haiku, opt-in)  →  the rule's tentative answer

定相法则先答. 只有规则未定的事情 a 提供者,每个答案以其形状输入为缓存,支出上限为每 每天租户,一个断路器停止 呼叫一个失败的供应商,和每一个 (c) 将决定纳入审计记录。 任何提供者失败都无法拨打: 裁决回到规则的答案,标记 unreviewed。 。 。 .

pnpm add @contentrain/decide

使用量

import { createDecider, JsonlAuditLog, JsonlDecisionCache, MemoryDailyBudget } from '@contentrain/decide'

const decider = createDecider({
  cache: new JsonlDecisionCache('.run/decision-cache.jsonl'),
  audit: new JsonlAuditLog('.run/decisions.jsonl'),
  budget: new MemoryDailyBudget(500),
})

const decision = await decider.decide('punch_item', {
  label: '(aile: post)',
  reason: 'en kötü sayfa 43.2 < 80 (5 sayfa ölçüldü)',
})

decision.choice      // 'measurement'
decision.score       // 2.03 — severity on the kind's 0–3 rubric
decision.confidence  // 0–1
decision.source      // 'rule' | 'jev' | 'llm' | 'cache'
decision.unreviewed  // true when no provider answered

decideMany(kind, inputs) 批次:一种物品共享请求,和 a 类型可将它们进一步分类(punch_item 每个请求最多发送一个网站 25项,如PoC-1所做的那样)。 否则,请求最多持有32件物品并停留 保守估计的~32克令牌下(batch 选项; 类型本身 限制胜出)。 除非 fold: false。 。 。 . decide(kind, input) 没有决定者使用 默认 1: 内置类型, Jev 当设置符号时, 一个内存缓存 .

杰维

Jev只有在 CONTENTRAIN_JEW_API_TOKEN 设置在环境中. 符号在每次请求时读取,直接进入 Authorization 页眉; 从未被存储在对象上、 记录或放入 错误消息 。 请求到一个固定终点, https://api.typesafe.ai/v1/systemone ——没有基于URL的选项. 没有 表示链条从规则中解答, 带内决定会回来 unreviewed。 。 。 .

输入形状

每一种都有一个形状器, 形状输入是唯一离开 处理或到达缓存键。 它能维持决定需要的东西 并放弃 剩余 : punch_item 放弃页面链接并翻转 URL、电子邮件地址和 文本中的路径进入占位符; eligibility_band 保留发现数 并自取样本记录。 审计日志保持输入的散列, 绝不是输入.

这个 请求形状 是构成提供者请求的一切的散列: 模式、批量限制、标题、行格式、问题及其 标准requestShapeHash(kind)) (中文(简体) ). 它是每个缓存键的一部分 每一个 审计记录,所以改变的提示 从来没有为旧的答案.

类型

仁爱答复规则提供者
punch_item类(product_defect • 妇女 source_limit • 妇女 cosmetic • 妇女 measurement+ 严重性 0-3运行报告措辞的暂定类别,它承认;从未确定,因为规则不能规定严重程度Jev, 有 PoC-1 的逐字请求( 站点占位符放在一边); 咨询
eligibility_bandeligible • 妇女 access_blocked • 妇女 page_only • 妇女 custom_type,或 needs_human镜像 Migrate 的 judgeEligibility; 未决定的带外最后Jev,只在乐队里
field_typestring • 妇女 text • 妇女 markdown • 妇女 richtext • 妇女 relation • 妇女 url • 妇女 select,每个项目仅限于事实包提供的选项明确长度的最后决定(100个字符) string页:1 text),而且许多情况下具有 3 个值(select(b) 暂定其他办法Jev,每个选项集一个请求
region_namehero • 妇女 card-grid • 妇女 faq • 妇女 cta • .(18个科)从课堂、建筑工和儿童提示中试取; content 当没有匹配时, 0杰维
unmapped_element天体-基特元件 id, prose,或 site-specific当元素名称表示时, 最终( 0. 9)*-carousel → slider, (中文(简体) ), *toggle → faq, (中文(简体) ), *heading → prose; 暂定 site-specific 否则Jev,每个建筑商一个请求;在0.5置信度下 = site-specific

后面三个是Migrate v3的"事实包"所剩的: 关于a的其他一切 工地的结构在他们面前是确定的。 他们的投入来了 这些形状器再次刷: 四舍五入,文本被剪去并被擦除,元素和类名称被缩小为 slug.

这个 eligibility_band 带是两种情况: 以及一个有样本的站点 一个捷夫 0.5以下的回答变成 needs_human将Jev的选作 proposed。 。 。 . needs_human 它只是衍生出来的——它从未提供给Jev.

过 options.rule 用你自己的规则(移民通过判决功能), 或者说 null 跳过规则.

缓存、预算、断层器、审计

块内建带上你自己的
缓存 — 密钥 sha256(kind, schema version, request shape, canonical shaped input)MemoryDecisionCache, (中文(简体) ), JsonlDecisionCache执行 DecisionCache (数据库库属于主机)
预算——每个租户/协调世界时日的提供者决定MemoryDailyBudget执行 DecisionBudget
断路器——每个提供者,在3个60s的请求失败后打开CircuitBreaker通过 breakers
审计——每个决定一份记录:投入散列、回答、信心、来源、时间、象征JsonlAuditLog (单位:千美元)decisions.jsonl, (中文(简体) ), MemoryAuditLog执行 AuditSink

只有提供者的答案被缓存 。 一条规则的答案并不花费什么 重算,和 退缩不是任何人被审查的答案。 缓存命中和最终规则答案 不使用预算.

预算和断路器覆盖两个供应商。 共享一个每日上限: 请求中的每件东西 实际都花在它身上 所以一件Jev 失败了,海口回答两次。 打开的断开器后面的物件 在Jev外出期间, 只有Haiku的要求才收费。 每个供应商都有自己的断路器,而且 捷夫的公开断路器后面的一个东西 继续去海库.

两个供应商都报告象征性使用. cost 每项决定的份额 其批次的代币,以及 usd 只有在你给供应商定价时: pricing: { jev: {…}, llm: { inputPerMTok, outputPerMTok } }Jev的供应商 发布无价.

Haiku回答Jev没有的问题:Jev关闭,它的断路器打开,暂停,暂停 错误。 它是选入的:除非你用电线,否则任何模型都不会被调用.

import { createAnthropicProvider, createDecider } from '@contentrain/decide'

const decider = createDecider({
  llm: createAnthropicProvider(), // claude-haiku-4-5-20251001, temperature 0
  pricing: { llm: { inputPerMTok: 1, outputPerMTok: 5 } },
})

密钥读取自 ANTHROPIC_API_KEY 在每次请求时 与Jev的符号相同:从未存储,登录或放入出错消息. 请求只到 https://api.anthropic.com/v1/messages海库得到 和Jev一样的状态和问题 通过一个 强制工具在温度 0 调用, 所以答案是一个结构化的记录, 而不是 解说出流言. A Claude 4.7或以后的型号model 选项)不使用 在Opus和Sonnet 5.5上,也没有强制调用工具 通过结构化产出、同样迅速和等同的JSON查询 计划. punch_item 发送按字数计量的提示 AO- 9; 其他类型得到一个 从他们的问题中创建的通用提示.

它的答案被缓存在 Jev 的同名密钥下: 一个输入一次回答, by 或提供方,然后从缓存中获取,以及 model 说 一个回答。 模特儿没有自信 所以海口的回答 携带 confidence: 0 ("未测出"). 对于 eligibility_band 这意味着 每个 海库选手去 needs_human,选择保留为 proposed。 。 。 .

一个主机可以连接另一个模型:执行 DecisionProvider 与 name: 'llm' 传为 llm默认为 noopLlmProvider,这是 永远无法使用.

校正

punch_item 是一种建议。 Jev没有以同样的方式回答同样的要求 每次,这些答案都不稳定: 显示在项目旁边 人来确认, 从来没有作为一个门.

pnpm calibration:live 将 PoC-1 套装送去 Jev 三次, 确切地说是 包裹寄出: 22份运行报告中的272个出击物品,其中40个被标记为 手给我 写着 calibration/<date>.json jev模型报告后 请求- 形状散列, 只计数 。 城门就定在捷夫的地上 已经 中位数运行必须达到至少85%的班级协议和严重程度 在至少90%的级别内,至少85%的标签物品必须 在三跑中保持同样的班级.

最新档案, calibration/2026-09-18.json在jev-1.13.0上测量 有请求形状 32da2187d1dc37d5它通过:

  • 班级协议:全行40分中34分/35分/33分,中位数85.0%. 没错 门槛.
  • 在一个级别内严重性:40分之37/37/37,中位数92.5%.
  • 稳定:36/40个标有标签的物品和237/272个所有物品.

请求会发送站点名称、其URL和项目链接的占位符 。 那个 在请求中保留现场身份,费用约为2至3项 严重协议。 测试将运出的请求形状保存到文件形状 hash,并需要文件通过.

pnpm calibration:live --provider haiku 对海库运行相同的设定 (单位:千美元)--provider both 运行两者。 这需要 ANTHROPIC_API_KEY时 同一大门,写着 calibration/haiku/<date>.json 由海口自己请求 形状( e)anthropicRequestShapeHash按清单价格计算的费用。 海库是 倒置,所以它的门结果 被记录为信息 和屏蔽什么. calibration/haiku/2026-09-19.json (Claude-haiku-4-5-20251001, LLM 请求) 形状 96aa1feb04caef9a,"三跑"0.33美元) 失败 大门:

  • 班级协议:37 / 36 / 37分40分,中位数92.5%.
  • 在一个级别内的严重程度:33/34/33/40,中位数82.5%。 这是 在90%的门下。 Haiku回答严重性的整体水平,而Jev 回答关卡之间的分数.
  • 稳定: 39/40 有标签的物项和259/272的所有物项.

PC-1设定了真实站点的名称,所以它留在了这个寄存器之外. CONTENTRAIN_DECIDE_POC1_DIR 将脚本和测试指向它.

测试的重放通过完整的决定者录制答案 (单位:千美元)createReplayFetch) (中文(简体) ). 检查代码路径: 塑造、组合、, 分批、阅读和评分。 它不能测量模型. measurePunchCalibration(labels, decisions) 分数 punch_item 路边 PoC -1确实有.

Contentrain生态系统的一部分

Contentrain是团队和人工智能代理商的一个内容治理生态系统;代理商通过 MCP 服务器。这个包是 开源工具 (单位:千美元)文档) (中文(简体) ). 其他部分: 工作室 团队审查和作用, 迁移 用于将 WordPress 站点移动到 Astro,以及 桥,作为Contentrain商店输出一个站点的免费WordPress插件.

许可证

麻省理工学院

版本与发布记录

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

版本发布日期距今
0.2.64latest2026/11/046 天前
0.2.632026/10/3110 天前
0.2.622026/10/3110 天前
0.2.612026/10/3011 天前
0.2.602026/10/2813 天前
0.2.592026/10/2813 天前

关于 @contentrain/decide 的常见问题

@contentrain/decide 是什么?

关于移徙和治理管道的小规模决定——规则首先是Jev,然后是Claude Haiku,缓存、预算和审计

如何安装 @contentrain/decide?

在项目目录运行 npm install @contentrain/decide,或使用 pnpm add / yarn add / bun add。

@contentrain/decide 支持 TypeScript 吗?

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

@contentrain/decide 支持 ESM 还是 CommonJS?

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

@contentrain/decide 可以商用吗?

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

@contentrain/decide 的下载量有多少?

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

@contentrain/decide 还在维护吗?

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