Skip to content

Factory-arkkitehtuuri — 7 kerrosta

Tehtaan 7 kerrosta: Orchestration → Agent Layer → Tools & Execution → Memory & Context → Validation & Guardrails → Observability → Integration. Sessiot 1–3 rakensivat kerrokset 2–5; sessio 4 lisää 1, 6 ja 7.

SW Builders
Advanced
45 min

Tehdas ei ole "yksi iso prompt". Se on orkestroitu pipeline, jolla on selkeät vastuukerrokset. Tunnetaan rakenne — voit suunnitella, debuggata ja skaalata sitä.

7 kerrosta

┌──────────────────────────────────────────────────────────┐
│ 7. Integration       │ CI/CD, repot, issue trackers       │
├──────────────────────────────────────────────────────────┤
│ 6. Observability     │ Lokit, traces, kustannusseuranta   │
├──────────────────────────────────────────────────────────┤
│ 5. Validation        │ Testit, hookit, hyväksyntäportit   │
│    & Guardrails      │                                    │
├──────────────────────────────────────────────────────────┤
│ 4. Memory & Context  │ RAG, session state, learnings      │
├──────────────────────────────────────────────────────────┤
│ 3. Tools & Execution │ CLI, MCP, APIt, sandboxit          │
├──────────────────────────────────────────────────────────┤
│ 2. Agent Layer       │ Planner, Builder, Reviewer ...     │
├──────────────────────────────────────────────────────────┤
│ 1. Orchestration     │ Spec intake, routing, loops        │
└──────────────────────────────────────────────────────────┘

Mappi sessioihin

KerrosMitä se tekeeMissä sessio se opittiin
7. IntegrationYhteys CI/CD:hen, GitHubiin, Lineariin, SlackiinSessio 4 (uusi)
6. ObservabilityMittaa: kustannus, latenssi, success rate, decisionsSessio 4 (uusi)
5. Validation & GuardrailsTestit, lintit, blocked patterns, hyväksyntäportitSessio 1 (TDD), Sessio 3 (guardrails)
4. Memory & ContextWorking / episodic / RAG-knowledgeSessio 3 (RAG, muisti)
3. Tools & ExecutionCLI vs MCP, sandbox-suoritusSessio 3 (tools)
2. Agent LayerRoolit: planner, builder, reviewerSessio 2 (sub-agents), Sessio 3 (full agents)
1. OrchestrationSpec intake, routing, loop controlSessio 4 (uusi)

Kerros 1: Orchestration — uusi taso

Tämä on tehtaan "äiti-prosessi". Se päättää:

  • Mikä spec tulee sisään? (intake — käyttäjä, ticket, automation trigger)
  • Mikä agentti hoitaa? (routing — analyzer? planner? builder?)
  • Milloin lopetaan? (loop control — max-iteraatiot, success criteria)

Orchestration layer

Orchestration-kerros on tehtaan single source of truth: kaikki agentit raportoivat sille, kaikki päätökset menevät sen läpi. Ilman tätä kerrosta saat bag-of-agents -antipatternin: agentit konfliktoivat, duplikoivat työtä, kukaan ei tiedä kuka on vastuussa.

Esimerkki: minimaalinen orchestratorpython
class FactoryOrchestrator:
  def __init__(self, spec_path: str):
      self.spec = load_spec(spec_path)
      self.agents = {
          "analyzer": AnalyzerAgent(allowed_tools=["read", "grep"]),
          "planner":  PlannerAgent(allowed_tools=["read", "grep"]),
          "builder":  BuilderAgent(allowed_tools=["read", "edit", "bash"]),
          "reviewer": ReviewerAgent(allowed_tools=["read"]),
      }
      self.max_iterations = self.spec.get("max_iterations", 5)

  def run(self) -> dict:
      # Routing — orchestrator päättää järjestyksen
      analysis = self.agents["analyzer"].run(self.spec)
      plan     = self.agents["planner"].run(self.spec, analysis)

      for i in range(self.max_iterations):
          implementation = self.agents["builder"].run(plan)
          verdict        = self.agents["reviewer"].run(implementation, self.spec)

          if verdict["status"] == "approved":
              return {"status": "success", "iterations": i + 1}
          plan = self._adjust_plan(plan, verdict)

      return {"status": "max_iterations_exceeded"}

Kerros 6: Observability — uusi taso

Mitä et mittaa, et voi parantaa. Factoryn observability on välttämätön — ei "nice to have".

Mitä mitataan

MetriikkaMiksi
Cost per run ($)Paljastaa agentin liikakulutuksen heti
Wall-time per run (s)Käyttökokemus + ROI
Success rate (%)Lähtee kontrollista hiljaa
Iterations to convergeSpec-laatu — paljon iteraatioita = huono spec
Decision traceCompliance + debuggaus
Tool usage histogramMikä tool maksaa, mikä epäonnistuu
Esimerkki: structured log per iterationjson
{
"run_id": "run_2026-05-01T10:23:45_abc123",
"iteration": 3,
"agent": "builder",
"timestamp_ms": 1714553025123,
"decision": "edit_file",
"rationale": "Added timeout to fetch() per spec AC2",
"tool_call": {
  "name": "edit",
  "args": {"path": "src/api.ts", "diff_size": 42}
},
"tokens_in": 1284,
"tokens_out": 312,
"cost_usd": 0.0089,
"duration_ms": 1872
}

Pro tip

Tee structured logging päivänä 1. Älä lisää sitä jälkikäteen — se on aina liian myöhäistä. Kun bugi ilmenee tuotannossa, et halua arvuutella, mitä agentti teki — haluat grep-yhtä JSON-loki-rivistöstä.

Kerros 7: Integration — uusi taso

Tehdas elää siellä missä työ tapahtuu: Github, Slack, Linear, CI/CD.

IntegraatioMitä se mahdollistaa
GitHub webhook → factoryPR open → factory ajetaan → status check
Slack /factory commandKäyttäjä laukaisee factoryn chatistä
Linear webhook → factoryIssue assigned → factory analyysoi + ehdottaa fixiä
CI/CD → factoryFailing build → factory triagaa ennen kuin developer herää

Factory on tuottava vain kun se istuu työnkulussa. Erillinen "AI-työkalu" jota pitää muistaa avata = ei käytetä.

Quick check — Mitä jo rakensit?

Quiz

Mihin kerrokseen Sessio 3:n RAG-memory-skill kuuluu?

Quiz

Tiimisi PR-katselmointi-agentti palauttaa joskus eri verdiktin samalle PR:lle eri ajoilla. Mikä kerros ratkaisee tämän?

Yhteenveto

  • 🏗️ Factory on 7 kerrosta, ei "yksi prompt"
  • 🆕 Sessio 4 lisää 3 uutta: Orchestration, Observability, Integration
  • 📊 Observability ennen tuotantoa — ei jälkikäteen
  • 🔌 Integration sinne missä työ tapahtuu — älä rakenna erillistä "AI-portaalia"
  • ✅ Aiemmat sessiot rakensivat keskimmäiset kerrokset (2–5)

Seuraavassa oppitunnissa: Roolit ja policyt — miten sama backend tuottaa eri käyttäytymistä ja miksi se on factoryn säätimen ydin.

Sign in to track your progress

Sign in

Questions and answers

Sign in to participate in the discussion