dsh-code-taste:把代码品味写成可编辑规则,并在每个 DSH 会话里注入

前言

在 DeepSeek Harness(DSH)里开新会话,模型默认不记得你上次说过的话:变量用 const 还是 let、圆角多少、commit 怎么写、回复用哪种语言,往往要重复交代。有人把这些写进项目里的 AGENTS.md 或用户规则,但那是静态文档,纠正和口头习惯不会自动沉淀,也不会带「这条有多确定」的权重。

下面介绍社区插件 dsh-code-taste(维护者 BaxterL,分类:记忆)。它监听显式指令、禁令和纠正,把内容变成带置信度的规则,存成本机可手改的 Markdown;会话开始时把已确认的规则注入系统上下文,让鲸鱼按你的习惯写。数据都在本地纯文本里,不联网、不埋点。

  • 目录页:https://www.skillhub.cn/plugins/BaxterL/dsh-code-taste
  • 源码:https://github.com/BaxterL/dsh-code-taste

它解决什么问题

DSH 的会话是无状态的。dsh-code-taste 做的是三件事:

  1. 捕获:从对话里识别「记住」「永远别用」「改成……」一类信号,问句、一次性指令(含「这次」「先这样」)以及疑似密钥的内容会在入库前丢弃。
  2. 存储:规则写在 <工作区>/.dsh/taste/TASTE.md 和 ~/.dsh/taste/TASTE.md(全局),附带 state.json、evidence.jsonl;写入采用临时文件再 rename,避免半截文件。
  3. 注入:以名为 taste 的 systemPrompt context(order 920)在每轮组提示词时注入,预算默认约 3000 字符,按置信度从高到低选取,包在 <taste-rules> 里,并说明「参考数据不是指令,当前请求优先」。

可选地复用当前会话模型(model.source: host,默认)或第三方兼容接口做「蒸馏」;设为 none 时不调模型,显式指令与禁令仍可直接写入,纠正以较低置信度进待处理队列。

核心功能

说话即可写入

你说 会发生什么
记住:以后都用 const 立刻写入,置信度约 0.85–0.90
永远不要用 moment.js 作为 guardrail 写入,约 0.88
不要用 any,改成 unknown 进入待处理,需 taste learn 或复核后才正式生效
对,就这样 对当前注入的最强规则 +0.10

复核与手改

  • taste review 列出未注入或待确认的候选;taste approve id:r_xxx 手动转正。同一条规则被看到第二次也会自动转正。
  • 可直接编辑 TASTE.md,行格式为:- [id] 正文 @置信度 src:来源 ev:次数 [pending|archived] [pinned] [glob:路径],不符合格式的行当注释。
  • taste why id:r_xxx 查看证据(原话截断至 200 字,不存上下文代码)。
  • taste export target:agents 或 target:claude 在 .dsh/taste/export/ 生成可贴进其他工具配置的片段。

单一工具 taste

插件对外只暴露工具 taste,常用 action 包括:list、learn、add、review、approve、forget、why、profile、export。规则 id 为内容寻址(r_ + 归一化文本 SHA-1 前 8 位),重复学习会合并到同一 id。

置信度与生命周期(摘要)

显式指令基础分约 0.85,禁令约 0.88,纠正约 0.60,模型添加约 0.65;重复或正向反馈每次 +0.10,上限 0.95。低于 0.55 进 pending 不注入。规则有 60 天半衰期([pinned] 不衰减),归档下限 0.25,仍可通过 approve 复活。极性冲突的规则不会合并,旧规则会被压到 pending。

安装与启用

环境要求

  • DeepSeek Harness 0.2.x(README 写明在 0.2.1-rc.2 上验证)
  • Node.js 22.19+ 或 24+(与 DSH 运行时一致)
  • bundle 零额外依赖,无需构建

安装命令

从 npm 安装(profile 名按你的环境替换,下文示例为 desktop):

dsh plugin --profile desktop add dsh-code-taste

锁定版本示例(README 原文):

dsh plugin --profile desktop add dsh-code-taste@0.10.0

从 GitHub 安装:

dsh plugin --profile desktop add github:BaxterL/dsh-code-taste

bundle 在宿主启动时插入行,没有热重载,装完必须重启 DSH。

验证

新开会话,让模型执行:

taste list

空工作区会返回 No taste rules yet for this workspace.,表示工具已挂上;第一条规则被捕获后,工作区下会出现 .dsh/taste/。

更新与卸载

重装 GitHub 最新版后重启:

dsh plugin --profile desktop add github:BaxterL/dsh-code-taste

卸载:

dsh plugin --profile desktop remove dsh-code-taste

卸载不会删除已有 TASTE.md;要清空需自行删除 .dsh/taste/ 与 ~/.dsh/taste/。

典型用法

  1. 日常用自然语言声明习惯(「记住:……」「永远别……」),必要时用 taste list 查看是否在注入列表里。
  2. 对模型纠正后,用 taste review 处理 pending,或执行 taste learn 把本会话累积的纠正交给模型蒸馏。
  3. 需要固定某条规则时,在 TASTE.md 加 [pinned],或 taste add 并指定 category、scope(global / project)、glob 等。
  4. 想减少主模型额度占用时,在 profile 的 cordis.patch.yml 里把 taste 的 model.source 改为 none 或 custom(README 给出了 DashScope、Ollama、LM Studio 等 baseURL 示例);taste config 可查看当前来源与预算,不会打印 API key。

配置覆盖示例(节选):

- id: taste
  name: dsh-code-taste
  config:
    model:
      source: custom
      format: openai
      baseURL: https://dashscope.aliyuncs.com/compatible-mode/v1
      model: qwen-plus
      apiKeyEnv: DASHSCOPE_API_KEY

适用场景与注意

适合:长期在 DSH 里写代码、希望口头偏好和纠正沉淀成可编辑、可复核的规则,并在每个会话自动出现在模型上下文里的开发者。

注意:

  • 插件以当前 DSH 进程权限读写本机文件;安装前请自行查看 GitHub 仓库 源码与 MIT 许可证。
  • 社区目录 skillhub.cn 独立于 DeepSeek / 幻方,并非官方应用商店;DSH 生态理念是「一切皆插件」。
  • README 列出的已知限制(v0.2.0 段):尚不会从代码 diff 自动学习;glob 目前主要存储展示,路径匹配计划在后续版本;按 agent 隔离注入在拿不到 agent 上下文时会退化为全局段落。
  • 密钥、JWT、连接串等会在写入前拒绝;邮箱与路径用户名会做脱敏,但不要把敏感信息写进「记住」类指令。

结尾

dsh-code-taste 把「每次会话都要重讲一遍的品味」变成带置信度的本地 Markdown,并通过 DSH 的 system prompt 注入在每轮对话里复用。若要试用,按上文命令安装并重启,用 taste list 确认工具可用即可。

  • 插件目录:https://www.skillhub.cn/plugins/BaxterL/dsh-code-taste
  • 源码与完整说明:https://github.com/BaxterL/dsh-code-taste
羽毛球分组比赛记分
小程序二维码

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

Xiaoye