跳到主内容

distill

20Star2Fork3Issue0Watching

DSH 后台对话反思插件,在每轮结束后静默复盘用户消息,把反复出现的纠错或工作流沉淀为本地技能文件供后续会话直接调用。

机审证据4/5方法论数据来源安装命令持续维护DSH 版本风险扫描
机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科
语言
TypeScript
分支
main
dsh-plugin

安装

命令web profile
$ dsh plugin --profile web add github:LoserFox/distill

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 LoserFox/distill:先查看仓库 https://github.com/LoserFox/distill 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

一句话定位

distill 是 DSH 的"学习回路"插件:在每轮对话结束后静默分析新增的人类用户消息,把反复出现的纠错、风格偏好或工作流沉淀为可命名的技能条目,写入本地 .agents/skills 目录供后续会话直接加载——用户不需要主动教,下一次会话就能"记得"。

核心能力

  • 监听回合结束事件,按人类消息数阈值异步触发后台反思
  • 派生子代理对最近新增的人类消息做结构化复盘,输出 skip / create / update 三类决策
  • 把复盘结果写入带 frontmatter 的本地 SKILL.md 技能文件,宿主技能文件系统可直接发现
  • 支持全量替换此前蒸馏的技能(仅限带 distilled-by: dsh-distill 标记的文件),但永不改动用户手写、内置或运行时注册的技能
  • 派发前发出仅运行期的 distill/review-request Cordis 通知,方便外部观察者做审计而不会污染会话日志
  • 可独立配置反思使用的 provider/model 与子代理提供方,避免抢用主对话资源

技术实现

  • 语言: TypeScript(ESM 模块,"type": "module")
  • 关键依赖:
    • @deepseek-ai/cordis:插件宿主与事件总线
    • @deepseek-ai/dsh-agent / @deepseek-ai/dsh-subagent:复盘子代理派发
    • @deepseek-ai/dsh-skill:isSkillName 校验技能名 kebab-case
  • 架构模式: Cordis 插件(inject: ['subagents']),通过 cordis.patch.yml 将自身行挂入 profile 组合层;监听 agent/turn-stopping 事件触发后台 fork 子代理,使用结构化输出契约(assertObjectJsonSchema)捕获复盘结果;通过本地文件系统(node:fs/promises)落盘技能文件
  • 入口文件: src/index.ts(编译产物为 lib/index.js,通过 package.json#main 暴露)

适用场景

用户与 DSH 长期协作时,常常需要反复纠正模型的输出风格、格式或工作流顺序,每次都得从头说一遍很烦。distill 会在用户不知不觉中把这些"教训"沉淀成可命名的技能,下次开会话时主 agent 就能直接命中——特别适合希望 agent 越用越顺手、能记住自己偏好的重度用户。如果你的工作流很标准化、每天都在重复同类任务,这个插件也能把整套流程打包成一个可调用的技能条目。

前置依赖与兼容性

依赖最低版本说明
@deepseek-ai/dsh-agent^0.1.0-rc.6宿主必需,提供 Agent/Session 等类型
@deepseek-ai/dsh-subagent^0.0.1-rc.1复盘子代理派发能力
@deepseek-ai/dsh-skill^0.0.1-rc.1技能名校验(kebab-case)
@deepseek-ai/dsh-tools^0.0.1-rc.1结构化输出契约校验
宿主插件 subagent-spawn-in-processbase bundle 默认提供名为 spawn 的子代理提供方
宿主插件 tool-skillbase bundle 默认复盘子代理用以查看技能内容
Node.js未声明package.json 未声明 engines 字段
平台跨平台源码仅使用 node:fs / node:os / node:path 内置模块,无 os/cpu 限制

安装方式

dsh plugin --profile web add github:LoserFox/distill

配置项

配置类型说明默认值
enabled布尔总开关,关闭后插件完全不再触发监听true
minUserMessages整数触发一次复盘所需新增人类用户消息数3
provider字符串复盘子代理使用的 provider(必须与 model 同时配置)未设置
model字符串复盘子代理使用的模型(必须与 provider 同时配置)未设置
maxTokens整数复盘子代理单次输出 token 上限2048
timeoutMs整数单次复盘端到端超时(毫秒)30000
targetRootproject / user技能写入位置:项目级写入 git 根目录 .agents/skills;用户级写入 ~/.agents/skillsproject
agentsHome字符串用户级目标时覆盖根目录,优先于 DSH_AGENTS_HOME 环境变量未设置
providerName字符串复盘子代理使用的子代理提供方注册名spawn
allowUpdate布尔是否允许全量替换此前蒸馏的技能;关闭后只允许 createtrue

常见问题

Q: 装上之后主对话会变慢或被打扰吗?

A: 不会。distill 完全在后台运行,只在回合结束事件触发后才异步派发复盘子代理,主对话不会被注入任何新工具或提示词。

Q: 复盘生成的技能会覆盖我手写的技能吗?

A: 不会。复盘只能新建技能,或全量替换带 distilled-by: dsh-distill frontmatter 标记的技能(即它自己之前生成的)。你手写、内置或运行时注册的技能永远不会被改写。

Q: 复盘生成的文件存放在哪里?

A: 默认写入当前项目 git 根目录下的 .agents/skills/<技能名>/SKILL.md;若配置 targetRoot: "user",则写入 ~/.agents/skills/ 下,可通过 agentsHome 配置项或 DSH_AGENTS_HOME 环境变量覆盖根目录。

Q: 为什么装了但从来没看到复盘发生?

A: 两个最常见原因:新增的人类用户消息没攒够 minUserMessages 条(默认 3 条);或者既没配置显式 provider/model,主 agent 自身也没指定 provider/model,此时本轮会被跳过并打印 warning 日志。

Q: 复盘子代理需要哪些宿主插件才能工作?

A: 需要宿主的 base bundle 默认挂载 subagent-spawn-in-process(提供名为 spawn 的子代理提供方)和 tool-skill(复盘子代理用 skill 工具查看现有技能内容)。缺 tool-skill 时复盘仍会运行,但子代理看不到技能目录。

Q: 怎么彻底关掉这个插件?

A: 在 profile 配置里把 distill.enabled 设为 false 即可静默关闭,也可以 dsh plugin --profile web remove distill 卸载。注意安装/卸载后必须重启目标 profile 的 DSH 进程——组合层变更不参与 HMR 热更新。

Q: 它会占用多少额外 token?

A: 每次复盘最多消耗 maxTokens 个输出 token(默认 2048),且只在消息累积到阈值后才触发;超时会被截止为 timeoutMs(默认 30 秒),日常对话几乎感觉不到开销。

上手难度

入门 — 安装即生效,主对话无需任何额外配置;只需要知道它会在后台默默生成技能,并在某天你想复盘"我之前学到了什么"时去翻 .agents/skills 目录。

已知问题与限制

  • update 动作会重写整个 SKILL.md 文件,不支持局部补丁;提示词建议把支持文件意图并入正文或直接跳过
  • 仅 0.1.0+ 版本蒸馏出的技能带 distilled-by 标记,更早蒸馏的技能会被视为用户所有、永不被更新,除非用户手动重新创建或打上标记
  • 检查点只保存在内存中(WeakMap<Session, number>),进程重启或会话恢复后从 Session.firstLiveSeq 重新计数,上一个进程未达阈值的消息不会跨进程结转
  • 旧版本曾往会话日志写入 session/distill-review-request 事件;这类历史日志需要为事件信封补 ignorable: true 或用宿主修复工具处理后才能重新加载
  • 当项目级目标找不到 .git 祖先时会回退到会话 cwd,可能写入意料之外的位置
  • 同一会话同时只允许一次复盘进行中,期间到达的回合会被跳过,等本次结算后下次复盘再统一评估

查看使用指南 →

该插件的安装步骤、关键要点、FAQ 与兼容性说明(基于已收录字段派生)。

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/LoserFox/distill)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录