# @animalabs/heartbeat-mcpl 中文文档

规范地址：https://npmcn.com/package/%40animalabs/heartbeat-mcpl/

版本：0\.4\.1
npm 元数据更新时间：2026-10-27T21:30:35.758Z
中文译文更新时间：2026-11-06T16:22:17.287Z
软件包许可：未声明

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

原始 npm 页面：https://www.npmjs.com/package/%40animalabs/heartbeat-mcpl
原文对照：https://npmcn.com/package/%40animalabs/heartbeat-mcpl/?lang=original
项目主页：https://github.com/anima-research/heartbeat-mcpl#readme
源码仓库：https://github.com/anima-research/heartbeat-mcpl

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

- 包体积（解压后）：432 kB，80 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=22\.12\.0
- 运行依赖：1 个
- 首次发布：2026-07-13T15:42:38.136Z
- 最新版本发布：2026-10-27T21:30:35.441Z
- 近 30 天下载量：2754（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：7（近 12 个月 7 个）

## 中文简介

为 Connectome 代理定期自觉MCPL 服务器. 它需要Node.js 22.12.0 或以后.

## 安装

```sh
npm install @animalabs/heartbeat-mcpl
```

也可以使用：`pnpm add @animalabs/heartbeat-mcpl`、`yarn add @animalabs/heartbeat-mcpl`、`bun add @animalabs/heartbeat-mcpl`

## README

# @ 连接/ 心跳- mcpl

为 Connectome 代理定期自觉MCPL 服务器. 它需要节点Js 22.1.2.0 或较后.

在可配置的间隔中,发送 `push/event` (专题集) `heartbeat`, (中文(简体) ), `origin.source: heartbeat`)叫醒经纪人进行自查. 经纪人 本身通过三个 MCP 工具配置自己的调度:

-   `heartbeat_status` ——显示当前间隔, 暂停状态, 在一个即将到来的时刻到来的时间, 信息, 以及是否可发送提醒
-   `heartbeat_configure` ——设定间隔(`intervalSeconds`, (中文(简体) ), `intervalMinutes` 财务报告和审定财务报表 `intervalHours`,加起来,60秒或以上), `paused`, (中文(简体) ), `deliveryMode`, (中文(简体) ), `message`; 时刻表被保存, 使其在重启时持续, 答复中说如果更改无法保存或没有保存
    -   `deliveryMode: "message"` 发送所配置的时间戳提示( 遗留/ 默认)
    -   `deliveryMode: "silent"` 发出空的、经认证的心跳钟; 支持主机提供平面上下文并压制自动传言(见 [静态模式](https://npmcn.com/package/%40animalabs/heartbeat-mcpl/#readme-silent-mode) (按规定)
-   `heartbeat_trigger` 现在发射一发心跳(测试/调试)

时间表保持不变 `${HEARTBEAT_CONFIG_FILE:-./heartbeat-config.json}`。 。 。 .

服务器无法使用此文件或提醒文件时, 无法保存 . 一个完全不能读的,就剩下它了,没有东西可以挽救 它直到重启再读它: 服务器运行在它持有的东西上 同时记忆。 一个读取但不是服务器写的,比如 文件保存期间的崩溃撕裂,先被复制到一边,以便 `<file>.unreadable-<hash>`,则服务器启动时没有它。 一个 服务器可以部分使用, 复制到一边, 服务器开始 用它可以使用的东西: 带有非 UTF-8 字节的文件, 例如一个 在另一个编码中编辑,用替换字符(U+FFFD)读取 以及一个提醒文件 服务器无法装入 日志 将复制件命名,当复制件无法制作时,文件将留作 不能读取是. 虽然一个文件不能被使用,或者只是部分被使用, 每一个显示或计算商店所持内容的回复 以及一个电话 因为它的文件无法被读取或复制 或写它失败, 说.

每个调用工具的参数都会被应用, 或拒绝调用, 更改 无并同时命名每个问题:错误类型或退出的值 范围,两个相互相矛盾的参数,或者工具没有的名称 把它当作是它做的 或者是这些工具中的一个. 一个滑板是同名的 忽略案件, 几编辑去, 其中的一部分是三 信件或更多,例如 `mode` 页:1 `deliveryMode`,或,名称为3 信件或更多,一个更长的名称 持有它,发送没有它,例如 `heartbeatIntervalMinutes` 页:1 `intervalMinutes`。每个名称在它的 拥有 : `pausedReason` 发送到旁边 `paused` 这绝不是一件轻而易举的事 `pausedMessage` 寄到旁边的是一个滑倒 `message`。任何其他名称为工具 不拿是被忽略的,结果是这样 和工具需要什么, 除非这个电话没有给一个 需要辩论的工具发送其他任何信息 拒绝 长度为毫秒。 A 类 `heartbeat_trigger` 谁 心跳不能被发送,而a `reminder_cancel` 以至未受记念者 每一个都说出原因和该做什么. "心跳被发射"表示心跳被发送;一个宿主随后拒绝 只有在服务器的日志上才会这么说.

## 提醒

`reminder_add`, (中文(简体) ), `reminder_list` 财务报告和审定财务报表 `reminder_cancel` 管理一发并 一再提醒。 延迟( A)`inSeconds`, (中文(简体) ), `inMinutes`, (中文(简体) ), `inHours`或一个 间隔( e)`everySeconds`, (中文(简体) ), `everyMinutes`, (中文(简体) ), `everyHours`)加其单位. A 类 重复的提醒间隔为 5 秒或 5 秒以上, 它首先发射一个 间隔,或延迟或 `atIso` 给它。 提醒为 坚持 `${HEARTBEAT_REMINDERS_FILE:-./heartbeat-reminders.json}`。应当提醒的是 `push/event` 与 `origin.source: "reminder"` 财务报告和审定财务报表 `origin.reminderId`文本 开头有一个信头, 上面写着它是一个提醒、 提醒和当前 时间,然后是教诲

```
[reminder rem_…, set 2026-10-10T08:02:36-07:00 [America/Los_Angeles] · current time: 2026-10-12T20:02:36-07:00 [America/Los_Angeles]] <message>
```

重复的提醒说 `repeats every <n>s` 在那里一枪就说,当它是 设置。 提醒在到期后一分钟或多分钟内起火 `, due <time>`。 。 。 . 主机通常将按压内容存储到当前并保存 `origin` 从什么 模型读取,所以如果没有信头,信件就会被解密。 A 类 打开的消息 `Name: …` 然后从他那里读取一条聊天线.

只有在唤醒它的时候,才发出警示。 虽然无法唤醒, 在东道主的政策到达之前, 在一个畸形的, 或者在一个以下 否认觉醒,或等待,或迟到,或放火的教训 一次重复一次 重复一次. `reminder_list` 拿出来 `(overdue)` 并结束它为什么等待。 在只使用MCP的主机上,或者在0:5前的机上 它的政策只作为通知发出, 从来没有唤醒 `reminder_add` 财务报告和审定财务报表 `reminder_list` 说:在大地上没有任何记念。 虽然 记录上说有多少提醒不会发射, 起始时,每次修改策略时,添加并取消,当主机回答时 提醒的推动.

提醒只当主机开始推动时才会改变:主机只拍了一发 并重复一笔预付款。 一个被东道主拒绝, 或他的推动 在 30 s 内失败或没有得到答案 : `reminder_list` 显示它与 原因和时间, 并且再次尝试 在东道主的下一个政策 更新,下一个 `reminder_add` 或者说 `reminder_cancel`,或重新启动。 A 类 在被拒绝或失败之后,反复审判一次, 所以这种推力不能阻止它 在主机接收之前, 提醒文件 保持原样,所以当服务器停止时,有人的推力还在外出,或者 坠机,下次再起火 如果东道主真的采取了这样的 经纪人听到提醒.. 第二次,当它再次发送.

## 静态模式

静静的叮当是空的 `push/event` 携带主机的无声-心跳 标记: 特性集 `heartbeat`, (中文(简体) ), `origin.source: "heartbeat"`, (中文(简体) ), `origin.silent: true`,没有内容。 主持人把它变成一个私人的钟声 仅当 **两者** 其中:

-   主机是代理框架 **0.20.0 或以后时间**,包括静静心跳 警报(aima-研究/代理框架#216);
-   此服务器在 id 下配置 **`heartbeat`**,则 `mcpServers` 键 下面的食谱。 主机与该精确服务器ID上的标记相匹配. 这个 服务器总是正确设置特性集和源字段,但 id 来自于您的配置.

否则标记只是空推取出,里面没有供代理人读取的:

-   **拒绝空推的主机** 用 JSON- RPC 回答 `-32602`这些是: 包括aima-研究/代理框架的代理框架发布 第236号. 此服务器然后重新发送在消息模式下选中的选项: 时间戳 配置快报, 与 `origin.silentFallback: true`它记录了 1 `WARNING` 每个过程,以及 `heartbeat_status` 报告 `mode=silent (the host refused a silent wake, …)`每试一试 先无声.
-   **旧主机接受空推** 和唤醒代理 没有什么新到 读取。 代理人然后经常发明唤醒的原因. 主机没有 广告中的无声觉醒支持, 因此此服务器无法检测到此案件 。 检查 在切换到无声模式之前, 需要同时使用 `deliveryMode: "message"` 不相会的宿主.

## 管道接线

```jsonc
{
  "mcpServers": {
    "heartbeat": {
      "command": "node",
      "args": ["/path/to/heartbeat-mcpl/dist/src/index.js", "--stdio"],
      "env": { "HEARTBEAT_CONFIG_FILE": "/path/to/install/data/heartbeat-config.json" },
      "enabledFeatureSets": ["heartbeat"]
    }
  },
  "modules": {
    "wake": {
      "policies": [
        { "name": "heartbeat-wake",
          "match": { "scope": ["mcpl:push-event"], "source": "heartbeat" },
          "behavior": "always" }
        // ... your other policies after
      ]
    }
  }
}
```

醒悟政策必须先于任何会跳过的政策 `mcpl:push-event`编号 (例如a) `discord-ambient` 跳过规则),因为大门是一等胜.

## MCPL 0.5: 主机必须发送初始政策作为请求

此服务器执行 MCPL 0. 5 谈判后的政策 **更改部署 合同**它不再有希望地推动.

SPEC § 5.3,直到初始策略交换完成服务器 MUST 处理每个 无法使用的能力依赖行为——以及第6.7 a条 `featureSets/update` **通知不能确定准备状态**因此,一个东道主必须在 `initialize`数字 :

```jsonc
// Host → server, a Request (note the id), even when nothing is enabled or disabled
{ "jsonrpc": "2.0", "id": 7, "method": "featureSets/update",
  "params": { "effectiveCapabilities": ["tools", "pushEvents"],
              "enabled": ["heartbeat"] } }
```

,并读回降解收据(第6.7节):

```jsonc
{ "accepted": true, "mode": "full", "unavailableFeatures": [], "notes": [] }
```

`effectiveCapabilities` 唯一许可名单(第5.4节)和 **没有路径就是拒绝**。 。 。 . 奥米 `pushEvents` 编辑 `heartbeat` 特性集已禁用: 工具继续回答, 但否 唤醒是永远的 收据上说得很清楚, `heartbeat_status` 报告 `delivery=BLOCKED (…)`,日志上写着为什么每个心跳都下降 许多提醒不会开火.

**0:5前宿主的症状** ——服务器起动了,工具起作用了,再也没有醒来. 检查日志 :

```
WARNING: initial policy has still not arrived as a Request. …
suppressed heartbeat push/event — host sent featureSets/update only as a Notification, …
```

或者,来自一个完全没有政策寄来的东道主:

```
suppressed heartbeat push/event — no valid featureSets/update Request in force (none yet, or the last was malformed); …
```

这意味着主机作为通知(或根本不是)发送政策,必须更新 在此之前,该服务器可以发送任何东西.

## 常见问题

### @animalabs/heartbeat-mcpl 是什么？

为 Connectome 代理定期自觉MCPL 服务器\. 它需要Node\.js 22\.12\.0 或以后\.

### 如何安装 @animalabs/heartbeat-mcpl？

在项目目录运行 npm install @animalabs/heartbeat-mcpl，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 heartbeat-mcpl，可以用 npx heartbeat-mcpl 直接运行。

### @animalabs/heartbeat-mcpl 支持 TypeScript 吗？

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

### @animalabs/heartbeat-mcpl 支持 ESM 还是 CommonJS？

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

### @animalabs/heartbeat-mcpl 需要什么版本的 Node\.js？

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

### @animalabs/heartbeat-mcpl 可以商用吗？

@animalabs/heartbeat-mcpl 使用 未声明 许可。package\.json 没有声明许可证。没有许可证的代码默认保留全部权利，商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括，不构成法律意见，请以许可原文为准。

### @animalabs/heartbeat-mcpl 的下载量有多少？

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

### @animalabs/heartbeat-mcpl 还在维护吗？

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

