Skip to main content
Glama

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: ACE-MCP

핵심 기능

⭐ AI Agent 세션 탭

AI에게 수행할 작업을 말하면 현재 프로젝트 소스 코드를 자동으로 검색, 읽기, 편집합니다.

⭐ 마우스 오른쪽 버튼 메뉴 AI 기능

  • AI 함수 최적화 — 현재 함수를 동등하게 최적화합니다

  • AI 주석 추가 — 현재 함수에 대한 주석을 생성합니다

  • AI 함수 + 변수명 번역 — 영문 lowerCamelCase로 이름을 변경합니다

  • AI 선택 텍스트 번역

  • AI 현재 페이지 유형에 따라 코드 추가 — 현재 페이지 유형, 컨텍스트 및 요구사항에 따라 새 코드를 생성합니다

⭐ 프로젝트 규범 파일 {文件名}.AGENTS.md

.e 소스 파일과 같은 디렉터리에 동일한 이름의 .AGENTS.md를 생성하면, 해당 내용이 모든 AI 기능의 시스템 프롬프트에 자동으로 주입되어 프로젝트 규범으로 사용됩니다(Claude Code의 CLAUDE.md, Codex의 AGENTS.md와 유사).

원본 파일

규범 파일(같은 디렉터리)

test_a.e

test_a.AGENTS.md

MyProject.e

MyProject.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, initialize2025-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.jsonGemini 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/로 압축 해제하며(저장되지 않은 변경 사항 포함), 소스 디렉터리를 오염시키지 않습니다. modeauto / 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_generationread_hint를 반환합니다. 압축 해제는 미러 세대를 변경하므로 페이지 나누기 읽기는 첫 페이지부터 다시 시작해야 합니다.

  • 읽기는 모두 미러 상대 경로로 수행합니다(list_files, search_code, read_file, read_files, read_code_item). 큰 파일은 next_source_byte_offset를 반환하여 계속 읽기에 사용합니다. 다음 페이지를 요청할 때는 이전 페이지의 0이 아닌 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)

카테고리

메서드

설명

읽기

refresh_workspace_mirror

IDE 메모리 프로젝트에서 미러 새로고침(auto / main_only / full)

읽기

e_packager

새로고침된 미러에서 다른 .e / .ec를 읽기 전용 참조 디렉터리 unimported_code/{文件名}/로 압축 해제하고 새 mirror_generation 반환

읽기

list_files

glob으로 미러 내 파일 나열

읽기

search_code

미러 내 파일별 검색, 일괄 patterns, glob, 컨텍스트, 페이지 나누기 지원

읽기

read_file / read_files

개별/일괄 파일 또는 구간 읽기, 줄 번호 포함

읽기

read_code_item

최상위 코드 항목 이름으로 전체 서브프로그램/선언 블록 읽기

읽기

read_real_file

IDE 실제 페이지에서 페이지 나누기 보기와 code_hash 반환(쓰기 전 기준선)

편집

edit_file / multi_edit_file

정확한 텍스트 교체(개별/일괄)

편집

write_file

전체 소스로 실제 페이지를 덮어쓰기, expected_base_hash 지원

편집

diff_file

구조화된 차이 미리 보기, 쓰지 않음

편집

restore_file_snapshot

쓰기 전 스냅샷 복원

현재 페이지

get_current_page_info

현재 페이지 이름, 유형, 파싱 소스

현재 페이지

get_current_eide_info

소스 경로, IDE 프로세스 경로, MCP 포트 등

라우팅

list_instances

실행 중인 AutoLinker IDE 인스턴스와 현재 세션 선택 표시

라우팅

select_instance

현재 MCP 세션을 지정된 인스턴스로 라우팅

컴파일

compile_with_output_path

target 기본값 auto, 산출물 지문으로 성공 검증

상호작용

run_powershell_command

확인 후 PowerShell 실행, 시간 초과 시 프로세스 트리 종료

온라인

search_web_tavily

인터넷에서 웹 페이지 검색

온라인

fetch_url

공용 HTTP(S) 텍스트 가져오기, 루프백/사설망/리디렉션 차단

온라인

extract_web_document

웹 페이지 본문과 절대 링크 요약 추출

기타 기능

⭐ 헤드리스 명령줄 컴파일

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 120

targetauto, 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 함수 시그니처 크래킹 방지백신 탐지 회피 효과가 있으며, 타사 라이브러리에도 동일하게 적용됩니다.

사용 방법

  1. IDA에서 올바른 函数签名을 확인합니다(핵심 라이브러리 함수는 대부분 krnln_static.libLibFn.obj에 있습니다). 黑月 핵심 라이브러리 오픈소스 구현을 참조할 수 있습니다.

  2. 자신의 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;
    }
  3. IDE의 [도구] 메뉴에서 AutoLinker 핵심 라이브러리 함수 재작성 설정을 열어 강제로 링크할 .lib 목록을 관리합니다:

    • Lib 경로: 추가로 링크할 .lib(krnln_static.lib보다 앞에 배치하여 동일한 이름의 심볼을 덮어씀)

    • 링커 매칭: 비워 두면 모든 링커에 적용됩니다. 텍스트를 입력하면 선택한 링커 이름이 해당 텍스트를 포함할 때만 적용됩니다(예: vc2022+pf)

    • 활성화 스위치: 특정 규칙을 임시로 비활성화할 수 있습니다

  4. 저장 후 정적 컴파일을 하면 적용되며, LNK4006 / LNK4088 등의 경고가 나타날 수 있지만 실행에는 영향을 주지 않습니다.

주의

  • 이 방법은 링커 /FORCE를 자동으로 활성화하여 충돌을 무시합니다.

  • 자신의 Lib는 /GL을 꺼야 합니다. 그렇지 않으면 2차 링크가 AutoLinker가 조정한 Lib 순서를 무시합니다.

  • 예제 TestCore는 C++20을 사용하므로 VC2022 링커를 사용해야 합니다. 설정 페이지는 WebView2 기반이므로 런타임이 설치되어 있는지 확인하세요.

⭐ 마우스 뒤로 가기 버튼으로 이전 수정으로 되돌리기

다른 IDE에서 흔히 볼 수 있는 기능으로, 개인 취향입니다.

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