dsh-self-evolve:为 DeepSeek Harness 提供带护栏的程序性记忆

前言

在 DeepSeek Harness(DSH)里跑智能体时,同一类任务往往会在每个新会话里重新摸索一遍:命令顺序、项目约定、踩过的坑。Harness 本身会扫描技能目录并在合适时机加载 SKILL.md,但「谁写、怎么改、无人值守时会不会乱改」并没有默认答案。社区里 jianghuife/dsh-self-evolve 做过概念验证;维护者 Kosello 的 Kosello/dsh-self-evolve 将其移植到 DSH 0.2.1-rc.2,补上安全护栏,并把回合结束后的自动回顾半环接进插件。下面介绍它是什么、能做什么,以及如何安装与配置。

这是什么

dsh-self-evolve 是 DSH 的「记忆」类插件:让智能体把已验证的流程写成 Harness 已会扫描目录下的 SKILL.md,后续会话按技能执行,而不是反复探索;同时提供读写守卫、预算与可选审批,适配无人值守的自改进循环。

  • 维护者:Kosello
  • 上游:Fork 自 jianghuife/dsh-self-evolve(MIT),保留上游版权声明
  • 当前状态(README):版本 0.4.0,106 项测试,针对 DSH 0.2.1-rc.2 做类型检查;未发布到 npm,需从 GitHub 或本地构建安装
  • 社区目录页:skillhub.cn/plugins/Kosello/dsh-self-evolve(独立站点,与 DeepSeek / 幻方无官方从属关系)

插件在 profile 中激活为 self-evolve 行,向模型增加 skill_manage 工具,并向人类提供 /skills 命令。

核心功能

skill_manage 与技能范围

模型通过 skill_manage 管理程序性记忆,支持的操作包括:list、create、patch、edit、delete(归档,非硬删)、write_file、remove_file、pin、unpin。

技能落在两处:

  • 用户级:~/.dsh/skills
  • 项目级:<project>/.dsh/skills

另有扁平的 <name>.md 技能形态。创建时可指定 scope: "user" | "project"。

读写与安全护栏

机制 说明
Read before write 默认开启:技能须先用 skill 工具加载后,才能 patch、edit、delete 或 pin
Duplicate refusal create 拒绝近似重复,并提示应 patch 的已有技能名
凭证与 lint 拦截凭证形态文本;对过大正文、事故日志形态、引用发散、破坏性 shell 惯用法给出警告
Staged approvals 可选 writeApproval:用 /skills pending 看 diff,用 approve / reject 结算

回合后回顾(Reviewer)

可选开启:在回合结束后 fork 出独立回顾子流程,通过 skill_manage 创建或 patch 技能,与主对话 transcript 隔离。默认配置里 review.enabled 为 true,但回顾会消耗 token,README 将其表述为 opt-in 能力,可按需关闭。

触发受计数器约束(如 turnInterval、toolCallThreshold);完整预算见 docs/configuration.md。

Jev 门控(可选)

review.gate 可为 counters(默认)或 jev。启用 Jev 时,可调用 TypeSafe Jev 在足够把握时取消无意义的回顾;无法运行时退化为 counters。门控为 advisory,不能绕过权限、审批与写入守卫。启用 Jev 需环境变量 TYPESAFE_API_KEY;出站数据仅为有界摘要(用户消息、助手消息、工具次数、已加载技能名、回合索引),不含工具输出。

Curator 与用量账本

Curator 对仅由智能体 authored 的技能做机械老化:30 天 stale、90 天归档;pin 的技能豁免;从不硬删。Usage ledger 记录加载与 review-gate 决策,便于调参。

自改进循环(概览)

turn ends ──▶ counters due? ──▶ (optional) Jev gate ──▶ fork reviewer
                                                        │
                                          skill_manage ─┴─▶ ~/.dsh/skills/<name>/SKILL.md
                                                        │
                                          next session ─┴─▶ skill catalog (progressive disclosure)

细节见仓库 docs/review-loop.md。

环境与安装

要求

  • DeepSeek Harness 0.2.1-rc.2(README 中的测试目标;其他 0.2.x 可能可用)
  • Node.js 22.19 或更新
  • 可选:仅在使用 Jev 门控时需要 TYPESAFE_API_KEY

从 GitHub 安装

README 给出的命令如下(安装后需重启对应 profile):

dsh plugin --profile web add github:Kosello/dsh-self-evolve

本地 checkout 需先 npm ci 与 npm run build,再用 dsh plugin --profile web add "$PWD";手动接线、环境文件、验证与卸载见 docs/installation.md。

配置

各项均可选;默认在「有用且安静」之间取舍。在 profile 的 cordis.patch.yml 里改 self-evolve 行的 config:

- id: self-evolve
  config:
    readBeforeWrite: true        # default
    writeApproval: false         # set true to review every write
    review:
      enabled: true              # the reviewer spends tokens; opt in
      turnInterval: 10
      toolCallThreshold: 15
      gate: jev                 # counters (default) or jev
      jev:
        model: jev-latest
        apiKeyEnv: TYPESAFE_API_KEY
        confidentNo: 0.75

完整键说明见 docs/configuration.md。API 密钥不应写入 profile YAML,只写环境变量名。

启用 Jev 时,README 建议用独立 env 文件并通过 systemd 注入(示例):

install -m 600 /dev/null ~/.dsh/typesafe.env
printf 'TYPESAFE_API_KEY=%s\n' "$YOUR_KEY" >> ~/.dsh/typesafe.env
mkdir -p ~/.config/systemd/user/deepseek-harness.service.d
printf '[Service]\nEnvironmentFile=%%h/.dsh/typesafe.env\n' \
  > ~/.config/systemd/user/deepseek-harness.service.d/typesafe.conf
systemctl --user daemon-reload
systemctl --user restart deepseek-harness.service

典型用法

模型侧:skill_manage

Action Purpose
list 两个 scope 下的技能、用量与布局
create 新建技能;scope: "user" \| "project"
patch 在 SKILL.md 内做精确文本替换(首选更新方式)
edit 整体替换 body / description
delete 归档
write_file / remove_file 技能目录下的附属文件
pin / unpin 免于 Curator 老化

人类侧:/skills

/skills pending | diff <id> | approve <id|all> | reject <id|all>
/skills approval on|off
/skills review on|off|now

可复现示例见 docs/usage.md。

适用场景与注意

适合谁: 需要把「已经跑通的一整套步骤」沉淀为 DSH 技能、并在后续会话自动遵循的开发者;希望在自改进 loop 里仍保留 read-before-write、重复拒绝、凭证扫描和可选写审批的团队。

务必知晓:

  • 插件以当前 DSH 进程权限运行;安装前应阅读源码与 MIT 许可证。
  • 回顾子智能体继承父级工具集,激活后范围收窄为 skill + skill_manage,但 DSH 无 per-activation 工具 过滤器,这是纵深防御而非沙箱;审查不可信对话时建议 writeApproval: true。
  • 回顾子流程使用父会话同一模型,成本由 counters、cooldown 与会话上限约束。
  • 本插件不是通用记忆存储:持久事实应交给 profile 里组合的其他记忆层(例如 MCP memory server)。
  • 构建与测试目标为 DSH 0.2.1-rc.2;插件 API 仍较新,可能变动。回顾依赖 subagent 服务与 provider(默认 fork)。

威胁模型与 outbound 说明见 docs/security.md。

结尾

dsh-self-evolve 把「智能体写程序性记忆」收进 Harness 已有的技能扫描路径,并用 skill_manage、可选写审批、回合后回顾与 Jev 门控、Curator 老化把无人值守 loop 需要的护栏补齐。DSH 生态强调「一切皆插件」;若你要在 web profile 上试装,可从目录页了解分类与简介,并按 README 安装与配置。

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

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

小夜