AutoLinker
AutoLinker 是易语言的 AI Agent 支持库,通过逆向让 AI 全自动编写代码:根据你的需求自动查找、读取相关代码,并直接编辑、修改、插入。
同时提供本地 MCP 服务,可将易语言 IDE 接入 Codex、Claude Code、Gemini CLI 等工具,让它们调用易语言全自动编码(见下方 MCP 说明)。
快速开始
下载 Release 后,将 AutoLinker.fne 放入易语言 lib 目录并启用该支持库。
🔧 AI / MCP 功能配置指南(API Key、中转站、各平台配置)
📊 选择模型前,可查看易语言大模型基准评分,对比真实回包与无头编译成绩。
Related MCP server: 易语言 Universal MCP
核心功能
⭐ AI Agent 会话页签
告诉 AI 你要做什么,它会自动搜索、读取、编辑当前工程源码。
⭐ 右键菜单 AI 功能
AI 优化函数 — 对当前函数做等价优化
AI 添加注释 — 为当前函数生成注释
AI 翻译函数 + 变量名 — 重命名为英文
lowerCamelCaseAI 翻译选中文本
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,且成对的两个 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。外部调用不弹审批窗,但仍执行工具白名单、参数 Schema、工作区刷新与源码哈希 CAS 校验。原生客户端每个会话须先成功调用一次refresh_workspace_mirror。固定 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为易语言原生窗口界面文件,仅供读取搜索。当前工具不支持调整窗口或控件的位置、大小、层级和属性,不支持添加、删除控件,也不支持新增、删除或修改控件事件绑定。对应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,超时终止进程树 |
联网 |
| 联网搜索网页 |
联网 |
| 抓取公网 HTTP(S) 文本,拦截回环 / 私网 / 重定向 |
联网 |
| 提取网页正文与绝对链接摘要 |
其他功能
⭐ 无头命令行编译
推荐用 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,否则二次链接会忽略 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 gradedqualityDmaintenanceEnables 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.-