@framers/agentos-ext-pii-redaction

中文文档
0.3.4发布于 2026/11/13Apache-2.0TypeScriptES Module零依赖近 30 天下载 2.3万

四级PII检测和校正

中文使用文档
文档目录13 节
  1. 它会做什么
  2. NER 层
  3. 街道地址和社会手柄
  4. 安装
  5. 编辑字符串
  6. 护栏
  7. 拒绝而不是修改
  8. 选项
  9. 公共 API
  10. 实例
  11. 懒惰装入和可选安装
  12. 许可证
  13. 正在检查安装的释放

@ framers/ agentos-ext-pii-redaction 页面存档备份,存于互联网档案馆

四级 PII 检测和校正 @framers/agentos护栏从代理投入和产出中取出个人可识别的信息 redactPii() 对于您即将放入提示、 存储或日志的任何字符串, 都会做同样的操作 .

它会做什么

探测管道PiiDetectionPipeline分为四级,每级工作需要时:

  1. 缩写数字 : 打开'是电子邮件,电话号码,SSN,卡片号码,IBANs,API密钥,AWS密钥,护照,驾驶执照,政府身份证,IP地址,出生日期和密码地址的图案. 当请求的类型需要时运行, 并关闭了 Openredaction 的假阳性过滤器: 当一个词开头的" on","after"或"address"坐落在其中的50个字符之内时, 该过滤器会丢掉一个电话号码, 和一个链接"/"附近的电子邮件地址. 每个图案的验证器仍然运行. openredaction的名称模式没有被使用:它需要大写单词,然后最多可以写出3个字,所以它读作"从树枝来你好"和"这里是天气"作为名称,标题Case标题如"Next Stepes"也使用. 名称为二级和三级. 何时 entityTypes 名称 STREET_ADDRESS 或者说 SOCIAL_HANDLE,这两类类型的包的图案代码也在这个层次上运行(下级) (中文(简体) ).
  2. NLP 预过滤器数字 : 折衷 提议名称(得分为0.55),位置(0.45)和组织(0.4).
  3. NER 模型数字 : Xenova/bert-base-NER 通过变压器.js证实它们。 装入时 enableNerModel 没有 false 第2级提出了名称、地点或组织,或 compromise 没有安装(第2层然后建议什么也没有,而该模型是仅剩的查找名称的层次)。 它如何读取模型的输出如下.
  4. LLM法官:重新审查评分在0.3到0.7之间的实体. 它只在当 llmJudge 已经设定。 它的答案不能引入外部类型 entityTypes:当法官确认某类实体时,东道主没有要求该实体保留自己的类型并取取法官的信任. 缓存判决按要求的类型分开.

然后将重叠的跨度合并起来(一种类型的两个跨度变成一种跨度,因此一个识别器比另一个识别出"约翰·史密斯"更肯定不会在文本中留下"史密斯"),实体下方 confidenceThreshold 和编辑引擎redactText)在所选择的区域内写出每个跨度 redactionStyle。 。 。 .

NER 层

这个模型是 dslim/bert-base-NER (英语) 内 Xenova的 ONNX 端口数字 : bert-base-cased 在CoNLL-2003上进行了微调 英语, 标签每个 WordPiece 符号 O, (中文(简体) ), B-编号 :I-PER, (中文(简体) ), B-编号 :I-LOC, (中文(简体) ), B-编号 :I-ORG 或者说 B-编号 :I-MISC (港号) config.json) (中文(简体) ). 它的卡片报告测试-集精度90.7并召回91.9,并警告它"偶然地将子词符号标记为实体". 变压器.js 3.x的符号分类管道返回了每个符号的标签,分数和文本,但没有字符抵消("TODO:在其出处中添加对起始和结束的支持"),所以识别器:

  • 要求每个迹象, O 包括;
  • 读取一个单词(一个符号和 ## 以它的第一个作品的标签和分数来表示,所以一个实体覆盖整个词;
  • 在文本中找到每个字,作为标语符读取(它 BertNormalizer 将控制字符,如零宽空间,放在CJK象形文字周围的空间,而不小写,也不取出口音),从词尾的位置,从不包含更长的字母和数字,并在文本本身的偏移中读出那个位置;
  • 仅在获得0.7或更多分数的单词开始一个实体(NER_MIN_WORD_SCORE 内 src/recognizers/NerModelRecognizer.ts,在输油管中取一个没有LLM法官的实体的分数;卡片没有给出自己的分数),并加入一个 I- 当该实体有其标签且彼此之间只有空格时,该实体的任何分数都用字,因此,该模型的姓氏不太确定与它的名称相同;
  • 将每个实体写成文本的长度,从第一个字开始到最后一个字结束,得分为最有自信的字.
文本NER实体
Hello from the stub.无
My name is Wolfgang and I live in Berlin.PERSON "沃尔夫冈"(11至19),, LOCATION "柏林" (34-40) (中文(简体) )
Ask Sam about Lee.PERSON 萨姆, PERSON "李":"二名相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相相去相去相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相

第1至3级的图书馆是可选的附属单位。 一个不见了 compromise 或者说 @huggingface/transformers 跳过其分层,但缺少两个分层 openredaction 每当需要类型图案服务时,都会进行检测投掷。 这两种接触类型不需要三个类型.

街道地址和社会手柄

两个接触类型, STREET_ADDRESS 财务报告和审定财务报表 SOCIAL_HANDLE,关闭,除非 entityTypes 给他们起名字. CONTACT_PII_ENTITY_TYPES 列出两者. ALL_PII_ENTITY_TYPES 保留其18个类型并保持默认值 entityTypes,所以一个包 建造,没有选项报告.

import {
  CONTACT_PII_ENTITY_TYPES,
  REGEX_TIER_TYPES,
  createPiiRedactionGuardrail,
} from '@framers/agentos-ext-pii-redaction';

// A public room: the regex tier's structured kinds and the two contact types. No model loads.
const pack = createPiiRedactionGuardrail({
  entityTypes: [...REGEX_TIER_TYPES, ...CONTACT_PII_ENTITY_TYPES],
});
// "I live at 42 Maple Street, Apt 3. Add me on insta: sunny.side"
// reaches the model as "I live at [STREET_ADDRESS]. Add me on insta: [SOCIAL_HANDLE]"

ContactRecognizer (单位:千美元)src/recognizers/ContactRecognizer.ts)在regex分级中发现两者都有它自己的图案代码:没有模型,没有网络呼叫,没有依赖性. 不使用Openredaction的两种模式。 内容 ADDRESS_STREET 没有验证符,并读取"10多分第一"作为地址 SOCIAL_MEDIA_HANDLE 数取一个手柄,只取出一个简短的单词列表,这些单词会留下"insta","snap","discord"和"tg".

类型发现什么分数
STREET_ADDRESS一个家号,一个到四个名词和一个街道名词,至少有一个支持0.9 (中文(简体) )
后办公框: P.O. Box 123, (中文(简体) ), PO Box 123, (中文(简体) ), Post Office Box 1230.9 (中文(简体) )
没有支持的形状0.45 (中文(简体) )
SOCIAL_HANDLE连接到配置文件或邀请0.95 (中文(简体) )
服务词和名称0.9 (中文(简体) )
一个赤裸的 @name 没有服务单词0.4 (中文(简体) )

下辖实体 confidenceThreshold (0.5, 除非设定) 放弃。 没有支持的地址形状, 如标题“ 10 More Points for First Place ” , 以及房间本身的 @mention 只向降低阈值的宿主报告.

街道地址

  • 房号为一至六位数,并带有可选字母或第二个数字(221B, (中文(简体) ), 12-14, (中文(简体) ), 4/12) (中文(简体) ). 它从一个时间,一个小数,一个版本数,一个价格,一个路径或一个标签,所以 $1200 Park Avenue 财务报告和审定财务报表 4.12 Main Street 没有地址.
  • 街道用词有街道,道路,大道,道道,行驶道,法院,大道,道,梯地,地,方,近地,月亮,高速公路,公园道和小道等,有短表形式 st, (中文(简体) ), rd, (中文(简体) ), ave, (中文(简体) ), av, (中文(简体) ), ln, (中文(简体) ), dr, (中文(简体) ), ct, (中文(简体) ), blvd, (中文(简体) ), ter, (中文(简体) ), tce, (中文(简体) ), pl, (中文(简体) ), sq, (中文(简体) ), cl, (中文(简体) ), cres, (中文(简体) ), hwy, (中文(简体) ), pkwy 财务报告和审定财务报表 trl。 。 。 .
  • 道,地,道,道,道,道,道相相相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相相接相相接相接相相相相接相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相 它们只有在大写名词或正文("12 Kings Way")后进行大写时才算数,短文也一样 av, (中文(简体) ), ct, (中文(简体) ), ter, (中文(简体) ), tce, (中文(简体) ), pl, (中文(简体) ), sq, (中文(简体) ), cl, (中文(简体) ), cres 财务报告和审定财务报表 trl. "10多分作为第一位"在任何阈值上都不是地址.
  • 一个名称词是字母(包括重音字母)或正文("5th"). 小写函数单词,计数或计量不是一等,所以"出道5英里","一等道"和"主街5平"没有地址. 小写名数:"我住在42枫树街apt 3"是一个地址.
  • 支助包括:
    • 一个单位: apt, (中文(简体) ), apartment, (中文(简体) ), unit, (中文(简体) ), suite, (中文(简体) ), ste, (中文(简体) ), flat 或者说 # 并用其编号,在街道后("221B Bake Street, Apt 4")或住宅号前("Flat 2, 14 High Street").
    • 街道后60个字符内的邮政编码:一个州后为美国ZIP,一个州后或地区后为澳大利亚邮政编码,一个加拿大邮政编码,一个英国邮政编码.
    • 一个城市和一个地区,在逗号之后,或者在下一行. 该地区是美国的一个州,加拿大的一个省或领土,澳大利亚的一个州或领土,或英国的一个民族,按名称或代码划分. 任何其他地区也都算数,如英国的一个郡,当城市和地区各自遵循一个逗号,并且每个都首都:"国王道12号,读取,伯克郡". 逗号后面的普通话不是地方:"国王道12号,然后我们走,OK"没有支持.
    • 在它面前的40个字符中有一个地址提示:"活","地址","位置","发送到",以及"邮件","船","交付"或"后"来代替"发送".
  • 该实体涵盖与街道一起发现的单位,城市,区域和邮政编码. 提示保留在文本中.
  • 所涵盖的格式:美国、联合王国、加拿大和澳大利亚的英语地址。 无法检测到以其他语言和其他国家格式的地址.

社会手柄

  • 链接 : instagram.com/<name> (和 instagr.am, (中文(简体) ), t.me/<name> (和 telegram.me,与 + 财务报告和审定财务报表 joinchat/ 请, discord.gg/<code> (和 discord.com/invite/<code>, (中文(简体) ), discordapp.com/invite/<code>, (中文(简体) ), x.com/<name> (和 twitter.com, (中文(简体) ), tiktok.com/@<name>, (中文(简体) ), snapchat.com/add/<name>, (中文(简体) ), wa.me/<digits> 财务报告和审定财务报表 reddit.com/user/<name> (和 /u/或无 https:// 财务报告和审定财务报表 www.。该实体覆盖了与其结束的链接。 连接到服务本身的一页(instagram.com/p/..., (中文(简体) ), x.com/home, (中文(简体) ), reddit.com/r/...) 名称为无账户,而不是一个账户.
  • 服务词和名. 服务词有Instagram,insta,ig, snapchat, snap, unple, 电报, tg, kik, twitter, tiktok 和 redit; Reddit's u/name 计数时没有服务单词.
    • 结肠后,等号或空格后,取名:"Insta: name","ig- name". "名","用户名","手","id"和"tag"等词可以坐到:"discord tag: name#1234"之间. 标签后一个普通的单词(下面列出的被排除在外的单词之一)只有在条款结束或条款要求联系时才算数:"Insta: cool"和"Insta: cool上添加我"给出一个名字,"Reminder on difference: no proyers"和"twitter- What a mess"不会.
    • 空格后,当名称带有一个标记时,它就算不上普通单词(一个 @数字、下划线、点、点 #1234 标记 : “ tg @name”, “discord name# 1234 ” , 当线上两个单独站立或先于逗号或分号( “ kik name ” , “ snap sunshingside, thanks" ) , 或者当条款要求联系时( “ 将我添加到快速名称上” ) 。 条款询问它何时持有"hmu",或添加之一,dm,pm,msg,消息,文本,被击中,发现,跟随,到达,接触或ping与"我","我们","我"或"我们"接通,或直接在服务词("ad snap name")前"添加". 动词单词不问:"我收到了关于不和的讯息,说我赢了","哪里都找不到不和"没有手柄.
    • 在"是"后,名字以标记来计数,或者在名称结束条款或条款要求联系时,在占有者之后:"我的Insta是名字","我的Insta是名字,添加我". "我的不和又在演戏"说服务如何进行,没有手柄.
    • 被明确标注的名字可以是两个字符,包括一个数字("insta: a1"),或者一个普通词来结束条款("insta: cool"). 没有标签或 @,名称至少有两个字母,普通的服务相关词被排除在外:"不和服务器","insta故事","tiktok视频","oh snap that was close","discod anyone".
    • 当一个名称在它的行上只跟随一个全站或感叹标记,或者下一个是逗号或分号时,一个名称就结束了条款.
    • ig 对于"I guess",也简称为"我猜",因此它只在结肠,等号或破折号之前算出,并有标记名,或作为某人名("我的ig是名").
    • 实体是唯一的名字,所以一个字符串在 allowlist比如一个房间的账户名称,匹配它.
  • 代码参考文件,例如 twitter: process.env.TWITTER_HANDLE ; 点名账户名称仍然有效.
  • 一个赤裸的 @name永远不要 @ 电子邮件地址,范围套件(@scope/name或装饰者.

何等为主所过. entityTypes (对于一个公共房间, REGEX_TIER_TYPES 和两个联系类型,如上) confidenceThreshold 及其字符串 allowlist。由于这些类型,包没有装入型号:第2级和第3级在装入任何没有需要的型号时返回。 两个选择改变了这一点。 命名 PERSON, (中文(简体) ), ORGANIZATION 或者说 LOCATION 带来二级和三级. llmJudge 将每个实体的得分从0.3分到0.7分送到法官的模型中, 有了这些类型,就意味着每一个裸露的 @name (0.4)和每一个不支持的地址形状(0.45).

隐私. 看守员的判决名称和计数(reason, (中文(简体) ), metadata.entityCount) (中文(简体) ). 匹配文本仅存在于管道的结果中(PiiEntity.text) (中文(简体) ). 一个实体的 metadata 命名匹配的图案和所找到的支持类型,并保留文本中的任何内容。 包里没有日志.

与 LOCATION 名称也. 当NER发现一个城市或里面的其他实体时,一个超过主机阈值并允许列表的街道地址会保持其完整的跨度,甚至更高的分数. 一个允许的或门槛以下的地址不会压制单独的NER检测.

安装

npm install @framers/agentos-ext-pii-redaction

同伴依赖 : @framers/agentos 0.12.0 或较后.

编辑字符串

import { redactPii } from '@framers/agentos-ext-pii-redaction';

const result = await redactPii('Write to [email protected] or call +1 415 555 0100 about the 1919 treaty.');
// result.found: true
// result.types: ['EMAIL', 'PHONE']
// result.text:  the same sentence with [EMAIL] and [PHONE] where the address and the number were

没有选择, redactPii 找到 regex 级的类型(REGEX_TIER_TYPES数字 : EMAIL, (中文(简体) ), PHONE, (中文(简体) ), SSN, (中文(简体) ), CREDIT_CARD, (中文(简体) ), IBAN, (中文(简体) ), API_KEY, (中文(简体) ), AWS_KEY, (中文(简体) ), GOV_ID, (中文(简体) ), PASSPORT, (中文(简体) ), DRIVERS_LICENSE, (中文(简体) ), IP_ADDRESS)与NER模型关闭,所以没有模型载荷和名字保持原样. 它每组选择方案建造一条管道并重新使用。 当检测失败时,例如当 openredaction 未安装, 因此代码不能通过未编辑的文本停止 .

选项默认它的设定
entityTypesREGEX_TIER_TYPES要找到的种类
redactionStyle'placeholder'找到的跨度是如何写入的
enableNerModelfalse第3级是否可以加载
pipeline下方的任何其他包装方案,例如: confidenceThreshold, (中文(简体) ), allowlist, (中文(简体) ), nerDtype 或者说 llmJudge

Regex 级库处理文档域的地址, 如 example.com 作为占位符,并把它们留在文本中,所以用地址测试它报告的地址,例如一个在下面的域中 .invalid。 。 。 .

PiiDetectionPipeline 财务报告和审定财务报表 redactText 用于要被检测到的实体本身的代码.

护栏

import { AgentOS } from '@framers/agentos';
import { createPiiRedactionGuardrail } from '@framers/agentos-ext-pii-redaction';

const agentos = new AgentOS();
await agentos.initialize({
  ...config, // the rest of your AgentOSConfig
  extensionManifest: {
    packs: [
      {
        factory: () =>
          createPiiRedactionGuardrail({
            entityTypes: ['EMAIL', 'PHONE', 'SSN', 'PERSON', 'CREDIT_CARD'],
            redactionStyle: 'placeholder',
          }),
        enabled: true,
      },
    ],
  },
});

包里有护栏 pii-redaction-guardrail 和工具 pii_scan 财务报告和审定财务报表 pii_redact。默认情况下,护栏会用带有已编辑文本的 SANITIZE 结果来回答。 在输出时,它会缓冲出每个流的文本,并在句子边界和流尾进行扫描.

护栏关了 内容 config.failClosed 实值 true 除非选项设定 failClosed: false,因此当检测抛出时,AgentOS的守护链路调度器会屏蔽文本而不是跳过守护链路,并通过未被刷取的文本来传递. 在编辑模式下,它的配置也设置 canSanitize: true它运行在调度员的防毒道中 evaluateStreamingChunks 从该名称的选项.

拒绝而不是修改

设定 onDetect: 'refuse' 拒绝检测到的个人数据,并要求发送者编辑。 警卫回答 BLOCK 用 PII_PRESENT、检测的种类、数量和检测等级。 它永远不会返回 SANITIZE,匹配文本,或者在此模式下重写文本.

refuseTypes 缩小导致拒绝的类型。 允许它拒绝每一个检测到的类型; 一个空列表拒绝任何类型 。 其他检测到的类型则单独存在. entityTypes 决定输油管检测器的型号,所以每次进入 refuseTypes 必须是在 entityTypes 也 (或默认设置时) entityTypes ”)。 警卫 refuseTypes 命名一个从未被检测过的类型永远不会拒绝它,因此构建一个掷出: createPiiRedactionGuardrail({ onDetect: 'refuse', refuseTypes: ['STREET_ADDRESS'] }) 失败, 因为默认集没有联系人类型 .

与 sequential: true守卫们在看守之前奔跑 所以一个被拒绝的消息没有传达给他们 两者都有 config.sequential 财务报告和审定财务报表 config.canSanitize: 核心0.15.124 读取后一,以运行第一期后卫. 此命令请求不会使拒绝模式重写文本 . sequential 默认为虚假,只影响拒绝模式.

import { moderateContent, type IGuardrailService } from '@framers/agentos';
import { CONTACT_PII_ENTITY_TYPES, createPiiRedactionGuardrail } from '@framers/agentos-ext-pii-redaction';

const pack = createPiiRedactionGuardrail({
  entityTypes: [...CONTACT_PII_ENTITY_TYPES],
  onDetect: 'refuse',
  sequential: true,
  guardrailScope: 'input',
});
const guard = pack.descriptors.find((item) => item.kind === 'guardrail')!.payload as IGuardrailService;
const decision = await moderateContent(
  { text: 'my address is 221 Baker Street, London NW1 6XE' },
  { guards: [guard], context: { userId: 'member', sessionId: 'session' } },
);
// decision.outcome === 'refuse'; decision.deciding.reasonCode === 'PII_PRESENT'
// No sanitizedText is returned.

例子使用核心0.17.1中可用的温和切入点. 通过较老的看守铁路调度员拒绝,仍然得到现有同伴依赖范围的支持.

对于输出,拒绝模式忽略了流出三角洲和 evaluateStreamingChunks并判断完整 FINAL_RESPONSE 语句。 东道主如果需要防止产出披露,必须暂停交付,直至最后评价.

两种接触类型单独装入没有模型或可选库. 命名 PERSON, (中文(简体) ), ORGANIZATION,或 LOCATION 启用 NLP 和 NER 级,并可以加载 NER 型号. 设置 llmJudge 将模棱两可的候选人送到指定的法官面前,包括 @name 跨度为0.4,不支持的地址形状为0.45,即使默认阈值为0.5.

选项

createPiiRedactionGuardrail(options) 带 PiiRedactionPackOptions (见 src/types.ts:

选项默认它的设定
entityTypes18种类型 ALL_PII_ENTITY_TYPES检测的种类. STREET_ADDRESS 财务报告和审定财务报表 SOCIAL_HANDLE (单位:千美元)CONTACT_PII_ENTITY_TYPES) 仅在此处命名时被检测到
confidenceThreshold0.5下方的单位被丢弃
redactionStyle'placeholder'placeholder (单位:千美元)[EMAIL], (中文(简体) ), mask (每个单词的第一个角色被保留,其余的主演), hash (单位:千美元)[EMAIL:a3f2c1d4e5],文本的 SHA-256 中的类型和前10个十六进制字符或 category-tag (单位:千美元)<PII type="EMAIL">REDACTED</PII>(中文(简体) )
allowlist无找到的文本无论如何等于其中一条字符串的位置
denylist无找到的文本等于其中之一的字符串分数 1.0
enableNerModeltrue第三级是否可以加载;仅限 false 关掉
nerDtype'q8'NER模型的重量: q8 (单位:千美元)onnx/model_quantized.onnx,大约109 MB)或 fp32 (单位:千美元)onnx/model.onnx,约431 MB)
llmJudge无{ provider, model, apiKey?, baseUrl?, maxConcurrency?, cacheSize? }; 打开第4级
guardrailScope'both'input, (中文(简体) ), output 或者说 both
onDetect'redact'已检测到红外线跨度,或 'refuse' 与 PII_PRESENT 没有重写文本
refuseTypes所有检测类型在拒绝模式中,只有这些类型块;其他检测则被单独放出. 每个人必须加入 entityTypes,或者包 投出当建造
sequentialfalse在拒绝模式下,在没有消毒的守卫之前运行,包括在更老的核心上运行
evaluateStreamingChunksfalse护道配置的旗子为流出块
maxStreamingEvaluations50每个流的句子边界扫描
failClosedtrue扔出文本的护栏评价是否

allowlist 财务报告和审定财务报表 denylist 接受 RegExp 条目类型; 检测仅应用字符串条目.

公共 API

  • redactPii(text, options?), (中文(简体) ), REGEX_TIER_TYPES, (中文(简体) ), RedactPiiOptions, (中文(简体) ), RedactPiiResult: 一个字符串的编辑
  • PiiDetectionPipeline, (中文(简体) ), redactText(text, entities, style): 探测管道和编辑引擎
  • ContactRecognizer: 两种接触类型的单独识别器. recognize(text) 寻找两者; recognize(text, { entityTypes }) 名单所列者
  • createPiiRedactionGuardrail(options?): 工厂还原 ExtensionPack
  • createExtensionPack(context): AgentOS 扩展使用的可自动发现工厂 自动提取
  • 类型和常数 src/types.ts其中 PiiRedactionPackOptions, (中文(简体) ), PiiEntity, (中文(简体) ), PiiEntityType, (中文(简体) ), ALL_PII_ENTITY_TYPES, (中文(简体) ), CONTACT_PII_ENTITY_TYPES 财务报告和审定财务报表 PII_SERVICE_IDS

实例

  • test/: 各种识别器类型的编辑固定装置

懒惰装入和可选安装

此软件包是 @framers/agentos-extensions-registry每个扩展的登记船舶目录元数据,但 createCuratedManifest() 电话 import.meta.resolve() 每个条目并默默跳过任何未安装的条目. npm install @framers/agentos-ext-pii-redaction 是大门.

NER模型在激活时不加载. 3级问 SharedServiceRegistry 页:1 agentos:nlp:ner-pipeline 在第一次扫描时需要它,而登记册则建立变压器。 js 管道,然后,在 nerDtype 重量: 大约109 MB q8,默认值。 之后扫描, 流道护栏和两者 pii_scan 编号 : pii_redact 工具共享这个实例,所以第一个装入包会决定每个包在登记册上的重量.

可选的 LLM 级法官只在 llmJudge 已经设定。 关键是 llmJudge.apiKey否则护栏会读出秘密 <provider>.apiKey,则 pii.llm.apiKey从扩展管理器.

关于完整的DI模型和端到端的走过,见 扩展如何保持可选和懒惰 编辑 自动加载指南。 。 。 .

许可证

阿帕奇2.0 (英语). 见 自由主义。 。 。 .

正在检查安装的释放

scripts/published-consumer.mjs 通过操作已安装的 npm 包 moderateContent():地址拒绝而不重写文字,普通行行通过,而默认集仍然是18个类型. Release QA在一空项目中运行,其中包含精确的软件包版本和当前的核心. 它印着 published PII pack passes: 3 items 当那些支票通过.

版本与发布记录

@framers/agentos-ext-pii-redaction 共发布 8 个版本,首次发布于 2026/03/22;过去 12 个月发布了 8 个版本。

版本发布日期距今
0.3.4latest2026/11/132 天前
0.3.32026/11/096 天前
0.3.22026/10/2126 天前
0.3.12026/10/101 个月前
0.3.02026/10/101 个月前
0.2.12026/05/185 个月前

关于 @framers/agentos-ext-pii-redaction 的常见问题

@framers/agentos-ext-pii-redaction 是什么?

四级PII检测和校正

如何安装 @framers/agentos-ext-pii-redaction?

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

@framers/agentos-ext-pii-redaction 支持 TypeScript 吗?

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

@framers/agentos-ext-pii-redaction 支持 ESM 还是 CommonJS?

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

@framers/agentos-ext-pii-redaction 可以商用吗?

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

@framers/agentos-ext-pii-redaction 的下载量有多少?

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

@framers/agentos-ext-pii-redaction 还在维护吗?

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