OpenAI Agents JS jako router zadań dla Claude Code
Pokazujemy, jak agent w TypeScripcie triage’uje zadania, wybiera właściwego specjalistę i przekazuje je do Claude Code przez asTool i hooki.
1. Architektura rozwiązania
Z dokumentacji OpenAI Agents JS wynika, że agent może stać się narzędziem (asTool) dla innego agenta. Wykorzystamy to, aby triage w TypeScripcie decydował, czy zadanie powinno trafić do Claude Code (np. refaktoring frontendu), czy do innego bota (np. analizującego testy backendu). Pipeline składa się z:
- Agenta triage (JS) z handoffami i narzędziami,
- Hooka w Claude Code, który w razie potrzeby uruchamia
claudez odpowiednim promptem.
2. Definicja agenta triage
import { Agent } from "@openai/agents";
const frontendAssistant = new Agent({
name: "Frontend Claude",
instructions: `
Plan Mode: think deeply about frontend tasks, refactor Astro components,
run hook pipeline (prettier, astro check, build).
`,
});
const backendAssistant = new Agent({
name: "Backend Analyst",
instructions: "Analizuj logi serwera i testy integracyjne.",
});
const triage = new Agent({
name: "Task Router",
instructions: `
Oceniaj zgłoszenia. Jeśli dotyczą UI/Frontend, użyj Claude Code.
Jeśli dotyczą backendu, użyj backendowego agenta.
W razie wątpliwości poproś o doprecyzowanie.
`,
handoffs: [backendAssistant],
});
3. Zamiana Claude Code w narzędzie
W praktyce start Claude Code realizujesz z poziomu CLI, ale w routerze JS możesz przygotować funkcję, która przekaże prompt do Claude’a:
import { functionTool } from "@openai/agents";
import { execa } from "execa";
const claudeTool = functionTool({
name: "claude_frontend_task",
description: "Przekaż zadanie do Claude Code z Plan Mode i hookami.",
parameters: z.object({ prompt: z.string() }),
execute: async ({ prompt }) => {
const { stdout } = await execa("claude", [prompt], {
cwd: "/path/to/repo",
});
return stdout;
},
});
triage.update({ tools: [claudeTool] });
Teraz, kiedy triage uzna, że zadanie jest frontendowe, wywoła claude_frontend_task. Claude Code od strony CLI ma już skonfigurowane hooki (PostToolUse), więc automatycznie sformatuje kod, uruchomi astro check i build.
4. Integracja z hookami Claude Code
W ustawieniach .claude/settings.json dodaj dedykowany hook, który zapisze kontekst zadania:
{
"hooks": {
"SessionStart": [
{
"matcher": "*",
"hooks": [
{
"type": "command",
"command": "echo \"Task Context: $SESSION_ID\" >> logs/claude-router.log",
"timeout": 10
}
]
}
]
}
}
Do PostToolUse użyj konfiguracji z wcześniejszych artykułów (prettier, astro check, build), aby zapewnić CI-light pipeline.
5. Prognozowanie i raportowanie
Po zakończeniu zadania triage może wygenerować raport z result.newItems:
const run = await triage.run({
input: "Zrefaktoruj komponent hero i popraw animacje view transitions.",
});
const finalOutput = run.finalOutput;
const history = run.newItems.filter((item) => item.type === "RunToolCallItem");
console.log({ finalOutput, history });
W logach zobaczysz, które narzędzia były użyte (np. claude_frontend_task), a dzięki hookom Claude Code – jakie testy zostały uruchomione.
6. Wskazówki
- Delimituj prompy – w
claudenajlepiej przekazać pełny prompt (Plan Mode + Extended Thinking), aby Claude zrobił szczegółowy plan przed edycją. - Obsługuj błędy – jeśli CLI zwróci błąd, rzuć wyjątek w
execute, aby triage wiedział, że zadanie trzeba ponowić. - Rozszerz router – dodaj kolejne narzędzia (np.
Data Analyst) i pozwól triage-owi ważyć priorytety (dodatkowy guardrail lub scoring).
Taki układ pozwala centralnie zarządzać napływającymi zadaniami i automatycznie przekazywać je do Claude Code, gdzie hooki dbają o pełną jakość zmian w repozytorium.
📚 Dokumentacja i Zasoby
Oficjalna Dokumentacja
Powiązane Artykuły
Podobał Ci się ten artykuł?
Udostępnij go osobom, którym ten materiał może się przydać.
Powiązane artykuły
Automatyzacja frontendu: Plan Mode i hook PostToolUse
Sprawdź, jak skonfigurować Claude Code, aby planował zmiany, formatował kod, uruchamiał `astro check` i wskazywał brakujące testy.
Hooki Claude Code jako lekkie CI dla frontendu
Budujemy zestaw hooków PostToolUse i Stop, które po każdej zmianie formatują kod, uruchamiają testy i przygotowują raport jakości.
Analiza kodu w Claude Code: Plan Mode i hooki
Jak połączyć tryb tylko do odczytu, rozszerzone myślenie i hook PostToolUse, aby zaplanować refaktoryzację i zebrać metryki testów.