技能觸發與選擇閘門:系統按關鍵詞觸發技能時,把候選技能(含描述)交給用戶選擇;10 秒內未選擇 → 自動使用系統默認。
⚠️ ** superseded by@bryan-cmf/dsh-skill-ledger** — the blocking "gate" idea lives on there as a non-blocking alternative-skill hint row (multi-select chips → prompt draft → you press Enter). This repo is archived as the design-history record.
A DeepSeek Harness host plugin that gives the user the final say over which skill the agent uses.
- The model triggers a skill (
skilltool call, keyword-driven as usual). tools/executewaterfall intercepts the dispatch and opens the native question UI: 系統建議的技能 + 其他候選技能,每項帶描述。- User picks → the original call is short-circuited with an explanatory result, and a synthetic instruction is injected so the model loads the chosen skill instead.
- No answer within
timeoutMs(default 10s) → the system default (the requested skill) proceeds untouched.
🧠 技能選擇
系統將使用技能「ak-hk-stock-dd」。要改用其他技能嗎?
(10 秒內未選擇將自動使用「ak-hk-stock-dd」)
[ak-hk-stock-dd] 系統建議(預設)
[serenity-skill] 供應鏈瓶頸投資研究方法論
[dcf-valuation] Discounted cash flow valuation…
- id: skill-gate
name: '@bryan-cmf/dsh-skill-gate'- DSH
>= 0.1.0-rc.6(services:skills,userQuestions,timer; all in the shippeddsh-basebundle —userQuestionsneeds the browser UI)
| Key | Default | Meaning |
|---|---|---|
enabled |
true |
Master switch |
timeoutMs |
10000 |
User decision window; on expiry the system default applies |
maxCandidates |
5 |
Max options offered (includes the system default) |
- One gate at a time: a second skill call while a question is open passes through untouched (no stacked questions).
- No userQuestions provider (headless) → the gate passes everything through.
- The override is delivered through the sanctioned
agent.inject()synthetic user-message channel, so the model's next step loads the chosen skill. - Companion:
@bryan-cmf/dsh-infra-observabilityrecords every gate outcome as ordinary tool usage.
pnpm install --store-dir .pnpm-store
pnpm buildMIT