Neutralize agent naming (Carson -> Agent)
This commit is contained in:
@@ -1,13 +1,13 @@
|
||||
---
|
||||
title: "Wenn KI mit KI spricht: MCP-Extension für simple Agent-Abfragen"
|
||||
date: 2026-04-24
|
||||
description: "Ich habe eine kleine Extension namens nanoclaw-mcp-ext entwickelt. Damit kann mein Coding-Assistent Pi direkt mit meinem digitalen Butler Carson kommunizieren. Ein spannender Use Case für das Model Context Protocol."
|
||||
description: "Ich habe eine kleine Extension namens nanoclaw-mcp-ext entwickelt. Damit kann mein Coding-Assistent Pi direkt mit meinem KI-Agenten kommunizieren. Ein spannender Use Case für das Model Context Protocol."
|
||||
translationKey: "pi-carson-mcp-post"
|
||||
---
|
||||
|
||||
Vor ein paar Wochen habe ich von [Carson](/blog/ki-bewerbungsagent/) erzählt. Damals lag der Fokus noch auf seiner Rolle als mein persönlicher KI-Bewerbungsagent. Inzwischen ist Carson aber weit mehr als das: Er ist zu einem vollwertigen digitalen Butler in meiner "Main-Gruppe" herangewachsen. Er koordiniert meine privaten und familiären Kalender, checkt autonom meine E-Mails, führt meine Bring!-Einkaufsliste, trackt offene Todos, speichert mein Wissen in einem Langzeit-Gedächtnis und weiss dank Standort-Tracking sogar, wo ich mich gerade befinde. Kurzum: Er nimmt mir massiv den administrativen Alltag ab – und das meistens besser (und geduldiger), als ich es jemals könnte.
|
||||
Vor ein paar Wochen habe ich von [meinem KI-Bewerbungsagenten](/blog/ki-bewerbungsagent/) erzählt. Inzwischen ist das System weit mehr als das: Es ist zu einer vollwertigen digitalen Assistenz in meiner "Main-Gruppe" herangewachsen. Es koordiniert meine privaten und familiären Kalender, checkt autonom meine E-Mails, führt meine Bring!-Einkaufsliste, trackt offene Todos, speichert mein Wissen in einem Langzeit-Gedächtnis und weiss dank Standort-Tracking sogar, wo ich mich gerade befinde. Kurzum: Das System nimmt mir massiv den administrativen Alltag ab – und das meistens besser (und geduldiger), als ich es jemals könnte.
|
||||
|
||||
Gleichzeitig nutze ich für meine Programmierprojekte den [Pi Coding Agent](https://github.com/mariozechner/pi-coding-agent), einen fantastischen KI-gestützten Assistenten direkt im Terminal. Oftmals arbeite ich tief fokussiert an irgendeinem Code-Snippet, und mir fällt plötzlich ein privates Todo ein, oder ich möchte Carson eine Anweisung geben (z.B. "Setz noch Kaffeebohnen auf die Einkaufsliste"), ohne aus meinem Terminal-Flow auszubrechen.
|
||||
Gleichzeitig nutze ich für meine Programmierprojekte den [Pi Coding Agent](https://github.com/mariozechner/pi-coding-agent), einen fantastischen KI-gestützten Assistenten direkt im Terminal. Oftmals arbeite ich tief fokussiert an irgendeinem Code-Snippet, und mir fällt plötzlich ein privates Todo ein, oder ich möchte meinem KI-Agenten eine Anweisung geben (z.B. "Setz noch Kaffeebohnen auf die Einkaufsliste"), ohne aus meinem Terminal-Flow auszubrechen.
|
||||
|
||||
Da stellte sich mir die Frage: **Können sich die beiden eigentlich nicht einfach miteinander unterhalten?**
|
||||
|
||||
@@ -24,18 +24,18 @@ Sobald Pi gestartet wird, authentifiziert sich die Extension mit einem Token, fr
|
||||
|
||||
Stell dir vor, ich sitze gerade im Terminal, programmiere zusammen mit Pi an einer Applikation und möchte eine längere "Deep Work"-Phase starten. Ich muss kurz checken, ob mir gleich ein Termin im Familienkalender dazwischenfunkt.
|
||||
|
||||
Bisher hätte ich das Terminal verlassen und Carson (oder meinen Kalender) separat öffnen müssen. Heute sieht das so aus:
|
||||
Bisher hätte ich das Terminal verlassen und meinen Kalender separat öffnen müssen. Heute sieht das so aus:
|
||||
|
||||
**Ich (zu Pi):** *"Frag Carson mal, ob ich in den nächsten zwei Stunden noch Termine habe. Wenn nicht, fangen wir mit dem grossen Datenbank-Refactoring an."*
|
||||
**Ich (zu Pi):** *"Frag meinen Agenten mal, ob ich in den nächsten zwei Stunden noch Termine habe. Wenn nicht, fangen wir mit dem grossen Datenbank-Refactoring an."*
|
||||
|
||||
**Pi:** Führt autonom das neu geladene Tool aus, verbindet sich mit der NanoClaw-Instanz, übergibt die Nachricht an Carson, wartet auf dessen Kalender-Check und gibt mir die Antwort direkt im Terminal aus.
|
||||
**Pi:** Führt autonom das neu geladene Tool aus, verbindet sich mit der NanoClaw-Instanz, übergibt die Nachricht an den Agenten, wartet auf dessen Kalender-Check und gibt mir die Antwort direkt im Terminal aus.
|
||||
|
||||
Beispiel-Output von Pi im Terminal:
|
||||
> *Carson meldet, dass du bis 17:30 Uhr keine Termine hast. Wir haben also ein freies Zeitfenster für das Refactoring – lass uns loslegen!*
|
||||
> *Der Agent meldet, dass du bis 17:30 Uhr keine Termine hast. Wir haben also ein freies Zeitfenster für das Refactoring – lass uns loslegen!*
|
||||
|
||||
Ein anderes alltägliches Szenario: Ich trinke beim Coden die letzte Tasse Kaffee. Ich sage Pi einfach: *"Sag Carson, er soll Kaffeebohnen auf meine Bring!-Einkaufsliste setzen."* Pi leitet das an Carson weiter, Carson nutzt seine Bring!-Integration, und das Problem ist delegiert, ohne dass ich meinen Arbeitsfluss auch nur für eine Sekunde unterbrechen musste.
|
||||
Ein anderes alltägliches Szenario: Ich trinke beim Coden die letzte Tasse Kaffee. Ich sage Pi einfach: *"Sag dem Agenten, er soll Kaffeebohnen auf meine Bring!-Einkaufsliste setzen."* Pi leitet das an mein System weiter, welches seine Bring!-Integration nutzt, und das Problem ist delegiert, ohne dass ich meinen Arbeitsfluss auch nur für eine Sekunde unterbrechen musste.
|
||||
|
||||
Es ist also nicht mehr nur ein Mensch, der mit einer KI chattet, sondern Pi entscheidet selbstständig, *wann* er Carson konsultieren muss, um meine Fragen zu beantworten oder Aufgaben zu delegieren. Das fühlt sich fast ein bisschen wie KI-Magie an.
|
||||
Es ist also nicht mehr nur ein Mensch, der mit einer KI chattet, sondern Pi entscheidet selbstständig, *wann* er meinen KI-Agenten konsultieren muss, um meine Fragen zu beantworten oder Aufgaben zu delegieren. Das fühlt sich fast ein bisschen wie KI-Magie an.
|
||||
|
||||
## Ein Blick unter die Haube
|
||||
|
||||
@@ -63,14 +63,14 @@ for (const tool of tools) {
|
||||
```
|
||||
|
||||
### Die Serverseite (NanoClaw-Seite)
|
||||
Das Herzstück der Kommunikation liegt in der `mcp-server.ts` innerhalb der NanoClaw-Instanz. Dort wird ein `McpServer` gestartet, der als Brücke zwischen dem MCP-Protokoll und dem internen Nachrichtensystem von Carson fungiert.
|
||||
Das Herzstück der Kommunikation liegt in der `mcp-server.ts` innerhalb der NanoClaw-Instanz. Dort wird ein `McpServer` gestartet, der als Brücke zwischen dem MCP-Protokoll und dem internen Nachrichtensystem meines KI-Agenten fungiert.
|
||||
|
||||
Das technisch Spannendste daran ist die `McpChannel`-Klasse:
|
||||
- **Injektion:** Wenn Pi eine Anfrage stellt, injiziert der MCP-Server diese Nachricht als temporäre Nachricht in einen NanoClaw-Chatkanal.
|
||||
- **Warten:** Ein `Promise` wartet mit einem Timeout darauf, dass Carson eine Antwort in diesen spezifischen Kanal schreibt.
|
||||
- **Debounce:** Da Carson oft in mehreren Nachrichten antwortet, nutzt der MCP-Kanal ein "Debounce"-Verfahren, das erst nach einer kurzen Stille (wenn Carson fertig getippt hat) die gesammelten Text-Chunks zu einer Antwort zusammenfügt.
|
||||
- **Injektion:** Wenn Pi eine Anfrage stellt, injiziert der MCP-Server diese Nachricht als temporäre Nachricht in einen Chatkanal des Agenten.
|
||||
- **Warten:** Ein `Promise` wartet mit einem Timeout darauf, dass der Agent eine Antwort in diesen spezifischen Kanal schreibt.
|
||||
- **Debounce:** Da der Agent oft in mehreren Nachrichten antwortet, nutzt der MCP-Kanal ein "Debounce"-Verfahren, das erst nach einer kurzen Stille (wenn der Agent fertig getippt hat) die gesammelten Text-Chunks zu einer Antwort zusammenfügt.
|
||||
|
||||
So wird Carson quasi "remote-gesteuert" und kann für Pi wie ein natives Werkzeug reagieren, ohne dass er selbst bemerkt, dass die Anfrage aus einer ganz anderen Umgebung kommt.
|
||||
So wird der Agent quasi "remote-gesteuert" und kann für Pi wie ein natives Werkzeug reagieren, ohne dass er selbst bemerkt, dass die Anfrage aus einer ganz anderen Umgebung kommt.
|
||||
|
||||
Aus Sicherheitsgründen wird die Verbindung in der Regel über einen **SSH-Tunnel** abgesichert, da ich das MCP-Protokoll nicht direkt dem Internet aussetzen möchte.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user