dsh-soul-engine:可审计的 Markdown 记忆账本与轮首注入

前言

在 DeepSeek Harness(DSH)里给模型挂记忆类工具,常见问题是:工具在,模型却未必每轮想起来用;对话里的「记住这个」换会话就断档,也难以事后核对;若再叠加主动提醒,又容易在静默时段反复消耗 token。社区插件 dsh-soul-engine(维护者 zhaoguoqiang-hub,SkillHub 分类:记忆)走的是「状态面」路线:把长期状态落成本机明文 Markdown 账本,每轮把摘要注入系统提示词,本地定时器做零 token 自维护,可选心跳在确有事项时复用已有会话唤醒——成本与频率都写进配置与闸门里。

下面按定位、能力、安装、用法和注意事项说明,事实均来自插件 README 与 package 描述。

这是什么

dsh-soul-engine 是 DSH 的状态面插件,不是「再做一个聊天机器人」。它补三件事:每轮注入账本摘要,让主动性不依赖模型临时想起工具;记忆进可读、可 git 版本化的 Markdown 目录;心跳与预算看门狗让会花钱的自主行为可见、可关、可限频。

  • 包名:dsh-soul-engine(npm 当前版本 1.15.2,MIT)
  • 宿主要求:dsh >= 0.1.1-rc.2,Node >= 22.3
  • 平台:14 个工具、账本、轮首注入、自维护、右侧栏面板在 macOS / Linux / Windows 均可用;桌面通知与日历/提醒事项桥接仅 macOS,其他平台应关闭相关配置以免误用

核心功能

14 个 soul_* 工具

工具 作用
soul_init 初始化账本(灵魂名 / 三条核心目标 / 空账本)
soul_status 总览:目标进度、叙事记忆、待办箱、画像,并给出「此刻最该主动做的」一条
soul_remember 写入一条叙事记忆(含 selfState);pin 可进永久层
soul_goal 内生目标账本:list / add / update / done
soul_outbox 主动待办箱:push(可带 dueAt)/ list / resolve
soul_reflect 规则层反思(零模型成本)
soul_daily 每日首聊三件事:brief / status
soul_feedback 正负反馈:record / list / report
soul_memory 账本审计(只读):list / get / search / recall / stats / archived / distill
soul_forget 记忆状态管理(可逆,不删原文):forget / restore / archive / unarchive / list
soul_signal 用户状态(能量 / 忙闲):record / status / clear
soul_schedule macOS 日历 / 提醒事项:today / add / list
soul_cost 成本只读:report / days
soul_maintain 自维护:status / run(幂等)

账本布局

默认目录为 $DSH_HOME/soul-data/(未设 DSH_HOME 时为 ~/.dsh/soul-data/),可用 config.dataFile 或环境变量 DSH_SOUL_DATA_FILE 覆盖。人可读部分在 memory/(适合进 git),运行计数在 runtime.json(不入 git)。插件会在维护 tick 中对账本目录做 git 提交;账本建议独立建仓,不放进项目仓库。

轮首注入

每轮组装提示词时注入账本摘要(主轴目标、待主动提的一条、最近记忆、纪律行)。关闭:config.promptSection: false 或 DSH_SOUL_PROMPT=0;字数上限 config.promptMaxChars(默认 1000),直接关联每轮常驻 token 成本。

自维护与心跳

  • 自维护:默认每 5 分钟本地 tick,不调用模型——滞留待办作废、周报、叙事巩固/归档、账本 git 提交等。
  • 心跳:仅在「真有事」(如 outbox 到点、可选的今日三件事未完成)且通过四道频率闸(安静时段、日/周上限、最小间隔)时,复用已有会话注入指令;新建会话不在设计路径内。整体关闭:config.heartbeat: false。dailyBudgetYuan 默认 0(关闭),设为正数可启用预算看门狗。

右侧栏

注册「灵魂」页签(待主动提角标),tab:概览 / 成本 / 记忆;数据来自宿主本地 GET /dsh-soul/state、GET /dsh-soul/memories;记忆 tab 可就地遗忘/撤销遗忘(POST /dsh-soul/forget),其余写入仅通过 soul_* 工具。

安装与启用

安装命令以 README 为准:

# 从 npm
dsh plugin --profile web add dsh-soul-engine

# 或从本地目录 / Git 仓库
dsh plugin --profile web add "file:/path/to/dsh-soul-engine"
dsh plugin --profile web add "github:<owner>/dsh-soul-engine"

确认 ~/.dsh/profiles/<profile>/package.json 的 dsh.profile.bundles 含 dsh-soul-engine,然后重启 DSH(bundles 在宿主启动时读取)。

验证:新会话调用 soul_status,应返回账本总览而非 unknown tool。

停用:从 dsh.profile.bundles 删除对应行即可,不必卸载包。

常用配置写在 cordis.patch.yml 的 config 中,例如 promptSection / promptMaxChars、maintenance / maintenanceIntervalMs、heartbeat 系列、dailyBudgetYuan、consolidate / retainMax / retainDays 等;环境变量含 DSH_SOUL_DATA_FILE、DSH_SOUL_PROMPT=0、DSH_SOUL_NOTIFY=0、DSH_HOME、DSH_COST_LEDGER。

典型用法

第一次使用建议按 README 快速开始顺序:

soul_init      # 第一次:写下灵魂名 + 三条核心目标
soul_status    # 每次都先看它:目标进度 / 最近记忆 / 待办 / 一条「此刻最该做的」
soul_remember  # 值得记的事随手写一条

日常可配合 soul_goal、soul_outbox 管理目标与到点提醒;需要审计时用 soul_memory;用户要求遗忘时用 soul_forget(软删可恢复)。行动前 discipline 在注入段里也会提示:先 soul_status,听到偏好/边界/纠正当场 soul_remember。

适用场景与注意

适合谁:希望在 DSH 里维护跨会话、可 git diff 的私人记忆与目标台账,并愿意用少量轮首 token 换「每轮记得用工具」;需要可选、有上限的主动提醒,且接受心跳会消耗 token 的使用者。

安装前请知悉(README 安全披露摘要):

  • 插件以当前 DSH 进程权限在本机读写 $DSH_HOME/soul-data/ 等路径,并可能调用 git、macOS 上 osascript;soul_cost 读取成本账本;面板访问会写 /tmp/dsh-soul-access.log。
  • 宿主端不做出站联网;账本内容会进入模型上下文(注入段),请自行判断写入内容。
  • 非 macOS 建议设 notify: false 与 schedule: false。
  • 安装第三方插件即运行第三方代码,安装前应阅读源码与 MIT 许可证,自行评估信任边界。

DSH 生态理念是「一切皆插件」;SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-soul-engine 把长期记忆做成明文 Markdown 账本、把「记得用工具」做成轮首注入、把维护与唤醒拆成零 token 本地 tick 与可关可限的心跳,并给出成本与遗忘的可操作界面。若要进一步核对行为与默认值,以仓库 README 与 cordis.patch.yml 为准。

  • 目录页:https://www.skillhub.cn/plugins/zhaoguoqiang-hub/dsh-soul-engine
  • GitHub:https://github.com/zhaoguoqiang-hub/dsh-soul-engine
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye