dsh-wikiskill-experience:把跨会话 agent 经验编译成持久 wiki

前言

在 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。

装完确认

  1. cordis_inspect_query host / Tool / listTools 应出现四个工具(p2Enabled / p3Enabled 控制后两个是否注册)。
  2. 默认数据根:<DSH_HOME>/experience/wiki/。
  3. 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)

  1. wikiskill_propose + status:查看是否过资格闸;未达标时 README 示例为 eligible:false(如记录数少于 20)。
  2. 达标后 draft:原子草案进入 p2/deferred-proposals.md。
  3. wikiskill_release + publish:无 USER-APPROVED 时为 DRY-RUN;用户在指令中给出 approvalToken: "USER-APPROVED" 后写入 <DSH_HOME>/skills/wikiskill-*.md(或配置的 p3SkillRoot)。
  4. 需要撤销行为时: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。

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

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

小夜