Skip to main content
Glama

AutoLinker es la biblioteca de soporte de agente de IA para 易语言. Mediante ingeniería inversa, permite que la IA escriba código de forma totalmente automática: según tus necesidades, busca y lee automáticamente el código relevante, y lo edita, modifica e inserta directamente.

También ofrece un servicio MCP local que permite conectar el IDE de 易语言 con herramientas como Codex, Claude Code, Gemini CLI, etc., para que estas puedan invocar la codificación totalmente automática de 易语言 (ver la explicación de MCP más abajo).

📖 Libro blanco de prácticas de 易语言 × AI Agent · 📖 e-packager: descompone .e en txt, modifica y vuelve a empaquetar

Inicio rápido

Tras descargar la versión Release, coloca AutoLinker.fne en el directorio lib de 易语言 y habilita esta biblioteca de soporte.

🔧 Guía de configuración de las funciones de IA / MCP (API Key, intermediarios, configuración por plataforma)

📊 Antes de elegir un modelo, puedes consultar la puntuación de referencia de modelos de lenguaje grandes para 易语言 para comparar las respuestas reales y los resultados de compilación sin interfaz.

Related MCP server: ACE-MCP

Funciones principales

⭐ Pestaña de sesión de AI Agent

Dile a la IA lo que quieres hacer y ella buscará, leerá y editará automáticamente el código fuente del proyecto actual.

⭐ Funciones de IA en el menú contextual

  • Optimizar función con IA — Realiza una optimización equivalente de la función actual

  • Añadir comentarios con IA — Genera comentarios para la función actual

  • Traducir función y nombres de variables con IA — Renombra a inglés en lowerCamelCase

  • Traducir texto seleccionado con IA

  • Añadir código con IA según el tipo de página actual — Genera código nuevo basándose en el tipo de página actual, el contexto y tus necesidades

⭐ Archivo de normas del proyecto {nombre de archivo}.AGENTS.md

En el mismo directorio que el archivo fuente .e, crea un .AGENTS.md con el mismo nombre; su contenido se inyecta automáticamente en el prompt del sistema de todas las funciones de IA, actuando como normas del proyecto (similar al CLAUDE.md de Claude Code y al AGENTS.md de Codex).

Archivo fuente

Archivo de normas (mismo directorio)

test_a.e

test_a.AGENTS.md

MyProject.e

MyProject.AGENTS.md

⭐ Distintos archivos fuente .e usan distintos enlazadores

Ya no necesitas cambiar de enlazador manualmente. Añade varios conjuntos de configuración link.ini en 【Menú Herramientas → Configuración de AutoLinker → Enlazador】, y cambia el enlazador usado por el archivo fuente actual desde 【Menú principal → Compilar】.

⭐ Cambio automático entre módulos ec dinámicos y estáticos al depurar / compilar

Prepara un par de archivos ec para un mismo módulo (versión dinámica / versión estática). AutoLinker reemplaza automáticamente el módulo correspondiente importado en el proyecto al iniciar la depuración y al iniciar la compilación. Ejemplos típicos son VMP SDK y ExDui: la compilación requiere la versión estática declarada en Lib, mientras que la depuración solo puede usar la versión dinámica declarada en Dll.

En el menú «Herramientas» del IDE, abre Configuración de cambio automático de módulos EC de AutoLinker para mantener las reglas. Nota: primero debes añadir manualmente una de las dos variantes (dinámica o estática) del ec, y los dos ec de un par deben estar en la misma carpeta (al reemplazar solo se cambia el nombre del archivo).

⭐ Compilación a nivel de proyecto según configuración

En «Menú Herramientas → Configuración de AutoLinker → Configuración de compilación», puedes mantener varias configuraciones de salida para el proyecto .e/.ec actual, con soporte para auto, EXE de ventana, EXE de consola, DLL, destino de módulo de 易语言, compilación estática y acciones de PowerShell previas/posteriores a la compilación. Después de guardar, elige la configuración en «Menú principal → Compilar → Compilar según configuración»; la tarea genera una instantánea del proyecto actual del IDE y se ejecuta de forma asíncrona en una instancia oculta e independiente de e.exe. La configuración se guarda en <nombre de archivo>.autolinker.json junto al archivo fuente; los campos y variables detallados se encuentran en docs/project-build-menu-integration.md.

Servicio MCP local

Para conectar el MCP de 易语言 a herramientas como Codex, Claude Code, Gemini CLI, etc., el cliente debe ser compatible con MCP Streamable HTTP.

Dirección del servicio

  • Los clientes externos se conectan de forma fija a http://127.0.0.1:19207/mcp; cada instancia del IDE utiliza un puerto de backend interno a partir de 19208, y la puerta de enlace es asumida por la instancia superviviente.

  • Tras un inicio correcto, la ventana de salida del IDE y autolinker.log registrarán lo siguiente:

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

Protocolo

  • JSON-RPC 2.0; initialize negocia 2025-11-25 / 2025-03-26 / 2024-11-05 (las versiones desconocidas retroceden a 2025-11-25).

  • Métodos compatibles: initialize, notifications/initialized, ping, tools/list, tools/call, DELETE /mcp.

  • Límite de seguridad: solo se enlaza a 127.0.0.1, rechaza solicitudes de navegador con Origin no vacío, sin CORS / Bearer Token. Las llamadas externas no muestran una ventana de aprobación, pero siguen aplicando la lista blanca de herramientas, el esquema de parámetros, la actualización del espacio de trabajo y la verificación CAS del hash del código fuente. Cada sesión de cliente nativo debe llamar con éxito a refresh_workspace_mirror una vez. Hay 4 subprocesos de trabajo fijos, con un máximo de 32 conexiones en cola; en caso de sobrecarga devuelve HTTP 503.

Ejemplos de configuración de cliente

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 — En la página de configuración de MCP añade: Name AutoLinker, Type http / streamable_http, URL http://127.0.0.1:19207/mcp.

Modelo de lectura/escritura del código fuente del proyecto

  • La IA integrada prepara automáticamente la imagen en modo full antes de cada ronda de peticiones; las sesiones MCP externas deben llamar a refresh_workspace_mirror antes de la primera lectura/escritura. La imagen se descomprime con e-packager en %TEMP%/AutoLinker/workspace-mirror/ (incluye cambios no guardados) y no contamina el directorio de código fuente. mode admite auto / main_only / full.

  • Solo llama a e_packager cuando el usuario pida explícitamente analizar, ver, consultar o replicar archivos .e / .ec externos, y la sesión MCP actual debe haber llamado antes con éxito a refresh_workspace_mirror. El parámetro obligatorio es file_path (ruta absoluta, o ruta relativa al directorio del proyecto actual; solo se aceptan archivos .e / .ec normales existentes). El archivo se descomprime en el directorio de solo lectura unimported_code/{nombre de archivo}/ de la imagen actual; usa list_files / search_code para localizar archivos y luego read_file / read_files para leerlos. No uses read_code_item sobre código no referenciado ni utilices herramientas de escritura para modificarlo. Un directorio con el mismo nombre solo se reemplaza tras una descompresión correcta; en caso de éxito devuelve operation="unpack", output_directory, file_count, el nuevo mirror_generation y read_hint. La descompresión cambia la generación de la imagen, por lo que la lectura paginada debe reiniciarse desde la primera página.

  • Todas las lecturas usan rutas relativas dentro de la imagen (list_files, search_code, read_file, read_files, read_code_item); para archivos grandes se devuelve next_source_byte_offset para continuar la lectura. Para la página siguiente se recomienda devolver tal cual el mirror_generation no nulo de la página anterior; si se omite, se vincula automáticamente a la generación actual de la imagen, pero los cursores con una generación anterior pasada explícitamente seguirán siendo rechazados.

  • Antes de editar, usa read_real_file para obtener la vista paginada y code_hash como línea base CAS. Las herramientas de escritura (edit_file, multi_edit_file, write_file, etc.) se dirigen a file_path, se asignan de nuevo al elemento del programa en el IDE y escriben directamente en el IDE, sin compilar de vuelta.

  • Las escrituras deben incluir el SHA-256 expected_base_hash (para restaurar se usa expected_current_hash) para evitar que una línea base antigua sobrescriba cambios nuevos; el resultado solo devuelve el hash, la instantánea, la verificación y las estadísticas de cambios; el resultado completo está en structuredContent.

  • src/*.xml son los archivos de interfaz de ventana nativos de 易语言, solo para lectura y búsqueda. Las herramientas actuales no admiten ajustar la posición, el tamaño, el nivel o las propiedades de ventanas o controles, ni añadir o eliminar controles, ni crear, eliminar o modificar enlaces de eventos de controles. El código de los módulos de ventana y el código de manejo de eventos existentes en el correspondiente src/*.txt siguen siendo editables, pero añadir un subprograma de evento nuevo no significa que se haya establecido el enlace del evento del control. Las tablas fijas (constantes, variables globales, declaraciones DLL, tipos de datos) pueden editarse a través de la ruta correspondiente; la reescritura de variables de módulo se procesará en un formato aceptable para el IDE.

  • Cuando hay varios IDEs abiertos a la vez, llama primero a list_instances para ver el proyecto de destino y luego usa select_instance para elegir la instancia; la selección queda aislada por Mcp-Session-Id y no cambia silenciosamente cuando una instancia se cierra.

Herramientas públicas (tools/list)

Categoría

Método

Descripción

Lectura

refresh_workspace_mirror

Refresca la imagen desde el proyecto en memoria del IDE (auto / main_only / full)

Lectura

e_packager

Descomprime otros .e / .ec en la imagen refrescada dentro del directorio de solo lectura unimported_code/{nombre de archivo}/, y devuelve el nuevo mirror_generation

Lectura

list_files

Lista los archivos de la imagen mediante glob

Lectura

search_code

Busca archivo por archivo dentro de la imagen; admite patterns múltiples, glob, contexto y paginación

Lectura

read_file / read_files

Lee uno o varios archivos o intervalos, con números de línea

Lectura

read_code_item

Lee el subprograma o bloque de declaración completo por nombre de elemento de código de nivel superior

Lectura

read_real_file

Devuelve la vista paginada y code_hash desde la página real del IDE (línea base previa a la escritura)

Edición

edit_file / multi_edit_file

Reemplazo de texto exacto (individual / múltiple)

Edición

write_file

Sobrescribe por completo el código fuente en la página real; admite expected_base_hash

Edición

diff_file

Previsualiza las diferencias estructuradas sin escribir

Edición

restore_file_snapshot

Restaura la instantánea anterior a la escritura

Página actual

get_current_page_info

Nombre, tipo y origen de análisis de la página actual

Página actual

get_current_eide_info

Ruta del código fuente, ruta del proceso del IDE, puerto MCP, etc.

Enrutamiento

list_instances

Lista las instancias del IDE de AutoLinker en ejecución y la selección de la sesión actual

Enrutamiento

select_instance

Enruta la sesión MCP actual a la instancia especificada

Compilación

compile_with_output_path

target por defecto es auto; verifica el éxito mediante la huella del artefacto

Interacción

run_powershell_command

Ejecuta PowerShell tras confirmación; termina el árbol de procesos si hay tiempo de espera

Red

search_web_tavily

Busca páginas web en línea

Red

fetch_url

Obtiene texto HTTP(S) de la red pública; bloquea bucle local / red privada / redirecciones

Red

extract_web_document

Extrae el cuerpo de la página web y un resumen de enlaces absolutos

Otras funciones

⭐ Compilación por línea de comandos sin interfaz (headless)

Se recomienda usar AutoLinkerTest headless-compile para iniciar e.exe: cierra automáticamente los diálogos de inicio, oculta el IDE, llama a compile_with_output_path y muestra el JSON resultante en la consola. Este lanzador admite que varios procesos lo invoquen a la vez: para el mismo proyecto .e, las llamadas se ponen en cola en orden de invocación; proyectos distintos pueden compilarse en paralelo; la ruta de salida debe seguir siendo única por parte de quien invoca.

.\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 admite auto, win_exe, win_console_exe, win_dll, ecom; --static solo es aplicable a EXE/DLL. Si se omite --result, cada invocación genera un archivo independiente <archivo de salida>.headless.<invocation-id>.json y actualiza de forma atómica el archivo compatible <archivo de salida>.headless.json. {directorio de 易语言}\AutoLinker\Log\headless_compile_last.json también es el «último resultado» actualizado de forma atómica; los invocadores concurrentes no deben depender de él para distinguir sus respectivos resultados. Cuando se pasa explícitamente --result, los invocadores concurrentes deben usar rutas diferentes para cada uno.

También se puede iniciar directamente el programa principal (solo se encarga de la compilación headless; para los diálogos iniciales y la coordinación del arranque concurrente del mismo proyecto se sigue recomendando el lanzador):

"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"

⭐ Reescritura de funciones de la biblioteca principal

Sustituir funciones de la biblioteca principal con C++ moderno puede mejorar significativamente el rendimiento y aporta efectos de protección contra el descifrado por características de funciones e y evasión de antivirus; también es aplicable a bibliotecas de terceros.

Método de uso

  1. Determina la firma de función correcta en IDA (la mayoría de las funciones de la biblioteca principal están en LibFn.obj de krnln_static.lib); puedes consultar la implementación de código abierto de la biblioteca principal de BlackMoon.

  2. Implementa la función en tu propia lib (consulta el proyecto TestCore) y compila en Release como lib de 32 bits. Ejemplo:

// 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;
}
  1. En el menú «Herramientas» del IDE, abre Configuración de reescritura de funciones de la biblioteca principal de AutoLinker para mantener la lista de .lib que se deben enlazar de forma forzada:

    • Ruta de Lib: el .lib que se añade al enlazador (se coloca antes de krnln_static.lib para sobrescribir símbolos del mismo nombre)

    • Coincidencia de enlazador: si se deja vacío, se aplica a todos los enlazadores; si se rellena con texto, solo se aplica cuando el nombre del enlazador seleccionado contiene ese texto (p. ej., vc2022+pf)

    • Interruptor de activación: permite desactivar temporalmente una regla

  2. Tras guardar, la compilación estática aplica el cambio; aparecerán advertencias como LNK4006 / LNK4088, que no afectan a la ejecución.

Nota

  • Este método activa automáticamente /FORCE del enlazador para ignorar conflictos.

  • Tu propia lib debe tener /GL desactivado; de lo contrario, el segundo enlazado ignorará el orden de libs ajustado por AutoLinker.

  • El ejemplo TestCore usa C++20 y requiere el enlazador VC2022; la página de configuración está basada en WebView2, así que asegúrate de tener el runtime instalado.

⭐ La tecla de retroceso del ratón vuelve a la modificación anterior

Una función común en otros IDEs, por preferencia personal.

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