前言¶
在 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 项测试,针对 DSH0.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 安装与配置。