dsh-switchman 1.3.0 → 1.5.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/README.de.md +111 -0
- package/README.es.md +111 -0
- package/README.fr.md +111 -0
- package/README.it.md +111 -0
- package/README.ja.md +111 -0
- package/README.ko.md +111 -0
- package/README.md +58 -26
- package/README.pt.md +111 -0
- package/README.ru.md +111 -0
- package/README.zh-TW.md +111 -0
- package/README.zh.md +55 -23
- package/client.js +900 -17
- package/cordis.patch.yml +24 -8
- package/host/config.js +23 -0
- package/host/context-watch.js +267 -68
- package/host/dispatch.js +107 -6
- package/host/handover-state.js +38 -0
- package/host/lang.js +211 -36
- package/host/lib/dsh-home.js +18 -0
- package/host/routes.js +138 -7
- package/host/subagent-model.js +147 -0
- package/host/subagents.js +144 -0
- package/host/teams.js +430 -0
- package/host/ui-locale.js +35 -0
- package/host/vision.js +367 -0
- package/index.js +40 -8
- package/package.json +4 -1
package/README.ru.md
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# dsh-switchman
|
|
2
|
+
|
|
3
|
+
[English](./README.md) | [简体中文](./README.zh.md) | [繁體中文](./README.zh-TW.md) | [日本語](./README.ja.md) | [한국어](./README.ko.md) | [Español](./README.es.md) | [Français](./README.fr.md) | [Deutsch](./README.de.md) | [Italiano](./README.it.md) | [Português](./README.pt.md) | **Русский**
|
|
4
|
+
|
|
5
|
+
> **Семейство switchman**, один автор, одна и та же философия диспетчеризации: [opencode-switchman](https://github.com/mrzturn/opencode-switchman) (оригинал для OpenCode) · [zcode-switchman](https://github.com/mrzturn/zcode-switchman) (порт для ZCode) · **dsh-switchman** (этот репозиторий, версия для DeepSeek Harness).
|
|
6
|
+
|
|
7
|
+

|
|
8
|
+
|
|
9
|
+
> Контекст под счётчиком. Задачи сами находят свою полосу.
|
|
10
|
+
|
|
11
|
+
## Зачем это нужно
|
|
12
|
+
|
|
13
|
+
Если работать в DSH подольше, рано или поздно упираешься в две вещи:
|
|
14
|
+
|
|
15
|
+
1. **Сессия тяжелеет с каждым сообщением.** История раздувает контекст до сотен тысяч токенов — модель начинает забывать, тормозить и дорожать; в конце концов остаётся ручной /compact, а каждое сжатие ещё и теряет детали.
|
|
16
|
+
2. **Главная модель всё делает сама.** Прочитать файл, прогнать тест, сверить данные — всё она грызёт сама: медленно и дорого, хотя большая часть этой работы по праву досталась бы дешёвой модели.
|
|
17
|
+
|
|
18
|
+
dsh-switchman — плагин для [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (DSH). После установки главная модель перестаёт «делать всё сама» и становится диспетчером: замеряет уровень воды, выбирает полосу, раздаёт задачи, принимает работу. Это не новая модель, а свод правил диспетчеризации, пристёгнутый к DSH, плюс страница настроек. Конкретно он делает шесть вещей:
|
|
19
|
+
|
|
20
|
+
**1. Уровень воды в контексте: длинная сессия не переполняется.** Каждый ход подсчитывает токены сессии в реальном времени, и три линии уровня ужесточаются по нарастающей: 50k (soft, настраивается) подсказывает «пора делегировать»; 90k (hard) урезает бюджет разового чтения файла и подталкивает к завершению; 130k (force) запускает автоматическую передачу — форкает копию сессии в архив, сжимает контекст и будит продолжение, работа не обрывается. Фоновые субагенты, которые ещё бегут в момент передачи, тоже не теряются: id, описания задач и пути к отчётам записываются в документ передачи, и продолжившаяся сессия знает, куда идти за отчётами, а не раздаёт работу заново. У каждого отправленного субагента свой жёсткий потолок: доработав до него, он завершается резюме HANDOFF.
|
|
21
|
+
|
|
22
|
+
**2. Шесть пулов диспетчеризации: под каждую работу — своя модель.** Лёгкий пул (economy — мелкие массовые задачи), механический (mechanical — шаблонные переработки), основной (main — повседневный кодинг), пул высокой сложности (hard — тяжёлые рассуждения и крупные рефакторинги), мультимодальный (vision — чтение картинок), пул ревью (review — независимая проверка). На странице настроек отмечаете кандидатов, расставляете приоритеты (можно с привязкой к ступеням S/A/B/C) и для каждого маршрута отдельно фиксируете reasoning effort — выпадающий список ступеней берётся из уровней, которые модель реально поддерживает, а не из трёх универсальных. Каждый ход промпт главной модели несёт с собой таблицу рекомендаций `[SWITCHMAN:POOLS]`, и работа раздаётся по ней. У режима исполнения три состояния: off / advice / enforce (enforce = модель вне пула просто отклоняется).
|
|
23
|
+
|
|
24
|
+
**3. Режим Agent Teams: от работы в одиночку — к своей команде.** По умолчанию выключен: сразу после установки это просто лёгкая диспетчеризация через subagent. На странице настроек два независимых переключателя:
|
|
25
|
+
|
|
26
|
+
- **Режим команды агентов** — при включении внедряет командный регламент (делегирование по умолчанию + многоуровневая проверка + дисциплина общей доски задач) и автоматически включает Agent Teams в DSH: главная модель может нанимать постоянных товарищей по команде (`spawn_teammate`), ставить им задачи на общей доске (`team_task_*`) и обмениваться с ними сообщениями (`send_message`). Когда заводить команду, решает чёткая дисциплина: параллельные независимые подзадачи, объёмная самодостаточная работа, уже высокий уровень воды в главном контексте, потребность разделить роли; разовая точечная разведка по-прежнему идёт через subagent. Заводская политика DSH — «пока пользователь прямо не попросил, команду не создавать»; здесь она перевёрнута в «когда нужно — создавай». Если выключить переключатель обратно, от командных пунктов не останется и следа, а инструменты команды из уже работающих сессий не изымаются.
|
|
27
|
+
- **Синхронизация белого списка моделей субагентов** — в DSH есть белый список авторизации «разрешить агентам выбирать модели для субагентов»: если маршрут выбран в пуле, но не авторизован, явное назначение его главной моделью будет отклонено (в командном режиме и таблица рекомендаций, и страница настроек помечают такие маршруты ⚠). Включите этот переключатель — и объединение шести пулов целиком запишется в белый список: настраивать дважды не нужно, switchman остаётся единственным источником истины, и путь dispatch через fork тоже охвачен. Белый список применяется по снимку «новая сессия»: синхронизация действует только на сессии, открытые после неё.
|
|
28
|
+
|
|
29
|
+
В шапке сессии — наглядная обратная связь: значок ⚡ «автономная команда», ◇ с фактической моделью текущей сессии; когда идёт автоматическая передача, появляется живая подсказка «идёт передача · резервная сессия / сжатие контекста / пробуждение продолжения».
|
|
30
|
+
|
|
31
|
+
**4. Языковые предпочтения: спросит один раз — запомнит навсегда.** Три выпадающих списка: язык ответов, комментариев в коде и документов; область действия — глобальная или по проекту (`.switchman/lang.json`). Настраивать не обязательно: при первом использовании спросят один раз — на языке интерфейса вашего DSH — и запомнят; дальше каждая сессия соблюдает выбор автоматически.
|
|
32
|
+
|
|
33
|
+
**5. Многоуровневая проверка: изменено — проверено.** Изменения больше 20 строк уходят тестировщику на проверку; изменения больше 300 строк или затрагивающие ядро / безопасность / согласованность данных — дополнительно независимому ревьюеру. Модель ревьюера подбирают, привязываясь к модели агента, написавшего этот diff, и стараются её обойти; если пул другого выхода не оставляет, в заключении прямо заявляется DOWNGRADED. Скажете «не использовать команду» — всё мгновенно вернётся к одиночной работе.
|
|
34
|
+
|
|
35
|
+
**6. `/vision`: картинки по зубам даже чисто текстовой модели.** Когда главная модель не читает изображения, DSH прямо на входе отклоняет сообщения с картинками. Прикрепите картинку и введите `/vision что не так на этой картинке` — изображение будет сведено к пути файла и отдано на чтение модели из мультимодального пула, а вывод вернётся в текущую сессию. Над полем ввода заранее подсказывают: «текущая модель не умеет читать изображения»; если прямая отправка картинки отклонена, она один раз автоматически переоформляется в `/vision` и уходит повторно — вручную ничего переписывать не нужно; если мультимодальный пул не настроен, команда откажется и подскажет, что настроить.
|
|
36
|
+
|
|
37
|
+
Всего одна модель? Всё равно стоит поставить — контроль уровня воды и многоуровневая проверка от числа моделей не зависят, и длинная сессия на одной модели выигрывает от них ничуть не меньше.
|
|
38
|
+
|
|
39
|
+
## Встроенные навыки
|
|
40
|
+
|
|
41
|
+
- **db-query** — верификация MySQL / Redis только на чтение: выполнить SQL для сверки данных, проверить ключи кэша / TTL и согласованность между хранилищами; любую запись отклоняет. При первом использовании нужна инициализация (см. ниже).
|
|
42
|
+
- **git-commit-message** — генерирует выдержанный в конвенциях текст коммита: только текст, git за вас не трогает.
|
|
43
|
+
- **requirement-docs** — единая спецификация для анализа требований / PRD / проектных документов; результаты архивируются в `docs/requirements-and-design/`.
|
|
44
|
+
|
|
45
|
+
## Быстрый старт
|
|
46
|
+
|
|
47
|
+
1. **Установите** — попросите agent выполнить установку в любой сессии, или откройте веб-страницу управления плагинами:
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
plugin_manager: install_bundle target=dsh-switchman
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
или установите из локального checkout'а (режим link; после обновления нужно переустановить: `remove_bundle` + `install_bundle`):
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
plugin_manager: install_bundle target=/path/to/dsh-switchman
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
или установите из терминала командой `dsh` — профиль выбирайте по способу запуска:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
dsh plugin --profile web add dsh-switchman # Web GUI
|
|
63
|
+
dsh plugin --profile desktop add dsh-switchman # десктоп-приложение
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
2. **Перезапустите DSH** — полностью закройте приложение и откройте снова (перезагрузка страницы не считается) — только тогда таблица клиентских модулей распознает этот bundle.
|
|
67
|
+
|
|
68
|
+
3. **Языковые предпочтения** — Настройки → dsh-switchman, или пункт «Диспетчерская Switchman» в боковой панели главной страницы. На первом экране сначала выбирается область действия: глобально (этот profile) или по проектам (`.switchman/lang.json` каждого проекта); затем тремя выпадающими списками задаются языки ответов / комментариев / документов, под каждым — строка состояния «сейчас: …». Пропустить не страшно: при первом использовании спросят один раз и запомнят (вопрос зададут на языке интерфейса DSH).
|
|
69
|
+
|
|
70
|
+

|
|
71
|
+
|
|
72
|
+
4. **Настройте пулы диспетчеризации** — на каждой карточке пула отмечайте модели-кандидаты, сгруппированные по поставщикам; отметьте «ручной порядок» — и карточка превратится в нумерованный список приоритетов, порядок меняется кнопками ↑ ↓ ×, а рядом с каждым маршрутом можно зафиксировать reasoning effort (по умолчанию «следовать полосе», после фиксации в списке — ступени, которые эта модель реально поддерживает). Сводная строка сверху отражает прогресс в реальном времени, например: «пулов настроено: 6/6 · позиций в рейтинге: 2 · режим advice».
|
|
73
|
+
|
|
74
|
+

|
|
75
|
+
|
|
76
|
+
Мультимодальный пул и пул ревью — ниже; ещё ниже — **рейтинг по способностям** (объединение моделей, выбранных в шести пулах; номер в списке и есть место по способности, сильнейшие впереди, с возможной привязкой к ступеням S/A/B/C) и **режим исполнения** (advice / enforce).
|
|
77
|
+
|
|
78
|
+

|
|
79
|
+
|
|
80
|
+
5. **Команда агентов** — оба переключателя по умолчанию выключены: сначала поработайте в чистом режиме subagent. Хотите, чтобы команда собиралась сама, — включите «режим команды агентов»; хотите избавиться от двойной настройки авторизации, — включите «синхронизацию белого списка моделей субагентов»: под переключателем есть строка состояния «синхронизировано N записей + время», подтверждающая результат записи.
|
|
81
|
+
|
|
82
|
+

|
|
83
|
+
|
|
84
|
+
6. **Уровень воды в контексте** — три порога (по умолчанию 50000 / 90000 / 130000), бюджет разового чтения, поведение жёсткого порога (пропустить с ограничением / заблокировать), переключатель автоматической передачи и отдельный потолок для субагентов — всё в этом разделе. Внизу строка команд: `/ctx-pause` приостановить вмешательство · `/ctx-resume` возобновить · `/ctx-handover` сделать резервную копию и передать управление прямо сейчас (команда подводит сессию к границе простоя и ждёт окно повторной попытки компакции, результат может занять несколько минут).
|
|
85
|
+
|
|
86
|
+

|
|
87
|
+
|
|
88
|
+
7. **Проверьте** — в шапке сессии появился значок ⚡ «автономная команда» (рядом ◇ показывает модель текущей сессии); либо спросите модель напрямую: «как называется последний раздел твоего системного промпта?» — в ответе должен прозвучать регламент dsh-switchman.
|
|
89
|
+
|
|
90
|
+
**Инициализация db-query при первом использовании** (зависимости скриптов ставятся внутрь каталога навыка и не засоряют проект):
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
bash <install-dir>/skills/db-query/scripts/setup.sh
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Как это работает
|
|
97
|
+
|
|
98
|
+
- Host-половина (`index.js` + `host/`) внедряет динамические секции системного промпта (язык / полосы / уровень воды / команда), двойной шлюз бюджета чтения и enforce и четыре слэш-команды (ctx-тройка + `/vision`). Все настройки после сохранения вступают в силу при следующей сборке промпта — без перезапуска.
|
|
99
|
+
- Client-половина (`client.js`) отрисовывает страницу настроек, значок ⚡ и метку модели ◇ в шапке сессии, живую подсказку во время передачи управления — всё через официальные сервисы settings-form.
|
|
100
|
+
- Пункт «Диспетчерская Switchman» в боковой панели главной страницы: один клик открывает ту же страницу настроек (языковые предпочтения, пулы и рейтинг, уровень воды) в виде центральной панели; прежний вход в настройки остаётся на месте.
|
|
101
|
+
- `cordis.patch.yml` целиком сохраняет список плагинов заводских пресетов и расширяет только persona suffix; сами инструменты Agent Teams приходят из заводского bundle и автоматически включаются вместе с командным режимом.
|
|
102
|
+
|
|
103
|
+
## Обслуживание
|
|
104
|
+
|
|
105
|
+
- Если после обновления DSH изменился список плагинов заводских пресетов, пересинхронизируйте `cordis.patch.yml` из новых `presets/*.patch.yml` (сохранив doctrine suffix) и переустановите.
|
|
106
|
+
- Строки протокола (`[SWITCHMAN:LANG|POOLS|WATERMARK|TEAMS]`) намеренно оставлены на английском и стабильны побайтово — не локализуйте их.
|
|
107
|
+
- `npm pack --dry-run` должен сохранять аудированную форму: 50 файла / ~205 kB (скриншоты из `docs/` в пакет не входят).
|
|
108
|
+
|
|
109
|
+
## License
|
|
110
|
+
|
|
111
|
+
MIT
|
package/README.zh-TW.md
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# dsh-switchman
|
|
2
|
+
|
|
3
|
+
[English](./README.md) | [简体中文](./README.zh.md) | **繁體中文** | [日本語](./README.ja.md) | [한국어](./README.ko.md) | [Español](./README.es.md) | [Français](./README.fr.md) | [Deutsch](./README.de.md) | [Italiano](./README.it.md) | [Português](./README.pt.md) | [Русский](./README.ru.md)
|
|
4
|
+
|
|
5
|
+
> **switchman 家族**,同一作者、同一套調度理念:[opencode-switchman](https://github.com/mrzturn/opencode-switchman)(OpenCode 原版)· [zcode-switchman](https://github.com/mrzturn/zcode-switchman)(ZCode 移植)· **dsh-switchman**(本倉庫,DeepSeek Harness 版)。
|
|
6
|
+
|
|
7
|
+

|
|
8
|
+
|
|
9
|
+
> 上下文裝上水錶,任務自己找車道。
|
|
10
|
+
|
|
11
|
+
## 為什麼需要它
|
|
12
|
+
|
|
13
|
+
用 DSH 做事,時間一長會撞上兩件事:
|
|
14
|
+
|
|
15
|
+
1. **會話越聊越重。** 上下文被歷史撐到幾十萬 token,模型開始忘事、變慢、變貴,最後只能手動 /compact,一壓又丟細節。
|
|
16
|
+
2. **主力模型什麼都自己幹。** 查個檔案、跑個測試、對個資料都是它在啃——又慢又燒錢,其中大半其實該交給便宜模型。
|
|
17
|
+
|
|
18
|
+
dsh-switchman 是一個 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)(DSH)外掛。裝上之後,主模型從「什麼都自己幹」變成調度員:量水位、選車道、派任務、盯驗收。它不是一個新模型,是一套掛在 DSH 上的調度規程加一個設定介面。具體做六件事:
|
|
19
|
+
|
|
20
|
+
**1. 上下文水位:長會話不撐爆。** 每輪即時統計會話 token,三條水位線逐級加碼:50k(soft,可調)提醒「該委派了」;90k(hard)收緊單次讀取檔案的預算、引導收尾;130k(force)自動交接——fork 一份會話留底、壓縮上下文、喚醒續跑,任務不斷線。交接那一刻還在跑的背景子智能體也不會丟:id、任務描述、報告路徑都寫進交接文件,續跑的會話知道去哪收報告,而不是重複派活。派出去的每個子智能體自帶獨立硬頂,到頂寫完 HANDOFF 摘要退場。
|
|
21
|
+
|
|
22
|
+
**2. 六個派發池:什麼活配什麼模型。** 輕量池(economy,批次小活)、機械池(mechanical,模板化改寫)、主力池(main,日常編碼)、高難池(hard,高難推理與大規模重構)、多模態池(vision,看圖)、複審池(review,獨立驗證)。設定頁裡勾候選、排優先順序(可標 S/A/B/C 檔)、給每條路線單獨釘思考強度——檔位下拉來自該模型真實支援的級別,不是通用三檔。主模型每輪提示詞裡都帶著一張 `[SWITCHMAN:POOLS]` 推薦表,照表派活。執行模式三態:關閉 / 建議 / 強制(強制 = 池外模型直接拒絕)。
|
|
23
|
+
|
|
24
|
+
**3. Agent Teams 模式:從單打獨鬥到帶團隊。** 預設關閉,裝完就是輕量的 subagent 派發。設定頁兩個獨立開關:
|
|
25
|
+
|
|
26
|
+
- **智能體團隊模式**——打開後注入團隊規程(預設委派 + 分級驗證 + 共享任務板紀律),並自動啟用 DSH 的 Agent Teams:主模型可以拉常駐隊友(`spawn_teammate`)、往共享任務板派活(`team_task_*`)、和隊友互傳訊息(`send_message`)。什麼時候建團隊有明確紀律:可並行的獨立子任務、量大且自包含的活、主上下文水位已高、需要角色分離;一次性的單點調查仍走 subagent。DSH 出廠策略是「使用者不點名就不建團隊」,這裡反轉成「該用就用」。再關掉開關,團隊條款零殘留,也不會撤走正在執行的會話裡的團隊工具。
|
|
27
|
+
- **同步子智能體模型白名單**——DSH 有張「允許 Agent 為子智能體選擇模型」的授權白名單:池裡選了但沒授權的路線,主模型點名派發會被拒(團隊模式下,推薦表和設定頁會給這些路線標 ⚠)。打開這個開關,六個池的聯集整體寫入那張白名單——不用兩邊重複設定,switchman 是唯一事實來源,fork 派發路徑也一併納入。白名單按「新增會話」快照生效,同步只對之後新開的會話起作用。
|
|
28
|
+
|
|
29
|
+
會話標頭有直觀回饋:⚡「自主團隊」徽章、◇ 目前會話實際模型;自動交接進行時會出現「交接進行中 · 備份會話 / 壓縮上下文 / 喚醒續接」的即時提示。
|
|
30
|
+
|
|
31
|
+
**4. 語言偏好:問一次,記一輩子。** 回覆、程式碼註解、文件三種語言各一個下拉選單,作用域可選全域或按專案(`.switchman/lang.json`)。不設也行——首次用到時用你 DSH 介面的語言問一次,記住後每個會話自動遵守。
|
|
32
|
+
|
|
33
|
+
**5. 分級驗證:改完必查。** 超過 20 行的改動交 tester 驗證;超過 300 行、或動了核心 / 安全 / 資料一致性邏輯,再交一個 reviewer 獨立複審。複審模型錨定「寫出這份 diff 的智能體」所用的模型來選,儘量避開;池裡實在避不開時,會在結論裡宣告 DOWNGRADED。你說一句「不要用團隊」,它立刻退回單打獨鬥。
|
|
34
|
+
|
|
35
|
+
**6. `/vision`:純文字模型也能處理圖。** 主力模型讀不了圖時,DSH 會在入口直接拒絕帶圖訊息。貼上圖、輸入 `/vision 這張圖哪裡錯了`,圖片會被解析成檔案路徑交給多模態池的模型去讀,結論回到目前會話。輸入框上方會提前提示「目前模型不支援讀圖」;直接傳圖被拒時,自動改寫成 `/vision` 重送一次,不用手動重來;多模態池沒設定時命令會拒絕並給出設定指引。
|
|
36
|
+
|
|
37
|
+
只有一個模型?也值得裝——水位控制和分級驗證與模型數量無關,單模型長會話同樣受益。
|
|
38
|
+
|
|
39
|
+
## 隨附技能
|
|
40
|
+
|
|
41
|
+
- **db-query**——MySQL / Redis 唯讀核驗:跑 SQL 核對資料、查快取鍵 / TTL、跨庫一致性檢查,拒絕一切寫入。首次使用需初始化(見下)。
|
|
42
|
+
- **git-commit-message**——產生符合規範的 commit 文案,只出文字,從不替你 git。
|
|
43
|
+
- **requirement-docs**——需求分析 / PRD / 設計文件的統一規範,產出歸檔到 `docs/requirements-and-design/`。
|
|
44
|
+
|
|
45
|
+
## 快速上手
|
|
46
|
+
|
|
47
|
+
1. **安裝**——任意會話裡讓 agent 執行,或在 Web 外掛管理頁:
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
plugin_manager: install_bundle target=dsh-switchman
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
或從本地檢出安裝(link 方式;更新後需 `remove_bundle` + `install_bundle` 重裝):
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
plugin_manager: install_bundle target=/path/to/dsh-switchman
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
或在終端機用 `dsh` 命令安裝——依執行方式選擇對應的 profile:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
dsh plugin --profile web add dsh-switchman # Web GUI
|
|
63
|
+
dsh plugin --profile desktop add dsh-switchman # 桌面應用
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
2. **重啟 DSH**——完全結束應用程式再重新開啟(重新整理頁面不算),用戶端模組表才能識別本 bundle。
|
|
67
|
+
|
|
68
|
+
3. **語言偏好**——設定 → dsh-switchman,或首頁側邊欄的「Switchman 調度中心」。第一屏先選作用域:全域(本 profile)或按專案(各專案 `.switchman/lang.json`);再用三個下拉選單分別設定回覆 / 註解 / 文件的語言,每項下方有「目前:…」狀態行。跳過也沒關係,首次使用會問一次並記住(提問語言跟隨 DSH 介面語言)。
|
|
69
|
+
|
|
70
|
+

|
|
71
|
+
|
|
72
|
+
4. **配派發池**——每張池卡片按供應商分組勾選候選模型;勾上「手動序」後卡片變成編號優先序列表,用 ↑ ↓ × 調整順序,每條路線旁還能釘思考強度(預設「跟隨泳道」,釘死後列出該模型真實支援的檔位)。頂部彙總行即時反映進度,比如「已配置 6/6 池 · 排名 2 項 · 模式 建議」。
|
|
73
|
+
|
|
74
|
+

|
|
75
|
+
|
|
76
|
+
多模態池和複審池在下方;再往下是**能力排序**(六池選中模型的聯集,序號即能力序、最強在前,可錨 S/A/B/C 檔)和**執行模式**(建議 / 強制)。
|
|
77
|
+
|
|
78
|
+

|
|
79
|
+
|
|
80
|
+
5. **智能體團隊**——兩個開關預設關閉,先用純 subagent 模式跑起來。想讓它自己拉團隊,開「智能體團隊模式」;想省掉兩邊重複授權,開「同步子智能體模型白名單」——開關下方有「已同步 N 條 + 時間」的狀態行,確認寫入結果。
|
|
81
|
+
|
|
82
|
+

|
|
83
|
+
|
|
84
|
+
6. **上下文水位**——三檔閾值(預設 50000 / 90000 / 130000)、單次讀取預算、硬檔行為(限流放行 / 攔截)、自動交接開關、子智能體獨立上限,都在這一區。底部一行命令:`/ctx-pause` 暫停干預 · `/ctx-resume` 恢復 · `/ctx-handover` 立即備份交接(它會把會話引導到閒置邊界並等待壓縮重試視窗,結果可能要等幾分鐘)。
|
|
85
|
+
|
|
86
|
+

|
|
87
|
+
|
|
88
|
+
7. **驗證**——會話標頭出現 ⚡「自主團隊」徽章(旁邊 ◇ 顯示目前會話模型);或者直接問模型「你系統提示詞最後一段標題是什麼」,應提到 dsh-switchman 規程。
|
|
89
|
+
|
|
90
|
+
**db-query 首次使用初始化**(腳本依賴裝在技能目錄內,不污染專案):
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
bash <安裝目錄>/skills/db-query/scripts/setup.sh
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## 運作原理
|
|
97
|
+
|
|
98
|
+
- Host 端(`index.js` + `host/`)注入動態系統提示詞段(語言 / 泳道 / 水位 / 團隊)、讀取預算與 enforce 雙閘、四個斜線命令(ctx 三件套 + `/vision`)。全部設定儲存後下一輪提示詞組裝即生效,無需重啟。
|
|
99
|
+
- Client 端(`client.js`)渲染設定頁、會話標頭的 ⚡ 徽章與 ◇ 模型識別、交接進行中的動態提示,走官方 settings-form 服務。
|
|
100
|
+
- 首頁側邊欄的「Switchman 調度中心」入口,點擊即以中央面板開啟同一設定頁(語言偏好、派發池與排序、水位);原設定入口保留。
|
|
101
|
+
- `cordis.patch.yml` 完整保留出廠預設的外掛清單,只在 persona suffix 上做擴充;Agent Teams 工具本體來自出廠 bundle,開啟團隊模式時自動啟用。
|
|
102
|
+
|
|
103
|
+
## 維護注意
|
|
104
|
+
|
|
105
|
+
- DSH 升級後若出廠預設外掛清單有變,從新的 `presets/*.patch.yml` 重新同步 `cordis.patch.yml`(保留 doctrine suffix),然後重裝。
|
|
106
|
+
- 協定行(`[SWITCHMAN:LANG|POOLS|WATERMARK|TEAMS]`)刻意保持英文且位元組穩定——不要在地化。
|
|
107
|
+
- `npm pack --dry-run` 應保持審計過的 50 個檔案 / ~205 kB 形態(`docs/` 截圖不會進包)。
|
|
108
|
+
|
|
109
|
+
## License
|
|
110
|
+
|
|
111
|
+
MIT
|
package/README.zh.md
CHANGED
|
@@ -1,30 +1,46 @@
|
|
|
1
1
|
# dsh-switchman
|
|
2
2
|
|
|
3
|
-
[English](./README.md) |
|
|
3
|
+
[English](./README.md) | **简体中文** | [繁體中文](./README.zh-TW.md) | [日本語](./README.ja.md) | [한국어](./README.ko.md) | [Español](./README.es.md) | [Français](./README.fr.md) | [Deutsch](./README.de.md) | [Italiano](./README.it.md) | [Português](./README.pt.md) | [Русский](./README.ru.md)
|
|
4
4
|
|
|
5
5
|
> **switchman 家族**,同一作者、同一套调度理念:[opencode-switchman](https://github.com/mrzturn/opencode-switchman)(OpenCode 原版)· [zcode-switchman](https://github.com/mrzturn/zcode-switchman)(ZCode 移植)· **dsh-switchman**(本仓库,DeepSeek Harness 版)。
|
|
6
6
|
|
|
7
|
-

|
|
8
8
|
|
|
9
9
|
> 上下文装上水表,任务自己找车道。
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
## 为什么需要它
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
用 DSH 干活,时间一长会撞上两件事:
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
1. **会话越聊越重。** 上下文被历史撑到几十万 token,模型开始忘事、变慢、变贵,最后只能手动 /compact,一压又丢细节。
|
|
16
|
+
2. **主力模型什么都自己干。** 查个文件、跑个测试、对个数据都是它在啃——又慢又烧钱,其中大半其实该交给便宜模型。
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
dsh-switchman 是一个 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)(DSH)插件。装上之后,主模型从「什么都自己干」变成调度员:量水位、选车道、派任务、盯验收。它不是一个新模型,是一套挂在 DSH 上的调度规程加一个配置界面。具体做六件事:
|
|
18
19
|
|
|
19
|
-
**
|
|
20
|
+
**1. 上下文水位:长会话不撑爆。** 每轮实时统计会话 token,三条水位线逐级加码:50k(soft,可调)提醒「该委派了」;90k(hard)收紧单次读文件的预算、引导收尾;130k(force)自动交接——fork 一份会话留底、压缩上下文、唤醒续跑,任务不断线。交接那一刻还在跑的后台子智能体也不会丢:id、任务描述、报告路径都写进交接文档,续跑的会话知道去哪收报告,而不是重复派活。派出去的每个子智能体自带独立硬顶,到顶写完 HANDOFF 摘要退场。
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
**2. 六个派发池:什么活配什么模型。** 轻量池(economy,批量小活)、机械池(mechanical,模板化改写)、主力池(main,日常编码)、高难池(hard,高难推理与大规模重构)、多模态池(vision,看图)、复审池(review,独立验证)。设置页里勾候选、排优先级(可标 S/A/B/C 档)、给每条路线单独钉思考强度——档位下拉来自该模型真实支持的级别,不是通用三档。主模型每轮提示词里都带着一张 `[SWITCHMAN:POOLS]` 推荐表,照表派活。执行模式三态:关闭 / 建议 / 强制(强制 = 池外模型直接拒绝)。
|
|
23
|
+
|
|
24
|
+
**3. Agent Teams 模式:从单干到带团队。** 默认关闭,装完就是轻量的 subagent 派发。设置页两个独立开关:
|
|
25
|
+
|
|
26
|
+
- **智能体团队模式**——打开后注入团队规程(默认委派 + 分级验证 + 共享任务板纪律),并自动启用 DSH 的 Agent Teams:主模型可以拉常驻队友(`spawn_teammate`)、往共享任务板派活(`team_task_*`)、和队友互发消息(`send_message`)。什么时候建团队有明确纪律:可并行的独立子任务、量大且自包含的活、主上下文水位已高、需要角色分离;一次性的单点调查仍走 subagent。DSH 出厂策略是「用户不点名就不建团队」,这里反转成「该用就用」。再关掉开关,团队条款零残留,也不会撤走正在运行的会话里的团队工具。
|
|
27
|
+
- **同步子智能体模型白名单**——DSH 有张「允许 Agent 为子智能体选择模型」的授权白名单:池里选了但没授权的路线,主模型点名派发会被拒(团队模式下,推荐表和设置页会给这些路线标 ⚠)。打开这个开关,六个池的并集整体写入那张白名单——不用两边重复配置,switchman 是唯一事实源,fork 派发路径也一并纳入。白名单按「新建会话」快照生效,同步只对之后新开的会话起作用。
|
|
28
|
+
|
|
29
|
+
会话头部有直观反馈:⚡「自主团队」徽标、◇ 当前会话实际模型;自动交接进行时会出现「交接进行中 · 备份会话 / 压缩上下文 / 唤醒续接」的实时提示。
|
|
30
|
+
|
|
31
|
+
**4. 语言偏好:问一次,记一辈子。** 回复、代码注释、文档三种语言各一个下拉,作用域可选全局或按项目(`.switchman/lang.json`)。不设也行——首次用到时用你 DSH 界面的语言问一次,记住后每个会话自动遵守。
|
|
32
|
+
|
|
33
|
+
**5. 分级验证:改完必查。** 超过 20 行的改动交 tester 验证;超过 300 行、或动了核心 / 安全 / 数据一致性逻辑,再交一个 reviewer 独立复审。复审模型锚定「写出这份 diff 的智能体」所用的模型来选,尽量避开;池里实在避不开时,会在结论里声明 DOWNGRADED。你说一句「不要用团队」,它立刻退回单干。
|
|
34
|
+
|
|
35
|
+
**6. `/vision`:纯文本模型也能处理图。** 主力模型读不了图时,DSH 会在入口直接拒掉带图消息。贴上图、输入 `/vision 这张图错在哪`,图片会被解析成文件路径交给多模态池的模型去读,结论回到当前会话。输入框上方会提前提示「当前模型不支持读图」;直接发图被拒时,自动改写成 `/vision` 重发一次,不用手动重来;多模态池没配时命令会拒绝并给出配置指引。
|
|
36
|
+
|
|
37
|
+
只有一个模型?也值得装——水位控制和分级验证与模型数量无关,单模型长会话同样受益。
|
|
22
38
|
|
|
23
39
|
## 捆绑技能
|
|
24
40
|
|
|
25
|
-
- **db-query
|
|
26
|
-
- **git-commit-message
|
|
27
|
-
- **requirement-docs
|
|
41
|
+
- **db-query**——MySQL / Redis 只读核验:跑 SQL 对数、查缓存键 / TTL、跨库一致性检查,拒绝一切写入。首次使用需初始化(见下)。
|
|
42
|
+
- **git-commit-message**——生成规范的 commit 文案,只出文本,从不替你 git。
|
|
43
|
+
- **requirement-docs**——需求分析 / PRD / 设计文档的统一规范,产出归档到 `docs/requirements-and-design/`。
|
|
28
44
|
|
|
29
45
|
## 快速上手
|
|
30
46
|
|
|
@@ -40,21 +56,36 @@
|
|
|
40
56
|
plugin_manager: install_bundle target=/path/to/dsh-switchman
|
|
41
57
|
```
|
|
42
58
|
|
|
59
|
+
或在终端用 `dsh` 命令安装——按运行方式选对应的 profile:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
dsh plugin --profile web add dsh-switchman # Web GUI
|
|
63
|
+
dsh plugin --profile desktop add dsh-switchman # 桌面应用
|
|
64
|
+
```
|
|
65
|
+
|
|
43
66
|
2. **重启 DSH**——完全退出应用再打开(刷新页面不算),客户端模块表才能识别本 bundle。
|
|
44
67
|
|
|
45
|
-
3.
|
|
68
|
+
3. **语言偏好**——设置 → dsh-switchman,或首页侧边栏的「Switchman 调度中心」。第一屏先选作用域:全局(本 profile)或按项目(各项目 `.switchman/lang.json`);再用三个下拉分别定回复 / 注释 / 文档的语言,每项下方有「当前:…」状态行。跳过也没关系,首次使用会问一次并记住(提问语言跟随 DSH 界面语言)。
|
|
69
|
+
|
|
70
|
+

|
|
71
|
+
|
|
72
|
+
4. **配派发池**——每张池卡片按供应商分组勾选候选模型;勾上「手动序」后卡片变成编号优先序列表,用 ↑ ↓ × 调顺序,每条路线旁还能钉思考强度(默认「跟随泳道」,钉死后列出该模型真实支持的档位)。顶部汇总行实时反映进度,比如「已配置 6/6 池 · 排名 2 项 · 模式 建议」。
|
|
73
|
+
|
|
74
|
+

|
|
75
|
+
|
|
76
|
+
多模态池和复审池在下方;再往下是**能力排序**(六池选中模型的并集,序号即能力序、最强在前,可锚 S/A/B/C 档)和**执行模式**(建议 / 强制)。
|
|
46
77
|
|
|
47
|
-

|
|
48
79
|
|
|
49
|
-
|
|
80
|
+
5. **智能体团队**——两个开关默认关闭,先用纯 subagent 模式跑起来。想让它自己拉团队,开「智能体团队模式」;想省掉两边重复授权,开「同步子智能体模型白名单」——开关下方有「已同步 N 条 + 时间」的状态行,确认写入结果。
|
|
50
81
|
|
|
51
|
-

|
|
52
83
|
|
|
53
|
-
|
|
84
|
+
6. **上下文水位**——三档阈值(默认 50000 / 90000 / 130000)、单次读取预算、硬档行为(限流放行 / 拦截)、自动交接开关、子智能体独立上限,都在这一区。底部一行命令:`/ctx-pause` 暂停干预 · `/ctx-resume` 恢复 · `/ctx-handover` 立即备份交接(它会把会话引导到空闲边界并等待压缩重试窗口,结果可能要等几分钟)。
|
|
54
85
|
|
|
55
|
-

|
|
56
87
|
|
|
57
|
-
|
|
88
|
+
7. **验证**——会话头部出现 ⚡「自主团队」徽标(旁边 ◇ 显示当前会话模型);或者直接问模型「你系统提示词最后一段标题是什么」,应提到 dsh-switchman 规程。
|
|
58
89
|
|
|
59
90
|
**db-query 首次使用初始化**(脚本依赖装在技能目录内,不污染项目):
|
|
60
91
|
|
|
@@ -64,15 +95,16 @@ bash <安装目录>/skills/db-query/scripts/setup.sh
|
|
|
64
95
|
|
|
65
96
|
## 工作原理
|
|
66
97
|
|
|
67
|
-
- Host 半(`index.js` + `host
|
|
68
|
-
- Client 半(`client.js
|
|
69
|
-
-
|
|
98
|
+
- Host 半(`index.js` + `host/`)注入动态系统提示词段(语言 / 泳道 / 水位 / 团队)、读预算与 enforce 双闸、四个斜杠命令(ctx 三件套 + `/vision`)。全部设置保存后下一轮提示词装配即生效,无需重启。
|
|
99
|
+
- Client 半(`client.js`)渲染设置页、会话头部的 ⚡ 徽标与 ◇ 模型标识、交接进行中的动态提示,走官方 settings-form 服务。
|
|
100
|
+
- 首页侧边栏的「Switchman 调度中心」入口,单击即以中央面板打开同一配置页(语言偏好、派发池与排序、水位);原设置入口保留。
|
|
101
|
+
- `cordis.patch.yml` 完整保留出厂预设的插件列表,只在 persona suffix 上做扩展;Agent Teams 工具本体来自出厂 bundle,开启团队模式时自动启用。
|
|
70
102
|
|
|
71
103
|
## 维护注意
|
|
72
104
|
|
|
73
105
|
- DSH 升级后若出厂预设插件列表有变,从新的 `presets/*.patch.yml` 重新同步 `cordis.patch.yml`(保留 doctrine suffix),然后重装。
|
|
74
|
-
- 协议行(`[SWITCHMAN:LANG|POOLS|WATERMARK]`)刻意保持英文且字节稳定——不要本地化。
|
|
75
|
-
- `npm pack --dry-run` 应保持审计过的
|
|
106
|
+
- 协议行(`[SWITCHMAN:LANG|POOLS|WATERMARK|TEAMS]`)刻意保持英文且字节稳定——不要本地化。
|
|
107
|
+
- `npm pack --dry-run` 应保持审计过的 50 文件 / ~205 kB 形态(`docs/` 截图不进包)。
|
|
76
108
|
|
|
77
109
|
## License
|
|
78
110
|
|