π― O Que E Archon e Por Que Existe
Archon e o "harness builder" criado por Cole Medin. Ele permite construir workflows que orquestram multiplas sessoes de coding agent para tarefas maiores. A diferenca fundamental para o loop puro: voce define o processo, nao o agente. No loop puro, o agente decide como progredir. No Archon, voce determina os steps e o agente executa dentro de cada um.
π§± Loop Puro vs Workflow Deterministico
Loop Puro (/loop)
- Agente decide os proximos passos
- Uma sessao para tudo
- Um modelo para tudo
- Context bloat inevitavel
- Sem observabilidade nativa
Workflow Archon
- Humano define a sequencia de steps
- Sessao separada por step
- Modelo diferente por step
- Contexto fresco a cada step
- Logs e dashboard integrados
Cole Medin explica a motivacao direta: "Archon is my harness builder, allows us to build workflows that orchestrate many coding agent sessions to handle larger tasks." A ideia e que um workflow como "fix GitHub issue" nao precisa de um agente decidindo como resolver. O processo e conhecido: extrair contexto, classificar, pesquisar, implementar, validar, criar PR.
π§ Anatomia do Workflow "Fix GitHub Issue"
O workflow mais classico do Archon e o "Fix GitHub Issue". Cole Medin usa isso no dia a dia: "Most of the input for my day-to-day work is issues in a repo. Either I'll create them or someone else will." O workflow segue uma sequencia fixa de steps, cada um com um papel especifico.
π Steps do Workflow
Step 1: Extract Issue Number
Deterministico. Extrai o numero da issue via regex ou API do GitHub. Sem LLM.
Tipo: deterministic | Modelo: nenhumStep 2: Fetch Issue Context
Deterministico. Busca titulo, descricao, labels, comments da issue via GitHub API.
Tipo: deterministic | Modelo: nenhumStep 3: Classify
LLM decide: e um bug ou uma feature? O resto do workflow muda conforme essa decisao.
Tipo: LLM | Modelo: Haiku / Kimi K2.7 (barato)Step 4: Research & Investigate
Explora o codebase, identifica arquivos relevantes, entende o contexto do problema.
Tipo: LLM | Modelo: Kimi K2.7 (exploracao)Step 5: Implement
Escreve o codigo real. Aqui sim precisa de um modelo forte.
Tipo: LLM | Modelo: Claude Code (forte)Step 6: Validate
Roda testes, linting, verifica se a issue foi resolvida. Pode ser deterministico ou LLM para review.
Tipo: mixed | Modelo: Codex para reviewStep 7: Create PR
Cria a pull request com descricao baseada no contexto acumulado dos steps anteriores.
Tipo: deterministic + LLM | Modelo: ClaudeO ponto chave: "We're not having the agent drive the entire thing. It's more deterministic because we set up the process in this workflow file." Voce define os steps, o Archon garante que eles executam na ordem certa, e cada step roda numa sessao isolada com o modelo ideal para aquela tarefa.
π§© A Filosofia: Tirar Decisao do Agente
O principio fundamental do Archon e contra-intuitivo: quanto menos o agente decide, melhor o resultado. Cole Medin deixa isso explicito: "We want to actually take the decision away from the coding agent as much as we can, only applying the reasoning of the LLM when we actually need it to write the code."
Onde Usar LLM vs Onde Nao Usar
Precisa de LLM
- *Classificar tipo de issue (bug vs feature)
- *Pesquisar codebase e entender contexto
- *Escrever codigo de implementacao
- *Code review semantico
Nao Precisa de LLM
- *Extrair numero da issue (regex)
- *Buscar dados da issue (API call)
- *Rodar testes (npm test)
- *Criar PR (gh pr create)
π» Exemplo: Step Deterministico em TypeScript
// Step deterministico: nao precisa de LLM
async function extractIssueNumber(input: string): Promise<number> {
const match = input.match(/issues\/(\d+)/);
if (!match) throw new Error("Invalid issue URL");
return parseInt(match[1], 10);
}
// Step deterministico: API call pura
async function fetchIssueContext(owner: string, repo: string, num: number) {
const res = await fetch(
`https://api.github.com/repos/${owner}/${repo}/issues/${num}`,
{ headers: { Authorization: `token ${process.env.GITHUB_TOKEN}` } }
);
return res.json();
}
// Step LLM: aqui sim o agente precisa raciocinar
async function classifyIssue(context: IssueContext): Promise<"bug" | "feature"> {
// Roda num modelo barato (Haiku, Kimi K2.7)
const response = await llm.complete({
model: "haiku",
prompt: `Classify this GitHub issue as "bug" or "feature":\n${context.title}\n${context.body}`
});
return response.trim() as "bug" | "feature";
}
π€ Ponto de Reflexao
Essa filosofia e o que Cole Medin chama de "layering on top of loop engineering". Voce nao abandona loops completamente. Voce pega as partes boas (automacao, ciclos) e adiciona uma camada de controle humano. O resultado: menos token waste, mais previsibilidade, mais facil de debuggar.
π Mix de Modelos: O Modelo Certo para Cada Step
Um dos maiores problemas do loop puro com /loop ou /routines: "You're just using one model for pretty much everything. That's part of the problem of why it's so expensive." No Archon, cada node do workflow pode usar um modelo diferente, otimizando custo sem perder qualidade.
ποΈ Mapa de Modelos por Step
| Step | Modelo Sugerido | Justificativa | Custo Relativo |
|---|---|---|---|
| Extract / Fetch | Nenhum (API) | Deterministico, sem raciocinio | $0 |
| Classify | Haiku / Kimi K2.7 | Decisao simples, nao precisa de modelo caro | $ |
| Research | Kimi K2.7 | Exploracao de codebase, context loading | $$ |
| Implement | Claude Code | Escrita de codigo real, precisa qualidade | $$$ |
| Validate | Testes + Codex | Testes sao deterministicos, review e LLM | $$ |
Cole Medin demonstra na pratica: "We can use Cloud Code for the implementation. And then we can use Codex for the review. And then for all of our context loading and exploration up front, we can use a smaller model like Kimi K 2.7." Isso e model routing aplicado a workflows de agentes.
π‘ Dica Pratica
A regra geral: use modelos baratos para decisoes, modelos fortes para criacao. Classificar uma issue como bug vs feature nao precisa de Opus. Escrever o fix precisa. A diferenca de custo pode ser 10x ou mais por step.
πΎ Durabilidade: State em Postgres/Neon
Uma das maiores fraquezas do loop basico: se o terminal fecha, voce perde tudo. Archon resolve isso guardando todo o estado num banco externo. "All of the loops that we run and the different events and logs, I'm storing this here so we can always resume a workflow later on."
π» Schema Simplificado: Durabilidade com Neon
-- Cada run tem um ID e estado persistente
CREATE TABLE workflow_runs (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
workflow_id TEXT NOT NULL,
status TEXT DEFAULT 'running', -- running | paused | completed | failed
input JSONB NOT NULL,
state JSONB DEFAULT '{}',
created_at TIMESTAMPTZ DEFAULT now(),
updated_at TIMESTAMPTZ DEFAULT now()
);
-- Cada step registra sua execucao
CREATE TABLE step_executions (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
run_id UUID REFERENCES workflow_runs(id),
step_name TEXT NOT NULL,
status TEXT DEFAULT 'pending', -- pending | running | completed | failed
input JSONB,
output JSONB,
model_used TEXT,
tokens_used INTEGER DEFAULT 0,
started_at TIMESTAMPTZ,
finished_at TIMESTAMPTZ
);
-- Logs de conversacao para replay
CREATE TABLE conversation_logs (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
run_id UUID REFERENCES workflow_runs(id),
step_name TEXT NOT NULL,
role TEXT NOT NULL, -- system | user | assistant
content TEXT NOT NULL,
created_at TIMESTAMPTZ DEFAULT now()
);
Cole Medin enfatiza: "I have all my conversations, the code bases that I'm operating on with Archon, everything is durable and it's super easy to resume any work that I'm doing." Com o estado num banco Postgres (Neon), voce pode: retomar workflows apos crash, ver o historico completo de cada run, e auditar decisoes do agente.
π€ Ponto de Reflexao
Durabilidade nao e um "nice to have" para loops serios. E um requisito. Se voce esta rodando um loop de 2 horas e a maquina reinicia no minuto 90, sem state externo voce perdeu tudo. Com Neon/Postgres, voce retoma do step exato onde parou. O custo de setup (uma hora de config) se paga na primeira falha que voce NAO perde.
β Questionamentos: Archon vs Loop Puro
Archon resolve muitos problemas do loop puro, mas introduz sua propria complexidade. Vale a pena ser honesto sobre os trade-offs.
Questoes Abertas
Quando o workflow deterministico limita demais?
Se voce define todos os steps rigidamente, perde a capacidade do agente de improvisar. Para tarefas exploratΓ³rias (provas de conceito, ideacao), o loop puro pode ser mais adequado porque o agente precisa de liberdade para descobrir caminhos inesperados.
O overhead de engenharia compensa?
Configurar Archon, definir workflows, manter Postgres: e engenharia real. Para uma tarefa unica, provavelmente nao compensa. Para tarefas repetitivas (processar issues todo dia), compensa muito rapido. Cole Medin usa Archon diariamente para issues.
Harness engineering vs loop engineering?
Cole Medin propoe: "I would just fold loop engineering into harness engineering. It doesn't quite deserve its own buzzword." A visao e que loops sao uma ferramenta dentro de um harness maior, nao um paradigma separado. O harness define o processo, os loops executam partes dele.
π― Resumo da Escolha
- *Loop puro: ideal para exploraΓ§Γ£o, PoCs, tarefas simples e unicas
- *Archon/Workflow: ideal para tarefas repetitivas, multi-step, com custo controlado
- *Hibrido: workflow deterministico com loops internos nos steps que precisam de iteracao
π Resumo do Modulo
Proximo Modulo:
3.3 - Dashboard de Controle (Agent Control Plane): como observar decisoes do orchestrator em tempo real e adicionar human-in-the-loop