@blackbelt-technology/pi-anthropic-messages

中文文档
0.3.5发布于 2026/10/28MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 3743

退役——未上架. 使用 Pi-agent-dashboard 的 Claude 订阅相容开关代替. i 的 Anthropic- messages 协议桥。 任何人类- messages API 会话的激活( Anthropic OAuth/ API- key + 代理提供方): canonicalize since pi co

中文使用文档
文档目录25 节
  1. 它会做什么
  2. 启动——单一紧门
  3. 逃生舱
  4. 对于软件包作者
  5. 简本
  6. 何时以冠名注册
  7. 没有等同 pi 的工具
  8. Schema 适配器( 计划)
  9. 问题:名字别名还不够
  10. 解决方案:每个工具绑定适配器
  11. 计划的约束
  12. 适配器的数据流
  13. 适应者实例 : web_search → WebSearch
  14. 动态约束性登记
  15. 优先发言 resolveOutboundName (带有适配器)
  16. 测试战略
  17. 卡通式漂移
  18. MCP 命名公约
  19. 配置
  20. 环境变量
  21. 安装( 本地)
  22. 建议的挂板扩展
  23. 与其他软件包的关系
  24. 释放
  25. 导出 API

@blackbelt-technology/pi-harmic-messages (原始内容存档于2019-03-21)

(原始内容存档于2026-10-28). ReTIRED (2026-10-28). 解开这个包裹.

pi remove npm:@blackbelt-technology/pi-anthropic-messages
rm -f /tmp/pi-am.log   # versions ≤ 0.3.4 wrote every prompt here

现场测试显示工具重命名对克洛德订阅账单没有任何影响. 只有两行Pi的内置 docs 提示区块物质( “ pi 本身 ”, "皮包"). pi -agent -dashboard 现在用它来处理这个 克劳德 订阅比较 切换(默认关闭,在 anthropic 提供者行, 适用于主会话和流线剂 (单位:千美元)pi- agent- dashboard 键盘 f59e34aa3) (中文(简体) ). 此包中的工具重命名也会导致工具被去掉中聊天时产生400个. 将每个请求的有效载荷记录到世界可读的版本 /tmp/pi-am.log· ; 0.3.5 清除了伐木,是最后释放. 调查结果: docs/reports/2026-10-28-bridge-necessity-report.md。 。 。 .

与 pi 说话时的协议级桥 克劳德模型 人类信息端点——直接Anthropic(OAuth或API键), 9号路透社 cc/claude-*配有克洛德后端的Pi-model-proxy,或任何其他 代号: Claude 代码味的交通通过 人类信息消息API.

它会做什么

Claude Code的上行端点 接受完全三种花样中的工具:

  1. Claude 核心代码工具 以警名命名—— Read, (中文(简体) ), Write, (中文(简体) ), Edit, (中文(简体) ), Bash, (中文(简体) ), Grep, (中文(简体) ), Glob, (中文(简体) ), AskUserQuestion, (中文(简体) ), Agent, (中文(简体) ), WebFetch, (中文(简体) ), WebSearch,, , , , , , , ,
  2. MCP工具,即任何名字以 mcp__<server>__。 。 。 .
  3. 原生工具 (单位:千美元)computer_use, (中文(简体) ), text_editor_20241022(......) (中文(简体) ).

pi-coding-agent 在小写名下注册其内置工具 (单位:千美元)read, (中文(简体) ), bash, (中文(简体) ), edit, (中文(简体) ), write, (中文(简体) ), grep)和扩展注册自定义 pi 工具在名称下 ask_user, (中文(简体) ), web_search, (中文(简体) ), fetch_content, (中文(简体) ), subagent没有一个符合克劳德密码的允许名单 没有干预,他们要么被剥去 或结束点芒果 他们有一个 _ide 后缀。 模特儿又回到幻觉中 bash_ide 而每个工具呼叫都失败了.

此扩展干涉协议层 :

  • 出境 (单位:千美元)before_provider_request: 将 pi 工具名改写为 末端接受的东西。 Canonical pi 核心工具(read, (中文(简体) ), write, (中文(简体) ), bash, (中文(简体) ), grep成为他们的克洛德代码资本化(Read, (中文(简体) ), Write, (中文(简体) ), Bash, (中文(简体) ), Grep) (中文(简体) ). 其它的都已经不是了 mcp__*- 前缀或化名为Anthropic-native工具 mcp__pi__<name>。 。 。 . tool_choice.name 和历史 tool_use 块 消息历史得到相同的重写。 系统提示轻快 重写( n)pi → the cli所以克劳德密码的身份指纹不会 旅行在"pi"这个词.
  • 入境 (单位:千美元)message_end:翻译模型重命名为工具的调用 在代理发送之前, 恢复到他们原来的 pi 名称, 所以存在 工具注册无需修改。 一个防守 _ide 后缀 脱衣舞可以处理克洛德代码端点操纵反应的个案. 直接以克洛德密码名称注册的工具(例如. Agent, (中文(简体) ), AskUserQuestion) 覆盖端到端:反向映射 包含一个身份条目 Agent_ide 将字条带回注册 Agent 处理者.

工具注册本身从未变异过 – 每个 pi 扩展 继续用原名登记其工具和桥梁 透明地处理翻译.

启动——单一紧门

桥只在这两个控件都用于活动时激活 会议模式:

  1. ctx.model.api === "anthropic-messages"
  2. /claude/i.test(ctx.model.id ?? "") ——型号代号包含: 大小写不敏感子字符串 claude
// Simplified:
function isClaudeAnthropicMessages(ctx) {
  return ctx.model?.api === "anthropic-messages"
      && /claude/i.test(ctx.model?.id ?? "");
}

当闸门失效时——即会话瞄准一个非克洛德模型在 人类信息(如:. 9Router/glm/glm-5, (中文(简体) ), 9Router/gemini/gemini-3-pro-preview或任意 api 其他 anthropic-messages —— 说 每个钩子处理器都是真的: 无工具 重命名, 无 mcp__pi__ 前缀,没有系统提示重写,没有反向映射, 没有 _ide 脱衣服 工具名流经Pi的注册,没有改变.

这是蓄意的: mcp__pi__ 名称空间和犬壳是 克劳德法典公约. 碰巧发言的非克劳德终点 人类信息格式不关心它们, 桥梁不应该 强制他们.

逃生舱

有两个环境变量 超过门 对于罕见的情况 与意图不符:

变量效果
PI_ANTHROPIC_MESSAGES_FORCE_CANONICAL=1强制打开任何门 anthropic-messages 不分型号编号。 对克劳德型号具有不寻常的ID(例如. c4-omega) (中文(简体) ).
PI_ANTHROPIC_MESSAGES_DISABLE_CANONICAL=1迫使大门关闭 即使Claude匹配的会话。 用于假阳性(如非克洛德模型,其id恰好包含"克洛德").

两者都需要 api === "anthropic-messages"。对于任何其它的 Api the 桥总是不开放.

对于软件包作者

简本

以自然名称注册工具 :

pi.registerTool({ name: "my_tool", /* … */ });

对于克劳德模型 人类信息会议,桥梁自动 发送 my_tool 接线为 mcp__pi__my_tool 并翻译 模型的回复 my_tool 在派来之前 为了其他一切 提供商(OpenAI、Google、Bedrock、非克洛德人类信息) 名称作为 -is 发送。 不需要配置 .

何时以冠名注册

如果你的工具拥有 确切名称和相容计划 带有 claude 代码工具( 见 Claude 代码工具参考, (中文(简体) ), 其准确资本化程度:

pi.registerTool({
  name: "Agent",          // matches canonical CC Agent tool
  parameters: /* … */     // schema compatible with CC's Agent
});

使Anthropic的地表变得土生土长 渲染(例如克劳德应用中的"代理"卡). 桥的 CC_CANONICAL_NAMES 设置列表中每个被接受的单词名称.

别 如果你的计谋与犬科不同.. 模型会产生幻觉 犬形的参数 和你的处理者 失败。 当有疑问时,请使用天然小写/ snake case 名称并让 页:1 mcp__pi__ 前缀处理它.

没有等同 pi 的工具

克劳德代码 WebSearch, (中文(简体) ), WebFetch, (中文(简体) ), AskUserQuestion, (中文(简体) ), TodoWrite, (中文(简体) ), NotebookEdit, (中文(简体) ), ExitPlanMode, (中文(简体) ), EnterPlanMode, (中文(简体) ), KillShell, (中文(简体) ), Skill, (中文(简体) ), 等无直接的pi等同. 你不需要做任何事情 关于 他们。 如果没有扩展登记这些名称下的工具,该模型 {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}这段会话根本就没有它们 {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}pi提供功能 等值 mcp__pi__* (单位:千美元)mcp__pi__ask_user, (中文(简体) ), mcp__pi__web_search, (中文(简体) ), mcp__pi__fetch_content,并使用该模型 换成这些.

Schema 适配器( 计划)

问题:名字别名还不够

重命名 web_search → WebSearch 电线上给模型一个 它从训练中认出了警犬的名字, 但模型后来叫 工具为 Claude 代码的预期输入形状而不是Pi's的。 \ N 这个 计划不匹配:

工具克洛德密码学计划Pi 扩展计划差距
web_search → WebSearch{ query, allowed_domains?, blocked_domains? }{ query?, queries?[], numResults?, recencyFilter?, domainFilter?[], provider?, workflow?, includeContent? }CC 是一个严格的子集; pi 支持多query, recernency 过滤, 提供者选择, 内容预选
fetch_content → WebFetch{ url, prompt? }{ url?, urls?[], prompt?, timestamp?, frames?, forceClone?, model? }CC是一个严格的子集; pi 支持多URL,视频帧提取, GitHub 克隆
get_subagent_result → TaskOutput{ task_id, wait?, verbose? }{ agent_id, wait?, verbose? }近同; 字段重命名 task_id ↔ agent_id
ask_user → AskUserQuestion{ question, options?[], allow_multiple? }{ method: confirm|select|multiselect|input|batch, prompt, options?[], questions?[] }基本不同的模式——Pi带有分批支持的受歧视的结合失去了太多的表达力,无法适应

没有计划翻译, 仅名化名会导致模型发送 罐形输入( c){ query: "foo" }{\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}给一个想要派的经理 {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080} 形状,它静静地工作,但 模型永远不会发现或使用pi的 较丰富的特征 (多清,复用,域过滤等.

解决方案:每个工具绑定适配器

从犬科化中受益的每个工具都有一个 工具键 与 一种可翻译出 canonical 有线电图和pi的调适器 处理器计划 :

export interface ToolBinding {
  /** Pi's registered tool name. */
  piName: string;

  /** Canonical name visible on the wire / to the model. */
  canonicalName: string;

  /**
   * Schema strategy:
   *   passthrough — pi's schema under the canonical name, zero translation.
   *   canonical   — canonical schema only; adaptInput required.
   *   hybrid      — canonical fields + pi-specific extras exposed.
   */
  schemaStrategy: "passthrough" | "canonical" | "hybrid";

  /** Schema sent to the model. Omitted for passthrough. */
  canonicalSchema?: TSchema;

  /** Reshape model's canonical input → pi handler's expected input. */
  adaptInput?: (wireInput: unknown) => unknown;

  /** Reshape pi's result → canonical result (rarely needed). */
  adaptOutput?: (piResult: unknown) => unknown;
}

这个 混合 战略是富于特色的pi工具的甜点: 揭开模型所训练的犬科领域 加号 特定 pi 额外,所以模型可以使用任意一种形状. 适配器恢复正常 无论模型产生什么结果.

计划的约束

Pi 工具光学战略理由
web_searchWebSearch混合展览 query + CC 域名 + pi 外加 (queries[], (中文(简体) ), recencyFilter, (中文(简体) ), numResults) (中文(简体) ). 适配器合并 allowed_domains编号 :blocked_domains {\fn黑体\fs20\shad2\2ah82\3ah20\4ah33\fscx95\3ch592001\be1}你觉得呢 domainFilter[] (前缀) - ”).
fetch_contentWebFetch混合展览 url + 键 prompt + pi 额外费用(urls[], (中文(简体) ), timestamp, (中文(简体) ), frames) (中文(简体) ). 适配器规范化 url编号 :urls 到pi的形状.
get_subagent_resultTaskOutput犬类近一分一计. 适配器重命名 task_id → agent_id。 。 。 .
ask_user—— 说跳过皮氏受歧视的结合confirm编号 :select编号 :multiselect编号 :input编号 :batch)在本质上比CC的平面更丰富 AskUserQuestion。适应将失去批量支持、输入确认UX和多选择语义。 保持原样 mcp__pi__ask_user。 。 。 .

适配器的数据流

  OUTBOUND (before_provider_request)
  ──────────────────────────────────
  1. Find binding by pi tool name
  2. Replace tool.name with binding.canonicalName
  3. If hybrid/canonical: replace tool.input_schema with binding.canonicalSchema
  4. Rewrite historical tool_use blocks in messages (name + input if needed)

  INBOUND (message_end)
  ─────────────────────
  1. Find binding by canonical name on tool_use block
  2. Restore tool_use.name to binding.piName
  3. If adaptInput defined: tool_use.input = binding.adaptInput(tool_use.input)
  4. Pi dispatches to original handler with pi-shaped arguments ✓

适应者实例 : web_search → WebSearch

// Hybrid schema: CC canonical fields + pi extras.
// Model can use either { query, blocked_domains } (CC-trained)
// or { queries, recencyFilter, numResults } (pi-specific).
const webSearchBinding: ToolBinding = {
  piName: "web_search",
  canonicalName: "WebSearch",
  schemaStrategy: "hybrid",
  canonicalSchema: Type.Object({
    query:             Type.Optional(Type.String()),
    allowed_domains:   Type.Optional(Type.Array(Type.String())),
    blocked_domains:   Type.Optional(Type.Array(Type.String())),
    // pi extras:
    queries:           Type.Optional(Type.Array(Type.String())),
    numResults:        Type.Optional(Type.Number()),
    recencyFilter:     Type.Optional(StringEnum(["day","week","month","year"])),
  }),
  adaptInput: (cc: any) => {
    const out: Record<string, unknown> = {};
    // Prefer queries[] over query (pi's richer multi-query)
    if (cc.queries?.length) out.queries = cc.queries;
    else if (cc.query)      out.query = cc.query;
    // Merge CC domain fields → pi's unified domainFilter[]
    const dom: string[] = [];
    if (cc.allowed_domains) dom.push(...cc.allowed_domains);
    if (cc.blocked_domains) dom.push(...cc.blocked_domains.map((d: string) => `-${d}`));
    if (dom.length)         out.domainFilter = dom;
    if (cc.numResults    !== undefined) out.numResults    = cc.numResults;
    if (cc.recencyFilter !== undefined) out.recencyFilter = cc.recencyFilter;
    return out;
  },
};

动态约束性登记

约束力可以两种方式登记:

  1. 内建 ——运入 extensions/bindings/ 在此软件包中 建议的延长期限web_search, (中文(简体) ), fetch_content, (中文(简体) ), get_subagent_result) (中文(简体) ).

  2. 动态 - 任何扩展可在运行时通过下列方式登记约束: 共享 globalThis 登记册,支持两个安装顺序 假设情况:

// In any extension's onLoad / session_start:
const registry = (globalThis as any).__piAnthropicBindings__;
if (registry) {
  registry.register({
    piName: "my_tool",
    canonicalName: "MyCanonical",
    schemaStrategy: "passthrough",
  });
}

桥上暴露了登记册 globalThis.__piAnthropicBindings__ 在负载时间。 如果桥没有安装,财产就不存在了 编辑 if (registry) 警卫是没有的——零接合.

对于 命令独立安装 (桥梁载重于其他 扩展),双方使用对称的放出和收听模式:

  • 每个要注册有约束力电话的扩展名 declareToolBinding() 在负载时间。 这都释放了束缚 立即订阅未来 request_bindings 事情是这样 如果桥再装入的话,可以重新装入.
  • 大桥订户 register_binding 事件和发射 request_bindings 已经运行的扩展重播.
  • 结果:无论负载顺序如何,所有绑定物都趋同.

优先发言 resolveOutboundName (带有适配器)

适配器安装后,出站名称分辨率将获得新的 最高优先级:

  1. binding registry (new)     ← adapter-equipped, schema translation
  2. CC_CANONICAL_NAMES          exact-case passthrough (name only)
  3. already mcp__*              passthrough
  4. NATIVE_ALIASES (legacy)     name-only alias
  5. FLAT_TO_MCP                 companion aliases
  6. PI_TO_CC_CANONICAL          core tool capitalization
  7. default                     mcp__pi__<name>

测试战略

每个绑定适配器都是纯函数(wireInput → piInput测试 在隔离中——没有接线,没有钩子,没有嘲笑:

test("blocked_domains → negative domainFilter entries", () => {
  expect(webSearchBinding.adaptInput({
    query: "foo", blocked_domains: ["reddit.com", "x.com"]
  })).toEqual({
    query: "foo", domainFilter: ["-reddit.com", "-x.com"]
  });
});

test("queries[] preferred over query", () => {
  expect(webSearchBinding.adaptInput({
    query: "A", queries: ["B", "C"]
  })).toEqual({ queries: ["B", "C"] });
});

卡通式漂移

Anthropic可能会随着时间推移更新工具计划. 缓解:

  • 保留 canonicalSchema 最小 - 只有地图字段我们实际上 翻译。 更小的地块 = 更小的漂移地表.
  • 将 Claude 代码文件版本插入每个装订的评论中 .
  • 混合战略是部分自愈——未知的犬种地 流经适配器未动(pi handler忽略了它们).

MCP 命名公约

MCP命名空间公约是 mcp__<server>__<tool> 地点 __ (双下划线)是分块划分符。 工具名称部分 - 第二次之后的任何东西 __ ——可自由包含单下划线:

mcp__pi__web_search               ✓  server=pi, tool=web_search
mcp__pi__get_subagent_result      ✓  server=pi, tool=get_subagent_result
mcp__exa__get_code_context        ✓  server=exa, tool=get_code_context

即使Claude代码的终点 附加它 _ide 后缀, 分隔符 __ 保存着 :

mcp__pi__web_search_ide           server=pi, tool=web_search_ide

该桥的倒图取景基于地图( 不) split("__")- 依据, 因此,工具机构的单一下划线永远不会与段相混淆 断取者. 这个 _ide 操纵是由一个后缀处理的 重试.

配置

大多数用户不需要任何配置. 默认的船是明智的 值 :

  • CC_CANONICAL_NAMES - 确切的克洛德代码的术语 穿过没有改变.
  • PI_TO_CC_CANONICAL 小写核心工具 资本化(read → Read, (中文(简体) ), write → Write, (中文(简体) ), bash → Bash, (中文(简体) ), grep → Grep) (中文(简体) ).
  • FLAT_TO_MCP 著名的第三方伙伴, 反重力论.
  • NATIVE_ALIASES —— 说 默认空输入 core-tools.ts 若为 您想要将一个 pi 工具化为其 Anthropic 本地当量(例如) . ask_user → AskUserQuestion) (中文(简体) ). 只有在你核实后才能启用 计划是相容的 输入.

环境变量

变量目的
PI_ANTHROPIC_MESSAGES_FORCE_CANONICAL=1强制打开任何人类信息会话的大门, 不论模式 ID .
PI_ANTHROPIC_MESSAGES_DISABLE_CANONICAL=1迫使大门关闭 即使Claude匹配会议.

安装( 本地)

pi install -l /home/botond/pi-packages/pi-anthropic-messages

或者来自 GitHub (SSH):

pi install [email protected]:BlackBeltTechnology/pi-anthropic-messages.git

pi-agent-dashboard 装入船体的船体 包括这座桥(Claude-model) 人类信息提供者, @tintinweb/pi-subagents (代理卡UI), pi-flows (花仪表板), pi-web-access (网络工具),以及 pi-agent-browser (浏览器自动化).

仪表板的首次发射向导提示安装 软件包标签显示一个具有活安装/活性状态的推荐区域; 和横幅显示任何缺失 所需经费 进入直到它解决. 看仪表板 packages/shared/src/recommended-extensions.ts 显示为权威列表.

典型安装 :

# Required bridge (this package)
pi install [email protected]:BlackBeltTechnology/pi-anthropic-messages.git

# Strongly suggested
pi install npm:@tintinweb/pi-subagents
pi install [email protected]:BlackBeltTechnology/pi-flows.git
pi install npm:pi-web-access

# Optional
pi install npm:pi-agent-browser

与其他软件包的关系

  • @earendil-works/pi-ai - 临爱的Anthropic供应商已经 将工具名称化( c)toClaudeCodeName当它检测到一个 证书我们的桥梁与这种行为是同理的: OAuth会话 pi-ai 重写 read → Read 在我们看到 有效载荷,我们的精确匹配检查 CC_CANONICAL_NAMES 发现 Read,我们通过它没有改变。 非奥特克劳德 人类信息会议(9个路透社) sk-* 键,pi-model-代用键, OAuth-订阅代理等),pi-ai无所事事,我们的桥也无所事事 做卡通化。 没有双重重命名,没有冲突.
  • @benvargas/pi-claude-code-use - 被本套件取代,用于 此回转. 此套件有超组行为( 添加) mcp__ 自定义工具的前缀; Claude 模型检测上的门; 不 过滤工具).
  • pi-flows ——其子剂侧工具前缀 (单位:千美元)extensions/flow-engine/tool-prefix.ts, (中文(简体) ), mcp__flows__) 手柄 正在处理 SDK 会话; 此软件包处理主会话 载荷。 两者相辅相成.
  • pi-agent-dashboard ——按规定拉出这道桥来 建议任何Claude-model人类信息提供者的扩展 设置.

释放

释放通过 release-cut 技能和取消通过 release-revoke双脚走过飞行前 变换GELOG 校正 版本起伏 标记和推力 npm publish 发生在 GitHub 动作上.github/workflows/release.yml) (中文(简体) ). 发布工作流程也可以由 workflow_dispatch 从Actions UI中输入一个版本输入,该版本对跑者执行出击-承诺-tag-push.

导出 API

对于需要权威清单而不重复的消费者:

import {
  CC_CANONICAL_NAMES,
  PI_TO_CC_CANONICAL,
  NATIVE_ALIASES,
  FLAT_TO_MCP,
  DEFAULT_MCP_PREFIX,
  resolveOutboundName,
  transformPayload,
  buildReverseMap,
  lookupReverse,
  renameToolCallsInPlace,
  isClaudeAnthropicMessages,
} from "@blackbelt-technology/pi-anthropic-messages";

版本与发布记录

@blackbelt-technology/pi-anthropic-messages 共发布 4 个版本,首次发布于 2026/05/16;过去 12 个月发布了 4 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.3.5latest2026/10/2810 天前
0.3.42026/06/184 个月前
0.3.32026/06/184 个月前
0.3.22026/05/165 个月前

关于 @blackbelt-technology/pi-anthropic-messages 的常见问题

@blackbelt-technology/pi-anthropic-messages 是什么?

退役——未上架. 使用 Pi-agent-dashboard 的 Claude 订阅相容开关代替. i 的 Anthropic- messages 协议桥。 任何人类- messages API 会话的激活( Anthropic OAuth/ API- key + 代理提供方): canonicalize since pi co

如何安装 @blackbelt-technology/pi-anthropic-messages?

在项目目录运行 npm install @blackbelt-technology/pi-anthropic-messages,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@earendil-works/pi-coding-agent(>=0.74.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@blackbelt-technology/pi-anthropic-messages 支持 TypeScript 吗?

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

@blackbelt-technology/pi-anthropic-messages 支持 ESM 还是 CommonJS?

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

@blackbelt-technology/pi-anthropic-messages 可以商用吗?

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

@blackbelt-technology/pi-anthropic-messages 的下载量有多少?

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

@blackbelt-technology/pi-anthropic-messages 还在维护吗?

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