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 tutorial?
Podziel się nim ze znajomymi i kolegami, którym może się przydać!
📚 Powiązane Artykuły
Power-user workflow: Extended Thinking Megathink, Sessions i approvals
Przewodnik dla zaawansowanych użytkowników Claude Code: jak łączyć najdłuższe tryby myślenia, zapisy stanu i mechanizm approvals w złożonych projektach.
AI w pipeline frontendu: Plan Mode + hook PostToolUse dla pełnej automatyzacji
Jak skonfigurować Claude Code, by po zmianach komponentów AI planował zadania, formatował kod, uruchamiał astro check oraz wskazywał brakujące testy.
Hooki Claude Code jako CI light: lint, astro check, testy i Lighthouse
Budujemy zestaw hooków PostToolUse i Stop, które po każdej zmianie formatują kod, uruchamiają testy, generują coverage oraz raport dostępności.