插件目录 / Developer / dsh-skill-trail
dsh-skill-trail
已验证 · 实测可装 Bryan-cmf
功能简介
DSH-Plugin: per-reply skill trail - truthful per-turn triggered/used tool & skill badges, folded from the session log (no model self-reporting)
可用 — 实测通过,早期项目
DSH-Plugin: per-reply skill trail - truthful per-turn triggered/used tool & skill badges, folded from the session log (no model self-reporting) 实测能干净安装、正常启动。早期项目,但功能可用。
「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。
README
🧩 Skill Trail — DSH-Plugin
每條回覆如實標出「觸發了什麼、成功用了什麼」。 基於引擎日誌的逐回覆技能/工具徽章,零模型自報。
⚠️ ** superseded by
@bryan-cmf/dsh-skill-ledger** — this plugin's per-reply badges live on there (dual-seat, deliverables-safe), with the alternative-skill hint and the Skills tab. This repo is archived as the design-history record.
A DeepSeek Harness (DSH) plugin
that renders a compact trail under every assistant reply: which skills were
triggered (🧠) and which tools were actually used (✓) or failed (✗).
🧩 技能軌跡 [🧠 ak-hk-stock-dd ✓] [read ×3 ✓] [bash ×2 ✓] [web_search ✗]
Why it is truthful
The badges are not produced by the model. A skillTrail session-projection
unit (Host) folds each session's committed log — every tool/call event
becomes a triggered entry; the paired tool/result (matched by callId)
settles it as ok / err. The Client reads the finished value throughuseProjection('skillTrail') and renders it in the zero-riskconversation.chat.turnTail slot.
- ✅ Structural — the platform records, nobody self-reports
- ✅ Replayable — projection folds are pure; persisted cache + cold-start
backfill come from the DSH projection subsystem for free - ✅ Per-turn — each reply shows exactly its own turn's trail
- ✅ Skill-aware —
skilltool calls render as 🧠 with the resolved skill name
Install
The package ships a Host half (lib/index.js) and a browser Client half
(lib/client.js, window.__ModuleLoader__ closure-factory format).
Path A — Host composition (always-on, every session & preset)
Add to the profile's package.json:
"dsh": { "profile": { "bundles": ["@bryan-cmf/dsh-skill-trail"] } }
then install and restart DSH. The projection unit is registered process-wide;
the client half renders in every conversation.
Path B — Agent preset
Add one row to your preset's agent.cordis.yml (a consumer-only row — it
publishes no service, so it sits loose; no isolate realm needed):
- id: skill-trail
name: '@bryan-cmf/dsh-skill-trail'
Path C — Dynamic experiment
Inside a session, @bryan-cmf/dsh-skill-trail can also be run through the
dynamic Cordis flow; prefer A or B for anything standing.
Requirements
- DSH
>= 0.1.0-rc.6(@deepseek-ai/dsh-session-projectionmounted in the
host composition — it is part of the shippeddsh-basebundle) - Browser UI needs the
conversation.chat.turnTailslot (shipped chat view)
Configuration
| Key | Default | Meaning |
|---|---|---|
maxTurns |
500 |
Turns retained per session; oldest pruned first |
maxCallsPerTurn |
50 |
Triggered-entry cap per turn (wire-payload guard) |
Projection value
useProjection('skillTrail') → Record<turn, { triggered, used, failed }>
{
"12": {
"triggered": [{ "name": "skill", "skill": "ak-hk-stock-dd", "status": "ok", "callId": "call_1" }],
"used": { "skill": 1, "read": 3, "bash": 2 },
"failed": ["web_search"]
}
}
Development
pnpm install
pnpm build # tsc declarations → lib/types + tsdown → lib/{index,client}.js
License
MIT
安装
装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:
dsh plugin add dshbase-catalog 然后对 agent 说「帮我装 dsh-skill-trail」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。
该插件是 GitHub 源码(未发 npm)——直接从仓库装:
Web profile:
dsh plugin --profile web add github:Bryan-cmf/dsh-skill-trail Headless(CLI)profile:
dsh plugin --profile headless add github:Bryan-cmf/dsh-skill-trail 实测报告
验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。