@goodandready/dsh-agent-orchestrator 0.1.6 → 0.1.7
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.ru.md +123 -26
- package/README.zh.md +136 -17
- package/lib/client.js +33 -6
- package/package.json +3 -2
package/README.ru.md
CHANGED
|
@@ -4,6 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
<h3>Мульти-агентная декомпозиция задач, DAG-оркестрация и оптимизатор Prompt Caching для DeepSeek Harness</h3>
|
|
6
6
|
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="https://www.npmjs.com/package/@goodandready/dsh-agent-orchestrator"><img src="https://img.shields.io/npm/v/@goodandready/dsh-agent-orchestrator.svg?style=for-the-badge&color=6366f1&labelColor=1e1b4b" alt="npm version"></a>
|
|
9
|
+
<a href="LICENSE"><img src="https://img.shields.io/github/license/GooDAnDReaDY/dsh-agent-orchestrator.svg?style=for-the-badge&color=10b981&labelColor=064e3b" alt="license"></a>
|
|
10
|
+
<a href="https://github.com/topics/dsh-plugin"><img src="https://img.shields.io/badge/DSH-Plugin-8b5cf6.svg?style=for-the-badge&labelColor=2e1065" alt="DSH Plugin"></a>
|
|
11
|
+
<a href="https://nodejs.org"><img src="https://img.shields.io/badge/Node-20%2B-f59e0b.svg?style=for-the-badge&labelColor=451a03" alt="Node version"></a>
|
|
12
|
+
</p>
|
|
13
|
+
|
|
7
14
|
<p align="center">
|
|
8
15
|
<a href="https://goodandready.app/"><img src="https://img.shields.io/badge/Все_проекты_автора-goodandready.app-ff4500.svg?style=for-the-badge&logo=rocket&logoColor=white&labelColor=1a1a2e" alt="Все проекты автора"></a>
|
|
9
16
|
</p>
|
|
@@ -14,6 +21,16 @@
|
|
|
14
21
|
<a href="README.zh.md"><b>🇨🇳 中文说明</b></a>
|
|
15
22
|
</p>
|
|
16
23
|
|
|
24
|
+
<table align="center">
|
|
25
|
+
<tr>
|
|
26
|
+
<td align="center">
|
|
27
|
+
⭐ <strong>Если вам понравился этот плагин, поставьте звезду на GitHub</strong> — это показывает востребованность разработки и мотивирует развивать проект дальше.
|
|
28
|
+
<br><br>
|
|
29
|
+
🐛 <strong>Если вы нашли ошибку или хотите предложить улучшение</strong>, откройте issue на GitHub на любом удобном языке — предложения рассматриваются для будущих версий.
|
|
30
|
+
</td>
|
|
31
|
+
</tr>
|
|
32
|
+
</table>
|
|
33
|
+
|
|
17
34
|
</div>
|
|
18
35
|
|
|
19
36
|
---
|
|
@@ -34,21 +51,80 @@
|
|
|
34
51
|
|
|
35
52
|
---
|
|
36
53
|
|
|
37
|
-
##
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
54
|
+
## 🏗️ Архитектура
|
|
55
|
+
|
|
56
|
+
```mermaid
|
|
57
|
+
graph TD
|
|
58
|
+
Trigger["Входная задача<br/>(/orchestrate в чате или карточка Канбана)"] --> Main["Главный оркестратор (Триаж)"]
|
|
59
|
+
|
|
60
|
+
subgraph Engine ["Движок DAG и Prompt Caching"]
|
|
61
|
+
L1["Уровень 1: Канонический базовый якорь (>1024 токенов)"]
|
|
62
|
+
L2["Уровень 2: Общий якорь задачи"]
|
|
63
|
+
L3["Уровень 3: Накопленные артефакты (Append-Only)"]
|
|
64
|
+
L4["Уровень 4: Суффиксная директива роли"]
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
Main --> Engine
|
|
68
|
+
|
|
69
|
+
subgraph AgentPool ["Настроенные персоны агентов (Автономно в настройках)"]
|
|
70
|
+
R1["ТЗ-аналитик"]
|
|
71
|
+
R2["Системный архитектор"]
|
|
72
|
+
R3["UI/UX Дизайнер"]
|
|
73
|
+
R4["Бэкенд-разработчик"]
|
|
74
|
+
R5["Фронтенд-разработчик"]
|
|
75
|
+
R6["QA Automation инженер"]
|
|
76
|
+
R7["Технический писатель"]
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
Engine --> AgentPool
|
|
80
|
+
AgentPool --> Delivery["Поставка результата<br/>(Карточка в шапке и синхронизация с Канбаном)"]
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## 👥 12 встроенных специализированных ролей агентов
|
|
86
|
+
|
|
87
|
+
Все профили агентов **хранятся и настраиваются исключительно внутри настроек плагина** (без внешних файлов):
|
|
88
|
+
|
|
89
|
+
| Код роли | Название | Специализация | Жёсткие границы |
|
|
90
|
+
|---|---|---|---|
|
|
91
|
+
| `spec` | ТЗ-аналитик | Требования, критерии приёмки (DoD), структуры данных | Не пишет код реализации и стили |
|
|
92
|
+
| `architecture` | Системный архитектор | Системный дизайн, DESIGN.md, ADR, модульные контракты | Не реализует прод-код и не деплоит |
|
|
93
|
+
| `ui_design` | UI/UX Дизайнер | Макеты, токены темы (`--dsw-alias-*`), слоты | Не пишет серверные сервисы Cordis |
|
|
94
|
+
| `frontend` | Фронтенд-разработчик | React-компоненты, хуки клиента, DOM-события | Не меняет бэкенд-роуты и схемы БД |
|
|
95
|
+
| `backend` | Бэкенд-разработчик | Сервисы Cordis, WebServer-роуты, хранилище | Не пишет клиентский React JSX и CSS |
|
|
96
|
+
| `fullstack` | Фуллстек-интегратор | Связка клиент-серверного контракта, сквозной поток | Строго следует границам модулей |
|
|
97
|
+
| `qa_tests` | QA Automation инженер | Модульные тесты (`node:test`), проверка границ | Тестирует без внешних сетевых вызовов |
|
|
98
|
+
| `bugfix` | Hotfix-инженер | Поиск первопричины, минимальный точечный фикс | Не рефакторит несвязанный код |
|
|
99
|
+
| `docs` | Технический писатель | Трёхъязычная документация (en/ru/zh), релизы | Не перезаписывает прежнюю документацию |
|
|
100
|
+
| `refactoring` | Рефакторинг-специалист | Устранение оверинжиниринга (YAGNI), сжатие бандла | Сохраняет обратную совместимость |
|
|
101
|
+
| `research` | Исследователь (Spike) | Сравнение библиотек, архитектурные пробы | Готовит отчёт, не мержит спайк-код |
|
|
102
|
+
| `devops` | DevOps-инженер | Манифесты пакетов, валидация сборки, systemd | Не раскрывает приватные учетные данные |
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## 🔄 Сценарии сложности
|
|
107
|
+
|
|
108
|
+
1. **Hotfix / Минорный (1 этап)**: Точечное устранение дефекта или правка одного параметра.
|
|
109
|
+
2. **Простой (2 этапа)**: Обсуждение и ТЗ $
|
|
110
|
+
3. **Средний (3–4 этапа)**: ТЗ $
|
|
111
|
+
4. **Комплексный (5–6 этапов)**: ТЗ $
|
|
112
|
+
5. **Корпоративный / Enterprise (7 этапов)**: Исследовательский спайк $
|
|
113
|
+
6. **Пользовательские DAG-сценарии**: Полностью настраиваются в параметрах плагина с произвольными этапами и чекбоксами блокировок.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## ⚡ Механика Prompt Caching
|
|
118
|
+
|
|
119
|
+
Современные LLM кэшируют KV-состояния строго от первого токена вперёд. Случайные временные метки или ID в шапке промпта сбрасывают Cache Hit до 0%.
|
|
120
|
+
|
|
121
|
+
`dsh-agent-orchestrator` обеспечивает **4-слойную каноническую структуру**:
|
|
122
|
+
1. **Уровень 1: Статический базовый якорь (>1024 токенов)**: Побайтово идентичные правила и инструменты, общие для всех агентов.
|
|
123
|
+
2. **Уровень 2: Общий якорь задачи**: Стабильное описание цели пользователя и целевого репозитория.
|
|
124
|
+
3. **Уровень 3: Накопленный контекст (Append-Only)**: Результаты предыдущих этапов дописываются строго в конец, сохраняя 100% предыдущего KV-кэша.
|
|
125
|
+
4. **Уровень 4: Директива роли (Суффикс)**: Промпт роли, специализированные инструкции и локальный скоуп этапа.
|
|
126
|
+
|
|
127
|
+
Такая архитектура даёт **80–95% попаданий в кэш** между субагентами на одной модели, снижая TTFT и сокращая затраты на токены на ~90%.
|
|
52
128
|
|
|
53
129
|
---
|
|
54
130
|
|
|
@@ -56,31 +132,52 @@
|
|
|
56
132
|
|
|
57
133
|
### 1. В чате DSH через слэш-команду
|
|
58
134
|
```text
|
|
59
|
-
/orchestrate
|
|
135
|
+
/orchestrate Спроектируй и разработай карточку настроек для плагина финансов
|
|
60
136
|
```
|
|
61
|
-
|
|
137
|
+
|
|
138
|
+
Явный выбор сценария сложности:
|
|
62
139
|
```text
|
|
63
|
-
/orchestrate complex Разработай
|
|
64
|
-
/orchestrate hotfix Исправь
|
|
140
|
+
/orchestrate complex Разработай провайдер мультитенантной аутентификации
|
|
141
|
+
/orchestrate hotfix Исправь обращение к null в store.js
|
|
65
142
|
```
|
|
66
|
-
|
|
143
|
+
|
|
144
|
+
Короткий алиас:
|
|
67
145
|
```text
|
|
68
146
|
/orc Рефакторинг управления состоянием
|
|
69
147
|
```
|
|
70
148
|
|
|
71
149
|
### 2. В @goodandready/dsh-kanban
|
|
72
|
-
- Открой карточку задачи на доске.
|
|
150
|
+
- Открой любую карточку задачи на доске.
|
|
73
151
|
- Нажми **[Собрать пайплайн]**.
|
|
74
|
-
- Выбери
|
|
75
|
-
- Карточка
|
|
152
|
+
- Выбери пресет сложности или оставь авто-триаж.
|
|
153
|
+
- Карточка отображает переходы между этапами и автоматически переводится в `Review` по готовности.
|
|
76
154
|
|
|
77
155
|
---
|
|
78
156
|
|
|
79
|
-
## 🧪
|
|
157
|
+
## 🧪 Верификация и тестирование
|
|
158
|
+
|
|
159
|
+
Запуск нативного набора тестов (121 тест без внешних сетевых зависимостей):
|
|
80
160
|
|
|
81
161
|
```bash
|
|
82
162
|
node --test test/*.test.mjs
|
|
83
163
|
```
|
|
84
164
|
|
|
85
|
-
|
|
86
|
-
|
|
165
|
+
Проверка размера бандла перед публикацией (<256 КБ):
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
npm pack --dry-run --json
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## 🖼️ Визуальная верификация
|
|
174
|
+
|
|
175
|
+
Приёмка v0.1.6 в окружении DSH — карточка настроек, темная и светлая темы:
|
|
176
|
+
|
|
177
|
+

|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## 📄 Лицензия
|
|
182
|
+
|
|
183
|
+
MIT © [GooDAnDReaDY](https://github.com/GooDAnDReaDY)
|
package/README.zh.md
CHANGED
|
@@ -4,6 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
<h3>面向 DeepSeek Harness 的多智能体任务分解、DAG 工作流编排与提示词缓存优化引擎</h3>
|
|
6
6
|
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="https://www.npmjs.com/package/@goodandready/dsh-agent-orchestrator"><img src="https://img.shields.io/npm/v/@goodandready/dsh-agent-orchestrator.svg?style=for-the-badge&color=6366f1&labelColor=1e1b4b" alt="npm version"></a>
|
|
9
|
+
<a href="LICENSE"><img src="https://img.shields.io/github/license/GooDAnDReaDY/dsh-agent-orchestrator.svg?style=for-the-badge&color=10b981&labelColor=064e3b" alt="license"></a>
|
|
10
|
+
<a href="https://github.com/topics/dsh-plugin"><img src="https://img.shields.io/badge/DSH-Plugin-8b5cf6.svg?style=for-the-badge&labelColor=2e1065" alt="DSH Plugin"></a>
|
|
11
|
+
<a href="https://nodejs.org"><img src="https://img.shields.io/badge/Node-20%2B-f59e0b.svg?style=for-the-badge&labelColor=451a03" alt="Node version"></a>
|
|
12
|
+
</p>
|
|
13
|
+
|
|
7
14
|
<p align="center">
|
|
8
15
|
<a href="https://goodandready.app/"><img src="https://img.shields.io/badge/作者所有项目-goodandready.app-ff4500.svg?style=for-the-badge&logo=rocket&logoColor=white&labelColor=1a1a2e" alt="作者所有项目"></a>
|
|
9
16
|
</p>
|
|
@@ -14,51 +21,163 @@
|
|
|
14
21
|
<a href="README.zh.md"><b>🇨🇳 中文说明</b></a>
|
|
15
22
|
</p>
|
|
16
23
|
|
|
24
|
+
<table align="center">
|
|
25
|
+
<tr>
|
|
26
|
+
<td align="center">
|
|
27
|
+
⭐ <strong>如果您喜欢此插件,请在 GitHub 上点亮 Star</strong> — 这是对我持续投入开发的最大鼓励。
|
|
28
|
+
<br><br>
|
|
29
|
+
🐛 <strong>若发现 Bug 或有功能建议</strong>,欢迎随时在 GitHub 提交 Issue(支持任意语言)— 我将在后续版本中积极评估并实现。
|
|
30
|
+
</td>
|
|
31
|
+
</tr>
|
|
32
|
+
</table>
|
|
33
|
+
|
|
17
34
|
</div>
|
|
18
35
|
|
|
19
36
|
---
|
|
20
37
|
|
|
21
|
-
## ⚡
|
|
38
|
+
## ⚡ 概述与解决的核心痛点
|
|
39
|
+
|
|
40
|
+
在执行复杂的多阶段工程任务时,单一智能体架构往往面临认知过载:在单一上下文请求中混合了系统架构、界面布局、前端交互、服务端逻辑、单元测试与文档编写,极易导致接口幻觉、功能退化与不必要的 Token 浪费。
|
|
41
|
+
|
|
42
|
+
此外,各子智能体的独立执行通常会中断大语言模型的 KV 缓存复用,失去前缀提示词缓存(Prompt Caching)的优势,产生严重的首次响应延迟 (TTFT) 与高昂的推理成本。
|
|
43
|
+
|
|
44
|
+
**`@goodandready/dsh-agent-orchestrator`** 为 DeepSeek Harness 提供完整的自主多智能体编排方案:
|
|
45
|
+
|
|
46
|
+
1. **智能分流与任务分解**:深度解析来自聊天或看板卡片的目标,拆解并分发给 **12 个专属智能体角色**。
|
|
47
|
+
2. **有向无环图 (DAG) 引擎**:基于依赖拓扑结构并行调度无阻塞子任务,严格保障阻断检查点。
|
|
48
|
+
3. **KV 缓存 / Prompt Caching 优化器**:确保同模型智能体之间保持字节级的前缀一致性,释放 80–90% 的缓存命中率并实现极速首字输出。
|
|
49
|
+
4. **严格的权责分离**:服务端后端、UI 界面设计与客户端前端实现各自保持独立的角色与执行阶段,杜绝单一智能体跨界混写。
|
|
50
|
+
5. **双场景原生集成**:支持在 DSH 聊天中通过 `/orchestrate` 斜杠命令直接调用(带顶部吸顶里程碑卡片),亦可无缝接入 `@goodandready/dsh-kanban` 看板。
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 🏗️ 系统架构图
|
|
55
|
+
|
|
56
|
+
```mermaid
|
|
57
|
+
graph TD
|
|
58
|
+
Trigger["输入任务<br/>(聊天中 /orchestrate 或看板卡片)"] --> Main["主调度器 (分流与规划)"]
|
|
59
|
+
|
|
60
|
+
subgraph Engine ["DAG 调度引擎与提示词缓存优化"]
|
|
61
|
+
L1["第 1 层:规范化基础锚点 (>1024 Token)"]
|
|
62
|
+
L2["第 2 层:共享任务上下文锚点"]
|
|
63
|
+
L3["第 3 层:阶段累计产物 (仅追加模式)"]
|
|
64
|
+
L4["第 4 层:角色专属后缀指令"]
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
Main --> Engine
|
|
68
|
+
|
|
69
|
+
subgraph AgentPool ["配置化智能体角色池 (完全内聚于插件设置)"]
|
|
70
|
+
R1["需求分析师"]
|
|
71
|
+
R2["系统架构师"]
|
|
72
|
+
R3["UI/UX 设计师"]
|
|
73
|
+
R4["后端工程师"]
|
|
74
|
+
R5["前端工程师"]
|
|
75
|
+
R6["QA 自动化工程师"]
|
|
76
|
+
R7["技术文档专家"]
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
Engine --> AgentPool
|
|
80
|
+
AgentPool --> Delivery["编排交付<br/>(顶部状态卡片与看板状态同步)"]
|
|
81
|
+
```
|
|
22
82
|
|
|
23
|
-
|
|
83
|
+
---
|
|
24
84
|
|
|
25
|
-
|
|
85
|
+
## 👥 12 大内置专属智能体角色矩阵
|
|
86
|
+
|
|
87
|
+
所有智能体预设均**完全内聚于插件设置面板中**(无需依赖本地额外配置文件):
|
|
88
|
+
|
|
89
|
+
| 角色 ID | 角色名称 | 核心专业领域 | 严格职责边界 |
|
|
90
|
+
|---|---|---|---|
|
|
91
|
+
| `spec` | 需求分析师 | 功能规范、验收准则 (DoD)、数据结构定义 | 严禁编写业务实现代码或样式 |
|
|
92
|
+
| `architecture` | 系统架构师 | 架构设计、DESIGN.md、ADR 决策、模块契约 | 严禁编写生产代码或执行部署 |
|
|
93
|
+
| `ui_design` | UI/UX 设计师 | 界面布局、主题变量 (`--dsw-alias-*`)、插槽设计 | 严禁编写服务端 Cordis 服务逻辑 |
|
|
94
|
+
| `frontend` | 前端工程师 | React 组件、客户端 Hooks、DOM 交互与事件 | 严禁修改后端路由或数据库存储 |
|
|
95
|
+
| `backend` | 后端工程师 | Cordis 服务、WebServer 路由、状态与持久化 | 严禁编写客户端 React JSX 或前端 CSS |
|
|
96
|
+
| `fullstack` | 全栈集成师 | 端到端契约对接、全链路串联打通 | 严格遵守模块化边界规范 |
|
|
97
|
+
| `qa_tests` | QA 自动化工程师 | 原生单元测试 (`node:test`)、边界用例覆盖 | 仅限无外网依赖的纯净验证 |
|
|
98
|
+
| `bugfix` | 缺陷修复专家 | 根因精准定位、最小爆炸半径修复 | 严禁重构无关代码 |
|
|
99
|
+
| `docs` | 技术文档专家 | 英中俄三语文档编撰 (en/ru/zh)、发行注记 | 严禁覆盖或删除旧版有效文档 |
|
|
100
|
+
| `refactoring` | 重构精简专家 | 复杂度裁剪 (YAGNI)、代码瘦身与体积压缩 | 必须严格保持向前兼容 |
|
|
101
|
+
| `research` | 前沿探索工程师 | 技术选型评估、多方案 Spike 对比验证 | 输出分析报告,严禁直接合并 Spike 代码 |
|
|
102
|
+
| `devops` | 运维与工具工程师 | 包清单规范化、打包构建校验、systemd 守护 | 严禁泄露内部网络凭证与私钥 |
|
|
26
103
|
|
|
27
|
-
|
|
104
|
+
---
|
|
28
105
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
106
|
+
## 🔄 复杂度编排场景
|
|
107
|
+
|
|
108
|
+
1. **Hotfix / 紧急缺陷 (1 阶段)**:即时消除单一 Bug 或调整单项配置参数。
|
|
109
|
+
2. **Simple / 简易任务 (2 阶段)**:方案讨论与规范 $
|
|
110
|
+
3. **Medium / 中型需求 (3–4 阶段)**:需求分析 $
|
|
111
|
+
4. **Complex / 复杂项目 (5–6 阶段)**:需求分析 $
|
|
112
|
+
5. **Enterprise / 深度研发 (7 阶段)**:技术评估 Spike $
|
|
113
|
+
6. **自定义 DAG 场景**:在插件设置面板自由增删阶段、配置依赖关系与阻断检查点。
|
|
34
114
|
|
|
35
115
|
---
|
|
36
116
|
|
|
37
|
-
##
|
|
117
|
+
## ⚡ 提示词缓存 (Prompt Caching) 底层原理
|
|
118
|
+
|
|
119
|
+
主流大语言模型严格从第一个 Token 开始构建并复用 KV 缓存。如果在 Prompt 开头混入不确定性的时间戳或随机 ID,缓存命中率将骤降至 0%。
|
|
120
|
+
|
|
121
|
+
`dsh-agent-orchestrator` 强制采用 **4 层规范化布局**:
|
|
122
|
+
1. **第 1 层:静态基础锚点 (>1024 Token)**:所有智能体共享的字节级完全一致的规则与工具说明。
|
|
123
|
+
2. **第 2 层:共享任务上下文锚点**:用户核心目标与目标仓库的稳定描述。
|
|
124
|
+
3. **第 3 层:阶段累计产物 (仅追加模式)**:前序阶段产物按确定性顺序追加,完全保留前置 KV 缓存。
|
|
125
|
+
4. **第 4 层:角色专属后缀指令**:智能体角色人设、技能指导与当前子任务专属指令置于最末端。
|
|
126
|
+
|
|
127
|
+
此架构能够使共享同一模型的子智能体达到 **80–95% 的缓存命中率**,极大降低首字生成延迟并将 Token 消耗降低约 90%。
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## 💻 使用指南
|
|
38
132
|
|
|
39
133
|
### 1. 在 DSH 聊天中通过斜杠命令触发
|
|
40
134
|
```text
|
|
41
|
-
/orchestrate
|
|
135
|
+
/orchestrate 为财务管理插件设计并开发设置卡片
|
|
42
136
|
```
|
|
43
137
|
|
|
44
|
-
|
|
138
|
+
显式指定复杂度预设:
|
|
45
139
|
```text
|
|
46
|
-
/orchestrate complex
|
|
140
|
+
/orchestrate complex 构建多租户身份认证提供商服务
|
|
47
141
|
/orchestrate hotfix 修复 store.js 中的空指针异常
|
|
48
142
|
```
|
|
49
143
|
|
|
50
|
-
|
|
144
|
+
简明别名:
|
|
51
145
|
```text
|
|
52
146
|
/orc 重构状态管理模块
|
|
53
147
|
```
|
|
54
148
|
|
|
149
|
+
### 2. 在 @goodandready/dsh-kanban 看板中协作
|
|
150
|
+
- 打开看板上的任意任务卡片。
|
|
151
|
+
- 点击 **[Собрать пайплайн / 装配工作流]**。
|
|
152
|
+
- 选择复杂度预设或采用自动分流。
|
|
153
|
+
- 任务卡片实时展示各阶段进度,任务完成自动推进至 `Review` 状态。
|
|
154
|
+
|
|
55
155
|
---
|
|
56
156
|
|
|
57
|
-
## 🧪
|
|
157
|
+
## 🧪 自动化测试与打包验证
|
|
158
|
+
|
|
159
|
+
执行原生测试套件(121 个用例全部通过,零外部网络依赖):
|
|
58
160
|
|
|
59
161
|
```bash
|
|
60
162
|
node --test test/*.test.mjs
|
|
61
163
|
```
|
|
62
164
|
|
|
63
|
-
|
|
64
|
-
|
|
165
|
+
验证 npm 打包体积合规性(严格低于 256 KiB 上限):
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
npm pack --dry-run --json
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## 🖼️ 视觉设计验收效果
|
|
174
|
+
|
|
175
|
+
v0.1.6 生产环境验收效果 — 设置面板暗色与亮色主题对照:
|
|
176
|
+
|
|
177
|
+

|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## 📄 开源协议
|
|
182
|
+
|
|
183
|
+
MIT © [GooDAnDReaDY](https://github.com/GooDAnDReaDY)
|
package/lib/client.js
CHANGED
|
@@ -14,6 +14,10 @@ window.__ModuleLoader__.load({
|
|
|
14
14
|
const h = React.createElement
|
|
15
15
|
|
|
16
16
|
const NS = 'dsh-agent-orchestrator'
|
|
17
|
+
// Plugins page row seat (DSH 0.1.6-alpha.2): key = '<package name>#<row id>'.
|
|
18
|
+
const PKG = '@goodandready/dsh-agent-orchestrator'
|
|
19
|
+
const ROW_ID = 'dsh-agent-orchestrator'
|
|
20
|
+
const ROW_CONFIG_KEY = PKG + '#' + ROW_ID
|
|
17
21
|
|
|
18
22
|
// ErrorBoundary to guard against any component rendering exceptions
|
|
19
23
|
class ErrorBoundary extends React.Component {
|
|
@@ -498,8 +502,9 @@ window.__ModuleLoader__.load({
|
|
|
498
502
|
}
|
|
499
503
|
|
|
500
504
|
// --- Main Settings Card ---
|
|
501
|
-
function OrchestratorSettingsCard() {
|
|
502
|
-
const
|
|
505
|
+
function OrchestratorSettingsCard(props) {
|
|
506
|
+
const page = !!(props && props.view === 'page')
|
|
507
|
+
const [isOpen, setIsOpen] = useState(!!page)
|
|
503
508
|
const [activeTab, setActiveTab] = useState('roles')
|
|
504
509
|
const [config, setConfig] = useState(null)
|
|
505
510
|
const [metrics, setMetrics] = useState({})
|
|
@@ -575,12 +580,21 @@ window.__ModuleLoader__.load({
|
|
|
575
580
|
}
|
|
576
581
|
}
|
|
577
582
|
|
|
578
|
-
|
|
583
|
+
// #139: the row seat (plugins.row.config) asks for two views. The summary is a
|
|
584
|
+
// one-liner; the page renders the form expanded and without our card chrome,
|
|
585
|
+
// because the host page draws the title, icon, crumb and padding itself.
|
|
586
|
+
if (props && props.view === 'summary') {
|
|
587
|
+
return h('div', { className: 'dso-sub' },
|
|
588
|
+
'Decomposes tasks into 12 specialized roles with DAG execution.')
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
return h(page ? 'div' : 'li', { className: page ? 'dso-page' : 'dso-card' },
|
|
579
592
|
h('button', {
|
|
580
593
|
type: 'button',
|
|
581
594
|
className: 'dso-head',
|
|
595
|
+
style: page ? { display: 'none' } : undefined,
|
|
582
596
|
onClick: () => setIsOpen(!isOpen),
|
|
583
|
-
'aria-expanded': isOpen,
|
|
597
|
+
'aria-expanded': page ? true : isOpen,
|
|
584
598
|
},
|
|
585
599
|
h('div', { className: 'dso-head-info' },
|
|
586
600
|
h('div', { className: 'dso-title' },
|
|
@@ -1276,8 +1290,21 @@ window.__ModuleLoader__.load({
|
|
|
1276
1290
|
}
|
|
1277
1291
|
|
|
1278
1292
|
// Issue #139: settings.plugin.item does not render in DSH core 0.1.6-alpha.2+.
|
|
1279
|
-
//
|
|
1280
|
-
// plugins.item
|
|
1293
|
+
// Primary seat is plugins.row.config (the plugin's own row on the Plugins page);
|
|
1294
|
+
// settings.plugins.tab, plugins.item and settings.section stay as fallbacks.
|
|
1295
|
+
|
|
1296
|
+
// 0. Row seat on the Plugins page — the seat the current core renders
|
|
1297
|
+
registerSlotSafe(
|
|
1298
|
+
'plugins.row.config',
|
|
1299
|
+
{
|
|
1300
|
+
name: 'plugins.row.config',
|
|
1301
|
+
key: ROW_CONFIG_KEY,
|
|
1302
|
+
order: 20,
|
|
1303
|
+
locale: NS,
|
|
1304
|
+
inject: () => ({ ctx }),
|
|
1305
|
+
},
|
|
1306
|
+
(props) => h(ErrorBoundary, null, h(OrchestratorSettingsCard, { ...props, ctx: props.ctx || ctx }))
|
|
1307
|
+
)
|
|
1281
1308
|
|
|
1282
1309
|
// 1. Official tab in Settings -> Plugins
|
|
1283
1310
|
registerSlotSafe(
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@goodandready/dsh-agent-orchestrator",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"description": "Multi-agent task decomposition, DAG workflow orchestration, and prompt caching optimizer for DeepSeek Harness.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -90,5 +90,6 @@
|
|
|
90
90
|
"publishConfig": {
|
|
91
91
|
"registry": "https://registry.npmjs.org",
|
|
92
92
|
"access": "public"
|
|
93
|
-
}
|
|
93
|
+
},
|
|
94
|
+
"author": "GooDAnDReaDY <support@goodandready.app>"
|
|
94
95
|
}
|