workflow-ai 1.0.55 → 1.0.56
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/configs/pipeline.yaml +18 -8
- package/package.json +1 -1
- package/src/runner.mjs +14 -4
package/configs/pipeline.yaml
CHANGED
|
@@ -144,6 +144,9 @@ pipeline:
|
|
|
144
144
|
# counter: <string> — имя счётчика попыток для этого stage
|
|
145
145
|
# agent_by_type: — маршрутизация агента по типу задачи (task_type)
|
|
146
146
|
# <type>: <agent-id> — например: impl: claude-sonnet, arch: claude-opus
|
|
147
|
+
# <type>: — или расширенный формат с fallback_model:
|
|
148
|
+
# agent: <agent-id>
|
|
149
|
+
# fallback_model: <agent-id>
|
|
147
150
|
# agent_by_attempt: — ротация агента по номеру попытки
|
|
148
151
|
# <N>: <agent-id> — например: 1: qwen-code, 2: claude-sonnet
|
|
149
152
|
# goto: — логика переходов по результату
|
|
@@ -348,14 +351,21 @@ pipeline:
|
|
|
348
351
|
skill: execute-task
|
|
349
352
|
counter: task_attempts
|
|
350
353
|
agent_by_type:
|
|
351
|
-
coach:
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
354
|
+
coach:
|
|
355
|
+
agent: claude-coach
|
|
356
|
+
fallback_model: claude-sonnet
|
|
357
|
+
qa:
|
|
358
|
+
agent: claude-qa
|
|
359
|
+
fallback_model: claude-sonnet
|
|
360
|
+
impl:
|
|
361
|
+
agent: kilo-minimax
|
|
362
|
+
fallback_model: kilo-glm
|
|
363
|
+
arch:
|
|
364
|
+
agent: claude-opus
|
|
365
|
+
fallback_model: claude-sonnet
|
|
366
|
+
admin:
|
|
367
|
+
agent: kilo-minimax
|
|
368
|
+
fallback_model: kilo-glm
|
|
359
369
|
agent_by_attempt:
|
|
360
370
|
2: qwen-code
|
|
361
371
|
3: claude-sonnet
|
package/package.json
CHANGED
package/src/runner.mjs
CHANGED
|
@@ -796,6 +796,7 @@ class StageExecutor {
|
|
|
796
796
|
// 3. stage.agent — явно указанный агент stage
|
|
797
797
|
// 4. default_agent — глобальный дефолт
|
|
798
798
|
let agentId = stage.agent || this.pipeline.default_agent;
|
|
799
|
+
let fallbackModelId = stage.fallback_agent; // fallback_model из agent_by_type имеет приоритет
|
|
799
800
|
const attempt = (stage.counter && this.counters[stage.counter]) || 0;
|
|
800
801
|
|
|
801
802
|
// Фоллбэк: если task_type не задан, вычисляем из префикса ticket_id (PMA-005 → pma)
|
|
@@ -805,8 +806,17 @@ class StageExecutor {
|
|
|
805
806
|
|
|
806
807
|
if (attempt <= 1 && stage.agent_by_type && taskType) {
|
|
807
808
|
// Первая попытка: выбор по типу задачи
|
|
808
|
-
|
|
809
|
-
|
|
809
|
+
const agentConfig = stage.agent_by_type[taskType];
|
|
810
|
+
if (agentConfig) {
|
|
811
|
+
// Поддержка формата: { agent: string, fallback_model: string } или просто string
|
|
812
|
+
if (typeof agentConfig === 'object' && agentConfig.agent) {
|
|
813
|
+
agentId = agentConfig.agent;
|
|
814
|
+
if (agentConfig.fallback_model) {
|
|
815
|
+
fallbackModelId = agentConfig.fallback_model;
|
|
816
|
+
}
|
|
817
|
+
} else {
|
|
818
|
+
agentId = agentConfig;
|
|
819
|
+
}
|
|
810
820
|
if (this.logger) {
|
|
811
821
|
this.logger.info(`Agent by type: task_type="${taskType}" → ${agentId}`, stageId);
|
|
812
822
|
}
|
|
@@ -844,8 +854,8 @@ class StageExecutor {
|
|
|
844
854
|
this.fileGuard.takeSnapshot();
|
|
845
855
|
}
|
|
846
856
|
|
|
847
|
-
// Вызываем CLI-агента с поддержкой fallback
|
|
848
|
-
const result = await this.callAgentWithFallback(agent, prompt, stageId, stage.skill,
|
|
857
|
+
// Вызываем CLI-агента с поддержкой fallback (приоритет: fallback_model из agent_by_type > stage.fallback_agent)
|
|
858
|
+
const result = await this.callAgentWithFallback(agent, prompt, stageId, stage.skill, fallbackModelId);
|
|
849
859
|
|
|
850
860
|
// Логгируем завершение stage
|
|
851
861
|
if (this.logger) {
|