自动复盘对话并沉淀可复用技能,保持技能库整洁
30.8/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/22 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add xinyanglii/dsh-skill-curator该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · skill
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 10 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令
查看扫描证据(共 2 处,展示前 2 条)
- 执行外部命令来自配置/变量index.js:142
child = spawn(command, args, { env, stdio: ['pipe', 'pipe', 'pipe'] }) - 执行外部命令来自配置/变量preset.js:108
child = spawn(cfg.python, [cfg.skillctl, ...args], {
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
为 DeepSeek Harness 提供 Hermes 风格的进程内后台技能学习,维护者 Xinyang Li <lxymario@gmail.com>。
README
由 DeepSeek 最新模型翻译生成dsh-skill-curator
Hermes 风格的进程内后台技能学习,面向 DeepSeek Harness。
它监视已结束的对话,在受限的子代理里复盘这些对话,通过带校验的命令行写入类级技能,用确定性的生命周期管理器保持技能库整洁,还附带一个只读的仪表盘面板。
它做什么
- 回合后复盘。 按根会话统计模型迭代次数(每个助手步骤算一次,一个步骤里的并行工具调用只算一次),跨回合累计。已完成的回合越过阈值时,它在同一进程里启动一个复盘子代理。
- 受限的复盘者。 子代理运行在内置的 skill-review 智能体预设下:一个角色设定,加上 skill_list / skill_read / skill_manage。没有 shell,不能直接写文件,没有网络工具。
- 带校验的写入。 每次写入都走 skillctl(内置于 scripts/):校验名称和 frontmatter,写入前做 SHA 读取校验,限制支持文件的路径范围,账本只追加并保存 blob,删除改为归档。
- 生命周期管理器。 每 curatorEveryDays 天运行一次 skillctl curator --apply:active → stale(14 天未使用)→ archived(30 天未使用)。只归档,可回滚。
- 可选的合并流程。 默认关闭。
展开完整文档(README 剩余 1 节)
dsh-skill-curator Hermes 风格的进程内后台技能学习,面向 DeepSeek Harness。 它监视已结束的对话,在受限的子代理里复盘这些对话,通过带校验的命令行写入类级技能,用确定性的生命周期管理器保持技能库整洁,还附带一个只读的仪表盘面板。 它做什么 - 回合后复盘。 按根会话统计模型迭代次数(每个助手步骤算一次,一个步骤里的并行工具调用只算一次),跨回合累计。已完成的回合越过阈值时,它在同一进程里启动一个复盘子代理。 - 受限的复盘者。 子代理运行在内置的 skill-review 智能体预设下:一个角色设定,加上 skill_list / skill_read / skill_manage。没有 shell,不能直接写文件,没有网络工具。 - 带校验的写入。 每次写入都走 skillctl(内置于 scripts/):校验名称和 frontmatter,写入前做 SHA 读取校验,限制支持文件的路径范围,账本只追加并保存 blob,删除改为归档。 - 生命周期管理器。 每 curatorEveryDays 天运行一次 skillctl curator --apply:active → stale(14 天未使用)→ archived(30 天未使用)。只归档,可回滚。 - 可选的合并流程。 默认关闭。开启后,同一次运行会再启动一个受限子代理,把重叠的、由管理器托管的技能合并成伞形技能,把过窄的深度内容降级为支持文件,并归档被吸收的同类技能,同时给出明确的 absorbed_into 映射。 - 使用遥测。 技能加载记录汇总到 <skillsRoot>/.dsh-usage.json,管理器读的也是这个文件。 - 仪表盘。 一个侧边栏面板(Skill Curator),背后是两条仅限回环地址的 GET 路由:技能库、复盘历史、14 天活动,以及一个可折叠的技术信息区。 - 自检金丝雀。 首次激活时启动一个金丝雀子代理,它必须解析出预设并调用 skill_list,这样配置有问题时,在第一次真实复盘之前就会明显失败。 工作原理 session events ──► iteration counter (root sessions only, persisted) │ completed turn, counter ≥ threshold ▼ skillctl review --session <id> (build prompt from the transcript) ▼ subagent activation under the skill-review preset (persona + skill_list / skill_read / skill_manage only) ▼ skillctl manage create|patch|write_file|archive (validate → write → ledger → usage) ▼ review.finished / review.failed → state.json → dashboard 插件本身从不修改 SKILL.md,也从不向浏览器暴露写接口。 环境要求 | 要求 | 说明 | | DeepSeek Harness | 基于 0.2.1-rc.2 开发;bundle 就是普通的配置档补丁层。 | | Node.js | 宿主插件要求 >= 20。 | | Python | PATH 中需有 >= 3.9(也可设置 python / DSH_CURATOR_PYTHON)。 | | zstd | 用 zstdcat 读取会话日志,生成转录和用量扫描。安装方式:brew install zstd 或 apt install zstd。 | 安装 DSH bundle 是一个带 dsh.bundle.patch 层的包。安装包并不会激活它,还要把它加进配置档的 bundle 列表。 从 GitHub 安装 bash 1. Install the package into the profile (creates ~/.dsh/profiles/<name>/node_modules) dsh plugin --profile desktop add github:xinyanglii/dsh-skill-curator 2. Activate the bundle: add "dsh-skill-curator" to dsh.profile.bundles in ~/.dsh/profiles/desktop/package.json 3. Restart the app once so the browser half is loaded. 要装到别的运行时,改用 --profile web(或其他配置档)。dashboard 只在 Web/Desktop 配置档里出现;headless 和 ACP 配置档没有浏览器界面。 从本地检出安装 bash git clone https://github.com/xinyanglii/dsh-skill-curator.git dsh plugin --profile desktop add /absolute/path/to/dsh-skill-curator then add "dsh-skill-curator" to dsh.profile.bundles 验证 bash tail ~/.dsh/skills/.dsh-curator/plugin.log # plugin.started / dashboard.registered curl http://127.0.0.1:<port>/skill-curator/api/state 端口是配置档的 Web 宿主端口;桌面应用在内部做代理。 配置 在配置档的 cordis.patch.yml 里按行 id(skill-curator)覆盖任意值: yaml - id: skill-curator config: nudgeAfterToolIters: 10 python: /usr/bin/python3 | 字段 | 默认值 | 含义 | | enabled | true | 总开关。 | | skillsRoot | ~/.dsh/skills | 技能库根目录(所有配置档共用)。 | | skillctl | 包内 scripts/skillctl | 编写用命令行,负责提示词和写入。 | | python | python3 | skillctl 的解释器(DSH_CURATOR_PYTHON 同样有效)。 | | stateDir | <skillsRoot>/.dsh-curator | 存放 state.json 和 plugin.log。 | | nudgeAfterToolIters | 10 | 累计多少次模型迭代后触发一次审查。 | | reviewEnabled | true | 是否触发审查。 | | reviewPreset | skill-review | 给子代理挂载的智能体预设。 | | reviewProvider | spawn | 子代理使用的服务商。 | | reviewAgentProvider / reviewAgentModel | 空 | 显式指定审查路由;留空则沿用父会话当前的实时路由。 | | reviewTimeoutMs | 900000 | 单次审查的硬超时。 | | maxTranscriptChars | 40000 | 传给 skillctl review 的转录预算。 | | curatorEnabled | true | 是否运行确定性的生命周期管理器。 | | curatorEveryDays | 7 | curator 两次运行之间的最小间隔。 | | staleDays | 14 | 技能多久没被使用就算过期。 | | archiveDays | 30 | 过期技能再闲置多少天就归档。 | | consolidateEnabled | false | 在确定性 curator 之后,是否再跑一遍可选的 LLM 伞形构建。 | | consolidatePreset | skill-consolidate | 为 consolidation 子进程挂载的预设。 | | consolidateTimeoutMs | 1800000 | 单次 consolidation 运行的硬超时。 | | consolidateBackupKeep | 2 | consolidation 运行前保留的整树快照数量。 | | selfTestOnFirstRun | true | 首次激活时跑一次性的金丝雀检查。 | | maxSessions | 200 | 状态里保留的会话计数记录条数。 | | logMaxBytes | 2097152 | plugin.log 超过这个大小就轮转。 | 技能生命周期与目录结构 ~/.dsh/skills/ ├── <skill>/SKILL.md # skills themselves ├── .dsh-usage.json # use counts, last-used, state, provenance ├── .curator_ledger.jsonl # append-only write ledger ├── .ledger/blobs/ # content blobs for rollback ├── .curator_backups/ # tree snapshots ├── .archive/ # archived skills (never deleted) └── .dsh-curator/ # state.json, plugin.log skill_manage 可用的动作有:create、patch、write_file、archive。 这里刻意不提供删除动作;skillctl restore 能把归档的技能找回来。 写入限制 skillctl 把这些限制当作硬错误返回给 reviewer;技能内容永远不会被悄悄截断。 写入被拒后,技能库保持原样,reviewer 会拿到实测大小和限制值,于是它可以拆分技能,或者把细节挪进 references/ 再重试。 | 项目 | 限制 | 行为 | | SKILL.md(整个文件) | 100,000 字符 | 硬错误 | | 单个附属文件 | 1 MiB | 硬错误 | | description | 500 字符 | 硬错误(超过 500 时 DSH 会截断);建议的路由长度为 120 | | SKILL.md 建议值 | 24,000 字节 | 仅警告:「should split into references/」 | 这些是写入路径上的限制。插件里唯一的截断发生在 review 的输入转录(maxTranscriptChars,默认 40,000 字符),那是提示词预算,不是技能内容限制。 技能的注入与读取行为归 DSH 自己管。 consolidation 阶段(可选) 技能库会碎成许多狭窄的同级技能,任何单次 review 都看不全。consolidation 阶段就是 Hermes 的答案:多开一个后台子进程,读遍整个 curator 管理的技能库,构建伞形技能。 - 默认关闭。 开启后每次 curator 运行都要多一次模型调用,还会重写技能内容,所以必须显式开启。 - 在确定性的过期/归档转换之后运行,最多每 curatorEveryDays 跑一次。 - 候选是 curator 管理的技能(created_by: agent),不含 pinned 技能;用户编写或安装的技能绝不触碰。 - 子代理拿到同样受限的工具面(skill_list、skill_read、skill_manage),外加一份专用提示词。它可以并入已有伞形技能、新建一个,或把深度内容降级到 references//templates//scripts/。 - 每个归档都必须声明 absorbed_into=<existing umbrella>;skillctl 会校验伞形技能存在,并把映射记进账本和使用记录。缺了它,归档会被拒绝。 - 先做整树快照(skillctl backup --keep N);运行结果写入 <stateDir>/curator-runs/<timestamp>/ 下的 run.json 和 REPORT.md,内容包括合并/裁剪分类、新增技能、状态迁移和子代理的最终总结。归档仍可用 skillctl restore <name> 恢复。 - 手动触发(等价于 Hermes 的 curator run --consolidate):skillctl curator --request-consolidation 写入一个请求标记;插件在下一个完成的回合消费它,跑一轮,即使 consolidateEnabled 为 false 也照跑。 - 和 Hermes 不同,DSH 没有 cron 任务里的技能引用,所以没有 cron 重写这一步。 仪表盘 - 侧边栏入口 Skill Curator → 全宽主面板。 - GET /skill-curator/api/state、GET /skill-curator/api/skill?name=<name>、POST /skill-curator/api/config,后者用于可编辑的设置项。 - 所有路由仅限回环地址;GET 路由不暴露 <skillsRoot>/<name>/SKILL.md 之外的任何内容。POST 路由只接受 JSON,按固定 schema 校验每个键,并通过 Host 的 configEditor 写入当前配置档补丁(实时重载);路径、python、skillctl 以及插件/预设身份都不能从浏览器写入。 安全模型 - 审查子代理只能看到三个技能工具;skill-review 预设作用域以增量、防御性的方式拒绝其他所有全局工具。 - 审查者会收到对话记录(上限 maxTranscriptChars)和技能列表;除非另行覆盖,它跑在被审查会话相同的模型路由上。如果某个会话的记录不能离开你已在使用的模型服务商,就不要在该会话上启用这个插件。 - skillctl 以当前用户身份运行,只写入 skillsRoot 之下(以及其下的归档、账本、备份和状态)。它从不读取凭据文件。 - HTTP 路由仅限回环地址,不暴露技能目录之外的任何文件。 测试 bash npm test - node --test test/.test.js 覆盖清单、bundle 补丁、仪表盘路由(200/400/403/405、路径穿越、dispose)、预设工具注册、针对假 skillctl 的参数校验、合并报告构建器,以及浏览器端注册。 - python3 -m unittest discover -s test -p 'test_.py' 覆盖内置的 skillctl:创建、带 SHA 校验的补丁、受限支持文件、归档/恢复、校验、合并候选/提示词、absorbed_into 守卫、list --json,以及审查者提示词构建器。 - CI 在 Node 20/22 上运行,同时使用 Python 3.11。 兼容性说明 - 计数方式与 Hermes 的 _iters_since_skill 一致:每次模型迭代计一次,跨轮次累加,在轮次结束时检查。Hermes 单独的 memory nudge 计数器在这里没有实现;长期记忆归你的 memory 插件管。 - 不跳过 cron/定时会话。只统计根会话,review 子会话不计入。 - 整合流程沿用 Hermes 的防护结构(仅限 curator 管理、跳过 pinned、只归档且带校验过的 umbrella、运行前快照),但不做它的 cron 引用重写,因为 DSH 的调度不携带结构化技能引用。 - 对已加载的包说明符增删 dsh.client 元数据,需要重启 App。已安装 bundle 的纯代码改动,可以删掉再重装 bundle 来重新加载。 License MIT © 2026 dsh-skill-curator contributors
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
xinyanglii/dsh-skill-curator
自动复盘对话并沉淀可复用技能,保持技能库整洁
相关插件 · 技能 / 提示词
人设统管ZiChuanLan/agent-purge
一份系统提示词,喂给多个 coding…
★ 931已汉化DSH
73.8
人物画像蒸馏titanwings/distilly
Distilly — 把他们的思考方式提炼成可复用的技能,供任何智能体或机器人使用。原名 Colleague Skill(原同事 Skill)。
★ 25,659已汉化DSH
71.3
推理工作空间套件Tiger3807861189/J-Space-Cognition-Suite
J-Space 是面向复杂推理、大型仓库工程、子代理协作与授权安全分析的推理时工作空间和控制套件。
★ 2,957已汉化DSH
70.5
两阶段工具锚定预设xiaobright/dsh-anchored-standard
实验性 DeepSeek Harness agent preset…
★ 3,742已汉化DSH
70.1
智能体工作流编排nrslib/takt
不再日夜盯着 AI 编码智能体。
★ 1,402已汉化DSH
70
Agent 运行时手册Electricitysheep/dsh-handbook
DeepSeek Harness dsh 从 0 到 1 深度手册:安装/插件开发/性能调优/实测案例/同模型多…
★ 827已汉化DSH
68.7