AyCode

Doku / Nachschlagen

Module entwickeln

Eigene Erweiterungen für AyCode bauen, ohne den Quellcode von AyCode: ein Ordner, ein Programm, klare Rechte.

3 Min. LesezeitAyCode 7.4.6
Auf dieser Seite
  1. In einer Minute zum ersten Modul
  2. Getrennt von AyCode
  3. Rechte
  4. Die Schnittstelle
  5. Weitergeben

In einer Minute zum ersten Modul

  1. Einstellungen → Module → Neues Modul anlegen und einen leeren Ordner wählen.
  2. AyCode schreibt ein Modul, das sofort läuft: Manifest aycode-module.json, ein Skill, ein Programm in server/index.mjs mit dem SDK server/aycode.mjs und Tests. Der Ordner ist danach verknüpft.
  3. Die Karte des Moduls zeigt, was es darf. Erlauben und einschalten, dann im Chat $name-des-moduls erwähnen.
  4. Tests laufen ohne AyCode: node --test server/index.test.mjs.

Das SDK ist eine einzige Datei ohne Abhängigkeiten (Node 18 oder neuer). Die Anleitung liegt im neuen Ordner als README.md.

Getrennt von AyCode

Eigener Code läuft als eigenes Programm, ein MCP-Server, den die Agenten aufrufen, nie in AyCode selbst. Mit AyCode spricht das Programm nur über die Modul-Schnittstelle: nur auf diesem Computer (127.0.0.1), mit einem eigenen Schlüssel pro Modul, versioniert. Über die Schnittstelle kann ein Modul nicht für ein anderes sprechen und nicht dessen Speicher lesen.

Auf dem Mac läuft das Programm abgeschottet (macOS-Sandbox): Es liest das System, seine Laufzeit (Node) und seinen eigenen Ordner, aber nichts in deinem Benutzerordner, also weder Vault noch Projekte noch Schlüssel. Schreiben darf es nur in seinen Datenordner (AYCODE_MODULE_DATA) und seinen Temp-Ordner. Ins Netz kommt es nur zu AyCode, ins Internet nur mit dem Recht network. Andere Programme kann es nicht für sich arbeiten lassen. Lässt sich ein Programm nicht abschotten, startet AyCode es auf dem Mac gar nicht, und die Karte des Moduls sagt warum.

Auf Windows und Linux gibt es diese Abschottung noch nicht: Dort läuft das Programm mit deinen Benutzerrechten und kann alles, was du auch kannst. Die Rechte regeln dort nur, was AyCode ihm gibt. Die Grenze ist dann die Herkunft: öffentliche Module müssen signiert sein, und einem Herausgeber vertraust du bewusst. Die Karte jedes Moduls sagt, ob sein Programm abgeschottet läuft.

Rechte

Eigene Einstellungen und eigenen Speicher darf jedes Modul nutzen. Alles andere steht im Manifest unter permissions, und du bestätigst es vor dem Einschalten. Verlangt ein Update mehr, fragt AyCode erneut.

RechtWas das Modul darf
brain:readNotizen im zweiten Hirn suchen und lesen, Gemerktes abfragen
brain:proposeÄnderungen an Notizen vorschlagen; du bestätigst jede einzeln
notifyHinweise in AyCode zeigen, höchstens sechs pro Minute
projects:readdeine Projekte und ihre Ordner sehen
networkVerbindungen ins Internet aufbauen (auf dem Mac ohne dieses Recht gesperrt)

Die Schnittstelle

Aufruf im SDKRecht
aycode.app.info()immer
aycode.settings()immer
aycode.storage.get / set / delete / keysimmer (4 MB je Modul)
aycode.brain.search / note / related / memorybrain:read
aycode.brain.proposeNote({ path, text, reason })brain:propose
aycode.notify(text)notify
aycode.projects.list()projects:read

Fehler kommen mit einem Code (forbidden, off, unavailable …) und einer verständlichen Meldung. Wer in einer anderen Sprache schreibt, nutzt das Protokoll direkt: POST /v1/call mit dem Schlüssel des Moduls; Adresse und Schlüssel gibt AyCode dem Programm als Umgebungsvariablen mit.

Weitergeben

  • Privat: nur für dich, darf unsigniert sein.
  • Öffentlich: für alle, muss mit deinem Herausgeber-Schlüssel signiert sein. Jede Version mit demselben Schlüssel, sonst nimmt AyCode das Update nicht an.
  • Lizenziert: für Käufer mit Lizenzschlüssel, den du mit demselben Schlüssel ausstellst. AyCode prüft ihn ohne Netz.

Gepackt wird ein Modul zu einer .aymodule-Datei, die man unter Module → Modul installieren öffnet.