前言¶
在 DeepSeek Harness(DSH)里跑 agent,一次会话里踩过的坑、验证过的打法,默认随着会话结束就丢;写进 AGENTS.md 又容易被下一轮「优化」冲掉,还难回滚、难整体重来。社区目录里维护者 CHIPINGHSIEN 的 dsh-wikiskill-experience(分类:记忆)针对的是另一套做法:把经验确定性编译成一份 append-only 的 wiki,在后续会话用短索引注入;另一条路上再用证据闸门卡住,由用户批准后才可发布可执行的 SKILL.md,且插件本身不会自批准发布。
下面按「定位 → 能力 → 安装 → 用法 → 注意」介绍,事实以仓库 README 与 package.json 为准。
这是什么¶
dsh-wikiskill-experience 是 Host-only Cordis bundle:无运行时依赖、插件内部不调用 LLM、设计文档写明无网络访问。设计来源为论文 WikiSkill: Compiling Agent Experience into Persistent Knowledge for Skill Evolution(arXiv:2608.27454v1)及本仓库的双回路改造。
一句话:跨会话、跨项目把 agent 经验编译成持久 wiki,后续会话注入短描述性索引,并叠加「提案 → 用户批准 → 可回滚 SKILL.md」的程序性回路。
运行环境要求:Node.js ≥ 20;package.json 中 engines.dsh 为 >=0.2.2-rc.1 <0.3.0-0。许可证:MIT。
双回路在解决什么¶
插件把经验拆成两层,演化路径彼此隔离:
| 回路 ① 描述性(P0 + P1) | 回路 ② 程序性(P2 + P3) | |
|---|---|---|
| 产出 | wiki:raw/ → patterns/ → index.md |
SKILL.md |
| 默认 | 常开 | 常开,闸门 + 只干预演 |
| 回滚 | wiki 永不回滚(审计底账) | 删 SKILL.md 即可回滚 |
| 谁能触发 | agent 调 wikiskill_record |
提案由 agent;发布只能用户本人 |
门控结果永不回写 patterns/;wiki 与 skill 是两条独立可审计的账。
核心功能¶
四个工具¶
| 工具 | 作用 | 是否写文件 |
|---|---|---|
wikiskill_record |
记录一条经验(九字段结构化);追加 raw/YYYY-MM-DD.jsonl 与 logs.md,重编译 wiki |
是(仅插件 root) |
wikiskill_hint |
只读:返回最近轮次候选触发信号(工具失败、step 报错、疑似用户纠正等) | 否 |
wikiskill_propose |
P2:status / draft / reset;draft 写 p2/deferred-proposals.md,不写 SKILL.md |
draft 时写队列 |
wikiskill_release |
P3:status / publish(默认 DRY-RUN)/ rollback / receipts |
用户批准后写删 SKILL.md |
wikiskill_record 九字段包括:patternId、kind(failure/strategy)、title、errorDescription、rootCause(须回答 WHY)、when、general、projectContext、evidence,以及 transfer(universal / conditional / project-only)。语义判断由 agent 承担;插件做确定性编译。坏记录会永久留在 wiki,README 明确提醒 rootCause 与 general 的质量要求。
注入与硬保证(摘要)¶
- 可选每步注入短索引(
injectSection,默认开启;maxIndexLines、topN可配)。 - 会话日志只读;不新增
SessionEvent类型。 - 确定性信号只进内存 hints,不自动写入
raw/或index.md。 - 可选服务故障不让工具调用 reject;wiki 永不回滚;发布落在 watched skill root,与 wiki 分离。
P2 资格闸与 P3 批准¶
P2 默认需同时满足:minCases ≥ 20、单一模式最大重复 ≥ 5、去重场景数 ≥ 3、rubric.md 已冻结,才允许 draft;可用 minCases / minRepeat / minScenes 覆盖,覆盖值会在返回值里报告。
publish / rollback 仅在用户指令里提供 approvalToken: "USER-APPROVED" 时真正执行,否则 DRY-RUN;工具描述写明 agent 不能自批准。
安装与启用¶
需要已带 plugin_manager 的 DeepSeek Harness。README 写明:Host-only bundle,不需要重启进程,装完即生效;安装前 DSH 会按 engines.dsh 范围拦截不兼容版本。
方式 A:本地目录¶
将 bundle 目录的绝对路径传给 install_bundle:
plugin_manager action=install_bundle target="<绝对路径>/wikiskill-plugin"
方式 B:打包 tgz¶
在插件目录执行:
cd wikiskill-plugin
npm pack --pack-destination dist
将 dist/*.tgz 的绝对路径作为 target。
方式 C:Git 渠道¶
plugin_manager action=install_bundle target="git+https://github.com/CHIPINGHSIEN/dsh-wikiskill-experience#<commit-sha>"
固定 commit 可复现;省略 #<commit-sha> 则用默认分支 HEAD(不推荐)。README 另给出 SSH over 443 的实测示例(网络无法访问 github.com:443 时可参考)。
方式 D:npm¶
plugin_manager action=install_bundle target="dsh-wikiskill-experience" registry="https://registry.npmjs.org/"
可写 dsh-wikiskill-experience@<version> 固定版本;package.json 当前版本为 0.1.1。
装完确认¶
cordis_inspect_query host / Tool / listTools应出现四个工具(p2Enabled/p3Enabled控制后两个是否注册)。- 默认数据根:
<DSH_HOME>/experience/wiki/。 - bundle 详情应显示标题「WikiSkill experience」及本地化描述、图标。
卸载:
plugin_manager action=remove_bundle target="dsh-wikiskill-experience"
卸载不删除 <DSH_HOME>/experience/wiki/ 数据;已发布 SKILL.md 需用 wikiskill_release 的 rollback 单独处理。
配置要点¶
在 profile 的 cordis.patch.yml 中用同一 bundle id(wikiskill-experience)覆盖配置时,会替换整块 config,宜先复制默认再改。常见键:
| 键 | 默认 | 说明 |
|---|---|---|
root |
'' |
空则 <DSH_HOME>/experience/wiki |
enabled |
true |
false 关闭注入与工具注册 |
injectSection |
true |
是否每步注入短索引 |
maxIndexLines |
12 |
注入索引最大行数(1–50) |
topN |
8 |
注入条目上限(1–20) |
p2Enabled / p3Enabled |
true |
是否注册 P2 / P3 工具 |
p2MinCases / p2MinRepeat / p2MinScenes |
20 / 5 / 3 |
P2 闸门阈值 |
p3SkillRoot |
'' |
空则 <DSH_HOME>/skills |
典型用法与数据布局¶
记录一条经验¶
agent 在确认根因与可迁移策略后调用 wikiskill_record,填满九字段;插件追加 raw/、更新 patterns/ 与 index.md。wikiskill_hint 可在同轮或后续轮次提供「该不该记」的候选信号,但不会自动落盘。
从提案到发布(P2 → P3)¶
wikiskill_propose+status:查看是否过资格闸;未达标时 README 示例为eligible:false(如记录数少于 20)。- 达标后
draft:原子草案进入p2/deferred-proposals.md。 wikiskill_release+publish:无USER-APPROVED时为 DRY-RUN;用户在指令中给出approvalToken: "USER-APPROVED"后写入<DSH_HOME>/skills/wikiskill-*.md(或配置的p3SkillRoot)。- 需要撤销行为时:
rollback删除对应SKILL.md,不牵动 wiki。
默认数据目录结构(节选):
<root>/
├── raw/YYYY-MM-DD.jsonl
├── patterns/<patternId>.md
├── index.md
├── logs.md
├── p2/ # rubric、deferred-proposals 等
└── skills/ # 始终为空(描述回路与程序回路分界)
适用场景与注意¶
适合谁: 长期在 DSH 上做多项目、多会话 agent 工作,希望把「为什么失败、在什么条件下怎么避坑」沉淀成可审计 wiki,并仅在证据足够、用户点头后才把行为写进 SKILL.md 的开发者。
权限与安全: 插件以当前 DSH 进程权限读写 root 与 skill root;安装前请自行审阅仓库源码与 MIT 许可证。README 说明 bundle 为 Host-only、无插件内 LLM 调用;P3 发布必须由用户 token 门控。
生态说明: DeepSeek Harness 主张「一切皆插件」;SkillHub 插件目录 为社区站点,与 DeepSeek / 幻方无官方从属关系。
验证边界(README 诚实版): 维护者在真实环境验证过工具注册、P3 链路、dry-run 与回滚等;P2 闸门在默认阈值下于真实小库上曾被拒绝(设计行为)。无 Client 设置面板;Windows 下部分权限失败路径仅有代码级保证。
结尾¶
dsh-wikiskill-experience 用确定性编译把跨会话经验变成不可回滚的 wiki 索引,用闸门与用户批准把可执行技能变更挡在第二道门后。若要安装或读完整 API 与保证列表,见仓库 README。