Artikelbild für den Artikel: Einen eigenen CLI-Coding-Agenten mit Pydantic-AI erstellen

Einen eigenen CLI-Coding-Agenten mit Pydantic-AI erstellen

CLI-Coding-Agenten sind ein grundlegend anderes Werkzeug als Chatbots oder Autocomplete-Tools – sie sind Agenten, die Code lesen, Tests ausführen und eine Codebasis aktualisieren können. In diesem Artikel erfahren Sie, wie Sie Ihren eigenen Coding-Agenten erstellen, indem Sie Open-Source-Tools zusammenstellen und spezifische Entwicklungsstandards anwenden.

Die Welle der CLI-Coding-Agenten

Wenn Sie Claude Code, Gemini Code, Open Code oder Simon Willison’s LLMCLI ausprobiert haben, haben Sie etwas grundlegend anderes als ChatGPT oder GitHub Copilot erlebt. Diese Agenten können nicht nur Code lesen, sondern auch Tests ausführen, Dokumentationen durchsuchen und Änderungen an Ihrer Codebasis vornehmen.

Warum selbst bauen, wenn man kaufen kann?

Der Grund, warum wir uns entschieden haben, unsere eigene Lösung zu erstellen, liegt darin, dass kommerzielle Tools zwar beeindruckend sind, aber für allgemeine Anwendungsfälle entwickelt wurden. Unser Agent wurde vollständig an unseren internen Kontext und die Eigenheiten unseres spezifischen Projekts angepasst.

Die Architektur unseres Entwicklungsagenten

Auf hoher Ebene besteht unser Coding-Assistent aus mehreren Schlüsselkomponenten:

  • Kern-AI-Modell: Claude von Anthropic, zugänglich über AWS Bedrock
  • Pydantic-AI-Framework: Bietet das Agenten-Framework und viele nützliche Funktionen.
  • MCP-Server: Unabhängige Prozesse, die dem Agenten spezialisierte Werkzeuge zur Verfügung stellen.
  • CLI-Schnittstelle: Wie Benutzer mit dem Assistenten interagieren.

Grundlagen schaffen

Wir begannen mit der Erstellung einer grundlegenden Projektstruktur und der Installation der erforderlichen Abhängigkeiten:

uv init
uv add pydantic_ai
uv add boto3

Erste Fähigkeit: Tests

Warum sollten wir die Tests selbst ausführen, wenn der Agent dies für uns tun kann? Hier ist ein einfaches Beispiel:

import subprocess
@agent.tool_plain()
def run_unit_tests() -> str:
    result = subprocess.run(["uv", "run", "pytest", "-xvs", "tests/"], capture_output=True, text=True)
    return result.stdout

Intelligenz hinzufügen

Wir mussten unserem Agenten mehr über unsere Entwicklungsphilosophie beibringen, um unerwünschte Verhaltensweisen zu vermeiden. Hier sind einige Entwicklungsrichtlinien, die wir implementiert haben:

instructions = """
Sie sind ein spezialisierter Agent für die Pflege und Entwicklung der XXXXXX-Codebasis.
## Entwicklungsrichtlinien:
1. **Testfehler:** - Bei Testfehlern zuerst die Implementierung und nicht die Tests reparieren.
2. **Codeänderungen:** - Machen Sie die kleinsten möglichen Änderungen zur Behebung von Problemen.
3. **Best Practices:** - Halten Sie Funktionen klein mit einer einzigen Verantwortung.
"""

Die MCP-Revolution: Steckerfähigkeiten

Das Model Context Protocol (MCP) ermöglicht es uns, spezialisierte Fähigkeiten hinzuzufügen, indem wir Server ausführen, die über eine standardisierte Schnittstelle mit AI-Modellen verbunden sind.

Sandboxed Python-Ausführung

Um die Sicherheit und Genauigkeit zu erhöhen, haben wir einen MCP-Server für die sandboxed Python-Ausführung hinzugefügt.

Aktuelle Bibliotheksdokumentation

Wir haben Context7 für den Zugriff auf aktuelle Python-Bibliotheksdokumentationen integriert.

AWS MCPs

Wir haben AWS Labs MCP-Server für umfassende Cloud-Dokumentationen und Integrationen hinzugefügt.

Internet-Suche nach aktuellen Informationen

Wir haben eine allgemeine Internet-Suche hinzugefügt, um aktuelle Diskussionen und Lösungen zu finden.

Strukturiertes Problemlösen

Eine der wertvollsten Ergänzungen war der Code-Reasoning-MCP, der dem Agenten hilft, komplexe Probleme systematisch zu durchdenken.

Optimierung für das Denken

Wir haben die Konfiguration von Bedrock angepasst, um längere Zeitüberschreitungen zu ermöglichen, damit der Agent komplexe Probleme gründlich analysieren kann.

Desktop Commander: Warnung! Mit großer Macht kommt große Verantwortung!

Der Desktop Commander verwandelt unseren Agenten in ein leistungsfähiges Werkzeug, das in der Lage ist, in Ihrer Entwicklungsumgebung zu agieren.

Das vollständige System

Hier ist unsere endgültige Agenten-Konfiguration:

import asyncio
import subprocess
import boto3
from pydantic_ai import Agent
from pydantic_ai.mcp import MCPServerStdio
from pydantic_ai.models.bedrock import BedrockConverseModel
from pydantic_ai.providers.bedrock import BedrockProvider
from botocore.config import Config as BotocoreConfig

# Konfiguration
bedrock_config = BotocoreConfig(...)

# Agent erstellen
agent = Agent(...)

async def main():
    async with agent.run_mcp_servers():
        await agent.to_cli()

if __name__ == "__main__":
    asyncio.run(main())

Was wir über CLI-Agenten gelernt haben

Die Erstellung unseres eigenen Agenten hat mehrere Erkenntnisse über dieses aufkommende Paradigma offenbart.

Der Weg nach vorne

Der CLI-Agenten-Paradigma entwickelt sich schnell weiter, und wir erkunden verschiedene Bereiche, um die Funktionalität weiter zu verbessern.

Warum das wichtig ist

CLI-Coding-Agenten stellen einen grundlegenden Wandel von KI als Schreibassistent zu KI als Entwicklungspartner dar.

Dieser Artikel wurde mithilfe von KI verfasst und basiert auf automatisch gesammelten Informationen.
0 Kommentare

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar