feat: add per-workflow model assignment configuration

This commit is contained in:
2026-04-04 08:38:34 +02:00
parent e09538e5e0
commit 30ddc6a2c4
3 changed files with 73 additions and 0 deletions

View File

@@ -26,6 +26,30 @@ memory:
max_lessons: 10 max_lessons: 10
decay_after_runs: 10 decay_after_runs: 10
# Models — default and per-archetype/per-workflow model selection.
# ArcheFlow reads this to assign models to agents. The default applies unless overridden.
models:
default: sonnet
# Per-archetype overrides (uncomment to customize):
# archetypes:
# explorer: haiku # Cheap model for research/exploration
# creator: sonnet # Creative tasks need stronger model
# maker: sonnet # Implementation needs full capability
# guardian: sonnet # Security review — don't skimp
# skeptic: haiku # Assumption checking is analytical
# sage: haiku # Quality review can use cheaper model
# trickster: sonnet # Adversarial testing benefits from stronger model
# Per-workflow overrides (uncomment to customize):
# workflows:
# fast:
# default: haiku # Fast workflow uses cheaper models by default
# archetypes:
# guardian: sonnet # Except Guardian — always needs strong model
# standard:
# default: sonnet
# thorough:
# default: sonnet
# Progress # Progress
progress: progress:
enabled: true enabled: true

View File

@@ -89,6 +89,12 @@ Events are optional — if the events dir doesn't exist, skip logging. Never let
--- ---
## Model Configuration
Model assignment per archetype and workflow is configured in `.archeflow/config.yaml` under the `models:` section. The `archeflow:run` skill (section 0c) handles resolution with fallback chain: per-workflow per-archetype > per-workflow default > per-archetype > global default. When spawning agents manually, read the config to select the appropriate model.
---
## Step 1: Plan Phase ## Step 1: Plan Phase
Spawn agents sequentially — Creator needs Explorer's findings. Spawn agents sequentially — Creator needs Explorer's findings.

View File

@@ -121,6 +121,49 @@ ${MEMORY_LESSONS}"
fi fi
``` ```
#### 0c. Model Configuration
Read model assignment from `.archeflow/config.yaml` and resolve the model for each archetype based on the current workflow. Per-workflow overrides take precedence over per-archetype overrides, which take precedence over the default.
```bash
CONFIG=".archeflow/config.yaml"
# Read default model
DEFAULT_MODEL=$(grep -A1 '^models:' "$CONFIG" 2>/dev/null | grep 'default:' | sed 's/.*default:\s*//' | tr -d '"' | head -1)
DEFAULT_MODEL="${DEFAULT_MODEL:-sonnet}"
# Resolve model for a given archetype and workflow
# Usage: resolve_model <archetype> <workflow>
resolve_model() {
local arch="$1" wf="$2" model=""
# Check per-workflow per-archetype override
model=$(sed -n "/workflows:/,\$p" "$CONFIG" 2>/dev/null \
| sed -n "/${wf}:/,/^ [a-z]/p" \
| grep -A1 "archetypes:" | grep "${arch}:" \
| sed "s/.*${arch}:\s*//" | tr -d '"' | head -1)
[[ -n "$model" ]] && echo "$model" && return
# Check per-workflow default
model=$(sed -n "/workflows:/,\$p" "$CONFIG" 2>/dev/null \
| sed -n "/${wf}:/,/^ [a-z]/p" \
| grep 'default:' | sed 's/.*default:\s*//' | tr -d '"' | head -1)
[[ -n "$model" ]] && echo "$model" && return
# Check per-archetype override
model=$(sed -n "/^ archetypes:/,/^ [a-z]/p" "$CONFIG" 2>/dev/null \
| grep "${arch}:" | sed "s/.*${arch}:\s*//" | tr -d '"' | head -1)
[[ -n "$model" ]] && echo "$model" && return
# Fall back to default
echo "$DEFAULT_MODEL"
}
# Example: EXPLORER_MODEL=$(resolve_model explorer "$WORKFLOW")
```
Use `resolve_model` when spawning each agent to pass the correct model. The resolved model can be included in the `agent.start` event data for cost tracking.
--- ---
### 1. Plan Phase ### 1. Plan Phase