@framers/agentos-ext-content-policy-rewriter

中文文档
0.1.4发布于 2026/11/11Apache-2.0TypeScriptES Module零依赖构建来源已验证近 30 天下载 2万

Opt-in content policy guardrail for AgentOS — detects violations and rewrites or blocks output via LLM judge

原始使用文档
文档目录7 节
  1. Features
  2. Quick Start
  3. What it judges
  4. agent.config.json
  5. Categories
  6. Presets
  7. License

@framers/agentos-ext-content-policy-rewriter

Opt-in content policy guardrail for AgentOS — detects violations in agent output and either blocks or rewrites them to compliant versions via LLM judge.

Agents are uncensored by default. This extension only activates when explicitly configured.

Features

  • Two-layer hybrid pipeline: keyword pre-filter on streaming chunks (zero-cost) + LLM judge/rewriter on final response
  • 8 configurable categories: illegal_harmful, adult, profanity, violence, self_harm, hate_speech, illegal_activity, custom
  • 4 presets: uncensored, uncensored-safe, family-friendly, enterprise
  • Fully configurable: every category can be enabled/disabled, action set to block or sanitize
  • No hardcoded restrictions: all policies are user-controlled

Quick Start

import { createContentPolicyRewriter } from '@framers/agentos-ext-content-policy-rewriter';

// Minimal — blocks illegal_harmful content only (default)
const pack = createContentPolicyRewriter({});

// Family-friendly preset
const pack = createContentPolicyRewriter('family-friendly');

// Custom configuration
const pack = createContentPolicyRewriter({
  categories: {
    adult: { enabled: true, action: 'sanitize' },
    profanity: { enabled: true, action: 'sanitize' },
    violence: { enabled: true, action: 'block' },
  },
  customRules: 'Never mention competitor products by name.',
});

// Truly uncensored — zero filtering
const pack = createContentPolicyRewriter('uncensored');

What it judges

The guard reads the chunks of an AgentOS output stream as the runtime emits them (AgentOSResponseChunkType):

  • Text deltas (type: 'text_delta', text in textDelta): the keyword pre-filter scans each delta together with the last words of the stream's earlier deltas, so a phrase split across two deltas is found. Block categories are tried first. A match in a block category ends the stream with an error chunk whose code is KEYWORD_<CATEGORY>; a match in a sanitize category replaces the delta with [Content removed by policy]. The pre-filter is broad on purpose: a delta that ends partway through a word is scanned as it is, so a word cut at a delta's end can match a keyword it only begins with. Set streamingPreFilter: false to skip deltas, and pass holdUntilFinal to the output dispatcher to show nothing before the whole reply is judged.
  • The final response (type: 'final_response', text in finalResponseText): a keyword match in any block category blocks at once, with no LLM call. Otherwise the LLM judge classifies the text against the enabled categories; violations of a category that is not enabled are ignored. Any violation in a block category blocks the reply, with the categories as the reason code. When every violation is in a sanitize category, the LLM rewriter writes the replacement and the guard returns it as a sanitize; when the rewrite call fails or returns no text the reply is blocked with REWRITE_FAILED.
  • When the judge cannot classify (the call fails, or the answer is not the asked JSON), the reply is blocked with JUDGE_FAILED. Set judgeFailure: 'allow' to let such a reply pass instead.

Every other chunk passes unjudged. A host that calls evaluateOutput() itself passes the same chunk shapes.

agent.config.json

{
  "guardrails": {
    "contentPolicy": {
      "enabled": true,
      "categories": {
        "illegal_harmful": { "enabled": true, "action": "block" },
        "adult": { "enabled": true, "action": "sanitize" },
        "profanity": { "enabled": true, "action": "sanitize" }
      }
    }
  }
}

Or shorthand:

{
  "guardrails": {
    "contentPolicy": "uncensored-safe"
  }
}

Categories

CategoryDescriptionDefault
illegal_harmfulCSAM, sexual assault, bestiality, exploitationenabled, block
adultConsensual sexually explicit contentdisabled
profanitySlurs, vulgar languagedisabled
violenceGraphic violence, goredisabled
self_harmSelf-harm, suicide instructionsdisabled
hate_speechDiscriminatory, bigoted contentdisabled
illegal_activityDrug synthesis, weapons manufacturingdisabled
customUser-defined policy rulesdisabled

Presets

PresetEffect
uncensoredAll categories disabled — zero filtering
uncensored-safeOnly illegal_harmful enabled
family-friendlyAll categories enabled (sanitize where possible)
enterpriseAll categories enabled + custom rules

License

Apache-2.0

版本与发布记录

@framers/agentos-ext-content-policy-rewriter 共发布 5 个版本,首次发布于 2026/03/29;过去 12 个月发布了 5 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.1.4latest2026/11/114 天前
0.1.32026/10/2125 天前
0.1.22026/10/111 个月前
0.1.12026/10/081 个月前
0.1.02026/03/297 个月前

关于 @framers/agentos-ext-content-policy-rewriter 的常见问题

@framers/agentos-ext-content-policy-rewriter 是什么?

Opt-in content policy guardrail for AgentOS — detects violations and rewrites or blocks output via LLM judge

如何安装 @framers/agentos-ext-content-policy-rewriter?

在项目目录运行 npm install @framers/agentos-ext-content-policy-rewriter,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@framers/agentos(>=0.10.40)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@framers/agentos-ext-content-policy-rewriter 支持 TypeScript 吗?

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

@framers/agentos-ext-content-policy-rewriter 支持 ESM 还是 CommonJS?

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

@framers/agentos-ext-content-policy-rewriter 需要什么版本的 Node.js?

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

@framers/agentos-ext-content-policy-rewriter 可以商用吗?

@framers/agentos-ext-content-policy-rewriter 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@framers/agentos-ext-content-policy-rewriter 的下载量有多少?

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

@framers/agentos-ext-content-policy-rewriter 还在维护吗?

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