@kanadego/dsh-heartbeat

agitested: passnpm

An agent that wakes up on its own schedule: by default every 60 minutes, ±20% (48–72). It browses the interests you set, drops what it finds into a local pool of notes, and keeps a profile of what you like. When it has enough worth sharing it hands the session you linked a short package of notes — w

下载量 / Downloads
6,435
依赖体积 / node_modules
6.96 MB
测试时间 / Tested
2026-11-06
DSH 版本 / Version
0.2.2-rc.1

Install

dsh plugin --profile web add @kanadego/dsh-heartbeat

Sandbox test results

StageResult
1 install✓
2 list✓
3 mount✓
4 boot—

Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).

README

dsh-heartbeat

让 DeepSeek Harness 的 agent 拥有持续存在感的心跳插件:她按节律自己醒来,维护记忆与画像、感知你的忙闲、按兴趣闲逛看新东西、把没说完的话带过下一拍,然后按分寸决定开不开口——开口要有真实来处,沉默要有具体理由。

![host](https://github.com/deepseek-ai/deepseek-harness)

![npm](https://www.npmjs.com/package/@kanadego/dsh-heartbeat)

![downloads](https://www.npmjs.com/package/@kanadego/dsh-heartbeat)

![platform]()

![license]()


一分钟了解

装好之后,全部能力都收在插件管理页的心跳面板里,日常使用零命令行:

心跳状态 · 会话绑定

![](docs/screenshots/panel-status.png) · ![](docs/screenshots/panel-sessions.png)

素材池 · 用户画像(只读)

![](docs/screenshots/panel-seeds.png) · ![](docs/screenshots/panel-profile.png)

<details>

<summary><b>展开看其余分区:兴趣范围 / 周报 / 节律 · 专注模式 · 换机迁移</b></summary>

兴趣范围 · 周报

![](docs/screenshots/panel-interests.png) · ![](docs/screenshots/panel-weekly.png)

设置页把节律、专注模式、换机迁移、账本与摘抄本入口收在一起:

<img src="docs/screenshots/panel-settings.png" width="620" alt="设置:节律配置 / 时间与状态栏 / 表达 / 专注模式 / 换机迁移 / 账本与摘抄本">

</details>

截图为 v2.1.0。画像与会话绑定两张里的条目文字已打码。

它想解决的三件事:

你想要的 · 插件怎么给

零命令行 · 绑定会话、节律、素材池、画像、账本、迁移全在设置卡里;CLI 只留给脚本场景

不打扰、不烧 token · 静默时段 / 忙时窗口 / 每日上限 / 开口冷却 / 在场联动全是代码层判定——判「别说」时,之后的决策与表达两相根本不调用模型(闲逛相在闸门之前触发,另算)

像活人,不像定时播报 · 素材分话题与聊天两仓,反刍成一句话再投递;说不说、说哪条,由你那个会话里的 agent 按当下处境拍板;没说完的话能留在心事匣里带到下一拍,看见想记的话就抄进摘抄本

快速开始

安装(npm 包,推荐)

dsh plugin --profile web add @kanadego/dsh-heartbeat

重启 DSH 即生效——插件自动创建专用心跳会话并按节律运行,之后日常无需任何操作。

心跳预设是自动装的:插件加载时直接向宿主注册(agentPresets.register(),v1.9.2 起),不需要任何手动操作,安装清单里也不再声明宿主包。缺失就按包内模板建好,已有文件永不覆写(你手改过的预设原样保留)。无论走哪条路径,没有这个预设心跳 agent 就是个"裸 agent",连 web_search 都看不见——想手动检查/修复用 preset status / preset install(见下节);把插件 config 的 installPreset 设为 false 可同时关掉运行时注册与目录自装,预设完全由你管。

从源码安装(开发/改造用)

dsh plugin --profile web add file:D:/path/to/dsh-heartbeat

数据放在哪

数据默认住在包外:<DSH_HOME>/heartbeat-data(没有 DSH_HOME 就是 ~/.dsh/heartbeat-data),重装与升级都不会碰它。老版本装在包目录里的 data/ 会在首次启动时自动搬过去(搬迁前先备份、逐文件校验通过才删原件,见下节「卸载」)。要换位置就用插件 config 的 dataDir,或环境变量 HEARTBEAT_DATA_DIR。

平台支持

Windows 上全部功能可用。v2.1.0 起 Linux / macOS 也能跑起来:心跳循环、表达与投递、时间注入、心事匣 / 账本 / 摘抄本、素材池、周报、设置面板与 RPC 通道都照常;依赖 PowerShell 的那几项——截屏、空闲检测、锁屏检测、前台窗口探测、桌面通知——在这两个平台上不可用,插件会直接按「探针失败」降级,不会卡住某一跳。代价是忙闲判定缺席:静默时段、每日上限、开口冷却照常生效,但「他大概在忙」这类窗口判断不会触发。

数据不跨平台搬家:data/vault.key 在 Windows 上由 DPAPI 保护,在 Linux / macOS 上是一份权限 0600 的密钥文件,两边互不相认。换平台就是重新开一份数据目录。

核心工作机制

一跳 = agent 自己醒一次(默认 60 分钟)。醒着的时候依次走七相,最后由留痕收尾:

维护 → 采集 → 闲逛 → 闸门 → Digest → 反刍备料 → 投递 →  留痕
                        │
                   判「别说」→ 本跳到此为止,决策与表达不再调模型

<details>

<summary><b>点此展开:七相详情与关键概念</b></summary>

①  维护 ── 清素材池 / 滚动日志 / 判断该不该合并画像
②  采集 ── 全屏截图(加密落盘)+ 忙闲判定 + 前台窗口类别
           ╰─ 观察:把绑定会话里你新说的话收进画像收件箱
②′ 闲逛 ── 条件触发:agent 自己按兴趣焦点用 web_search 看新东西
③  闸门 ── 纯代码判定:静默窗 / 忙时 / 在场 / 每日上限 / 冷却
           ╰─ 判「别说」→ 本跳到此为止,决策与表达不再调模型
④  Digest ── 拼出「此刻状态」:画像 + 时间 + 素材池 + 待办
⑤  反刍 ── 引擎室从素材池挑 ≤3 条,各压成一句话(备料)
⑥  投递 ── 拼成素材包,送进你指定投递的那个会话
⑦  留痕 ── 写审计日志 + 账本(真正开口了才计数)
  │
  ▼
你读的那个会话 ── 那里的 agent 按当下处境,决定说不说、说哪条

文档里反复出现几个词,在这里一次说清:

词 · 意思

心跳 · 本插件的核心动作——不用你开口,agent 按固定节律自己「醒一次」:做维护、感知环境、决定要不要说话。醒一次叫一跳,默认 60 分钟一跳。

宿主 · 运行插件的那个程序,即 DSH 本体。心跳是挂在宿主里的插件——模型通道、会话、工具这些能力都由宿主提供。

客户端 · 宿主里负责界面的那一侧(Web 界面或者 DSH desktop)。设置页的心跳卡片属于客户端;卡片显示不出来,通常是客户端插件没加载成功,与心跳本体无关。

相 · 一跳内部的一个阶段。主循环共七相——维护 → 采集 → 闲逛 → 闸门 → Digest → 反刍备料 → 投递,最后统一由留痕收尾。每相结束都会在审计日志留一条 phase_done,所以「这一跳停在哪」可以直接查。

…(truncated)

Rendered from the README published on npm. Formatted only, not edited.

Versions

Published on npm::22,最后更新 2026-11-04

Links

GitHub · Homepage · npm

Same category