dsh-safety-memory:可编辑安全守则与项目记忆注入

前言

在 DSH 里做长期任务时,常见两类缺口:一是系统提示里缺少稳定、可迭代的安全边界,模型容易越界改文件或未经确认做破坏性操作;二是项目背景依赖模型主动去读 MEMO.md,会话一换或上下文一挤,记忆就不在提示词里。社区里也有人用手写 rules 或自定义 skill,但改完往往要重载插件或改代码才能生效。

dsh-safety-memory(简称 dsh-sm)是 Cordis 插件:在每个模型请求的系统提示中注入两段 Markdown 策略——底层安全守则与项目记忆工作流;工作目录存在 MEMO.md 时由插件读取并附带进提示词,不依赖模型再调读取工具。策略文件落在 $DSH_HOME/safety-memory/,改完保存,下一次请求即生效。

这是什么

  • 定位:DSH 插件,在提示词层面注入可编辑的安全策略与记忆协议,并把项目记忆落到磁盘上的四个标准文件。
  • 维护者:仓库 c505016310-maker/dsh-safety-memory(package.json 中 author 为 Eu)。
  • 许可证:MIT。
  • 兼容:DSH >=0.2.1-rc.3 <0.3.0-0,Node >=20(见仓库 README 与 package.json)。

插件说明与社区目录页见 SkillHub 目录。该站点为社区插件索引,与 DeepSeek / 幻方无官方从属关系;DSH 生态遵循「一切皆插件」,安装前仍建议自行查阅源码与许可证。

核心功能

下面按 README 已写明的能力归纳,不超出资料范围。

两段注入内容

  1. 底层安全守则(rules.md):八个维度的硬约束,包括写边界、停止权、系统保护、网络最小化、注入隔离、最小变更、资源熔断、破坏性操作确认。
  2. 项目记忆工作流(memory-workflow.md):新项目先问目标 / 环境 / 节奏,再建立 README.md、MEMO.md、DECISIONS.md、LOG.md;已有 MEMO.md 时插件自动读取并附进系统提示,块内标注为数据而非指令。

策略正文不在插件代码里,而在数据目录下的普通 Markdown 中,按 mtime 缓存,保存后即参与下一次组装。

自动读取 MEMO

工作目录存在 MEMO.md 时,插件读取该文件(默认单文件上限 49152 字节),以固定格式块注入系统提示。超过上限会截断并标注,剩余部分需模型自行补读。自动读取仅对主会话生效;子代理只收到安全守则与「子代理」提示,不会触发三问或创建记忆文件。

三种会话状态

状态 条件 行为要点
启动模式 新会话且当前目录无 MEMO.md 先问三个问题,再按模板建四个记忆文件
续接模式 新会话且已有 MEMO.md 自动附带 MEMO,核对第 0、5 节,不重复三问
执行模式 已建立的会话 有 MEMO 时附带最新内容;未初始化时提示补建

「新会话」结合 agent/created(source === 'startup')与 .seen-sessions.json 持久化已见会话 id,避免重载或重启后把老会话误判为新会话。

可配置与只写数据目录

插件仅写入 $DSH_HOME/safety-memory/;项目内记忆文件由模型通过 DSH 现有写工具创建,仍受当前 sandbox / approval 策略约束。README 明确:这是提示词层面的约束,不是沙箱或权限系统替代品。

安装与启用

发布物为 .tgz,安装后无需编译。当前 README 给出的 Release 地址对应 v1.0.0。

DSH Desktop

打开 设置 → 插件,从文件或 URL 安装,填入:

https://github.com/c505016310-maker/dsh-safety-memory/releases/download/v1.0.0/dsh-safety-memory-1.0.0.tgz

命令行

把 <你的profile> 换成实际 profile(例如 web):

dsh plugin --profile <你的profile> add \
  https://github.com/c505016310-maker/dsh-safety-memory/releases/download/v1.0.0/dsh-safety-memory-1.0.0.tgz

安装后重启 DSH,或在 profile 的 cordis.patch.yml 里保存一次改动以触发重载。Desktop 使用的 profile 由 Desktop 管理时,优先用图形界面安装。

数据目录默认值

首次加载时,若 $DSH_HOME/safety-memory/ 下缺少策略文件,插件从包内 defaults/ 复制;已存在的文件不会被覆盖。Windows 上 $DSH_HOME 通常为 C:\Users\<你>\.dsh\,对应 safety-memory 子目录。

典型用法

按 README「快速开始」可复现如下流程。

  1. 新建一个会话。
  2. 当前工作目录没有 MEMO.md 时,进入启动模式:回答目标、环境、节奏三个问题后,按 templates.md 创建四个记忆文件。
  3. 目录里已有 MEMO.md 时,插件直接读取并注入;模型按工作流核对第 0 节环境与第 5 节续接内容。
  4. 需要调整安全边界或记忆协议时,编辑 $DSH_HOME/safety-memory/rules.md 或 memory-workflow.md,保存即可,无需改插件代码。

若要本地预览某项目目录会被注入什么内容,仓库提供:

node preview.mjs --cwd /path/to/project

(需在克隆或解压源码后的项目根目录执行。)

配置要点

在 profile 的 cordis.patch.yml 中按插件 id dsh-safety-memory 覆盖 config。常用字段默认值如下(完整列表见 README):

字段 默认 说明
enabled true 总开关
injectRules / injectWorkflow true 是否注入守则与工作流
autoReadMemory true 是否自动读工作目录 MEMO.md
memoryReadMaxBytes 49152 单文件自动读取上限
persistSeen true 持久化已见会话 id
ruleOrder / workflowOrder 20 / 35 系统提示段落排序
dataDir $DSH_HOME/safety-memory 策略文件目录

示例片段:

- id: dsh-safety-memory
  name: dsh-safety-memory
  config:
    enabled: true
    injectRules: true
    injectWorkflow: true
    autoReadMemory: true
    memoryReadMaxBytes: 49152

dataDir、rulesPath、workflowPath 等支持相对路径(相对 dataDir)与绝对路径;~ 会展开。

适用场景与注意

适合谁:长期在固定仓库上用 DSH 做实现与迭代,希望安全边界和「四文件」记忆协议稳定出现在每次请求里,且策略可由本人直接改 Markdown 而不发版插件。

务必注意:

  • 插件以当前 DSH 进程权限运行;安装前应阅读仓库源码与 MIT 许可证,确认策略默认值符合你的团队规范。
  • 实际命令执行、写文件仍受 DSH sandbox / approval 约束;不能指望仅靠提示词替代权限模型。
  • MEMO.md 过大时会被截断;子代理不会自动收到 MEMO,需主代理在派发时带齐背景。
  • 「是否新项目」只看当前工作目录是否存在 MEMO.md;若用户说明只是临时提问,应跳过记忆初始化(工作流中有对应说明)。

结尾

dsh-safety-memory 把可编辑的安全守则和项目记忆工作流固定进系统提示,并在有 MEMO.md 时由插件代读注入,减少「记得去读文件」这类依赖。策略在 $DSH_HOME/safety-memory/,项目记忆在仓库里的四个 Markdown 文件,分工清晰。

羽毛球分组比赛记分
小程序二维码

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

小夜