AutoLinker
AutoLinker は易语言の AI Agent サポートライブラリです。リバースエンジニアリングにより、AI がコードを全自動で作成します。要件に応じて関連コードを自動的に検索・読み取り、直接編集・修正・挿入します。
また、ローカル MCP サービスを提供し、易语言 IDE を Codex、Claude Code、Gemini CLI などのツールに接続して、それらに易语言での全自動コーディングを実行させることができます(下記の MCP 説明を参照)。
📖 易语言 × AI Agent 実践ホワイトペーパー · 📖 e-packager:.e を txt に分解して修正後に再パッケージ
クイックスタート
Release をダウンロードしたら、AutoLinker.fne を易语言の lib ディレクトリに配置し、このサポートライブラリを有効にします。
🔧 AI / MCP 機能設定ガイド(API Key、中継サーバー、各プラットフォーム設定)
📊 モデルを選択する前に、易语言大規模言語モデルベンチマークスコア を確認して、実際の応答とヘッドレスコンパイルの成績を比較できます。
Related MCP server: 易语言 Universal MCP
コア機能
⭐ AI Agent セッションタブ
AI にやりたいことを伝えると、現在のプロジェクトのソースコードを自動的に検索・読み取り・編集します。
⭐ 右クリックメニュー AI 機能
AI 関数の最適化 — 現在の関数を等価なまま最適化します
AI コメント追加 — 現在の関数のコメントを生成します
AI 関数名+変数名の翻訳 — 英語の
lowerCamelCaseにリネームしますAI 選択テキストの翻訳
AI 現在のページタイプに応じたコード追加 — 現在のページタイプ、コンテキスト、およびあなたの要件に基づいて新しいコードを生成します
⭐ プロジェクト規約ファイル {文件名}.AGENTS.md
.e ソースファイルと同じディレクトリに同名の .AGENTS.md を作成すると、その内容がすべての AI 機能のシステムプロンプトに自動的に注入され、プロジェクト規約として機能します(Claude Code の CLAUDE.md、Codex の AGENTS.md に似ています)。
ソースファイル | 規約ファイル(同ディレクトリ) |
|
|
|
|
⭐ .e ソースファイルごとに異なるリンカーを使用
もう手動でリンカーを切り替える必要はありません。【ツールメニュー → AutoLinker 設定 → リンカー】で複数の link.ini 設定を追加し、【メインメニュー → コンパイル】で現在のソースファイルが使用するリンカーを切り替えます。
⭐ デバッグ/コンパイル時の動的・静的 ec モジュール自動切替
同じモジュールについて一対の ec ファイル(動的版 / 静的版)を用意しておくと、AutoLinker はデバッグ開始時とコンパイル開始時に、プロジェクトにインポート済みの対応モジュールを自動的に置き換えます。代表的な例として VMP SDK、ExDui などがあります。コンパイルには Lib 宣言の静的版が必要で、デバッグでは Dll 宣言の動的版しか使えません。
IDE の「ツール」メニューから AutoLinker EC モジュール自動切替設定 を開いてルールを管理します。注意:事前に動的/静的のいずれかの ec を自分で参照しておく必要があり、ペアとなる 2 つの ec は同じフォルダーに置く必要があります(置換時にはファイル名のみ変更されます)。
⭐ プロジェクト単位の設定別コンパイル
「ツールメニュー → AutoLinker 設定 → コンパイル設定」で、現在の .e/.ec プロジェクト向けに複数の出力設定を管理できます。対応するのは
auto、ウィンドウ EXE、コンソール EXE、DLL、易模块ターゲット、静的コンパイル、およびコンパイル前/後の PowerShell アクションです。
保存後、「メインメニュー → コンパイル → 設定別コンパイル」から設定を選択します。タスクは現在の IDE プロジェクトのスナップショットを生成し、独立した非表示の
e.exe インスタンスで非同期に実行されます。設定はソースファイルの隣の <文件名>.autolinker.json に保存され、詳細なフィールドと変数は
docs/project-build-menu-integration.md にあります。
ローカル MCP サービス
易语言 MCP を Codex、Claude Code、Gemini CLI などのツールに接続するには、クライアントが MCP Streamable HTTP をサポートしている必要があります。
サービスアドレス
外部クライアントは
http://127.0.0.1:19207/mcpに固定接続します。各 IDE インスタンスは19208以降の内部バックエンドポートを使用し、ゲートウェイは稼働中のインスタンスが引き継ぎます。起動に成功すると、IDE の出力ウィンドウと
autolinker.logに次のように記録されます:
[AutoLinker][LocalMCP] 本地 MCP 服务已启动:http://127.0.0.1:19207/mcpプロトコル
JSON-RPC 2.0。initializeは2025-11-25/2025-03-26/2024-11-05をネゴシエーションします(未知のバージョンは2025-11-25にフォールバック)。サポートするメソッド:
initialize、notifications/initialized、ping、tools/list、tools/call、DELETE /mcp。セキュリティ境界:
127.0.0.1のみにバインドし、空でないOriginを持つブラウザーリクエストを拒否します。CORS / Bearer Token はありません。外部からの呼び出しでは承認ダイアログは表示されませんが、ツールのホワイトリスト、パラメータースキーマ、ワークスペースの更新、ソースコードハッシュの CAS 検証は引き続き実行されます。ネイティブクライアントは、各セッションで最初にrefresh_workspace_mirrorを 1 回成功させる必要があります。固定 4 つのワーカースレッド、最大 32 接続のキュー、過載時は HTTP 503 を返します。
クライアント設定例
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 — MCP 設定ページで追加:Name AutoLinker、Type http / streamable_http、URL http://127.0.0.1:19207/mcp。
プロジェクトソースコード読み書きモデル
内蔵 AI は各リクエストの前に
fullモードでミラーを自動的に準備します。外部 MCP セッションでは、最初の読み書きの前にrefresh_workspace_mirrorを呼び出す必要があります。ミラーは e-packager によって%TEMP%/AutoLinker/workspace-mirror/に展開されます(未保存の変更を含みます)。ソースディレクトリを汚染しません。modeはauto/main_only/fullをサポートします。ユーザーが外部の
.e/.ecファイルの解析、閲覧、参照、または複製を明示的に要求した場合にのみe_packagerを呼び出します。また、現在の MCP セッションは事前にrefresh_workspace_mirrorを成功させている必要があります。パラメーターは必須のfile_path(絶対パス、または現在のプロジェクトディレクトリからの相対パス。存在する通常の.e/.ecファイルのみ受け付けます)で、ファイルは現在のミラーの読み取り専用ディレクトリunimported_code/{文件名}/に展開されます。ファイルの特定にはlist_files/search_codeを使用し、読み取りにはread_file/read_filesを使用します。未参照のソースに対してread_code_itemは使用せず、書き込みツールによる変更も禁止です。同名のディレクトリは展開に成功した場合にのみ置き換えられます。成功するとoperation="unpack"、output_directory、file_count、新しいmirror_generation、read_hintが返されます。展開によりミラーの世代が変わるため、ページネーション読み取りは最初のページからやり直す必要があります。読み取りはすべてミラーの相対パスで行います(
list_files、search_code、read_file、read_files、read_code_item)。大きなファイルではnext_source_byte_offsetが返され、続きの読み取りに使用します。続きのページでは、前のページの非ゼロのmirror_generationをそのまま返すことを推奨します。渡し忘れた場合は現在のミラー世代に自動的にバインドされますが、明示的に渡された古い世代のカーソルは拒否されます。編集前には
read_real_fileでページングビューとcode_hashを取得し、CAS のベースラインとします。書き込みツール(edit_file、multi_edit_file、write_fileなど)はfile_pathをターゲットとし、IDE のプログラム項目にマッピングして IDE に直接書き戻します。コンパイルは行いません。書き込み時には SHA-256 の
expected_base_hash(復元用はexpected_current_hash)を指定し、古いベースラインが新しい変更を上書きしないようにします。結果はハッシュ、スナップショット、検証、変更統計のみを返し、完全な結果はstructuredContentにあります。src/*.xmlは易语言のネイティブウィンドウ UI ファイルであり、読み取りと検索専用です。現在のツールでは、ウィンドウやコントロールの位置、サイズ、階層、プロパティの調整、コントロールの追加・削除、コントロールのイベントバインディングの新規追加・削除・変更はサポートされていません。対応するsrc/*.txt内のウィンドウアセンブリコードと既存のイベント処理コードは編集できますが、新しいイベントサブルーチンを追加しても、コントロールのイベントバインディングが確立されたことにはなりません。固定テーブル(定数、グローバル変数、DLL 宣言、データ型)は対応するパスから編集でき、アセンブリ変数の書き戻しは IDE が受け入れ可能な形式で処理されます。複数の IDE を同時に開いている場合は、最初に
list_instancesを呼び出して対象プロジェクトを確認し、次にselect_instanceでインスタンスを選択します。選択はMcp-Session-Idごとに分離され、インスタンスが終了しても静かに切り替わることはありません。
公開ツール(tools/list)
カテゴリ | メソッド | 説明 |
読み取り |
| IDE メモリ上のプロジェクトからミラーを更新( |
読み取り |
| 更新後のミラー内で他の |
読み取り |
| glob でミラー内のファイルを一覧表示 |
読み取り |
| ミラー内をファイルごとに検索。複数 patterns、glob、コンテキスト、ページネーションに対応 |
読み取り |
| 単一 / 複数ファイルまたは範囲を読み取り、行番号付き |
読み取り |
| 最上位のコード項目名で完全なサブルーチン / 宣言ブロックを読み取り |
読み取り |
| IDE の実ページからページングビューと |
編集 |
| 正確なテキスト置換(単一 / 複数) |
編集 |
| 完全なソースコードで実ページを上書き。 |
編集 |
| 構造化された差分をプレビューし、書き戻さない |
編集 |
| 書き込み前のスナップショットを復元 |
現在のページ |
| 現在のページの名前、タイプ、解析ソース |
現在のページ |
| ソースパス、IDE プロセスパス、MCP ポートなど |
ルーティング |
| 実行中の AutoLinker IDE インスタンスと現在のセッション選択を一覧表示 |
ルーティング |
| 現在の MCP セッションを指定のインスタンスにルーティング |
コンパイル |
|
|
インタラクション |
| 確認後に PowerShell を実行。タイムアウト時はプロセスツリーを終了 |
ネットワーク |
| Web を検索 |
ネットワーク |
| パブリック HTTP(S) のテキストを取得し、ループバック / プライベートネットワーク / リダイレクトをブロック |
ネットワーク |
| Web ページの本文と絶対リンクの要約を抽出 |
その他の機能
⭐ ヘッドレスコマンドラインコンパイル
AutoLinkerTest headless-compile で e.exe を起動することを推奨します。起動時のポップアップを自動的に閉じ、IDE を非表示にし、compile_with_output_path を呼び出して、結果の JSON をコンソールに出力します。このランチャーは複数のプロセスからの同時呼び出しをサポートします。同じ .e プロジェクトは呼び出し順にキューイングされ、異なるプロジェクトは並行してコンパイルできます。出力パスは引き続き呼び出し側がそれぞれ一意に保つ必要があります。
.\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 は auto、win_exe、win_console_exe、win_dll、ecom をサポートします。--static は EXE/DLL にのみ適用されます。--result を省略すると、呼び出しごとに独立した <输出文件>.headless.<invocation-id>.json が生成され、互換ファイル <输出文件>.headless.json が原子的に更新されます。{易语言目录}\AutoLinker\Log\headless_compile_last.json も原子的に更新される「最新の結果」ですが、並行呼び出し側はこれに依存して各自の結果を区別すべきではありません。--result を明示的に渡す場合は、並行呼び出し側はそれぞれ異なるパスを使用してください。
メインプログラムを直接起動することもできます(ヘッドレスコンパイルのみを担当します。起動初期のポップアップや同一プロジェクトの並行起動の調整には、やはりランチャーを使用することを推奨します):
"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"⭐ コアライブラリ関数の書き換え
コアライブラリ関数をモダンな C++ で置き換えることで、パフォーマンスを大幅に向上させ、e 関数の特徴的パターンによるクラッキング防止や検知回避の効果も得られます。サードパーティ製ライブラリにも同様に適用できます。
使用方法
IDA で正しい
函数签名を特定します(コアライブラリ関数のほとんどはkrnln_static.libのLibFn.objにあります)。黑月コアライブラリのオープンソース実装 を参考にできます。自身の Lib で関数を実装します(
TestCoreプロジェクトを参照)。Release で 32 ビット lib にコンパイルします。例:
// 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;
}IDE の「ツール」メニューから AutoLinker コアライブラリ関数書き換え設定 を開き、強制的にリンクする
.libのリストを管理します:Lib パス:追加でリンクする
.lib(krnln_static.libより前に配置して同名シンボルを上書き)リンカー一致:空欄の場合はすべてのリンカーに有効。テキストを入力すると、選択したリンカー名がそのテキストを含む場合にのみ有効(例:
vc2022+pf)有効化スイッチ:特定のルールを一時的に無効化できます
保存後に静的コンパイルを行うと有効になります。
LNK4006/LNK4088などの警告が出ますが、実行には影響しません。
注意事項
この方法ではリンカーの
/FORCEが自動的に有効になり、競合が無視されます。自身の Lib では
/GLを無効にする必要があります。無効にしないと、2 回目のリンク時に AutoLinker が調整した Lib の順序が無視されます。サンプルの
TestCoreは C++20 を使用しているため、VC2022 リンカーが必要です。設定ページは WebView2 ベースのため、ランタイムがインストールされていることを確認してください。
⭐ マウス戻るボタンで前回の変更に戻る
他の IDE ではよくある機能ですが、個人的な好みです。
This server cannot be deployed
Maintenance
Related MCP Connectors
A full backend your AI coding agent can set up over MCP
Self-hosted AI workspace: semantic RAG document search, long-term memory, and AI chat via MCP.
Shared memory MCP server for Claude Code, Codex, Gemini CLI and Cursor. Cited, editable.
List, read, edit, and deploy your GenMB AI-generated apps from any MCP client.
Related MCP Servers
- 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.1Apache 2.0
- AlicenseNot gradedqualityAmaintenanceEnables compatible MCP AI tools to read, write, design windows, and run programs in the E-Language IDE.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI clients to control local Windows development tools by exposing project files, code search, file editing, test execution, Git operations, and resource viewing through a secure MCP interface with permission controls.11Apache 2.0
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to access unified development tools including code generation, documentation synchronization, test case rendering, and architecture graph queries through a single MCP server.-