Skip to main content
Glama

AutoLinker ist eine KI-Agent-Unterstützungsbibliothek für die E-Sprache. Durch Reverse Engineering lässt es die KI vollautomatisch Code schreiben: Es findet und liest automatisch relevanten Code entsprechend deinen Anforderungen und bearbeitet, ändert und fügt direkt ein.

Außerdem wird ein lokaler MCP-Dienst bereitgestellt, mit dem sich die E-Sprache-IDE in Tools wie Codex, Claude Code, Gemini CLI einbinden lässt, damit diese die E-Sprache vollautomatisch codieren können (siehe MCP-Erläuterung unten).

📖 E-Sprache × KI-Agent-Praxis-Whitepaper · 📖 e-packager: .e in txt zerlegen, bearbeiten und wieder packen

Schnellstart

Lade das Release herunter und lege AutoLinker.fne in das lib-Verzeichnis der E-Sprache und aktiviere diese Unterstützungsbibliothek.

🔧 KI-/MCP-Funktionskonfigurationsanleitung (API-Key, Relay-Server, Konfigurationen für verschiedene Plattformen)

📊 Vor der Modellauswahl kannst du dir die E-Sprache-LLM-Benchmark-Bewertung ansehen und echte Antwortpakete mit Headless-Kompilierungsergebnissen vergleichen.

Related MCP server: ACE-MCP

Kernfunktionen

⭐ KI-Agenten-Sitzungsreiter

Sag der KI, was du tun möchtest; sie durchsucht, liest und bearbeitet automatisch den Quellcode des aktuellen Projekts.

⭐ KI-Funktionen im Kontextmenü

  • KI-Funktion optimieren — optimiert die aktuelle Funktion äquivalent

  • KI-Kommentare hinzufügen — erzeugt Kommentare für die aktuelle Funktion

  • KI-Funktion + Variablennamen übersetzen — benennt in englische lowerCamelCase um

  • KI-Auswahltext übersetzen

  • KI-Code nach aktuellem Seitentyp hinzufügen — erzeugt neuen Code basierend auf Seitentyp, Kontext und deinen Anforderungen

⭐ Projektstandarddatei {Dateiname}.AGENTS.md

Erstelle im selben Verzeichnis wie die .e-Quelldatei eine gleichnamige .AGENTS.md. Deren Inhalt wird automatisch als Projektstandard in die System-Prompts aller KI-Funktionen eingefügt (ähnlich wie CLAUDE.md bei Claude Code und AGENTS.md bei Codex).

Quelldatei

Standarddatei (gleiches Verzeichnis)

test_a.e

test_a.AGENTS.md

MyProject.e

MyProject.AGENTS.md

⭐ Verschiedene .e-Quelldateien verwenden verschiedene Linker

Kein manuelles Umschalten zwischen Linkern mehr. Füge unter [Werkzeugmenü → AutoLinker-Einstellungen → Linker] mehrere Gruppen von link.ini-Konfigurationen hinzu und wechsle unter [Hauptmenü → Kompilieren] den Linker für die aktuelle Quelldatei.

⭐ Automatischer Wechsel zwischen dynamischen/statischen ec-Modulen beim Debuggen/Kompilieren

Bereite für dasselbe Modul ein Paar ec-Dateien vor (dynamische/statische Version). AutoLinker ersetzt das im Projekt importierte entsprechende Modul automatisch beim Start des Debuggens und beim Start der Kompilierung. Typische Szenarien sind VMP SDK, ExDui: Für die Kompilierung wird die statische Version mit Lib-Deklaration benötigt, für das Debuggen ist nur die dynamische Version mit Dll-Deklaration verwendbar.

Öffne im Menü „Werkzeuge" der IDE die AutoLinker-Einstellungen für den automatischen ec-Modulwechsel, um Regeln zu pflegen. Hinweis: Du musst zuerst selbst eine dynamische oder statische ec referenzieren, und die beiden gepaarten ec-Dateien müssen im selben Ordner liegen (beim Ersetzen wird nur der Dateiname geändert).

⭐ Projektbezogene Kompilierung nach Konfiguration

Verwalte unter „Werkzeugmenü → AutoLinker-Einstellungen → Kompilierungskonfiguration" mehrere Ausgabekonfigurationen für das aktuelle .e/.ec-Projekt. Unterstützt werden auto, Fenster-EXE, Konsolen-EXE, DLL, E-Modul-Ziel, statische Kompilierung sowie PowerShell-Aktionen vor/nach der Kompilierung. Nach dem Speichern wähle die Konfiguration unter „Hauptmenü → Kompilieren → Nach Konfiguration kompilieren". Die Aufgabe erzeugt einen Snapshot des aktuellen IDE-Projekts und führt ihn asynchron in einer separaten, versteckten e.exe-Instanz aus. Die Konfiguration wird in <Dateiname>.autolinker.json neben der Quelldatei gespeichert; ausführliche Felder und Variablen finden sich in docs/project-build-menu-integration.md.

Lokaler MCP-Dienst

Um die E-Sprache-MCP in Tools wie Codex, Claude Code, Gemini CLI einzubinden, muss der Client MCP Streamable HTTP unterstützen.

Dienstadresse

  • Externe Clients verbinden sich fest mit http://127.0.0.1:19207/mcp; die IDE-Instanzen verwenden interne Backend-Ports ab 19208, das Gateway wird von der aktiven Instanz übernommen.

  • Nach erfolgreichem Start werden im IDE-Ausgabefenster und in autolinker.log protokolliert:

    [AutoLinker][LocalMCP] 本地 MCP 服务已启动:http://127.0.0.1:19207/mcp

Protokoll

  • JSON-RPC 2.0, initialize verhandelt 2025-11-25 / 2025-03-26 / 2024-11-05 (bei unbekannter Version Rückfall auf 2025-11-25).

  • Unterstützte Methoden: initialize, notifications/initialized, ping, tools/list, tools/call, DELETE /mcp.

  • Sicherheitsgrenzen: Nur an 127.0.0.1 gebunden; Browseranfragen mit nicht leerem Origin werden abgelehnt; kein CORS / Bearer-Token. Externe Aufrufe zeigen kein Genehmigungsfenster, führen aber weiterhin Tool-Whitelist, Parameter-Schema, Workspace-Refresh und CAS-Validierung mit Quellcode-Hash aus. Native Clients müssen pro Sitzung zuerst einmal erfolgreich refresh_workspace_mirror aufrufen. Es gibt fest 4 Arbeitsthreads, maximal 32 Verbindungen in der Warteschlange; bei Überlast wird HTTP 503 zurückgegeben.

Client-Konfigurationsbeispiele

Claude Code~/.claude.json; Gemini CLI~/.gemini/settings.json

{
  "mcpServers": {
    "AutoLinker": {
      "transport": "streamable_http",
      "url": "http://127.0.0.1:19207/mcp"
    }
  }
}

Codex~/.codex/config.toml

[mcp_servers.AutoLinker]
url = "http://127.0.0.1:19207/mcp"

Cursor / Windsurf / IDE — Auf der MCP-Einstellungsseite hinzufügen: Name AutoLinker, Typ http / streamable_http, URL http://127.0.0.1:19207/mcp.

Lese-/Schreibmodell für Projektquellcode

  • Die integrierte KI bereitet vor jeder Anfrage automatisch ein Mirror im full-Modus vor; externe MCP-Sitzungen müssen vor dem ersten Lesen/Schreiben refresh_workspace_mirror aufrufen. Das Mirror wird von e-packager nach %TEMP%/AutoLinker/workspace-mirror/ entpackt (einschließlich ungespeicherter Änderungen), ohne das Quellverzeichnis zu verschmutzen. mode unterstützt auto / main_only / full.

  • e_packager wird nur aufgerufen, wenn der Benutzer ausdrücklich verlangt, externe .e / .ec-Dateien zu analysieren, anzusehen, zu referenzieren oder zu replizieren, und die aktuelle MCP-Sitzung muss zuerst erfolgreich refresh_workspace_mirror aufgerufen haben. Der Parameter file_path ist Pflicht (absoluter Pfad oder Pfad relativ zum aktuellen Projektverzeichnis; nur vorhandene normale .e / .ec-Dateien werden akzeptiert). Die Datei wird in das schreibgeschützte Verzeichnis unimported_code/{Dateiname}/ des aktuellen Mirrors entpackt. Verwende list_files / search_code, um Dateien zu lokalisieren, und lies sie dann mit read_file / read_files; verwende read_code_item nicht für nicht referenzierten Quellcode und ändere ihn auch nicht mit Schreibwerkzeugen. Ein gleichnamiges Verzeichnis wird nur nach erfolgreichem Entpacken ersetzt; bei Erfolg werden operation="unpack", output_directory, file_count, die neue mirror_generation und read_hint zurückgegeben. Das Entpacken ändert die Mirror-Generation; beim weiteren Lesen muss wieder auf Seite 1 begonnen werden.

  • Das Lesen läuft einheitlich über relative Mirror-Pfade (list_files, search_code, read_file, read_files, read_code_item); bei großen Dateien wird next_source_byte_offset für das fortgesetzte Lesen zurückgegeben. Bei Folgeseiten wird empfohlen, die nicht null mirror_generation der vorherigen Seite unverändert mitzusenden; wird sie weggelassen, wird automatisch die aktuelle Mirror-Generation gebunden, aber explizit übergebene Cursor mit alter Generation werden weiterhin abgelehnt.

  • Vor dem Bearbeiten werden mit read_real_file die Seitenansicht und code_hash als CAS-Baseline geholt. Schreibwerkzeuge (edit_file, multi_edit_file, write_file usw.) nehmen file_path als Ziel, werden auf IDE-Programmelemente abgebildet und direkt in die IDE zurückgeschrieben, ohne eine Paket-Kompilierung durchzuführen.

  • Schreibvorgänge müssen SHA-256 expected_base_hash (bei Wiederherstellung expected_current_hash) enthalten, um zu verhindern, dass eine alte Baseline neue Änderungen überschreibt; das Ergebnis enthält nur Hash, Snapshot, Validierung und Änderungsstatistik, das vollständige Ergebnis liegt in structuredContent.

  • src/*.xml sind native Fensteroberflächendateien der E-Sprache und dienen nur zum Lesen und Suchen. Die aktuellen Werkzeuge unterstützen weder das Ändern von Position, Größe, Ebene und Eigenschaften von Fenstern oder Steuerelementen noch das Hinzufügen/Entfernen von Steuerelementen oder das Hinzufügen, Entfernen oder Ändern von Steuerelement-Ereignisbindungen. Der zugehörige Fenster-Assemblycode und vorhandener Ereignisbehandlungscode in src/*.txt bleibt bearbeitbar, aber das Hinzufügen eines neuen Ereignis-Unterprogramms bedeutet nicht, dass eine Steuerelement-Ereignisbindung hergestellt wurde. Feste Tabellen (Konstanten, globale Variablen, DLL-Deklarationen, Datentypen) können über die entsprechenden Pfade bearbeitet werden; das Zurückschreiben von Assembly-Variablen wird in IDE-akzeptablem Format verarbeitet.

  • Wenn mehrere IDE gleichzeitig geöffnet sind, rufe zuerst list_instances auf, um das Zielprojekt zu sehen, und wähle dann die Instanz mit select_instance; die Auswahl wird durch Mcp-Session-Id isoliert, und es findet kein stiller Wechsel statt, wenn die Instanz beendet wird.

Öffentliche Werkzeuge (tools/list)

Kategorie

Methode

Beschreibung

Lesen

refresh_workspace_mirror

Aktualisiert das Mirror aus dem IDE-Projekt im Speicher (auto / main_only / full)

Lesen

e_packager

Entpackt andere .e / .ec in das schreibgeschützte Referenzverzeichnis unimported_code/{Dateiname}/ des aktualisierten Mirrors, gibt neue mirror_generation zurück

Lesen

list_files

Listet Dateien im Mirror per glob auf

Lesen

search_code

Durchsucht den Mirror dateiweise; unterstützt mehrere Patterns, glob, Kontext, Pagination

Lesen

read_file / read_files

Liest einzelne / mehrere Dateien oder Bereiche, mit Zeilennummern

Lesen

read_code_item

Liest vollständige Unterprogramme / Deklarationsblöcke nach Namen des Top-Level-Codeelements

Lesen

read_real_file

Gibt Seitenansicht und code_hash aus der echten IDE-Seite zurück (Baseline vor dem Schreiben)

Bearbeiten

edit_file / multi_edit_file

Exakter Textersatz (einzeln / in Batches)

Bearbeiten

write_file

Überschreibt die echte Seite vollständig mit Quellcode, unterstützt expected_base_hash

Bearbeiten

diff_file

Vorschau der strukturierten Unterschiede, ohne zurückzuschreiben

Bearbeiten

restore_file_snapshot

Stellt den Snapshot vor dem Schreiben wieder her

Aktuelle Seite

get_current_page_info

Name, Typ und Parsing-Quelle der aktuellen Seite

Aktuelle Seite

get_current_eide_info

Quellcode-Pfad, IDE-Prozesspfad, MCP-Port usw.

Routing

list_instances

Listet laufende AutoLinker-IDE-Instanzen und die Auswahl der aktuellen Sitzung auf

Routing

select_instance

Leitet die aktuelle MCP-Sitzung an die angegebene Instanz

Kompilierung

compile_with_output_path

target ist standardmäßig auto, Erfolg wird über den Artefakt-Fingerabdruck verifiziert

Interaktion

run_powershell_command

Führt PowerShell nach Bestätigung aus, beendet den Prozessbaum bei Zeitüberschreitung

Netzwerk

search_web_tavily

Durchsucht das Web

Netzwerk

fetch_url

Ruft öffentlichen HTTP(S)-Text ab, blockiert Loopback / private Netze / Weiterleitungen

Netzwerk

extract_web_document

Extrahiert Haupttext und absolute Link-Übersicht von Webseiten

Weitere Funktionen

⭐ Headless-Kommandozeilen-Kompilierung

Es wird empfohlen, e.exe mit AutoLinkerTest headless-compile zu starten: Es schließt automatisch Startdialoge, versteckt die IDE, ruft compile_with_output_path auf und gibt die Ergebnis-JSON auf der Konsole aus. Dieser Starter unterstützt gleichzeitige Aufrufe durch mehrere Prozesse: Dasselbe .e-Projekt wird in Aufrufreihenfolge in eine Warteschlange gestellt, verschiedene Projekte können parallel kompiliert werden; die Ausgabepfade müssen weiterhin vom Aufrufer selbst eindeutig gehalten werden.

.\bin\fne_release\AutoLinkerTest.exe headless-compile `
  "C:\path\to\e571.exe" "D:\demo\demo.e" "D:\demo\build\demo.exe" `
  --target auto --static --result "D:\demo\build\compile-result.json" --timeout 120

target unterstützt auto, win_exe, win_console_exe, win_dll, ecom; --static gilt nur für EXE/DLL. Wenn --result weggelassen wird, erzeugt jeder Aufruf eine separate <输出文件>.headless.<invocation-id>.json und aktualisiert atomar die kompatible Datei <输出文件>.headless.json. {易语言目录}\AutoLinker\Log\headless_compile_last.json wird ebenfalls atomar als „letztes Ergebnis" aktualisiert; gleichzeitige Aufrufer sollten sich nicht darauf verlassen, um ihre Ergebnisse zu unterscheiden. Wenn --result explizit angegeben wird, sollten gleichzeitige Aufrufer jeweils unterschiedliche Pfade verwenden.

Das Hauptprogramm kann auch direkt gestartet werden (es ist nur für die Headless-Kompilierung zuständig; für frühe Dialoge und die Koordinierung paralleler Starts desselben Projekts wird weiterhin der Starter empfohlen):

"C:\path\to\e571.exe" "D:\demo\demo.e" `
  --autolinker-headless-compile `
  --autolinker-output "D:\demo\build\demo.exe" `
  --autolinker-target auto `
  --autolinker-result "D:\demo\build\compile-result.json" `
  --autolinker-invocation-id "compile-001"

⭐ Kernbibliotheksfunktionen neu schreiben

Durch das Ersetzen von Kernbibliotheksfunktionen durch modernes C++ lässt sich die Leistung erheblich steigern; es bietet zudem Schutz vor Merkmals-Cracking von e-Funktionen und AV-Bypass und gilt auch für Drittanbieter-Bibliotheken.

Verwendung

  1. Ermittle in IDA die korrekte 函数签名 (die meisten Kernbibliotheksfunktionen liegen in LibFn.obj von krnln_static.lib); eine Referenz ist die Open-Source-Implementierung der BlackMoon-Kernbibliothek.

  2. Implementiere die Funktionen in deiner eigenen Lib (siehe Projekt TestCore) und kompiliere sie im Release-Modus als 32-Bit-Lib. Beispiel:

    // C++20(需 VC2022)重写核心库「寻找文本」,约为核心库 300% 速度
    extern "C" void __cdecl krnln_fnInStr(PMDATA_INF pRetData, INT nArgCount, PMDATA_INF pArgInf) {
        std::string_view inputString = pArgInf[0].m_pText;
        std::string_view searchString = pArgInf[1].m_pText;
        if (inputString.empty() || searchString.empty()) { pRetData->m_int = -1; return; }
        size_t start = (pArgInf[2].m_dtDataType == _SDT_NULL || pArgInf[2].m_int <= 1) ? 0 : pArgInf[2].m_int - 1;
        auto r = (pArgInf[3].m_bool)
            ? std::search(inputString.begin() + start, inputString.end(), searchString.begin(), searchString.end(),
                          [](char a, char b) { return std::tolower(a) == std::tolower(b); })
            : std::search(inputString.begin() + start, inputString.end(), searchString.begin(), searchString.end());
        pRetData->m_int = (r != inputString.end()) ? std::distance(inputString.begin(), r) + 1 : -1;
    }
  3. Öffne im Menü „Werkzeuge" der IDE die AutoLinker-Einstellungen zum Neuschreiben von Kernbibliotheksfunktionen, um die Liste der zwangsweise zu verlinkenden .lib-Dateien zu pflegen:

    • Lib-Pfad: Die zusätzlich zu verlinkende .lib (vor krnln_static.lib eingefügt, um gleichnamige Symbole zu überschreiben)

    • Linker-Match: Wenn leer, gilt für alle Linker; wenn Text eingetragen, greift es nur, wenn der Name des gewählten Linkers diesen Text enthält (z. B. vc2022+pf)

    • Aktivierungsschalter: Eine Regel kann vorübergehend deaktiviert werden

  4. Nach dem Speichern wird es bei der statischen Kompilierung wirksam; Warnungen wie LNK4006 / LNK4088 können auftreten, beeinträchtigen den Betrieb aber nicht.

Hinweis

  • Diese Methode aktiviert automatisch /FORCE des Linkers, um Konflikte zu ignorieren.

  • Die eigene Lib muss /GL deaktivieren, sonst ignoriert der zweite Link-Durchlauf die von AutoLinker angepasste Lib-Reihenfolge.

  • Das Beispiel TestCore verwendet C++20 und benötigt den VC2022-Linker; die Einstellungsseite basiert auf WebView2 – bitte stelle sicher, dass die Runtime installiert ist.

⭐ Mit der Zurück-Taste der Maus zum letzten Bearbeitungsschritt zurück

Eine in anderen IDEs übliche Funktion; persönliche Vorliebe.

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

UpdatingMaintainers
UpdatingResponse time
Release cycle
0Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Persistent memory and cross-session learning for AI coding assistants (hosted remote MCP).

  • MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.

  • MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/giaosang8888-cmd/AutoLinker-5.1.2-Local'

If you have feedback or need assistance with the MCP directory API, please join our Discord server