DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Asset Library — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
A

dsh-asset-library

Asset Library

DSH 素材库:会话内容一键保存 + 自动采集,按时间/文件类型/会话窗口三轴归纳,本地 Markdown 存储,侧边栏入口 + 管理页。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:AmigaMeow/dsh-asset-library#3a8e68c6abecb2b0888f588e838c4a23cabf5b64
README兼容性版本

兼容性与来源证明

Asset Library 以 dsh-asset-library 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/9/14

版本

0.1.0stable
2026/9/14

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/9/16
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 productivity-workflow 分类下经过校验的插件。

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Web All@linxin666/dsh-web-allDSH Web UI 全家桶聚合插件:一键安装全部功能插件(task-board / git-graph / pet / remote-web-ui / web-ui-settings / skin-center / community-plugins / compat shim)。compat 桥接层已并入本包(src/client),无需独立 compat npm 包。Codex Ui@michengai/dsh-codex-uiDSH Codex UI — 为 DeepSeek Harness Web 提供 Codex 风格侧栏、工作区会话树、全局搜索和轮次导航Automation@michengai/dsh-automation在独立 DSH Session 中按计划执行编码任务,支持 Web 设置页与 Agent 双入口管理。

README

HARNESS

DeepSeek 的 AI 产出物资产层。

DeepSeek 负责生成内容,HARNESS 负责发现、整理、管理、复用这些 AI 产物。

它不是一个独立软件,而是像 Finder 之于 macOS —— 用户感觉它一直在那里, 而不是「打开了另一个系统」。

它解决什么

你在和 AI 工作,AI 帮你做出了东西(一份方案、一份分析、一个规格)。 这些产出散落在工作区里,几天后你只记得「好像做过」,找不到是哪个文件。

HARNESS 做三件事:

  1. 发现 —— 扫工作区,认出哪些是「AI 帮你整理好的文件」(而不是依赖、脚手架、源码)
  2. 确认 —— 侧栏提示「发现新资产」,你点保存或忽略
  3. 沉淀 —— 存进本地 Markdown 资产库,按项目/时间/类型/会话归类

产品形态

停靠在右侧 25%,对话区保留 75%。不做弹窗、不做 Dashboard。

┌───────────────────────────┬─────────────┐
│                           │  HARNESS    │
│                           │             │
│      DeepSeek 对话         │  发现区      │
│         (75%)             │  我的资产    │
│                           │   (25%)     │
└───────────────────────────┴─────────────┘

视觉方向:Finder / VS Code Explorer / Notion Side Peek。 安静的文档列表,不是管理后台 —— 无大卡片、无统计看板、无图标堆砌。 配色跟随 DSH 主题,浅色为主。

核心:资产发现评分

工作区里 90 个文件,真正值得沉淀的可能是 6 个。全收等于没收。

所以每个文件会打一个 0-100 的「AI 资产分」:

维度分值
Markdown 结构(标题层级、正文段落)+20
标题完整+10
目录存在(≥3 个小标题)+10
AI 语言特征(「以下是」「综上」「方案」…)+20
来自工作区顶层+30

新鲜度单独计,不进推荐分。 早期版本把「生成后已沉淀」当加分项, 结果和产品场景直接冲突:核心场景是「AI 刚帮我做完,我顺手沉淀」, 而那正是分数最低的时刻(刚生成 5 秒 = 55 分被 60 的阈值挡掉,要等 6 分钟才推荐)。 判断一份文件是不是 AI 产出,跟它是不是刚写的无关 —— 所以新鲜度只用于排序:

生成后新鲜度
≤10 分钟+15(最该被看到)
≤1 小时+8
≤1 天+3

硬性排除:node_modules/.git/dist、脚手架文件(package.json/README.md/ LICENSE)、凭据、图片/压缩包/源码 —— 这些直接判 0。

实测:/root/Deepseek 下 90 个候选 → 推荐 6 个,全是真正的 AI 产出文档。

自动出现

产品场景是「AI 刚帮我做完,我顺手沉淀」,所以不该等用户想起来点侧栏。

  • 每 15 秒问一次发现区,有新产出就把侧栏展开
  • 只展开侧栏,不弹窗、不抢焦点 —— 用户正在写作,打断比不提示更糟
  • 用户手动收起后安静 5 分钟,不再自动弹出(尊重用户意图)
  • 数量没变就不重复展开

Markdown 阅读器

详情里直接渲染标题 / 列表 / 代码块 / 表格 / 引用 / 链接,不再是 <pre> 原文。

自己写(lib/markdown.js),不引外部依赖 —— 引 marked / markdown-it 会给插件 加一棵依赖树和一个构建步骤,违背「dependencies 为空」的铁律。

安全:文档内容是不可信输入。渲染前全部转义,链接只放行 http/https (javascript: / data: / vbscript: 一律降级为纯文本)。 13 个 XSS 向量在测试里覆盖(script / img onerror / svg onload / iframe / 属性注入 / 大小写绕过 / 表格与引用内注入…)。

视觉方向

不要:Dashboard、大卡片、数据统计、图标堆砌、深色科技风、抽屉弹出动画。

要:原生集成、极简侧栏、文档列表、AI 发现提示、小而精致、像系统功能。

右侧面板 300ms 平滑出现(macOS Finder 侧栏的手感), 能停靠就停靠进 AppFrame 的右栏,停靠不了才退化为固定定位。

📦 安装

dsh plugin --profile web add /path/to/dsh-asset-library
# 重启 dsh web 生效

要求 pnpm 在 PATH 上(没有就先 corepack prepare pnpm@latest --activate)。

装完侧边栏会出现「素材库」入口,点开是管理页;也可以直接访问 <dsh web 地址>/ext/asset-library/。

🗂 数据长什么样

<DSH_HOME>/asset-library/
├── time/2026-09/
│   └── 2026-09-14-接口设计稿-3f9a2b.md
├── type/markdown/
│   └── 2026-09-13-读后笔记-a1b2c3.md
└── session/素材库开发-c7b1b0f9/
    └── 2026-09-13-会话结论-9d8e7f.md

每个 .md:

---
id: "ast-c500f747-..."
title: "项目轴验证"
kind: "file"
axis: "time"
created: "2026-09-14T01:26:25.013Z"
session_id: "session-5549d9ae-..."
session_title: "素材库开发"
source_path: "/root/Deepseek/dsh-asset-library/lib/store.js"
file_type: "javascript"     # 细粒度类型名
category: "code"            # 语义类别(类型轴的桶)
project: "素材库插件"        # 项目维度
tags:
  - "代码"
  - "dsh-asset-library"
summary: "项目归类测试"
---

项目归类测试

手写友好:直接把一个自己写的 .md 丢进库目录,下次载入就会被索引; 缺 front matter、字段残缺都不会报错。

📥 导入历史会话

面板顶栏的**「导入历史会话」**按钮,把 DSH 已有的会话日志提炼成素材。

不是原样倾倒 —— 你机器上 6 个会话有 8000+ 个事件,全量入库只会是一堆噪音。 提炼规则(lib/session-import.js):

来源产出
每个会话一条会话纪要(标题、轮次、提问数、产出数、前几条提问)
会话产出的文件(write/edit 等)逐条登记为 file 素材,带真实路径
助手回复中 > 200 字的结论单独存为 note

实测:8125 个事件 → 91 条素材。

几个刻意的取舍:

  • 只认人真正敲的消息(source.kind === 'user')当提问与标题 —— 会话日志里混了大量插件注入内容(工具结果回灌、审批策略通知、技能目录),拿来当标题会很难看
  • reasoning 块不入库 —— 那是模型的思考过程,不是结论
  • 重复导入会跳过已导入的会话(也可强制重扫)
  • 推不出项目名时回落到会话标题,而不是编一个名字

会话日志是多帧 zstd(每次写入追加一帧,单文件可达上千帧), zstdDecompressSync 只解第一帧。必须按 magic number 切帧逐帧解压。

⌨️ 斜杠命令

在会话输入框里直接敲,不进入模型请求,立即执行:

命令作用
/save保存上一条助手回复(标题自动从正文首行推导)
/save <标题>同上,但用你给的标题
/save note <正文>把 <正文> 直接存为笔记
/save list [关键词]列出素材,可按关键词过滤
/save help用法

🤖 模型工具

工具用途
asset_save_file保存一个文件(文本会内联正文;二进制/超大只登记路径)。同路径重复保存自动去重
asset_save_snippet直接保存一段文本/结论/代码,不依赖磁盘文件
asset_list列表 + 过滤(axis + bucket,或 project,或关键词 q,或 kind)
asset_overview总览:三轴各有哪些桶、各多少条
asset_read读一条素材的全文

🔌 HTTP API

方法与路径说明
GET /ext/assets/views三轴视图(桶 + 计数)
GET /ext/assets/list?axis=&bucket=&q=&kind=&limit=&offset=列表
POST /ext/assets/register登记一条素材
GET /ext/assets/<id>元数据
GET /ext/assets/<id>/content元数据 + 全文
GET /ext/assets/<id>/file下载那个 .md
PATCH /ext/assets/<id>改标题/摘要/标签/正文
DELETE /ext/assets/<id>删除条目与文件
GET /ext/asset-library/管理页

安全边界:webServer 本身没有鉴权中间件,而 profile 可能绑到 0.0.0.0 供局域网访问。因此所有写操作、以及与文件正文相关的读取,仅限回环来源 (判据是 TCP 层的 socket.remoteAddress,不可伪造)。非本机来源只拿到不含正文的只读元数据。

⚙️ 配置

在 profile 的 cordis.patch.yml 里覆盖(全部可选):

- id: asset-library
  config:
    rootDir: /your/library        # 默认 <DSH_HOME>/asset-library
    autoCollect: true             # 默认 true
    maxPerTurn: 20                # 单轮自动采集上限
    mutationTools: [write, edit]  # 视为「文件变更」的工具名
    maxInlineBytes: 262144        # 超过就不内联正文,只登记路径

🧱 为什么 dependencies 是空的

这不是洁癖,是一个踩过的坑。

DSH 的模块解析会优先命中 ~/.dsh/profiles/<name>/node_modules,遮蔽 /opt/dsh/.../node_modules 里的宿主版本。如果一个插件在自己的 dependencies 里写了宽松范围的 @deepseek-ai/*,pnpm 很可能装进一个与宿主版本不匹配的副本, 然后整棵 agent 树就启动失败。实测中 dsh-artifact-library 就是这样让 dsh web 起不来的:

SyntaxError: The requested module '@deepseek-ai/dsh-llm'
  does not provide an export named 'CallId'

所以本包:

  • dependencies / peerDependencies 全空;
  • 不 import 任何 @deepseek-ai/*;
  • DSH_HOME 自己解析(lib/paths.js),工具定义手写(不用 defineTool);
  • 宿主能力全部通过 ctx 服务在运行时取用(tools / webServer / systemPrompt), 用 ctx.inject 惰性挂载 —— headless profile 里没有 webServer 也不会挂。

装完可以自查:ls ~/.dsh/profiles/web/node_modules/@deepseek-ai 应该是空的。

🧪 测试

npm run smoke              # 八套一起跑
npm run smoke:markdown     # 34 项:Markdown 渲染 + 13 个 XSS 向量
npm run smoke:content      # 37 项:语义分类、标题/摘要/标签推导、项目推断
npm run smoke:artifact     # 22 项:资产评分、新鲜度分离、排序
npm run smoke:import       # 24 项:多帧 zstd 解压、会话提炼、重复导入跳过
npm run smoke:host         # 51 项:front matter 往返、四轴分桶、原子写、查重、搜索、分页…
npm run smoke:tools        # 用 DSH 真实 ToolRuntime 校验 5 个工具的 schema
npm run smoke:commands     # 30 项:/save 各分支、助手回复提取的防御式兼容
npm run smoke:ui           # 18 项:jsdom 真实文档,验证侧栏真的渲染出内容(需 jsdom)

smoke-tools 需要能找到 DSH 安装目录(默认 /opt/dsh/lib/node_modules/@deepseek-ai/dsh), 用 DSH_ROOT 覆盖。

⚠️ 已知限制

  • 侧边栏入口是 DOM 注入的。DSH 目前没给外部插件开放 sidebar.panellist 槽位 (共享模块表里没有 dsh-client-ui-sidebar),社区插件(link-collect、 skill-explorer、dshmarket)走的都是同一条路:注入一行 DOM + MutationObserver 自愈。 管理页因此是独立整页,不是原生的 main 面板。等官方开放后可平滑替换这一层。
  • 没有文件系统监听。库目录被外部改动后,需要点管理页的「刷新」(或重启)才会重新索引。
  • 正文内联有上限,二进制文件只登记路径与元数据,不在页面里预览。

📄 License

MIT