前言¶
在 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 做的是三件事:
- 捕获:从对话里识别「记住」「永远别用」「改成……」一类信号,问句、一次性指令(含「这次」「先这样」)以及疑似密钥的内容会在入库前丢弃。
- 存储:规则写在
<工作区>/.dsh/taste/TASTE.md和~/.dsh/taste/TASTE.md(全局),附带state.json、evidence.jsonl;写入采用临时文件再 rename,避免半截文件。 - 注入:以名为
taste的systemPromptcontext(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/。
典型用法¶
- 日常用自然语言声明习惯(「记住:……」「永远别……」),必要时用
taste list查看是否在注入列表里。 - 对模型纠正后,用
taste review处理 pending,或执行taste learn把本会话累积的纠正交给模型蒸馏。 - 需要固定某条规则时,在
TASTE.md加[pinned],或taste add并指定category、scope(global/project)、glob等。 - 想减少主模型额度占用时,在 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