AutoLinker
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.
📊 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
lowerCamelCaseumKI-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) |
|
|
|
|
⭐ 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 ab19208, das Gateway wird von der aktiven Instanz übernommen.Nach erfolgreichem Start werden im IDE-Ausgabefenster und in
autolinker.logprotokolliert:[AutoLinker][LocalMCP] 本地 MCP 服务已启动:http://127.0.0.1:19207/mcp
Protokoll
JSON-RPC 2.0,initializeverhandelt2025-11-25/2025-03-26/2024-11-05(bei unbekannter Version Rückfall auf2025-11-25).Unterstützte Methoden:
initialize,notifications/initialized,ping,tools/list,tools/call,DELETE /mcp.Sicherheitsgrenzen: Nur an
127.0.0.1gebunden; Browseranfragen mit nicht leeremOriginwerden 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 erfolgreichrefresh_workspace_mirroraufrufen. 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/Schreibenrefresh_workspace_mirroraufrufen. Das Mirror wird von e-packager nach%TEMP%/AutoLinker/workspace-mirror/entpackt (einschließlich ungespeicherter Änderungen), ohne das Quellverzeichnis zu verschmutzen.modeunterstütztauto/main_only/full.e_packagerwird 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 erfolgreichrefresh_workspace_mirroraufgerufen haben. Der Parameterfile_pathist Pflicht (absoluter Pfad oder Pfad relativ zum aktuellen Projektverzeichnis; nur vorhandene normale.e/.ec-Dateien werden akzeptiert). Die Datei wird in das schreibgeschützte Verzeichnisunimported_code/{Dateiname}/des aktuellen Mirrors entpackt. Verwendelist_files/search_code, um Dateien zu lokalisieren, und lies sie dann mitread_file/read_files; verwenderead_code_itemnicht für nicht referenzierten Quellcode und ändere ihn auch nicht mit Schreibwerkzeugen. Ein gleichnamiges Verzeichnis wird nur nach erfolgreichem Entpacken ersetzt; bei Erfolg werdenoperation="unpack",output_directory,file_count, die neuemirror_generationundread_hintzurü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 wirdnext_source_byte_offsetfür das fortgesetzte Lesen zurückgegeben. Bei Folgeseiten wird empfohlen, die nicht nullmirror_generationder 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_filedie Seitenansicht undcode_hashals CAS-Baseline geholt. Schreibwerkzeuge (edit_file,multi_edit_file,write_fileusw.) nehmenfile_pathals 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 Wiederherstellungexpected_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 instructuredContent.src/*.xmlsind 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 insrc/*.txtbleibt 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_instancesauf, um das Zielprojekt zu sehen, und wähle dann die Instanz mitselect_instance; die Auswahl wird durchMcp-Session-Idisoliert, und es findet kein stiller Wechsel statt, wenn die Instanz beendet wird.
Öffentliche Werkzeuge (tools/list)
Kategorie | Methode | Beschreibung |
Lesen |
| Aktualisiert das Mirror aus dem IDE-Projekt im Speicher ( |
Lesen |
| Entpackt andere |
Lesen |
| Listet Dateien im Mirror per glob auf |
Lesen |
| Durchsucht den Mirror dateiweise; unterstützt mehrere Patterns, glob, Kontext, Pagination |
Lesen |
| Liest einzelne / mehrere Dateien oder Bereiche, mit Zeilennummern |
Lesen |
| Liest vollständige Unterprogramme / Deklarationsblöcke nach Namen des Top-Level-Codeelements |
Lesen |
| Gibt Seitenansicht und |
Bearbeiten |
| Exakter Textersatz (einzeln / in Batches) |
Bearbeiten |
| Überschreibt die echte Seite vollständig mit Quellcode, unterstützt |
Bearbeiten |
| Vorschau der strukturierten Unterschiede, ohne zurückzuschreiben |
Bearbeiten |
| Stellt den Snapshot vor dem Schreiben wieder her |
Aktuelle Seite |
| Name, Typ und Parsing-Quelle der aktuellen Seite |
Aktuelle Seite |
| Quellcode-Pfad, IDE-Prozesspfad, MCP-Port usw. |
Routing |
| Listet laufende AutoLinker-IDE-Instanzen und die Auswahl der aktuellen Sitzung auf |
Routing |
| Leitet die aktuelle MCP-Sitzung an die angegebene Instanz |
Kompilierung |
|
|
Interaktion |
| Führt PowerShell nach Bestätigung aus, beendet den Prozessbaum bei Zeitüberschreitung |
Netzwerk |
| Durchsucht das Web |
Netzwerk |
| Ruft öffentlichen HTTP(S)-Text ab, blockiert Loopback / private Netze / Weiterleitungen |
Netzwerk |
| 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 120target 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
Ermittle in IDA die korrekte
函数签名(die meisten Kernbibliotheksfunktionen liegen inLibFn.objvonkrnln_static.lib); eine Referenz ist die Open-Source-Implementierung der BlackMoon-Kernbibliothek.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; }Ö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(vorkrnln_static.libeingefü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
Nach dem Speichern wird es bei der statischen Kompilierung wirksam; Warnungen wie
LNK4006/LNK4088können auftreten, beeinträchtigen den Betrieb aber nicht.
Hinweis
Diese Methode aktiviert automatisch
/FORCEdes Linkers, um Konflikte zu ignorieren.Die eigene Lib muss
/GLdeaktivieren, sonst ignoriert der zweite Link-Durchlauf die von AutoLinker angepasste Lib-Reihenfolge.Das Beispiel
TestCoreverwendet 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.
This server cannot be installed
Maintenance
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
- AlicenseNot gradedqualityBmaintenanceEmpower any MCP-compatible AI Agent(MCP Client) with engineering-grade capabilities to understand, modify, run, and deliver real-world code repositories.941Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables AI clients to perform local code search, indexing, and analysis across Java, JavaScript/TypeScript, .NET/C#, and Python projects through the MCP protocol.2Apache 2.0
- FlicenseNot gradedqualityDmaintenanceEnables LLM-powered code analysis, generation, debugging, and context management through MCP integration with IDEs like Cursor and Claude Desktop.
- AlicenseNot gradedqualityAmaintenanceEnables compatible MCP AI tools to read, write, design windows, and run programs in the E-Language IDE.MIT
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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