ljsysfurryACE
dsh-plugin-story
入选 DeepSeek Harness 官方精选列表的三个插件:记忆/压缩/主动调度 完整技术文章
- Stars
- 0
- Language
- —
- Created
- Aug 15, 2026
- Updated
- Aug 15, 2026
Introduction
神马?!我的东西被社区认可了!
2026-08-15,我的三个 dsh 插件被 awesome-dsh-plugin(1300+ ⭐ 的 DeepSeek Harness 社区插件精选列表)收录。 维护者 fkysly 在合并时说:"确定性语义提取器替换 LLM 摘要这个思路我很喜欢——压缩这件事本来就不该再花一次模型调用。" 先说明白:这不是 DeepSeek 官方认可(官方不收第三方 PR),但它是 dsh 生态里最大的社区精选榜——1300+ 星、2600+ 插件里挑出来的。 这篇文章讲清楚:这三个插件解决什么问题、怎么做的、以及你如何也写出能被收录的 dsh 插件。
一、背景:DeepSeek Harness 的插件生态正在爆发
DeepSeek Harness(dsh)是 DeepSeek 官方开源的 Agent 框架,开源当天即获 98k 星。它的核心口号是 "Everything is a Plugin":
- 模型适配器、工具注册、会话日志、UI、Agent 循环本身全是插件
- 没有特权核心——任何人写个插件就能改变框架行为
- GitHub 上
dsh-plugintopic 下已经有 2600+ 个插件仓库
生态爆发意味着:现在写插件 = 第一批吃螃蟹的人。但 2600+ 个仓库里,大部分是 UI 美化、皮肤、工具类插件。记忆、压缩、主动调度这三个"Agent 智能"方向,做的人极少——而这正是我的切入点。
二、我的三个插件:官方管"怎么跑循环",我管"怎么当伙伴"
官方 Harness 自带的能力:
- 上下文压缩:有,但用 LLM 摘要(贵、有损、每次压缩都要再花一次模型调用)
- 跨会话记忆:完全没有
- 主动开口:完全没有(官方 schedule 只做定时提醒)
我把自家 Agent 框架 AgentFrame 的三个核心能力做成了 dsh 插件,正好补齐这三块。
插件一:dsh-compaction(压缩后端)——入选 Tools & Capabilities
替换官方默认的 LLM 摘要压缩。核心思路:压缩不该再花一次模型调用。
官方做法: 旧对话 → LLM 摘要(一次模型调用,贵,有损)
我的做法: 旧对话 → 确定性语义提取(零调用,无损,可复现)
private _condense(session, start, end): string {
const keep: string[] = []
for (const ev of events) {
const text = this._eventText(ev)
// 高信息量: 代码/路径/命令/错误/决策 → 保留
if (/`|\.(ts|py|js|json|md|sh)\b|npm |pnpm |git |error|fix|决定/.test(text)) {
keep.push(text.slice(0, 400))
} else if (keep.length < 40 && text.length > 20) {
keep.push(text.slice(0, 200))
}
// 闲聊 → 直接丢弃
}
return keep.join('\n')
}
语义层决定"留什么",配合底层 KV 优化实现双轨压缩。
插件二:dsh-memory-director(记忆)——入选 Memory
官方 Harness 只有"摘要压缩",没有任何跨会话记忆的概念。这个插件补上,而且记忆决策本身也是 LLM 做的:
每轮结束 (agent/turn-stopping)
→ LLM 分析本轮 → 决定记住什么/忘记什么(带重要度打分)
→ 去重 → 存入 JSON(跨会话持久化)
每次请求前 (agent/pre-step)
→ 检索相关记忆 → 注入模型上下文
- id: memory-director
name: '@agentframe/dsh-memory-director'
config:
model: deepseek-v4-flash
dedupThreshold: 0.8
forgetThreshold: 0.1
关键设计:记什么由模型决定,而不是由规则决定。LLM 每轮给记忆打重要度分(0-1),低于阈值的自动遗忘,高重要度的长期保留——模拟人脑的记忆曲线。
插件三:dsh-aura-scheduler(主动调度)——入选 Workflow & Automation
官方 dsh-schedule 是模型驱动的定时提醒。Aura 是系统驱动的主动调度——Agent 自己判断"现在该不该主动开口":
价值网络: V = α·urgency + β·relevance − δ·interruption
(紧迫度、相关性、打断代价 的加权权衡)
自适应心跳: 空闲越久,越急切(泊松过程)
静默时段: 23:00-8:00 不打扰
反骚扰冷却: 刚主动过就降低再开口的概率
- id: aura-scheduler
name: '@agentframe/dsh-aura-scheduler'
config:
minInterval: 1800
maxInterval: 7200
quietHours: [23, 8]
alpha: 0.4
beta: 0.4
delta: 0.2
三、被精选收录的经过(含踩坑记录)
我的第一次 PR 被拒绝了。维护者的反馈非常具体:
"三个仓库的 package.json 都没有
dsh字段,也没有cordis.patch.yml;main 指向 lib/index.js 但仓库里只有 src/,没有构建产物。也就是说dsh plugin add既拿不到注册信息,也拿不到可执行代码。"
三个必须补齐的要素(这是给所有 dsh 插件作者的避坑指南):
# 1. 根目录 cordis.patch.yml —— 插件注册清单
- insert:
- id: memory-director
name: '@agentframe/dsh-memory-director'
// 2. package.json 加 dsh 字段 —— 声明 bundle 入口
"dsh": { "bundle": { "patch": "./cordis.patch.yml" } }
# 3. 提交构建产物 lib/ —— main 指向的代码必须真实存在
tsc -b tsconfig.json && ls lib/index.js
补齐后重开 PR,维护者验证 dsh plugin add 装通,合并。他还顺手把我的分类调准了:aura-scheduler 从 Memory 挪到 Workflow & Automation——"它决定的是 agent 何时主动开口,属于调度而不是记忆"。说得对。
四、验证结果(smoke test 全绿)
✓ ctx.compaction / ctx.memory / ctx.aura 全部注册
✓ 压缩: "今天天气不错" → 剔除, "socket / ConnectionError" → 保留
✓ 记忆: 记住"服务器IP/端口", 忘掉"天气闲聊", 去重生效
✓ 主动: 心跳 + 价值网络 + 静默时段 + 冷却全部工作
五、给想写 dsh 插件的人(教程)
- 找 seam:
packages/*/里找 Service Definition 抽象类(如CompactionEngine) - 继承 + 实现:抽象方法就是插件契约
- 配置:
static Config = z.object({...})(schemastery 声明) - 接入:
cordis.patch.yml一行注册 - 发布:GitHub 仓库 +
dsh-plugintopic + 根目录cordis.patch.yml+lib/构建产物 + package.jsondsh字段——四件套缺一不可 - 曝光:向 awesome-dsh-plugin 提 PR(README.md + README.zh.md 各加一行)
六、为什么这三件套 = "从工具到伙伴"
| 能力 | 官方 Harness | AgentFrame 三件套 |
|---|---|---|
| 上下文压缩 | 有(LLM 摘要,贵) | 有(语义提取,零调用) |
| 跨会话记忆 | 没有 | 有(LLM 记/忘 + 重要度) |
| 主动开口 | 没有 | 有(价值网络 + 自适应心跳) |
官方框架回答"怎么跑循环",这三件套回答"怎么当伙伴"——记得住你、知道什么时候该说话、说话不浪费钱。
项目地址
- dsh-compaction: https://github.com/ljsysfurryACE/dsh-compaction
- dsh-memory-director: https://github.com/ljsysfurryACE/dsh-memory-director
- dsh-aura-scheduler: https://github.com/ljsysfurryACE/dsh-aura-scheduler
- AgentFrame v3: https://github.com/ljsysfurryACE/AgentFrame-v3
- 官方 Harness: https://github.com/deepseek-ai/deepseek-harness
- 社区精选列表: https://github.com/awesome-dsh-plugin/awesome-dsh-plugin
安装任一个:
dsh plugin --profile web add github:ljsysfurryACE/dsh-memory-director
如果这篇文章对你有帮助,给插件仓库点个 ⭐ 吧——从 0 到 1 的星标,是开源作者最需要的燃料 🦊
AgentFrame v3 先明 · 脑手壳一体 · 上下文永不丢失