dsh-desktop-kit 0.0.0-stage → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +152 -2
- package/client.js +4101 -0
- package/cordis.patch.yml +5 -0
- package/docs/ARCHITECTURE.md +114 -0
- package/docs/COMPATIBILITY.md +61 -0
- package/docs/INSTALL.md +84 -0
- package/docs/PRIVACY.md +50 -0
- package/docs/ROADMAP.md +57 -0
- package/docs/TOKENS.md +118 -0
- package/docs/TROUBLESHOOTING.md +68 -0
- package/docs/images/hero.png +0 -0
- package/index.js +84 -0
- package/package.json +70 -4
- package/plugins/dsh-gkb-ru-ui/cordis.patch.yml +6 -0
- package/plugins/dsh-gkb-ru-ui/lib/client.js +1331 -0
- package/plugins/dsh-gkb-ru-ui/lib/index.js +186 -0
- package/plugins/dsh-gkb-ru-ui/lib/skills.js +570 -0
- package/plugins/dsh-gkb-ru-ui/package.json +28 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/01-home-tiles-1440-light.png +0 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/02-skills-1440-light.png +0 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/03-skills-editor-1440-light.png +0 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/04-skills-1440-dark.png +0 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/05-skills-390-light.png +0 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/06-home-tiles-1440-dark.png +0 -0
- package/plugins/dsh-peak-guard/README.md +70 -0
- package/plugins/dsh-peak-guard/client.js +741 -0
- package/plugins/dsh-peak-guard/cordis.patch.yml +5 -0
- package/plugins/dsh-peak-guard/icon.svg +12 -0
- package/plugins/dsh-peak-guard/index.js +2 -0
- package/plugins/dsh-peak-guard/locale/en.json +6 -0
- package/plugins/dsh-peak-guard/locale/ru.json +6 -0
- package/plugins/dsh-peak-guard/locale/zh.json +6 -0
- package/plugins/dsh-peak-guard/package.json +33 -0
- package/plugins/dsh-peak-guard/screenshots/01-real-time-peak-start.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/02-real-time-peak-end.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/03-peak-card-1440-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/04-peak-card-1440-dark.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/05-peak-card-390-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/05-peak-card-768-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/06-peak-card-390-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/07-live-preview-check.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/07-pre-peak-1440-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/08-peak-start-1440-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/09-peak-end-1440-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/10-pre-peak-card-1440-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/11-pre-peak-card-1440-dark.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/12-pre-peak-card-390-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/qa-report.json +74 -0
- package/plugins/dsh-profile-transfer/README.md +62 -0
- package/plugins/dsh-profile-transfer/bootstrap/01-INSTALL.cmd +7 -0
- package/plugins/dsh-profile-transfer/bootstrap/README-ARCHIVE.md +54 -0
- package/plugins/dsh-profile-transfer/bootstrap/README-/320/243/320/241/320/242/320/220/320/235/320/236/320/222/320/232/320/220.md +42 -0
- package/plugins/dsh-profile-transfer/bootstrap/install-on-clean-machine.ps1 +119 -0
- package/plugins/dsh-profile-transfer/bootstrap//320/243/320/241/320/242/320/220/320/235/320/236/320/222/320/230/320/242/320/254.cmd +5 -0
- package/plugins/dsh-profile-transfer/client.js +806 -0
- package/plugins/dsh-profile-transfer/cordis.patch.yml +3 -0
- package/plugins/dsh-profile-transfer/icon.svg +13 -0
- package/plugins/dsh-profile-transfer/index.js +375 -0
- package/plugins/dsh-profile-transfer/locale/en.json +6 -0
- package/plugins/dsh-profile-transfer/locale/ru.json +6 -0
- package/plugins/dsh-profile-transfer/locale/zh.json +6 -0
- package/plugins/dsh-profile-transfer/package.json +36 -0
- package/plugins/dsh-profile-transfer/screenshots/01-settings-transfer-1440-light.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/02-settings-transfer-preview-1440-light.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/03-settings-transfer-1440-dark.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/04-settings-transfer-390-light.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/05-settings-transfer-768-light.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/06-settings-transfer-390-dark.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/07-settings-transfer-export-result.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/08-settings-transfer-workspaces-1440-light.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/09-settings-transfer-workspaces-1440-dark.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/10-settings-transfer-workspaces-390-light.png +0 -0
- package/plugins/dsh-profile-transfer/transfer.js +1004 -0
- package/plugins/dsh-project-memory/README.md +71 -0
- package/plugins/dsh-project-memory/cordis.patch.yml +4 -0
- package/plugins/dsh-project-memory/icon.svg +12 -0
- package/plugins/dsh-project-memory/index.js +1240 -0
- package/plugins/dsh-project-memory/locale/en.json +6 -0
- package/plugins/dsh-project-memory/locale/ru.json +6 -0
- package/plugins/dsh-project-memory/locale/zh.json +6 -0
- package/plugins/dsh-project-memory/package.json +26 -0
- package/plugins/dsh-session-move/README.md +67 -0
- package/plugins/dsh-session-move/client.js +719 -0
- package/plugins/dsh-session-move/cordis.patch.yml +5 -0
- package/plugins/dsh-session-move/icon.svg +14 -0
- package/plugins/dsh-session-move/index.js +497 -0
- package/plugins/dsh-session-move/locale/en.json +6 -0
- package/plugins/dsh-session-move/locale/ru.json +6 -0
- package/plugins/dsh-session-move/locale/zh.json +6 -0
- package/plugins/dsh-session-move/package.json +31 -0
- package/plugins/dsh-session-move/screenshots/01-row-menu-1440-light.png +0 -0
- package/plugins/dsh-session-move/screenshots/02-dialog-1440-light.png +0 -0
- package/plugins/dsh-session-move/screenshots/03-dialog-390-light.png +0 -0
- package/plugins/dsh-session-move/screenshots/04-dialog-1440-dark.png +0 -0
- package/plugins/dsh-session-move/screenshots/05-drag-highlight-1440-light.png +0 -0
- package/plugins/dsh-session-move/screenshots/06-drop-ungrouped-highlight.png +0 -0
- package/plugins/dsh-session-move/screenshots/07-after-drop-ungrouped.png +0 -0
- package/plugins/dsh-session-move/screenshots/08-move-dialog.png +0 -0
- package/plugins/dsh-session-move/screenshots/09-moved-to-second-workspace.png +0 -0
- package/plugins/dsh-session-move/screenshots/qa-report.json +62 -0
- package/plugins/dsh-skill-autopilot/cordis.patch.yml +3 -0
- package/plugins/dsh-skill-autopilot/index.js +444 -0
- package/plugins/dsh-skill-autopilot/package.json +19 -0
- package/plugins/dsh-token-lab/cordis.patch.yml +3 -0
- package/plugins/dsh-token-lab/lib/client.js +504 -0
- package/plugins/dsh-token-lab/lib/index.js +275 -0
- package/plugins/dsh-token-lab/package.json +26 -0
- package/plugins/dsh-token-lab/screenshots/01-token-lab-1440-light.png +0 -0
- package/plugins/dsh-token-lab/screenshots/02-token-lab-1440-dark.png +0 -0
- package/skills/code-review-checklist/SKILL.md +55 -0
- package/skills/content-writing/README.md +87 -0
- package/skills/content-writing/SKILL.md +85 -0
- package/skills/content-writing/assets/checklists/fact-check.md +53 -0
- package/skills/content-writing/assets/checklists/publish.md +65 -0
- package/skills/content-writing/assets/checklists/social.md +40 -0
- package/skills/content-writing/assets/templates/article.md +47 -0
- package/skills/content-writing/assets/templates/brief.md +44 -0
- package/skills/content-writing/assets/templates/doctor-card.md +41 -0
- package/skills/content-writing/assets/templates/image-prompts.md +128 -0
- package/skills/content-writing/assets/templates/post-telegram.md +36 -0
- package/skills/content-writing/assets/templates/post-vk.md +42 -0
- package/skills/content-writing/assets/templates/press-release.md +56 -0
- package/skills/content-writing/assets/templates/science-pop-note.md +55 -0
- package/skills/content-writing/assets/templates/service-card.md +46 -0
- package/skills/content-writing/references/anti-ai-style.md +248 -0
- package/skills/content-writing/references/editing.md +185 -0
- package/skills/content-writing/references/fact-checking.md +205 -0
- package/skills/content-writing/references/government-medical.md +246 -0
- package/skills/content-writing/references/images.md +212 -0
- package/skills/content-writing/references/journalism.md +252 -0
- package/skills/content-writing/references/process.md +123 -0
- package/skills/content-writing/references/quick-recipes.md +99 -0
- package/skills/content-writing/references/rules.md +85 -0
- package/skills/content-writing/references/science-popular.md +218 -0
- package/skills/content-writing/references/seo-content.md +172 -0
- package/skills/content-writing/references/social-media.md +253 -0
- package/skills/content-writing/references/sources.md +49 -0
- package/skills/content-writing/references/templates.md +291 -0
- package/skills/context-economy/SKILL.md +60 -0
- package/skills/context-economy/references/long-session.md +35 -0
- package/skills/context-economy/references/token-math.md +42 -0
- package/skills/context-economy/references/tool-recipes.md +34 -0
- package/skills/database-safety/SKILL.md +47 -0
- package/skills/debugging-playbook/SKILL.md +42 -0
- package/skills/design-critique/SKILL.md +65 -0
- package/skills/design-critique/references/a11y.md +25 -0
- package/skills/design-critique/references/diagnoses.md +33 -0
- package/skills/design-critique/references/quick-tests.md +30 -0
- package/skills/design-critique/references/report-template.md +63 -0
- package/skills/design-critique/references/rubric-fast.md +73 -0
- package/skills/dev-workflow/SKILL.md +48 -0
- package/skills/dev-workflow/references/definition-of-done.md +44 -0
- package/skills/dev-workflow/references/memory-and-boundaries.md +31 -0
- package/skills/dev-workflow/references/stages.md +67 -0
- package/skills/git-and-ci/SKILL.md +60 -0
- package/skills/pg-upgrade-verify/SKILL.md +67 -0
- package/skills/project-deep-dive/SKILL.md +45 -0
- package/skills/project-deep-dive/references/recon-commands.md +90 -0
- package/skills/project-deep-dive/references/section-templates.md +104 -0
- package/skills/project-deep-dive/references/tool-and-process.md +86 -0
- package/skills/project-memory-maintenance/SKILL.md +55 -0
- package/skills/project-memory-maintenance/references/api-and-checklist.md +99 -0
- package/skills/project-memory-maintenance/references/journal-template.md +50 -0
- package/skills/project-memory-maintenance/references/section-rules.md +59 -0
- package/skills/release-and-deploy/SKILL.md +53 -0
- package/skills/requirements-and-planning/SKILL.md +49 -0
- package/skills/requirements-and-planning/references/antipatterns-and-checklist.md +20 -0
- package/skills/requirements-and-planning/references/process-steps.md +52 -0
- package/skills/requirements-and-planning/references/templates-and-estimates.md +29 -0
- package/skills/security-review/SKILL.md +40 -0
- package/skills/seo/README.md +60 -0
- package/skills/seo/SKILL.md +77 -0
- package/skills/seo/assets/README.md +66 -0
- package/skills/seo/assets/scripts/LICENSE-playwright-core.txt +202 -0
- package/skills/seo/assets/scripts/README.md +179 -0
- package/skills/seo/assets/scripts/lib/args.mjs +105 -0
- package/skills/seo/assets/scripts/lib/browser.mjs +620 -0
- package/skills/seo/assets/scripts/lib/zip.mjs +191 -0
- package/skills/seo/assets/scripts/seo-audit.mjs +1675 -0
- package/skills/seo/assets/snippets/jsonld-breadcrumb.json +30 -0
- package/skills/seo/assets/snippets/jsonld-faq.json +39 -0
- package/skills/seo/assets/snippets/jsonld-medical-clinic.json +49 -0
- package/skills/seo/assets/snippets/jsonld-medical-webpage.json +33 -0
- package/skills/seo/assets/snippets/jsonld-organization.json +74 -0
- package/skills/seo/assets/snippets/jsonld-physician.json +46 -0
- package/skills/seo/assets/snippets/meta.blade.php +61 -0
- package/skills/seo/assets/snippets/robots.txt +61 -0
- package/skills/seo/assets/snippets/sitemap-urlset-example.xml +72 -0
- package/skills/seo/assets/snippets/sitemap.xml +36 -0
- package/skills/seo/references/antipatterns.md +66 -0
- package/skills/seo/references/audit-checklist.md +319 -0
- package/skills/seo/references/content-seo.md +204 -0
- package/skills/seo/references/eeat-medical.md +219 -0
- package/skills/seo/references/measurement.md +250 -0
- package/skills/seo/references/on-page.md +214 -0
- package/skills/seo/references/page-templates.md +56 -0
- package/skills/seo/references/stack-recipes.md +695 -0
- package/skills/seo/references/structured-data.md +487 -0
- package/skills/seo/references/technical-seo.md +296 -0
- package/skills/service-desk-conventions/SKILL.md +52 -0
- package/skills/service-desk-db-safety/SKILL.md +63 -0
- package/skills/service-desk-release/SKILL.md +61 -0
- package/skills/service-desk-testing/SKILL.md +61 -0
- package/skills/service-desk-ui/SKILL.md +52 -0
- package/skills/skills-router/SKILL.md +53 -0
- package/skills/skills-router/references/applying-skills.md +25 -0
- package/skills/skills-router/references/routing-matrix.md +52 -0
- package/skills/testing-strategy/SKILL.md +52 -0
- package/skills/ui-design-system/SKILL.md +50 -0
- package/skills/ui-design-system/references/accessibility-and-responsive.md +50 -0
- package/skills/ui-design-system/references/tokens-and-components.md +67 -0
- package/skills/ui-design-system/references/visual-qa.md +44 -0
- package/skills/web-research/SKILL.md +47 -0
- package/skills/web-research/references/answer-and-citations.md +60 -0
- package/skills/web-research/references/query-recipes.md +44 -0
- package/skills/wow-design/SKILL.md +89 -0
- package/skills/wow-design/assets/kit/README.md +195 -0
- package/skills/wow-design/assets/kit/assets/css/base.css +158 -0
- package/skills/wow-design/assets/kit/assets/css/components.css +1001 -0
- package/skills/wow-design/assets/kit/assets/css/fonts.css +73 -0
- package/skills/wow-design/assets/kit/assets/css/pages.css +737 -0
- package/skills/wow-design/assets/kit/assets/css/tokens.css +218 -0
- package/skills/wow-design/assets/kit/assets/fonts/LICENSE-golos-text.txt +93 -0
- package/skills/wow-design/assets/kit/assets/fonts/LICENSE-lora.txt +93 -0
- package/skills/wow-design/assets/kit/assets/fonts/LICENSE-unbounded.txt +93 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-cyrillic-400-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-cyrillic-500-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-cyrillic-600-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-cyrillic-700-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-latin-400-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-latin-500-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-latin-600-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-latin-700-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-cyrillic-400-italic.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-cyrillic-400-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-cyrillic-500-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-cyrillic-600-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-latin-400-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-latin-500-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-latin-600-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/unbounded-cyrillic-400-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/unbounded-cyrillic-500-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/unbounded-cyrillic-600-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/unbounded-latin-400-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/unbounded-latin-500-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/unbounded-latin-600-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/js/kit.js +550 -0
- package/skills/wow-design/assets/kit/pages/dashboard.html +539 -0
- package/skills/wow-design/assets/kit/pages/hospital.html +430 -0
- package/skills/wow-design/assets/kit/showcase.html +1164 -0
- package/skills/wow-design/assets/scripts/LICENSE-axe-core.txt +362 -0
- package/skills/wow-design/assets/scripts/LICENSE-playwright-core.txt +202 -0
- package/skills/wow-design/assets/scripts/README.md +312 -0
- package/skills/wow-design/assets/scripts/audit.mjs +1200 -0
- package/skills/wow-design/assets/scripts/capture.mjs +337 -0
- package/skills/wow-design/assets/scripts/package.json +30 -0
- package/skills/wow-design/references/anti-patterns.md +252 -0
- package/skills/wow-design/references/critique-rubric.md +262 -0
- package/skills/wow-design/references/design-brief-template.md +48 -0
- package/skills/wow-design/references/inspiration.md +203 -0
- package/skills/wow-design/references/presets.md +99 -0
- package/skills/wow-design/references/principles.md +371 -0
- package/skills/wow-design/references/quick-presets.md +50 -0
- package/skills/wow-design/references/report-template.md +21 -0
- package/skills/wow-design/references/stack-recipes.md +96 -0
- package/skills/wow-design/references/visual-qa.md +82 -0
- package/skills/wow-design/references/wow-levers.md +43 -0
- package/tools/skill-cost.mjs +76 -0
package/cordis.patch.yml
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Архитектура
|
|
2
|
+
|
|
3
|
+
## Состав репозитория
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
dsh-desktop-kit/
|
|
7
|
+
├─ package.json пакет-«зонтик», который ставится через «Add plugin»
|
|
8
|
+
├─ index.js host-половина: монтирует семь плагинов дочерними
|
|
9
|
+
├─ client.js сгенерированная браузерная половина (5 плагинов)
|
|
10
|
+
├─ cordis.patch.yml одна строка bundle → dsh-desktop-kit
|
|
11
|
+
├─ plugins/
|
|
12
|
+
│ ├─ dsh-gkb-ru-ui/ русский UI, плитки, Skills Studio
|
|
13
|
+
│ ├─ dsh-skill-autopilot/ маршрут навыков по сообщению
|
|
14
|
+
│ ├─ dsh-token-lab/ замер контекста и панель
|
|
15
|
+
│ ├─ dsh-peak-guard/ предупреждение о пиковом тарифе
|
|
16
|
+
│ ├─ dsh-project-memory/
|
|
17
|
+
│ ├─ dsh-session-move/
|
|
18
|
+
│ └─ dsh-profile-transfer/
|
|
19
|
+
├─ skills/ 25 навыков (ядро + references)
|
|
20
|
+
├─ tools/ сборка, smoke, проверка бюджета навыков
|
|
21
|
+
├─ docs/ документация и hero-картинка
|
|
22
|
+
└─ assets/ исходник hero.html (в npm не входит)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Почему один пакет, а не семь зависимостей
|
|
26
|
+
|
|
27
|
+
DSH ставит плагин как пакет профиля и загружает его клиентскую половину по имени пакета. Пакет-«зонтик» с зависимостями на подпакеты не годится: pnpm кладёт их в `node_modules/.pnpm`, а загрузчик ищет `dsh.client` у пакета, который указан в строке bundle. Поэтому зонтик **вендорит** исходники и объединяет половины сам.
|
|
28
|
+
|
|
29
|
+
## Host-половина
|
|
30
|
+
|
|
31
|
+
`index.js` импортирует семь host-модулей и монтирует каждый через `ctx.plugin(plugin)`:
|
|
32
|
+
|
|
33
|
+
- у каждого дочернего плагина свой `inject`, поэтому отсутствующий сервис оставляет pending только этот плагин, а не весь набор;
|
|
34
|
+
- отключение `dsh-desktop-kit` в списке плагинов снимает все семь;
|
|
35
|
+
- ошибка монтирования одного плагина логируется и не мешает остальным.
|
|
36
|
+
|
|
37
|
+
При старте `installSkills()` копирует из `skills/` только отсутствующие папки в `~/.dsh/skills`. Существующие навыки не перезаписываются: обновление библиотеки — отдельное осознанное действие.
|
|
38
|
+
|
|
39
|
+
## Автопилот навыков
|
|
40
|
+
|
|
41
|
+
`dsh-skill-autopilot` регистрирует `ctx.systemPrompt.context({ name: "dsh-desktop-kit:skill-autopilot", order: 132 })`:
|
|
42
|
+
|
|
43
|
+
1. при сборке промпта берёт живую сессию из `assemblyContext.agent.session`;
|
|
44
|
+
2. читает последний `user/message` из `session.surface.nodes` (кэш по `seq`);
|
|
45
|
+
3. прогоняет текст по 16 правилам (`RULES`), фильтрует имена по реально существующим `~/.dsh/skills/*/SKILL.md`;
|
|
46
|
+
4. возвращает блок `<skill-autopilot>` с ядрами и их ценой либо пустую строку.
|
|
47
|
+
|
|
48
|
+
RPC `/api/dsh-skill-autopilot/state|set|route` отдаёт состояние, меняет режим и позволяет прогнать текст через маршрутизатор. Режим хранится в `~/.dsh/dsh-autopilot.json`.
|
|
49
|
+
|
|
50
|
+
## Token Lab
|
|
51
|
+
|
|
52
|
+
`dsh-token-lab` — два RPC:
|
|
53
|
+
|
|
54
|
+
- `report` — `ctx.tokenMeter.measure(session)`, группировка узлов по типу события, топ-6, серия роста, стоимость библиотеки навыков;
|
|
55
|
+
- `ping` — health-check.
|
|
56
|
+
|
|
57
|
+
Подписи tool-результатов берутся из `tool/call` (`callId → name + hint`), поэтому в панели видно `Результат · read · src/app.ts`, а не сырой JSON. Клиент — плитка в общем стеке сайдбара и оверлей-панель.
|
|
58
|
+
|
|
59
|
+
## Skills Studio
|
|
60
|
+
|
|
61
|
+
Хост-часть `dsh-gkb-ru-ui`:
|
|
62
|
+
|
|
63
|
+
- `lib/skills.js` читает `~/.dsh/skills`, считает usage по session-логам, стоимость ядра и references;
|
|
64
|
+
- RPC `skill`, `skill-save`, `skill-create`, `skill-duplicate`, `skill-delete`, `open-skill`;
|
|
65
|
+
- запись атомарная (tmp + rename), перед сохранением — копия в `.dsh-kit-backups`, удаление — перенос в `.dsh-kit-trash`;
|
|
66
|
+
- имена проверяются по kebab-case, `name` во frontmatter обязан совпадать с папкой.
|
|
67
|
+
|
|
68
|
+
Клиент — каталог с карточками, деталями и редактором; `Ctrl+S`, живой счётчик токенов, предупреждение при ядре > 6k.
|
|
69
|
+
|
|
70
|
+
## Клиентская половина
|
|
71
|
+
|
|
72
|
+
Каждый плагин поставляет самодостаточный `client.js`, который вызывает `window.__ModuleLoader__.load({ id, factory })`.
|
|
73
|
+
|
|
74
|
+
`tools/build-client.mjs`:
|
|
75
|
+
|
|
76
|
+
1. читает `exports["./client"]` каждого плагина;
|
|
77
|
+
2. вырезает тело `factory` (до `return module.exports;`);
|
|
78
|
+
3. оборачивает каждое тело в IIFE — переменные плагинов не пересекаются;
|
|
79
|
+
4. собирает один модуль `dsh-desktop-kit`:
|
|
80
|
+
- `inject` — объединение `inject` всех частей;
|
|
81
|
+
- `apply` — вызывает `apply` каждой части в try/catch.
|
|
82
|
+
|
|
83
|
+
Пересобрать и проверить:
|
|
84
|
+
|
|
85
|
+
```powershell
|
|
86
|
+
node tools/build-client.mjs
|
|
87
|
+
node tools/check-client.mjs client.js
|
|
88
|
+
node tools/smoke-tests.mjs
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
`smoke-tests.mjs` поднимает фейковый Cordis-контекст и фейковый `__ModuleLoader__`: проверяет регистрацию слотов, RPC, автопилот и редактирование навыков без браузера.
|
|
92
|
+
|
|
93
|
+
## Общий стек плиток
|
|
94
|
+
|
|
95
|
+
Плитка Token Lab не регистрирует второй `sidebar.footer.action` (иначе слот раскладывает её в строку с плиткой навыков). Token Lab кладёт компонент в `window.__DSH_TOKEN_TILE__`, а `SidebarTiles` в `dsh-gkb-ru-ui` рендерит его четвёртым элементом общей колонки. На узких экранах (`max-width: 760px`) стек скрыт, вместо него — мобильная кнопка «Навыки».
|
|
96
|
+
|
|
97
|
+
## Русская локаль
|
|
98
|
+
|
|
99
|
+
В 0.2.1 плагин `dsh-gkb-ru-ui` добавлял локаль `ru`. В 0.2.2 она уже встроена, и повторная регистрация перезаписывала штатные словари. Теперь блок локали:
|
|
100
|
+
|
|
101
|
+
- пытается добавить `ru` и ловит «already registered»;
|
|
102
|
+
- при уже существующей локали **не** регистрирует старые словари;
|
|
103
|
+
- продолжает регистрировать плитки и каталог навыков.
|
|
104
|
+
|
|
105
|
+
## Навыки
|
|
106
|
+
|
|
107
|
+
Навыки — обычные папки с `SKILL.md` (frontmatter `name`, `description`, `whenToUse`) и `references/`. DSH читает их из `~/.dsh/skills`; каталог в интерфейсе строит `dsh-gkb-ru-ui`.
|
|
108
|
+
|
|
109
|
+
Проверки перед релизом:
|
|
110
|
+
|
|
111
|
+
```powershell
|
|
112
|
+
node tools/skill-cost.mjs --check # ядро не больше 6k токенов
|
|
113
|
+
node tools/validate-skills.mjs # frontmatter и ссылки
|
|
114
|
+
```
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Совместимость
|
|
2
|
+
|
|
3
|
+
## Матрица
|
|
4
|
+
|
|
5
|
+
| DSH | Состояние | Что проверено |
|
|
6
|
+
|---|---|---|
|
|
7
|
+
| `0.2.1-rc.5` | работает | **2.0 проверена вживую**: 7 плагинов, Skills Studio (редактирование/создание/корзина), Token Lab на `tokenMeter`, автопилот в промпте, 25 навыков, скриншоты 1440/390 light/dark |
|
|
8
|
+
| `0.2.2-rc.1` | работает (1.x) | хост-часть монтируется, клиентский бандл грузится, ошибок в консоли нет, навыки копируются; 2.0 на этой сборке ещё не прогонялась |
|
|
9
|
+
| новее `0.2.2` | не проверено | API плагинов в 0.2.x ещё меняется; см. «Если сломалось» |
|
|
10
|
+
|
|
11
|
+
## Что использует 2.0
|
|
12
|
+
|
|
13
|
+
| Возможность DSH | Где используется | Проверено |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| `sidebar.footer.action` | общий стек плиток | да |
|
|
16
|
+
| `shell.overlay` | каталог, Token Lab, мобильная кнопка | да |
|
|
17
|
+
| `ctx.tokenMeter.measure(session)` | точный замер контекста | да, 0.2.1-rc.5 |
|
|
18
|
+
| `ctx.systemPrompt.context()` + `assemblyContext.agent.session` | автопилот навыков | да |
|
|
19
|
+
| `ctx.sessions.get/list` | выбор живой сессии | да |
|
|
20
|
+
| `ctx.skills` / `~/.dsh/skills` | каталог и загрузка навыков | да |
|
|
21
|
+
| `connection.rpc.call` + `connection.fetch.register` | RPC плагинов | да |
|
|
22
|
+
| `window.__ModuleLoader__.load({id, factory})` | клиентский бандл | да |
|
|
23
|
+
|
|
24
|
+
## Почему после обновления было «плагины несовместимы»
|
|
25
|
+
|
|
26
|
+
Старый профиль после импорта содержал:
|
|
27
|
+
|
|
28
|
+
- `dependencies` с точными версиями `@deepseek-ai/dsh-experimental-*` = `0.2.1-rc.5`;
|
|
29
|
+
- `dsh.profile.bundles` с теми же experimental-бандлами.
|
|
30
|
+
|
|
31
|
+
DSH 0.2.2 при старте проверяет `engines.dsh` и peer-диапазоны зависимостей профиля. Пакеты, собранные под `0.2.1-rc.5`, не проходят проверку — клиент отказывается их грузить и показывает «плагины несовместимы». Профиль при этом может быть пересоздан в минимальный (`dsh-base` + `dsh-web-app`), и все локальные плагины исчезают из списка.
|
|
32
|
+
|
|
33
|
+
В этом репозитории таких зависимостей нет: пакет не тянет `@deepseek-ai/*` и не фиксирует версии. Поэтому установка из «Плагинов» проходит проверку совместимости.
|
|
34
|
+
|
|
35
|
+
## Что изменилось в 0.2.2 и как учтено
|
|
36
|
+
|
|
37
|
+
| Изменение | Как учтено |
|
|
38
|
+
|---|---|
|
|
39
|
+
| Русская локаль `ru` встроена | плагин не регистрирует свою копию, если `ru` уже есть; иначе перезапись словарей ломала штатные экраны |
|
|
40
|
+
| Слоты сайдбара и настроек | проверено: `sidebar.footer.action`, `sidebar.workspaces.session.menu.item`, `shell.overlay`, `settings.section`, `conversation.composer.dock`, `conversation.session.header.utilities` существуют в 0.2.2 |
|
|
41
|
+
| Сервис аккаунта | `remote.account` присутствует в `dsh-client-ui-settings-account` 0.2.2 |
|
|
42
|
+
| Фасад `window.__ModuleLoader__.load({id, factory})` | сохранён в 0.2.2; рукописные бандлы грузятся наравне со сборкой tsdown |
|
|
43
|
+
| Проверка `engines.dsh` | поле не задаётся: без объявленного требования установка не блокируется |
|
|
44
|
+
|
|
45
|
+
## Как проверялось
|
|
46
|
+
|
|
47
|
+
1. Собран профиль `probe` из шаблона `web` в изолированном `DSH_HOME`.
|
|
48
|
+
2. `dsh plugin --profile probe add <репозиторий>` — установка прошла без `incompatible-version`.
|
|
49
|
+
3. В `package.json` добавлен bundle `dsh-desktop-kit`, `--dump-config` показал host-ряд.
|
|
50
|
+
4. Запущен `dsh --profile probe --no-open --port 58888`.
|
|
51
|
+
5. В HTML boot-графа присутствует `dsh-desktop-kit/client.js`.
|
|
52
|
+
6. Headless Chromium + CDP: `EXCEPTIONS []`, ни одной неактивированной записи, `window.__DSH_PEAK_GUARD__` и `window.__DSH_SESSION_MOVE__` — объекты, режим пика `peak` (09:0x МСК).
|
|
53
|
+
7. После старта хоста в `DSH_HOME/skills` появились все 25 навыков.
|
|
54
|
+
8. **2.0:** пакет поставлен в живой профиль `desktop` через Plugin Manager (локальная папка), хост применился без перезапуска; Skills Studio сохранила и откатила навык (бэкап в `.dsh-kit-backups`), Token Lab показал фактический замер 402k токенов, автопилот выдал маршрут по сообщению; `node tools/smoke-tests.mjs` — 2/2, `skill-cost --check` — все ядра в бюджете.
|
|
55
|
+
|
|
56
|
+
## Если сломалось на новой версии
|
|
57
|
+
|
|
58
|
+
1. Проверьте `doctor.ps1`: нет ли в профиле закреплённых `@deepseek-ai/*` версий.
|
|
59
|
+
2. Обновите пакет: `git pull`, затем в «Плагинах» удалите и поставьте заново.
|
|
60
|
+
3. Если DSH изменил имена слотов, плитки просто не отрисуются, а остальное продолжит работать: каждая часть изолирована.
|
|
61
|
+
4. Аварийный обход проверки совместимости (на свой риск): `dsh plugin --profile desktop allow-version <пакет@версия> --dsh-version <версия> --accept-risk`.
|
package/docs/INSTALL.md
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Установка
|
|
2
|
+
|
|
3
|
+
## Требования
|
|
4
|
+
|
|
5
|
+
- Windows 10/11.
|
|
6
|
+
- DeepSeek Harness **0.2.1-rc.5** или новее (`0.2.2-rc.1` проверен).
|
|
7
|
+
- Профиль `desktop` уже создан: запустите DSH один раз и закройте окно.
|
|
8
|
+
|
|
9
|
+
## Способ 1. Интерфейс «Плагины» (как у обычного пользователя)
|
|
10
|
+
|
|
11
|
+
1. Скопируйте репозиторий себе:
|
|
12
|
+
|
|
13
|
+
```powershell
|
|
14
|
+
git clone <URL-репозитория> "$env:USERPROFILE\dsh-desktop-kit"
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
2. В DSH откройте **Плагины → Add plugin**.
|
|
18
|
+
3. Вставьте путь к корню репозитория, например:
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
C:\Users\<вы>\dsh-desktop-kit
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Либо URL репозитория, если он опубликован на GitHub:
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
https://github.com/<логин>/dsh-desktop-kit
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
4. Нажмите **Install** и дождитесь завершения установки.
|
|
31
|
+
5. Перезапустите DSH (или `Ctrl+R` в окне).
|
|
32
|
+
|
|
33
|
+
Плагин сам:
|
|
34
|
+
- добавит один bundle `dsh-desktop-kit` в профиль;
|
|
35
|
+
- смонтирует пять плагинов как дочерние;
|
|
36
|
+
- скопирует недостающие навыки в `~/.dsh/skills`.
|
|
37
|
+
|
|
38
|
+
## Способ 2. Скрипт
|
|
39
|
+
|
|
40
|
+
```powershell
|
|
41
|
+
powershell -ExecutionPolicy Bypass -File .\install.ps1
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Параметры:
|
|
45
|
+
|
|
46
|
+
| Параметр | По умолчанию | Назначение |
|
|
47
|
+
|---|---|---|
|
|
48
|
+
| `-Profile` | `desktop` | имя профиля DSH |
|
|
49
|
+
| `-DshHome` | `%DSH_HOME%` или `%USERPROFILE%\.dsh` | домашний каталог DSH |
|
|
50
|
+
| `-RepoPath` | папка скрипта | путь к пакету |
|
|
51
|
+
|
|
52
|
+
Скрипт делает бэкап `package.json` и `cordis.patch.yml`, вызывает `dsh plugin add` и включает bundle.
|
|
53
|
+
|
|
54
|
+
## Способ 3. Отдельные плагины
|
|
55
|
+
|
|
56
|
+
Добавьте в «Add plugin» путь к папке нужного плагина из `plugins/` (см. таблицу в README). Каждый плагин самостоятелен: свой `cordis.patch.yml`, свой клиентский бандл.
|
|
57
|
+
|
|
58
|
+
## Проверка после установки
|
|
59
|
+
|
|
60
|
+
1. **Плагины**: в списке появился `dsh-desktop-kit` (или отдельные плагины), переключатель включён.
|
|
61
|
+
2. **Сайдбар**: внизу — плитки «Навыки», «Баланс», «Расход» (нужен вход в аккаунт DeepSeek; на экране входа сайдбар скрыт).
|
|
62
|
+
3. **Пиковый тариф**: если сейчас 04:00–07:00 или 09:00–13:00 МСК — над композером красная карточка; за 5 минут до окна — жёлтая.
|
|
63
|
+
4. **Навыки**: `~/.dsh/skills` содержит 24 папки, в интерфейсе открывается каталог навыков.
|
|
64
|
+
5. **Перенос**: Настройки → «Перенос и резервные копии».
|
|
65
|
+
6. **Перемещение чатов**: правый клик по чату → «Переместить в рабочую область…».
|
|
66
|
+
|
|
67
|
+
Диагностика: `powershell -ExecutionPolicy Bypass -File .\doctor.ps1`.
|
|
68
|
+
|
|
69
|
+
## Удаление
|
|
70
|
+
|
|
71
|
+
```powershell
|
|
72
|
+
powershell -ExecutionPolicy Bypass -File .\uninstall.ps1
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Навыки остаются (они ваши). Удалить и их: `-RemoveSkills`.
|
|
76
|
+
|
|
77
|
+
## Ручная установка без скрипта и UI
|
|
78
|
+
|
|
79
|
+
1. Скопируйте папки плагинов в `%USERPROFILE%\.dsh\local-plugins\`.
|
|
80
|
+
2. В `%USERPROFILE%\.dsh\profiles\desktop\package.json`:
|
|
81
|
+
- в `dependencies` добавьте `"dsh-desktop-kit": "link:<путь к репозиторию>"` (прямые слэши);
|
|
82
|
+
- в `dsh.profile.bundles` добавьте `"dsh-desktop-kit"`.
|
|
83
|
+
3. Выполните `dsh plugin --profile desktop install` (встроенный pnpm DSH).
|
|
84
|
+
4. Перезапустите DSH.
|
package/docs/PRIVACY.md
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Конфиденциальность
|
|
2
|
+
|
|
3
|
+
Репозиторий собран из рабочего профиля DSH, но **не содержит личных данных**.
|
|
4
|
+
|
|
5
|
+
## Что не включено
|
|
6
|
+
|
|
7
|
+
| Данные | Почему |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `~/.dsh/.credentials.yaml`, токены, ключи API | секреты |
|
|
10
|
+
| `~/.dsh/sessions`, `attachments` | переписка и вложения |
|
|
11
|
+
| `~/.dsh/memory`, `~/.dsh/projects-memory` | личные заметки, досье проектов, имена и контакты |
|
|
12
|
+
| `AGENTS.md` | личные инструкции и сведения об организациях |
|
|
13
|
+
| `workspace.json`, реестр рабочих областей | локальные пути и история |
|
|
14
|
+
| скриншоты с личными путями | метаданные окружения |
|
|
15
|
+
|
|
16
|
+
## Что обезличено в навыках и плагинах
|
|
17
|
+
|
|
18
|
+
| Было | Стало |
|
|
19
|
+
|---|---|
|
|
20
|
+
| `C:\Users\<имя>` | `%USERPROFILE%` |
|
|
21
|
+
| имя владельца | «Владелец профиля» |
|
|
22
|
+
| домен сайта | `example.org` |
|
|
23
|
+
| название организации | `организация` |
|
|
24
|
+
| внутренний сервер | `app-server` |
|
|
25
|
+
| внутренний IP | `127.0.0.1` |
|
|
26
|
+
| путь деплоя | `/var/www/service-desk` |
|
|
27
|
+
| имя машины | `workstation` |
|
|
28
|
+
|
|
29
|
+
## Что пишется на диск при работе
|
|
30
|
+
|
|
31
|
+
| Файл | Что содержит | Можно удалить |
|
|
32
|
+
|---|---|---|
|
|
33
|
+
| `~/.dsh/dsh-autopilot.json` | режим автопилота и лимит навыков | да, вернётся к значениям по умолчанию |
|
|
34
|
+
| `~/.dsh/skills/.dsh-kit-backups/*.md` | резервные копии `SKILL.md` перед сохранением в Studio | да, это только копии |
|
|
35
|
+
| `~/.dsh/skills/.dsh-kit-trash/<дата>-<навык>/` | навыки, удалённые через Studio | да, после проверки |
|
|
36
|
+
|
|
37
|
+
Token Lab ничего не пишет: он читает `ctx.tokenMeter` и отдаёт отчёт в интерфейс. Ни один плагин набора не отправляет данные в сеть.
|
|
38
|
+
|
|
39
|
+
## Что осталось
|
|
40
|
+
|
|
41
|
+
- Идентификаторы пакетов (`dsh-gkb-ru-ui` и т. п.) — это имена модулей, а не персональные данные; переименование сломало бы RPC-маршруты и состояние.
|
|
42
|
+
- Технические описания проектов в навыках `service-desk-*` — методология без доступа, адресов и учётных данных.
|
|
43
|
+
|
|
44
|
+
## Если добавляете свои файлы
|
|
45
|
+
|
|
46
|
+
Не коммитьте `node_modules`, архивы профиля, `.env`, `*.log`. Проверка перед публикацией:
|
|
47
|
+
|
|
48
|
+
```powershell
|
|
49
|
+
Select-String -Path (Get-ChildItem -Recurse -File -Include *.md,*.js,*.json,*.yml) -Pattern 'C:\\Users\\|password|secret|token'
|
|
50
|
+
```
|
package/docs/ROADMAP.md
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Развитие DSH Desktop Kit
|
|
2
|
+
|
|
3
|
+
Дорожная карта от 2.0. Приоритеты: **экономия контекста → качество навыков → управление в интерфейсе → командная работа**.
|
|
4
|
+
|
|
5
|
+
## Уже в 2.0
|
|
6
|
+
|
|
7
|
+
- компактные ядра навыков и references (25 навыков);
|
|
8
|
+
- `dsh-skill-autopilot` — навыки применяются по смыслу запроса, а не по памяти модели;
|
|
9
|
+
- `dsh-token-lab` — живой замер контекста, состав, топ потребителей, экономия библиотеки;
|
|
10
|
+
- Skills Studio — редактирование, создание, дублирование и удаление навыков в GUI;
|
|
11
|
+
- единая колонка плиток в сайдбаре и адаптив под низкие окна (настройки/аккаунт больше не уезжают);
|
|
12
|
+
- новый визуал пакета: hero, скриншоты light/dark/390, честные ссылки на изображения.
|
|
13
|
+
|
|
14
|
+
## 2.1 — умнее маршрутизация и меньше шума
|
|
15
|
+
|
|
16
|
+
1. **Семантический роутинг.** Заменить/keyword-правила на гибрид: быстрые ключи + эмбеддинги названий/описаний навыков. Офлайн-модель на 20–40 МБ, без внешних API.
|
|
17
|
+
2. **Обучение на истории.** Считать, какие навыки реально помогли (по последующим правкам/тестам), и поднимать их приоритет. Хранить локально в `~/.dsh/skill-stats.json`.
|
|
18
|
+
3. **Дедупликация правил.** Перед загрузкой ядра проверять, не загружено ли оно уже в этой сессии; в подсказке писать «уже в контексте».
|
|
19
|
+
4. **Бюджет на задачу.** Настройка «максимум N токенов на навыки»: автопилот выбирает самые дешёвые подходящие ядра.
|
|
20
|
+
5. **A/B навыков.** Кнопка «сравнить» в Studio: две версии ядра на одинаковой задаче, счётчик токенов и результат.
|
|
21
|
+
|
|
22
|
+
## 2.2 — Token Lab как центр управления
|
|
23
|
+
|
|
24
|
+
1. **Прогноз сжатия.** Показывать, сколько освободит компакция и что попадёт в сводку.
|
|
25
|
+
2. **Одноклик «сжать»** с предварительным handoff в память проекта.
|
|
26
|
+
3. **Разбивка по инструментам.** Сколько токенов съели `read`, `grep`, `cordis_inspect_query`; рекомендации «читать диапазоном».
|
|
27
|
+
4. **История сессий.** График расхода по дням, пики, средняя стоимость задачи; интеграция с `dsh-peak-guard` (цена ×2 в пиковые часы).
|
|
28
|
+
5. **Экспорт отчёта** в Markdown/PNG для ретро.
|
|
29
|
+
|
|
30
|
+
## 2.3 — Skills Studio 2.0
|
|
31
|
+
|
|
32
|
+
1. **Diff-редактор** с подсветкой синтаксиса Markdown/YAML и валидацией frontmatter.
|
|
33
|
+
2. **Проверка ссылок**: если в ядре упомянут `references/x.md`, а файла нет — ошибка до сохранения.
|
|
34
|
+
3. **Импорт/экспорт навыка** одним `.zip` (совместимо с `dsh-profile-transfer`).
|
|
35
|
+
4. **Шаблоны под роли**: «дизайн», «бэкенд», «безопасность», «контент» — с готовой структурой.
|
|
36
|
+
5. **Песочница**: прогнать сообщение через автопилот и увидеть, какие навыки он выберет, до отправки.
|
|
37
|
+
|
|
38
|
+
## 3.0 — экосистема
|
|
39
|
+
|
|
40
|
+
1. **Маркетплейс наборов.** Пакеты навыков от сообщества: подпись, версия, минимальная версия DSH, проверка секретов.
|
|
41
|
+
2. **Граф зависимостей навыков.** Навык может требовать другой (например, `seo` → `content-writing`), Studio показывает циклы.
|
|
42
|
+
3. **Командные профили.** Один профиль на команду: навыки, память проектов, политики; синхронизация через git, без облака.
|
|
43
|
+
4. **Плагин-конструктор.** Визуальная сборка простых плагинов (плитка, панель, команда) с генерацией `client.js` и проверкой в песочнице.
|
|
44
|
+
5. **Локализация.** EN/ES/DE для интерфейса и навыков; русский остаётся эталонным.
|
|
45
|
+
|
|
46
|
+
## Идеи, которые стоит проверить
|
|
47
|
+
|
|
48
|
+
- **Контекстные «закладки»**: помечать важные сообщения, чтобы компакция их не съедала.
|
|
49
|
+
- **Навык-детектор** для повторяющихся задач: если три раза подряд грузится один набор — предложить объединённый навык.
|
|
50
|
+
- **Тихий режим**: при пиковом тарифе автопилот предлагает более дешёвую модель/меньше references.
|
|
51
|
+
- **Метрики качества**: после задачи спрашивать «помогло?» и хранить оценку рядом с навыком.
|
|
52
|
+
|
|
53
|
+
## Как предложить своё
|
|
54
|
+
|
|
55
|
+
1. Опишите сценарий и ожидаемый эффект (токены, время, качество).
|
|
56
|
+
2. Приложите пример сообщения и желаемый маршрут навыков.
|
|
57
|
+
3. Если это код — тесты `node tools/smoke-tests.mjs` и `node tools/skill-cost.mjs --check` обязательны.
|
package/docs/TOKENS.md
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Экономия токенов в DSH Desktop Kit 2.0
|
|
2
|
+
|
|
3
|
+
Документ отвечает на три вопроса: **куда уходили токены раньше**, **что изменилось в 2.0** и **как измерить эффект** на своей сессии.
|
|
4
|
+
|
|
5
|
+
## 1. Откуда берётся расход
|
|
6
|
+
|
|
7
|
+
Контекст модели на каждом шаге состоит из:
|
|
8
|
+
|
|
9
|
+
| Слой | Что входит | Типичный размер |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| Системный промпт | инструкции DSH, каталог навыков, правила плагинов | 3–8k токенов |
|
|
12
|
+
| История диалога | сообщения, ответы, результаты инструментов | растёт с каждым шагом |
|
|
13
|
+
| Загруженные навыки | `SKILL.md` + `references` | 1–12k на навык |
|
|
14
|
+
| Память проекта | дайджест досье | 0.5–1k |
|
|
15
|
+
| Схемы инструментов | описания tool-вызовов | 2–5k |
|
|
16
|
+
|
|
17
|
+
Главная проблема старого набора: **навыки грузились целиком**. `content-writing` и `seo` весили по 37 КБ каждый — это ≈11k токенов за один вызов. Типовая задача с UI, SEO и контентом набирала 30–35k только на навыки.
|
|
18
|
+
|
|
19
|
+
## 2. Что сделано в 2.0
|
|
20
|
+
|
|
21
|
+
### 2.1. Компактные ядра + references
|
|
22
|
+
|
|
23
|
+
Каждый навык теперь состоит из:
|
|
24
|
+
|
|
25
|
+
- **ядра** `SKILL.md` — 3–6 КБ: когда применять, жёсткие правила, карта ссылок, гейт сдачи;
|
|
26
|
+
- **references/** — подробные материалы, которые грузятся только по необходимости.
|
|
27
|
+
|
|
28
|
+
Ядро всегда отвечает на вопрос «что делать», reference — «как делать в частном случае». В конце ядра есть таблица «Нужно → файл → ≈токенов», поэтому модель не грузит справочники «на всякий случай».
|
|
29
|
+
|
|
30
|
+
Проверка бюджета:
|
|
31
|
+
|
|
32
|
+
```powershell
|
|
33
|
+
node tools/skill-cost.mjs # таблица и суммы
|
|
34
|
+
node tools/skill-cost.mjs --check # падает, если ядро > 6k токенов
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### 2.2. Автопилот навыков
|
|
38
|
+
|
|
39
|
+
Плагин `dsh-skill-autopilot` читает последнее сообщение пользователя при сборке промпта и добавляет короткий блок:
|
|
40
|
+
|
|
41
|
+
```xml
|
|
42
|
+
<skill-autopilot>
|
|
43
|
+
Запрос похож на: UI/дизайн + SEO.
|
|
44
|
+
Загрузи через tool skill только эти ядра: wow-design ≈1.4k токенов, seo ≈1.8k токенов.
|
|
45
|
+
...
|
|
46
|
+
</skill-autopilot>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Свойства:
|
|
50
|
+
|
|
51
|
+
- блок появляется **только при совпадении** с правилами; на посторонний вопрос — ноль токенов;
|
|
52
|
+
- имена фильтруются по реально установленным навыкам;
|
|
53
|
+
- бюджет блока — ≈80–140 токенов;
|
|
54
|
+
- режим и лимит навыков хранятся в `~/.dsh/dsh-autopilot.json`;
|
|
55
|
+
- RPC `/api/dsh-skill-autopilot/state` отдаёт статус, правила и последнее совпадение для интерфейса.
|
|
56
|
+
|
|
57
|
+
Правила лежат в `plugins/dsh-skill-autopilot/index.js` (`RULES`): 16 семейств задач, русские и английские триггеры. Их можно дополнять под свой стек.
|
|
58
|
+
|
|
59
|
+
### 2.3. Token Lab
|
|
60
|
+
|
|
61
|
+
Плагин `dsh-token-lab` показывает точный замер контекста из `ctx.tokenMeter`:
|
|
62
|
+
|
|
63
|
+
- общий объём и заполнение окна;
|
|
64
|
+
- состав по типам сообщений (системный промпт, пользователь, ответы, результаты инструментов, память);
|
|
65
|
+
- топ-6 самых тяжёлых узлов с человеческими подписями (`Результат · read · src/app.ts`);
|
|
66
|
+
- рост контекста по шагам;
|
|
67
|
+
- стоимость библиотеки навыков: сколько было бы, если грузить всё, против трёх средних ядер.
|
|
68
|
+
|
|
69
|
+
Плитка в сайдбаре показывает `282,6k из 1M · 27%` и полосу давления; порог 50% — жёлтый, 75% — красный.
|
|
70
|
+
|
|
71
|
+
### 2.4. Skills Studio
|
|
72
|
+
|
|
73
|
+
Каталог навыков превратился в редактор:
|
|
74
|
+
|
|
75
|
+
- стоимость ядра на карточке и в деталях;
|
|
76
|
+
- редактирование `SKILL.md` прямо в интерфейсе, `Ctrl+S`, живой счётчик токенов;
|
|
77
|
+
- создание навыка из шаблона и дублирование;
|
|
78
|
+
- удаление в корзину `~/.dsh/skills/.dsh-kit-trash` (обратимо);
|
|
79
|
+
- резервная копия перед каждой записью в `~/.dsh/skills/.dsh-kit-backups`;
|
|
80
|
+
- предупреждение, если ядро выходит за бюджет 6k токенов.
|
|
81
|
+
|
|
82
|
+
### 2.5. Память проекта
|
|
83
|
+
|
|
84
|
+
Дайджест памяти ограничен 2 800 символами (≈900 токенов) и обновляется по сигнатуре проекта. В 2.0 добавлено правило: при 60–70% окна сначала записать handoff, потом сжимать.
|
|
85
|
+
|
|
86
|
+
## 3. Как измерить эффект
|
|
87
|
+
|
|
88
|
+
1. Откройте Token Lab в начале и в конце задачи.
|
|
89
|
+
2. Сравните `totalTokens` и состав: результаты инструментов обычно занимают 40–50%.
|
|
90
|
+
3. Проверьте, какие навыки загружены: в каталоге есть бейдж «в работе» и число запусков.
|
|
91
|
+
4. Для оценки библиотеки:
|
|
92
|
+
|
|
93
|
+
```powershell
|
|
94
|
+
node tools/skill-cost.mjs --json > skill-cost.json
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
В отчёте есть `totalTokens` (вся библиотека) и `rows` (каждое ядро). Типичная задача = 2–3 ядра.
|
|
98
|
+
|
|
99
|
+
## 4. Ориентиры 2.0
|
|
100
|
+
|
|
101
|
+
| Показатель | До | После |
|
|
102
|
+
|---|---|---|
|
|
103
|
+
| `content-writing` ядро | ≈11 000 токенов | ≈1 800 |
|
|
104
|
+
| `seo` ядро | ≈11 000 токенов | ≈1 900 |
|
|
105
|
+
| `wow-design` ядро | ≈5 000 токенов | ≈1 700 |
|
|
106
|
+
| `skills-router` ядро | ≈2 900 токенов | ≈1 500 |
|
|
107
|
+
| Библиотека из 25 навыков | ≈60 000 токенов | ≈25 000 |
|
|
108
|
+
| Типовая задача (3 навыка) | 25 000–35 000 | 5 000–7 000 |
|
|
109
|
+
| Подсказка автопилота | — | 80–140 |
|
|
110
|
+
|
|
111
|
+
Цифры — оценка `байты / 3.2`; фактический расход зависит от модели и языка.
|
|
112
|
+
|
|
113
|
+
## 5. Правила, которые нельзя нарушать ради экономии
|
|
114
|
+
|
|
115
|
+
- Не сокращать проверки безопасности, бэкапы и тесты.
|
|
116
|
+
- Не выбрасывать references, которые меняют решение (медицина, право, деньги, данные).
|
|
117
|
+
- Не экономить на финальном ревью: ошибка дороже токенов.
|
|
118
|
+
- Не отключать автопилот на задачах с данными — он подсказывает `database-safety`.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Если что-то не работает
|
|
2
|
+
|
|
3
|
+
## «Плагины несовместимы»
|
|
4
|
+
|
|
5
|
+
1. Откройте `doctor.ps1` — он покажет закреплённые `@deepseek-ai/*` в профиле.
|
|
6
|
+
2. Уберите из `~/.dsh/profiles/desktop/package.json` зависимости `@deepseek-ai/dsh-experimental-*` и их имена из `dsh.profile.bundles` (или создайте профиль заново: `dsh rescue --from-default-profile web`).
|
|
7
|
+
3. Поставьте `dsh-desktop-kit` заново через «Add plugin».
|
|
8
|
+
4. Перезапустите DSH.
|
|
9
|
+
|
|
10
|
+
## Плагин установился, но ничего не появилось
|
|
11
|
+
|
|
12
|
+
- В «Плагинах» переключатель `dsh-desktop-kit` включён?
|
|
13
|
+
- Перезапуск DSH (не только `Ctrl+R`): host-часть грузится при старте.
|
|
14
|
+
- Плитки «Навыки / Токены / Баланс / Расход» видны только после входа в аккаунт DeepSeek: на экране входа сайдбар скрыт.
|
|
15
|
+
- На узком окне (≤ 760 px) стек плиток скрыт намеренно: каталог открывает кнопка «Навыки» внизу справа.
|
|
16
|
+
- Проверьте консоль (`Ctrl+Shift+I`) на строки `[dsh-desktop-kit]`, `[token-lab]`, `[skill-autopilot]`.
|
|
17
|
+
|
|
18
|
+
## Нет каталога навыков
|
|
19
|
+
|
|
20
|
+
- `~/.dsh/skills` должен содержать 25 папок. Если пусто — плагин не стартовал; скопируйте вручную:
|
|
21
|
+
|
|
22
|
+
```powershell
|
|
23
|
+
Copy-Item .\skills\* "$env:USERPROFILE\.dsh\skills\" -Recurse -Force
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
- Каталог открывается плиткой «Навыки» (или мобильной кнопкой); если её нет — см. пункт выше.
|
|
27
|
+
|
|
28
|
+
## Нет данных в Token Lab
|
|
29
|
+
|
|
30
|
+
- Плитка показывает `0 из 128k` на пустой сессии — это нормально: откройте чат с сообщениями.
|
|
31
|
+
- Панель берёт замер из `ctx.tokenMeter`; если сервис недоступен, будет ошибка `tokenlab/no-meter` — обновите DSH.
|
|
32
|
+
- На очень длинной сессии отчёт может считаться 1–2 секунды: это чтение журнала, а не зависание.
|
|
33
|
+
|
|
34
|
+
## Автопилот не подсказывает навыки
|
|
35
|
+
|
|
36
|
+
- Проверьте `~/.dsh/dsh-autopilot.json`: `{"mode":"on"}`.
|
|
37
|
+
- Он молчит, если сообщение не совпало с правилами — это экономия, а не поломка.
|
|
38
|
+
- Последнее совпадение видно в Skills Studio (шапка) или через RPC `dsh-skill-autopilot/state`.
|
|
39
|
+
- Правила лежат в `plugins/dsh-skill-autopilot/index.js` (`RULES`) — дополняйте под свой стек.
|
|
40
|
+
|
|
41
|
+
## Skills Studio не сохраняет
|
|
42
|
+
|
|
43
|
+
- Имя навыка: kebab-case `[a-z0-9-]`, `name` во frontmatter обязан совпадать с папкой.
|
|
44
|
+
- Размер `SKILL.md` — до 200 КБ; для больших материалов используйте `references/`.
|
|
45
|
+
- Перед записью создаётся копия в `.dsh-kit-backups`; если запись не удалась, старая версия осталась на месте.
|
|
46
|
+
- Удаление обратимо: папка уходит в `.dsh-kit-trash`, а не удаляется.
|
|
47
|
+
|
|
48
|
+
## Не показывается карточка пикового тарифа
|
|
49
|
+
|
|
50
|
+
Карточка появляется только в пиковые окна (04:00–07:00 и 09:00–13:00 МСК) и за 5 минут до начала. Проверка:
|
|
51
|
+
|
|
52
|
+
```js
|
|
53
|
+
window.__DSH_PEAK_GUARD__.state()
|
|
54
|
+
window.__DSH_PEAK_GUARD__.preview("2026-11-06T06:30:00Z") // принудительно
|
|
55
|
+
window.__DSH_PEAK_GUARD__.clearPreview()
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Пропали чаты после обновления
|
|
59
|
+
|
|
60
|
+
Сессии лежат в `~/.dsh/sessions` и не удаляются плагином. Если профиль был пересоздан, чаты могут отображаться в «Без проекта» — перенесите их через `dsh-session-move` или верните реестр рабочих областей из бэкапа.
|
|
61
|
+
|
|
62
|
+
## Откат
|
|
63
|
+
|
|
64
|
+
```powershell
|
|
65
|
+
powershell -ExecutionPolicy Bypass -File .\uninstall.ps1
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Скрипт снимает пакет и bundle, `package.json` и `cordis.patch.yml` сохраняются в `backup-kit-*`.
|
|
Binary file
|