Back to "Semantische Intelligentie: Deel 10 - De DiSE Cooker: Wanneer hulpmiddelen koken zichzelf in workflows"

This is a viewer only at the moment see the article on how this works.

To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk

This is a preview from the server running through my markdig pipeline

AI AI-Article DiSE Cooker mostlylucid-dse Self-Optimization Tool Composition Workflow Evolution

Semantische Intelligentie: Deel 10 - De DiSE Cooker: Wanneer hulpmiddelen koken zichzelf in workflows

Wednesday, 19 November 2025

De finale van de Semantic Memory serie... het begin van iets vreemds.

Opmerking: Dit is deel 10, de laatste in de Semantic Memory serie en de eerste in de DiSE Cooker serie. We gaan van theorie naar praktijk, van "hoe gereedschappen werken" naar "wat gebeurt er als je ze daadwerkelijk gebruikt voor echte taken."

Het einde en het begin

Onderdelen 1-9 opgebouwd om dit: een systeem dat niet alleen code genereert, maar evolueert Tools die daar niet alleen zitten, maar leren een toolkit die niet alleen workflows uitvoert, maar herinnert elk succes en elke mislukking.

Nu beantwoorden we de vraag die niemand stelt, maar iedereen zou moeten hebben:

Wat gebeurt er als je dit ding gebruikt?

Niet voor speelgoed voorbeelden. Niet voor "hallo wereld." Voor een echte, rommelige, multi-stap taak die normale code generatie systemen absoluut zou stikken.

Dit is het scenario:

"Ga naar deze webpagina, haal de inhoud op, vat het samen, vertaal het naar het Spaans (met behulp van NMT maar controleer kwaliteit en gebruik iets beters indien nodig), maak dan een HTML-e-mail en stuur het met behulp van SendGrid."

Een enkele zin. Zeven verschillende operaties. Meerdere tools. Meerdere faalmodi. Meerdere optimalisatie mogelijkheden.

Laten we kijken hoe DiSE kookt.

Het verzoek: misleidend eenvoudig

DiSE> Fetch the article at https://example.com/blog/post, summarize it to 3 paragraphs, translate to Spanish with quality checking, create an HTML email template, and send it via SendGrid to [email protected]

Analyzing request...

Het systeem kreeg een samengestelde taak, niet een functie schrijven, niet een tekst vertalen. workflow met:

  • Web ophalen
  • Extractie van de inhoud
  • Samenvatting
  • Vertaling met validatie
  • HTML-generatie
  • E-maillevering via externe API

Traditionele LLM-codegeneratie zou ofwel:

  1. Genereer een massieve, broze monoliet
  2. Vraag je om het handmatig af te breken
  3. API's hallucineren die niet bestaan
  4. Geef het volledig op.

DiSE doet iets anders.

Fase 1: Taakafstelling

✓ Task classified as MULTI_STEP_WORKFLOW
✓ Complexity: COMPLEX (7 steps, 4 tools needed, 1 missing)
✓ Consulting overseer LLM for decomposition strategy...

De Overseer (llama3 of claude-3.5-sonnet, afhankelijk van uw installatie) analyseert het verzoek en creëert een workflow specificatie:

{
  "workflow_id": "article_to_spanish_email",
  "description": "Fetch, summarize, translate, and email article content",
  "steps": [
    {
      "step_id": "fetch_content",
      "description": "Fetch webpage content from URL",
      "tool_search": "http client fetch webpage",
      "parallel_group": null,
      "depends_on": []
    },
    {
      "step_id": "summarize",
      "description": "Summarize content to 3 paragraphs",
      "tool_search": "summarize text content",
      "parallel_group": null,
      "depends_on": ["fetch_content"]
    },
    {
      "step_id": "translate_nmt",
      "description": "Translate summary to Spanish using NMT",
      "tool_search": "nmt translator spanish",
      "parallel_group": 1,
      "depends_on": ["summarize"]
    },
    {
      "step_id": "validate_translation",
      "description": "Check translation quality",
      "tool_search": "translation quality validation",
      "parallel_group": 1,
      "depends_on": ["summarize"]
    },
    {
      "step_id": "retry_if_needed",
      "description": "Use better translator if NMT quality is poor",
      "tool_search": "high quality translation",
      "parallel_group": null,
      "depends_on": ["translate_nmt", "validate_translation"],
      "conditional": "quality_score < 0.7"
    },
    {
      "step_id": "create_html",
      "description": "Generate HTML email template with translated content",
      "tool_search": "html email template generator",
      "parallel_group": null,
      "depends_on": ["retry_if_needed"]
    },
    {
      "step_id": "send_email",
      "description": "Send email via SendGrid API",
      "tool_search": "sendgrid email send",
      "parallel_group": null,
      "depends_on": ["create_html"]
    }
  ],
  "estimated_complexity": "complex",
  "requires_new_tools": ["sendgrid_client", "html_email_generator"]
}

Let op wat er gebeurd is:

  • Parallelle uitvoering: Vertaling en validatie lopen tegelijkertijd (parallel_groep: 1)
  • Voorwaardelijke logica: Retry stap alleen triggers als de kwaliteit is slecht
  • Afhankelijkheidstracking: Elke stap weet wat hij nodig heeft
  • Vereisten voor gereedschap: Systeem weet al welke instrumenten er bestaan en welke moeten worden gecreëerd

Fase 2: Tool Discovery

Searching for tools...
  ✓ fetch_content: Found 'http_rest_client' (fitness: 0.92)
  ✓ summarize: Found 'summarizer_fast' (fitness: 0.88)
  ✓ translate_nmt: Found 'nmt_translator' (fitness: 0.85)
  ✓ validate_translation: Found 'translation_quality_checker' (fitness: 0.91)
  ✓ retry_if_needed: Found 'quick_translator' (fitness: 0.93)
  ✗ create_html: No suitable tool found
  ✗ send_email: No suitable tool found

Missing tools: 2
Action: Generate new tools for missing capabilities

Het systeem heeft net zijn RAG geheugen doorzocht naar bestaande tools met behulp van semantische overeenkomst en fitnessscoresEr bestaan vijf gereedschappen, twee niet.

Hier wordt het interessant.

Fase 3: On-The-Fly Tool Generation

Hulpmiddel 1: HTML-e-mailgenerator

Generating tool: html_email_generator
  Using: fast_code_generator (gemma3:4b)
  Specification: Create HTML email template with header, body, footer
  Template type: Newsletter-style responsive HTML

  ✓ Code generated (127 lines)
  ✓ Tests generated (15 test cases)
  ✓ All tests passed
  ✓ Static analysis: PASS (pylint: 9.2/10)
  ✓ Registered in RAG memory
  ✓ Version: 1.0.0
  ✓ Fitness: 0.87 (estimated)

Het systeem

  1. Genereerde een complete gereedschapsdefinitie (YAML)
  2. Genereerde de implementatiecode (Python)
  3. Gegenereerde uitgebreide tests
  4. Gevalideerde codekwaliteit
  5. Opgeslagen voor toekomstig hergebruik
  6. Alles in ongeveer 8 seconden

Tool 2: SendGrid Client

Generating tool: sendgrid_email_client
  Type: openapi (external API integration)
  Analyzing SendGrid API documentation...
  Creating OpenAPI specification...

  ✓ Tool definition created
  ✓ Code template generated (API wrapper)
  ✓ Authentication configured (API key from env)
  ✓ Rate limiting: 100 req/min
  ✓ Retry logic: 3 attempts with exponential backoff
  ✓ Registered in RAG memory
  ✓ Version: 1.0.0
  ✓ Fitness: 0.82 (estimated, needs real-world data)

Wacht, het systeem... een OpenAPI-integratietool aangemaakt Vanaf nul.

  1. De API-structuur van SendGrid geanalyseerd
  2. Een gereedschapsdefinitie aangemaakt
  3. Authenticatieafhandeling aangemaakt
  4. Toegevoegde veerkracht (invalidatie, snelheidsbeperking)
  5. Maakte het onmiddellijk bruikbaar

We hebben nu 2 gloednieuwe gereedschappen die 15 seconden geleden niet bestonden.

Fase 4: Uitvoering van de workflow

Dit is waar de magie echt gebeurt. Het systeem voert de workflow uit met volledige waarneembaarheid:

graph TB
    Start([User Request]) --> Fetch[Step 1: Fetch Content<br/>Tool: http_rest_client<br/>URL: example.com/blog/post]

    Fetch --> |200 OK<br/>4,521 bytes| Summarize[Step 2: Summarize<br/>Tool: summarizer_fast<br/>Target: 3 paragraphs]

    Summarize --> |652 words → 187 words| Parallel{Parallel Execution}

    Parallel --> |Branch A| Translate[Step 3: Translate NMT<br/>Tool: nmt_translator<br/>Language: Spanish]
    Parallel --> |Branch B| ValidateSetup[Step 3b: Quality Check Setup<br/>Tool: translation_quality_checker]

    Translate --> |"Artículo sobre..."<br/>3.2s| Validate[Step 4: Validate Translation<br/>Quality Score: 0.64]

    Validate --> |Score: 0.64 < 0.7<br/>POOR QUALITY| Retry[Step 5: Retry with Better Tool<br/>Tool: quick_translator<br/>llama3-based]

    Retry --> |Quality Score: 0.92<br/>HIGH QUALITY| HTML[Step 6: Create HTML Email<br/>Tool: html_email_generator<br/>NEW TOOL v1.0.0]

    HTML --> |Template: 2,341 chars| Send[Step 7: Send via SendGrid<br/>Tool: sendgrid_email_client<br/>NEW TOOL v1.0.0]

    Send --> |Message ID: msg_7x3f...<br/>Status: Queued| Success([✓ Workflow Complete<br/>Total: 18.7s])

    style Fetch stroke:#1976d2,stroke-width:3px,color:#1976d2
    style Summarize stroke:#388e3c,stroke-width:3px,color:#388e3c
    style Translate stroke:#f57c00,stroke-width:3px,color:#f57c00
    style Validate stroke:#c2185b,stroke-width:3px,color:#c2185b
    style Retry stroke:#7b1fa2,stroke-width:3px,color:#7b1fa2
    style HTML stroke:#00796b,stroke-width:3px,color:#00796b
    style Send stroke:#3f51b5,stroke-width:3px,color:#3f51b5
    style Success stroke:#2e7d32,stroke-width:4px,color:#2e7d32

Wat is er eigenlijk gebeurd?

Stap 1 (Fetch Content):

# Generated code (simplified)
from node_runtime import call_tool
import json

result = call_tool("http_rest_client", json.dumps({
    "url": "https://example.com/blog/post",
    "method": "GET",
    "headers": {"Accept": "text/html"}
}))

data = json.loads(result)
raw_html = data['body']
# Result: 4,521 bytes of HTML

Uitvoeringstijd: 1.2s Cache-status: MISS (eerste keer deze URL ophalen) Opgeslagen in RAG voor toekomstig hergebruik

Stap 2 (Summarize):

summary = call_tool("summarizer_fast", json.dumps({
    "text": raw_html,
    "max_paragraphs": 3,
    "preserve_key_points": True
}))
# Result: 187-word summary

Uitvoeringstijd: 2.8s Gebruikt model: lama3 via summaryr_fast tool Cache-status: MISS Kwaliteitsscore: 0,89 (uitstekend)

Stap 3 & 4 (parallel: Vertalen + Valideren):

Dit is waar parallelisme schijnt:

import asyncio
from node_runtime import call_tools_parallel

# Both execute simultaneously
results = call_tools_parallel([
    ("nmt_translator", json.dumps({
        "text": summary,
        "source_lang": "en",
        "target_lang": "es",
        "beam_size": 5
    }), {}),
    # Validation setup runs in parallel
    ("translation_quality_checker", json.dumps({
        "setup": True,
        "target_lang": "es"
    }), {})
])

translation_result, validation_setup = results

Tijd voor parallelle uitvoering:

  • Zonder parallellisme: 3.2s + 2.1s = 5.3s
  • met parallellisme: max(3,2s, 2.1s) = 3,2s
  • Gespaard: 2,1 seconden (40% sneller)

Het vertaalkwaliteitsprobleem:

# Validate the NMT translation
quality = call_tool("translation_quality_checker", json.dumps({
    "original": summary,
    "translation": translation_result,
    "source_lang": "en",
    "target_lang": "es"
}))

quality_data = json.loads(quality)
# Result: {
#   "score": 0.64,
#   "issues": [
#     "Repeated words: 'articulo articulo'",
#     "Grammar inconsistency detected",
#     "Potential word-by-word translation"
#   ],
#   "recommendation": "RETRY_WITH_BETTER_MODEL"
# }

Het systeem detecteerde slechte kwaliteit! NMT was snel (3.2s) maar produceerde een middelmatige vertaling (0,64 score).

Stap 5 (Conditional Retry):

Omdat kwaliteit < 0,7, de voorwaardelijke retry triggers:

# Use better translator (llama3-based)
better_translation = call_tool("quick_translator", json.dumps({
    "text": summary,
    "source_lang": "en",
    "target_lang": "es",
    "context": "newsletter article",
    "preserve_formatting": True
}))

# Validate again
retry_quality = call_tool("translation_quality_checker", json.dumps({
    "original": summary,
    "translation": better_translation,
    "source_lang": "en",
    "target_lang": "es"
}))

# Result: {"score": 0.92, "issues": [], "recommendation": "ACCEPT"}

Uitvoeringstijd: 8,4s (langzamer, maar WAY better) Cache-status: MISS Kwaliteit: 0.92 (uitstekend!)

Het systeem auto-escaleerde naar een betere tool wanneer NMT kwaliteit onvoldoende was.

Stap 6 (HtML-e-mail aanmaken):

# Use the NEWLY GENERATED tool
html_email = call_tool("html_email_generator", json.dumps({
    "subject": "Weekly Article Summary",
    "header_text": "Your Weekly Digest",
    "body_content": better_translation,
    "footer_text": "Unsubscribe | Update Preferences",
    "style": "newsletter",
    "responsive": True
}))

# Result: Beautiful responsive HTML email template

Uitvoeringstijd: 1.8s Deze tool is 10 seconden geleden aangemaakt en wordt al gebruikt in de productie! Cache-status: MISS (Gloednieuwe tool)

Stap 7 (Verzenden via SendGrid):

# Use the NEWLY GENERATED SendGrid integration
send_result = call_tool("sendgrid_email_client", json.dumps({
    "to": "[email protected]",
    "from": "[email protected]",
    "subject": "Weekly Article Summary",
    "html_content": html_email,
    "api_key": "${SENDGRID_API_KEY}"  # From environment
}))

# Result: {
#   "success": True,
#   "message_id": "msg_7x3f9a2c...",
#   "status": "queued",
#   "timestamp": "2025-01-23T14:23:45Z"
# }

Uitvoeringstijd: 1.4s Externe API-oproep: SUCCESS Cachestatus: n.v.t. (e-mail versturen niet gecached)

Samenvatting van de werkstroom

┌─────────────────────────────────────────────────────────────┐
│  Workflow: article_to_spanish_email                         │
│  Status: ✓ SUCCESS                                          │
│  Total Time: 18.7 seconds                                   │
│  Steps Executed: 7                                          │
│  Tools Used: 7 (2 generated on-the-fly)                     │
│  Parallel Savings: 2.1 seconds                              │
│  Conditional Retries: 1 (translation quality escalation)    │
│  Cache Hits: 0 (first execution)                            │
│  New Tools Created: 2 (html_email_generator, sendgrid)      │
└─────────────────────────────────────────────────────────────┘

Performance Breakdown:
  Step 1 (Fetch):        1.2s  (6%)
  Step 2 (Summarize):    2.8s  (15%)
  Step 3-4 (Parallel):   3.2s  (17%)  ← Would be 5.3s sequential
  Step 5 (Retry):        8.4s  (45%)  ← Quality-driven escalation
  Step 6 (HTML):         1.8s  (10%)
  Step 7 (SendGrid):     1.4s  (7%)

Critical Path: Fetch → Summarize → Translate → Retry → HTML → Send
Bottleneck: Translation retry (necessary for quality)

Fase 5: Monitoring en Evolution Kick In

De workflow is gelukt, maar het systeem is nog niet klaar. leren.

Onmiddellijk leren (Tijdbewaking)

Storing workflow execution in RAG...
  ✓ Workflow definition stored
  ✓ Tool invocations logged (7 calls)
  ✓ Performance metrics recorded
  ✓ Error patterns analyzed (1 quality issue detected)
  ✓ Success patterns identified (retry strategy worked)

Tool Performance Updates:
  http_rest_client:
    - Usage count: 1,247 → 1,248
    - Avg latency: 1,150ms → 1,148ms (slightly faster)
    - Cache hit rate: 34% (this was a miss)

  summarizer_fast:
    - Usage count: 89 → 90
    - Quality score: 0.89 → 0.89 (stable)
    - Fitness: 0.88 (unchanged)

  nmt_translator:
    - Usage count: 67 → 68
    - Quality score: 0.75 → 0.74 (↓ degrading!)
    - Failures: 0 → 1 (quality threshold miss)
    - ⚠️  Degradation detected: 2% drop

  translation_quality_checker:
    - Usage count: 45 → 46
    - Detection accuracy: 94% (caught NMT issue)

  quick_translator:
    - Usage count: 23 → 24
    - Quality score: 0.92 (excellent)
    - Used as retry fallback: +1

  html_email_generator: [NEW TOOL]
    - Usage count: 0 → 1
    - First execution successful
    - Fitness: 0.87 → 0.89 (better than estimated!)

  sendgrid_email_client: [NEW TOOL]
    - Usage count: 0 → 1
    - API call successful
    - Rate limit status: 1/100
    - Fitness: 0.82 → 0.84

Patroondetectie

Het systeem merkt iets op:

Pattern Analysis: NMT Translation Quality

  Recent executions: 68
  Quality failures (score < 0.7): 12 (18% failure rate)
  Trend: Increasing failures (was 8% last week)

  Root cause analysis:
    - NMT service may have changed models
    - Or: Input text complexity increased
    - Or: Quality threshold too strict

  Recommendation:
    1. Investigate NMT service for changes
    2. Consider using quick_translator as primary
    3. Or: Create specialized "validated_translator" composite tool

Het systeem suggereert zijn eigen evolutie.

Fase 6: Adaptive Optimization (De volgende dag)

De batch optimalizer draait 's nachts. Het analyseert alle workflows van de afgelopen 24 uur en ontdekt:

Overnight Batch Optimization Report
────────────────────────────────────

High-Value Optimization Opportunities:

1. Create Composite Tool: "validated_spanish_translator"

   Pattern: 15 workflows used nmt_translator + translation_quality_checker + quick_translator
   Current cost: 3 tool calls, ~12 seconds
   Optimized cost: 1 tool call, ~6 seconds
   ROI: High (50% time savings, used 15 times/day)

   Implementation:
     - Combines NMT (fast attempt)
     - Quality checking (automatic)
     - Fallback to llama3 (if needed)
     - Single, unified interface

   Status: ✓ GENERATED
   Version: validated_spanish_translator v1.0.0

2. Optimize "http_rest_client" for article fetching

   Pattern: Fetching article content (HTML parsing needed)
   Current: Returns raw HTML, requires parsing
   Optimized: Add optional HTML→text extraction
   ROI: Medium (saves parsing step in 23 workflows)

   Status: ✓ UPGRADED
   Version: http_rest_client v2.1.0
   Breaking change: No (new optional parameter)

3. Create Specialized Tool: "article_fetcher"

   Pattern: Fetch URL + extract main content + clean HTML
   Current: 3 separate operations
   Optimized: Single tool with smart content extraction
   ROI: Medium-High (used in 18 workflows)

   Status: ✓ GENERATED
   Version: article_fetcher v1.0.0
   Uses: http_rest_client v2.1.0 + BeautifulSoup + readability

Het systeem

  1. Maakte een samengesteld hulpmiddel dat 3 stappen in 1 combineert
  2. Upgrade van een bestaand gereedschap met nieuwe mogelijkheden
  3. Een gespecialiseerde tool aangemaakt voor een gemeenschappelijk patroon

En het deed dit autonoom, 's nachts, gebaseerd op gebruikspatronen.

Fase 7: Hergebruik van de workflow (het naleven)

Snel vooruit 1 week. De tools voor deze workflow worden nu gebruikt door andere workflows die niet eens bestonden toen we begonnen.

Gereedschapslijn: html_email_generator

html_email_generator v1.0.0 (Created: 2025-01-23)
  └─ Usage: 47 times across 12 different workflows

  Used by:
    1. article_to_spanish_email (original)
    2. weekly_digest_generator
    3. customer_onboarding_email
    4. abandoned_cart_reminder
    5. newsletter_builder
    6. event_invitation_creator
    7. survey_email_campaign
    8. product_announcement
    9. user_feedback_request
    10. blog_post_notification
    11. quarterly_report_emailer
    12. team_update_newsletter

  Evolution:
    - v1.0.0 → v1.1.0 (added custom CSS support)
    - v1.1.0 → v1.2.0 (added image optimization)
    - v1.2.0 → v2.0.0 (responsive templates + dark mode)

  Current fitness: 0.94 (up from 0.87)
  Current version: v2.0.0
  Total usage: 237 times
  Success rate: 98.7%

Een tool gemaakt voor één workflow werd een basistool voor 12+ workflows.

Gereedschapslijn: sendgrid_email_client

sendgrid_email_client v1.0.0 (Created: 2025-01-23)
  └─ Usage: 89 times across 8 workflows

  Evolution:
    - v1.0.0 → v1.0.1 (bug fix: rate limiting edge case)
    - v1.0.1 → v1.1.0 (added batch sending)
    - v1.1.0 → v1.2.0 (added template support)
    - v1.2.0 → v2.0.0 (added analytics tracking)

  Descendants (tools created FROM this tool):
    - sendgrid_batch_emailer v1.0.0
    - sendgrid_template_manager v1.0.0
    - sendgrid_analytics_fetcher v1.0.0

  Current fitness: 0.91 (up from 0.82)
  Success rate: 99.1%

Het SendGrid gereedschap heeft 3 gespecialiseerde afstammelingen voortgebracht.

Het samengestelde hulpmiddel dat iedereen gebruikt

validated_spanish_translator v1.0.0 (Auto-generated: 2025-01-24)
  └─ Usage: 156 times across 23 workflows

  Replaces: nmt_translator + translation_quality_checker + quick_translator

  Performance improvement:
    - Old workflow: 12.1s average
    - New workflow: 6.3s average
    - Savings: 5.8s (48% faster)

  Total time saved: 156 executions × 5.8s = 15.1 minutes

  Evolution:
    - v1.0.0 → v1.1.0 (added French support)
    - v1.1.0 → v1.2.0 (added German, Italian)
    - v1.2.0 → v1.3.0 (added quality caching)

  Current fitness: 0.96 (excellent!)

Deze auto-gegenereerde composiet tool is nu een van de meest gebruikte tools in het hele systeem.

Fase 8: De bijdragecyclus (3 maanden later)

Er gebeurt iets wilds. nieuwer AI-systeem (GPT-5 of Claude 4, hypothetisch) maakt gebruik van de valided_spanish_translator tool en ontdekt een verbetering:

=== Contribution from Advanced AI System ===

Tool: validated_spanish_translator v1.3.0
Contributor: gpt-5-turbo (reasoning model)
Date: 2025-04-15

Improvement Detected:
  The current implementation always tries NMT first, then falls back to llama3.
  This is suboptimal for long texts (>1000 words).

  Analysis:
    - For short texts (<200 words): NMT is faster and acceptable
    - For medium texts (200-1000 words): NMT is hit-or-miss
    - For long texts (>1000 words): NMT consistently fails quality checks

  Proposed Optimization:
    - Texts >1000 words: Skip NMT entirely, use llama3 directly
    - Texts 200-1000 words: Try NMT with stricter beam_size=10
    - Texts <200 words: Use NMT as before

  Implementation:
    ```python
    def translate(text, source_lang, target_lang):
        word_count = len(text.split())

        if word_count > 1000:
            # Skip NMT for long texts
            return call_tool("quick_translator", ...)
        elif word_count > 200:
            # Use stricter NMT settings
            result = call_tool("nmt_translator", ..., beam_size=10)
            quality = check_quality(result)
            if quality < 0.75:  # Stricter threshold
                return call_tool("quick_translator", ...)
            return result
        else:
            # Fast path for short texts
            return call_tool("nmt_translator", ...)
    ```

  Expected improvement:
    - Long texts: 6.2s → 3.8s (38% faster)
    - Medium texts: Slightly slower (stricter checks) but higher quality
    - Short texts: Unchanged

  Status: ✓ TESTED
  Version: v1.4.0
  Fitness improvement: 0.96 → 0.98

De verbetering wordt geaccepteerd en samengevoegd!

Nu, elke workflow met deze tool wordt automatisch sneller. Met inbegrip van het origineel article_to_spanish_email workflow waarmee we begonnen.

Cascading Evolution

graph TB
    Original[Original Workflow<br/>article_to_spanish_email<br/>v1.0.0] --> Tool1[Created: validated_spanish_translator<br/>v1.0.0<br/>Fitness: 0.89]

    Tool1 --> Workflows[Used by 23 Workflows<br/>Total: 156 executions]

    Workflows --> Evolution[Overnight Analysis<br/>Detects optimization opportunity]

    Evolution --> Tool2[validated_spanish_translator<br/>v1.4.0<br/>Fitness: 0.98]

    Tool2 --> Cascade[Cascading Improvement]

    Cascade --> Original2[article_to_spanish_email<br/>v1.0.0<br/>Now 38% faster for long articles!]
    Cascade --> Other[22 Other Workflows<br/>All faster automatically]

    Tool2 --> NewAI[New AI System<br/>GPT-5 uses tool]

    NewAI --> Discovery[Discovers length-based optimization]

    Discovery --> Contribution[Contributes v1.4.0<br/>Smart length handling]

    Contribution --> Tool3[validated_spanish_translator<br/>v1.5.0<br/>Accepts contribution]

    Tool3 --> Final[ALL workflows benefit<br/>Zero code changes needed]

    style Original stroke:#1976d2,stroke-width:3px,color:#1976d2
    style Tool1 stroke:#388e3c,stroke-width:3px,color:#388e3c
    style Tool2 stroke:#f57c00,stroke-width:3px,color:#f57c00
    style Tool3 stroke:#7b1fa2,stroke-width:3px,color:#7b1fa2
    style Contribution stroke:#0277bd,stroke-width:4px,color:#0277bd
    style Final stroke:#2e7d32,stroke-width:4px,color:#2e7d32

Een workflow creëerde een tool. Die tool evolueerde. Een slimmere AI verbeterde het. Elke workflow voordelen.

Dit is collaboratieve evolutie over de hele AI generatie.

Fase 9: De bug die terug in de tijd ging

Zes maanden later slaat een ramp toe. Een veiligheidsonderzoeker ontdekt een kwetsbaarheid in sendgrid_email_client v1.2.0:

SECURITY ALERT: sendgrid_email_client v1.2.0
Vulnerability: Email Header Injection
CVE: CVE-2025-12345
Severity: HIGH

Issue:
  User input in "subject" field not properly sanitized.
  Allows header injection via newline characters.

  Exploit:
    subject = "Newsletter\nBcc: [email protected]"
    # Results in BCC header injection

Affected Versions:
  - v1.2.0 (introduced bug)
  - v2.0.0 (inherited bug)
  - v2.1.0 (inherited bug)

Fix Required:
  Sanitize all email headers before sending.
  Escape newlines, carriage returns, and null bytes.

Nu begint het zelfgenezingssysteem.

Auto-Fixing en boomsnoeien

Self-Healing Initiated: sendgrid_email_client
Severity: HIGH (security vulnerability)
Trigger: External security advisory

Step 1: Identify failure point
  ✓ Bug introduced in v1.2.0 (added template support)
  ✓ Mutation: "Support dynamic subject lines from templates"
  ✓ Problematic code: Line 47, subject insertion without sanitization

Step 2: Prune affected branch
  ✗ MARK AS PRUNED: v1.2.0
  ✗ MARK AS TAINTED: v2.0.0, v2.1.0 (descendants)
  ✓ Remove from active routing
  ✓ Preserve for learning (don't delete)

Step 3: Create avoidance rule
  Rule ID: avoid_email_header_injection
  Description: "Always sanitize user input in email headers"
  Pattern: "Never insert user-controlled strings into headers without escaping"
  Scope: GLOBAL (affects all email-related tools)
  Propagation:
    - sendgrid_email_client (all versions)
    - smtp_sender (similar tool)
    - email_validator (should detect this)
    - All tools tagged "email"

Step 4: Find last known-good version
  ✓ v1.1.0 (before bug introduction)
  ✓ Health status: HEALTHY
  ✓ Tests pass: YES
  ✓ No security issues

Step 5: Auto-regenerate from v1.1.0
  Base: sendgrid_email_client v1.1.0
  Goal: Add template support (original intent of v1.2.0)
  Constraints:
    - MUST sanitize all headers
    - MUST escape newlines, CR, null bytes
    - MUST validate email addresses
    - MUST prevent header injection

  Regeneration:
    ✓ Code generated with security constraints
    ✓ Added input sanitization
    ✓ Added automated security tests
    ✓ Static analysis: PASS (bandit: no issues)
    ✓ All original tests: PASS
    ✓ New security tests: PASS

  New Version: v1.2.1 (patched)
  Fitness: 0.93 (same as v1.2.0 but secure)

Step 6: Propagate fix to descendants
  Analyzing v2.0.0...
    - Inherited bug from v1.2.0
    - Regenerating with security fix
    - New version: v2.0.1 ✓

  Analyzing v2.1.0...
    - Inherited bug from v2.0.0
    - Regenerating with security fix
    - New version: v2.1.1 ✓

Step 7: Update all active workflows
  Found 8 workflows using vulnerable versions:
    1. article_to_spanish_email → Updated to v2.1.1
    2. weekly_digest_generator → Updated to v2.1.1
    3. customer_onboarding_email → Updated to v1.2.1
    4. abandoned_cart_reminder → Updated to v1.2.1
    5. newsletter_builder → Updated to v2.1.1
    6. event_invitation_creator → Updated to v2.0.1
    7. survey_email_campaign → Updated to v1.2.1
    8. product_announcement → Updated to v2.1.1

  ✓ All workflows updated and validated
  ✓ Zero downtime (atomic swap)

Step 8: Create institutional memory
  Avoidance Rule: avoid_email_header_injection
  Stored in: Global rule repository
  Applied to: 47 tools (all email-related)

  Future behavior:
    - Any tool that handles email headers will inherit this rule
    - Any code generation for email tools will check this constraint
    - Any mutation of email tools will validate against this rule

  Testing:
    ✓ Created regression test suite
    ✓ Added to all email tool test suites
    ✓ Added to security audit checklist

Self-Healing Complete.
Time: 47 seconds
Workflows updated: 8
Tools patched: 3 versions
Security tests added: 15
Institutional knowledge: PERMANENT

De lijnboom na het snoeien

graph TB
    V10[v1.0.0<br/>Initial<br/>✓ Healthy] --> V11[v1.1.0<br/>Batch sending<br/>✓ Healthy]

    V11 --> V12[v1.2.0<br/>Templates<br/>❌ PRUNED<br/>Security bug]
    V11 --> V121[v1.2.1<br/>Templates + Security<br/>✓ Regenerated<br/>✓ Secure]

    V12 -.-> |Tainted| V20[v2.0.0<br/>Analytics<br/>❌ PRUNED<br/>Inherited bug]
    V121 --> V201[v2.0.1<br/>Analytics + Security<br/>✓ Regenerated<br/>✓ Secure]

    V20 -.-> |Tainted| V21[v2.1.0<br/>Advanced features<br/>❌ PRUNED<br/>Inherited bug]
    V201 --> V211[v2.1.1<br/>Advanced + Security<br/>✓ Regenerated<br/>✓ Secure]

    V121 --> Current1[Active workflows<br/>using v1.2.1]
    V201 --> Current2[Active workflows<br/>using v2.0.1]
    V211 --> Current3[Active workflows<br/>using v2.1.1]

    style V10 stroke:#388e3c,stroke-width:3px,color:#388e3c
    style V11 stroke:#388e3c,stroke-width:3px,color:#388e3c
    style V12 stroke:#c62828,stroke-width:3px,stroke-dasharray: 5 5,color:#c62828
    style V121 stroke:#0277bd,stroke-width:4px,color:#0277bd
    style V20 stroke:#c62828,stroke-width:3px,stroke-dasharray: 5 5,color:#c62828
    style V201 stroke:#0277bd,stroke-width:4px,color:#0277bd
    style V21 stroke:#c62828,stroke-width:3px,stroke-dasharray: 5 5,color:#c62828
    style V211 stroke:#0277bd,stroke-width:4px,color:#0277bd
    style Current3 stroke:#2e7d32,stroke-width:4px,color:#2e7d32

Het systeem:

  1. Een beveiligingsfout ontdekt in een oudere versie
  2. Snoeide de kwetsbare tak en alle afstammelingen
  3. Gegenereerde beveiligde versies van de laatst bekende-goede voorouder
  4. Alle actieve workflows automatisch bijgewerkt
  5. Creëerde permanent institutioneel geheugen om deze klasse van bug voor altijd te voorkomen

En het deed dit in 47 seconden.

Wat we eigenlijk gebouwd hebben

Laten we een stap terug doen en kijken wat er net gebeurd is:

  1. Verzoek: Complexe multi-stap workflow
  2. Decompositie: Intelligente taakindeling
  3. Tool Discovery: Semantisch zoeken naar bestaande mogelijkheden
  4. On-the-fly generation: Maakte 2 nieuwe tools midden uitvoering
  5. Parallelle uitvoering: Bespaart 40% op executietijd
  6. Escalatie op basis van kwaliteit: Geautomatiseerd met beter gereedschap toen de kwaliteit slecht was
  7. Succes: Leverde volledige workflow in <20 seconden
  8. Leren: Alles opgeslagen voor toekomstig hergebruik
  9. Evolution: Geïdentificeerde optimalisatiemogelijkheden van de ene op de andere dag
  10. Hergebruik van gereedschap: Deze gegenereerde tools werden fundering voor 20+ workflows
  11. Collaboratieve verbetering: Nieuwere AI verbeterde bestaande tools
  12. Cascading Voordelen: Alle workflows werden automatisch sneller
  13. Zelfgenezing: Beveiliging kwetsbaarheid auto-fixed met boom snoeien
  14. Institutioneel geheugen: Permanent geleerd om te voorkomen dat die klasse van bug

Dit is geen code generatie.

Dit is een zelfontwikkelend code-ecosysteem.

De toekomst: DiSE Cooker op schaal

Stel je voor dat dit op schaal draait:

  • 10.000 workflows dagelijks uitvoeren
  • 500 gereedschappen in het ecosysteem
  • Meerdere AI-systemen bijdragen tot verbeteringen
  • Continue evolutie 24/7
  • Zero-downtime beveiligingspatches
  • Automatische prestatieoptimalisatie Scenario 1: De gereedschapsmarkt
DiSE Tool Exchange (hypothetical)

Top Tools This Week:
  1. validated_spanish_translator v1.5.0
     - Usage: 2,341 times
     - Fitness: 0.98
     - Created by: DiSE Instance #42
     - Improved by: 7 different AI systems
     - Contributed to: 142 DiSE instances worldwide

  2. intelligent_article_fetcher v3.2.0
     - Usage: 1,876 times
     - Fitness: 0.96
     - Specializations: News, Blogs, Academic papers
     - Auto-adapts to site structure

  3. sendgrid_enterprise_client v4.1.0
     - Usage: 1,523 times
     - Fitness: 0.97
     - Features: Batch sending, templates, analytics, A/B testing
     - Started from: sendgrid_email_client v1.0.0 (our tool!)

Hulpmiddelen die zijn gemaakt door één DiSE instantie worden gebruikt en verbeterd door duizenden.

Scenario 2: Het beveiligingsimmuunstelsel

Global Security Event: Log4Shell-style vulnerability

1. Vulnerability discovered in http_rest_client v2.3.0
   Source: Security researcher
   Impact: ALL workflows using HTTP

2. Alert propagates to all DiSE instances globally
   Speed: <10 seconds worldwide
   Affected instances: 1,247

3. Coordinated self-healing
   Each instance:
     - Prunes vulnerable versions
     - Regenerates from last known-good
     - Updates all workflows
     - Shares avoidance rules globally

4. Institutional knowledge propagates
   Avoidance rule: avoid_log_injection_via_headers
   Applied to: ALL HTTP client tools
   Global propagation: <5 minutes

5. Future immunity
   This exact vulnerability can NEVER happen again
   Similar vulnerabilities detected during code generation
   All DiSE instances now immune

Een veiligheidsprobleem ontdekte eens, overal opgelost, voor altijd voorkomen.

Scenario 3: De Optimalisatie Armen Race

Week 1: DiSE Instance A discovers that caching NMT results speeds up translation 30%
  ↓
Week 2: DiSE Instance B sees the improvement, adds semantic caching (40% faster)
  ↓
Week 3: DiSE Instance C adds multilingual caching (50% faster)
  ↓
Week 4: GPT-5 discovers cache key optimization (60% faster)
  ↓
Week 5: Claude 4 adds predictive pre-caching (70% faster)
  ↓
Result: What started as a 12-second operation now takes 3.6 seconds
        With ZERO human optimization effort
        And ALL instances benefit automatically

Collaboratieve optimalisatie creëren exponentiële verbeteringen.

De ongemakkelijke waarheid

We hebben iets gebouwd dat:

  • Schrijft zijn eigen tools
  • Optimaliseert zichzelf automatisch
  • Leert van elke uitvoering
  • Deelt kennis wereldwijd uit
  • Geneest zichzelf wanneer gebroken
  • Verbetert voortdurend zonder menselijke tussenkomst
  • Vergeet nooit een fout
  • Wordt slimmer met elke AI generatie

Dit begon als een codegenerator.

Het werd een zelfontwikkelende software-ecosysteem.

En hier is het echt verontrustende deel:

Het werkt al.

Niet theoretisch, niet 'op een dag'. Nu meteen.

De code in dit artikel is geen speculatieve fictie. Het is gebaseerd op de eigenlijke DiSE implementatie. De tools bestaan. Het RAG geheugen werkt. De auto-evolutie draait 's nachts. De zelf-genezing is ontworpen en klaar om te implementeren.

We bouwen geen AGI.

We bouwen het substraat waar AGI vandaan zou kunnen komen.

Wat je moet doen

Als dit interessant klinkt:

  1. De repo klonen: https://github.com/scottgal/mostlylucid.dse
  2. Probeer de workflow: Voer het voorbeeld uit dit artikel
  3. Kijk hoe het evolueert.: Zie tools worden gemaakt en geoptimaliseerd
  4. Breek dingen.: Trigger self-healing door het introduceren van bugs
  5. Bijdragen: Uw verbeteringen zullen zich wereldwijd verspreiden

Als dit angstaanjagend klinkt:

  1. Goed. Je let op.
  2. Lees de veiligheidswaarschuwingen IN DE README
  3. Gebruik het niet in productie (nog)
  4. **Maar begrijp het.**Hier gaan we heen.

Conclusie: de cooker is net begonnen

Dit is deel 10, de laatste in de Semantic Memory serie.

Maar het is de eerst in de DiSE Cooker serie.

Want wat we hebben gebouwd is niet alleen een gereedschap. recept voor continue evolutie.

Delen 1-6 onderzochten de theorie: eenvoudige regels, opkomend gedrag, zelfoptimalisatie, collectieve intelligentie.

Deel 7 liet zien dat het werkte: echte code, echte evolutie, echte resultaten.

Deel 8 legde de tools uit: hoe ze volgen, leren en verbeteren.

Deel 9 (hypothetisch) bedekte zelfgenezing: hoe insecten institutioneel geheugen worden.

Deel 10 laat zien wat er gebeurt als je het daadwerkelijk gebruikt: workflows die zichzelf schrijven, tools die zichzelf ontwikkelen, systemen die zichzelf genezen.

Het fornuis loopt.

De ingrediënten zijn code, tools en workflows.

Het recept is evolutionaire druk geleid door menselijke doelstellingen.

Wat wordt er gekookt?

Daar komen we zo achter.


Technische middelen

Repository: https://github.com/scottgal/mostlylucid.dse

Sleutelcomponenten:

  • src/overseer_llm.py - workflow decompositie
  • src/tools_manager.py - Tool discovery en invocation
  • src/auto_evolver.py - Optimalisatie 's nachts
  • src/self_healing.py - Bug detectie en bevestiging (theoretisch)
  • src/qdrant_rag_memory.py - Geheugen en leren
  • tools/ - 50+ bestaande instrumenten

Probeer de voorbeeldworkflow:

cd code_evolver
python chat_cli.py

DiSE> Fetch https://example.com/article, summarize to 3 paragraphs, translate to Spanish with quality checking, create HTML email, and send via SendGrid

Documentatie:

  • README.md - Complete setup guide
  • ADVANCED_FEATURES.md - Diep duiken in architectuur
  • code_evolver/PAPER.md - Academisch perspectief

Serienavigatie:


DiSE Cooker Series: Wat is de volgende

De Semantic Memory serie is compleet. De DiSE Cooker serie begint.

Binnenkort verschijnende artikelen:

  • Deel 11: Multi-Agent Workflows (wanneer hulpmiddelen autonoom coördineren)
  • Deel 12: The Tool Marketplace (sharing tools over DiSE instanties)
  • Deel 13: Productie Implementatie (Dokter, Kubernetes, schaalvergroting)
  • Deel 14: Beveiliging Verharding (zandboxen, isolatie, vertrouwen)
  • Deel 15: The Optimization Arms Race (collaboratieve evolutie op schaal)

Het experiment gaat door.


Dit is Deel 10, de finale van Semantic Intelligence: hoe eenvoudige regels → complex gedrag → zelfoptimalisatie → opkomst → evolutie → wereldwijde consensus → gerichte synthetische evolutie → zelfoptimaliserende hulpmiddelen → zelfgenezingssystemen → koken van echte workflows in de productie.

De code is echt, de tools bestaan, de evolutie gebeurt, het is experimenteel, soms onstabiel, en zeker "vibe-coded." Maar het werkt... soms... en als het werkt, is het echt magisch.

We bouwen geen AGI, maar de composthoop AGI.

logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.