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

@@ -121,6 +121,49 @@ ${MEMORY_LESSONS}"
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