Loading...
Loading...
Compare original and translation side by side
servemlua-batch.jscommandmsw.mluainitializedidOpentextDocument/*mlua-lsp server --stdiolspServersservemlua-batch.jscommandmsw.mluainitializedidOpentextDocument/*mlua-lsp server --stdiolspServers.d.mluahovercompletehovercompletesignaturediagnoseerrors: 0.mlua.mluamlua-batch.jserrors > 0servebatchstopMLUA_LSP_IDLE_MINUTES.d.mluahovercompletehovercompletesignaturediagnoseerrors: 0.mlua.mluamlua-batch.jserrors > 0servebatchstopMLUA_LSP_IDLE_MINUTESRootDesk/MyDesk/Environment/NativeScripts/.d.mlua/Users/you/msw-projects/MyGame/RootDesk/MyDesk/Environment/RootDesk/MyDesk/Environment/NativeScripts/.d.mlua/Users/you/msw-projects/MyGame/RootDesk/MyDesk/Environment/undefinedundefinedundefinedundefined{"id":1,"command":"diagnose","file":"/abs/path/a.mlua"}
{"id":2,"command":"hover","file":"/abs/path/b.mlua","line":10,"col":5}
{"id":3,"command":"complete","file":"/abs/path/c.mlua","line":7,"col":12}linecolnullid{"id":1,"command":"diagnose","file":"/abs/path/a.mlua"}
{"id":2,"command":"hover","file":"/abs/path/b.mlua","line":10,"col":5}
{"id":3,"command":"complete","file":"/abs/path/c.mlua","line":7,"col":12}linecolnullid| 경로 | 1쿼리 | N쿼리 (warm) |
|---|---|---|
단발 CLI ( | ~22ms | ~22ms × N (매 호출 Node + TCP) |
| ~22ms + α | ~22ms + N × daemon-RPC (p50 <5ms) |
| 调用方式 | 1个查询 | N个查询(热启动) |
|---|---|---|
单次CLI ( | ~22ms | ~22ms × N(每次调用都需启动Node + TCP连接) |
| ~22ms + α | ~22ms + N × 守护进程RPC(p50 <5ms) |
node ~/.claude/skills/test-mlua-lsp/scripts/mlua-lsp.js <command> <project-root> <file> [line] [col]npx -y @choigawoon/mlua-lsp@0.5.0--no-daemonnode ~/.claude/skills/test-mlua-lsp/scripts/mlua-lsp.js <command> <project-root> <file> [line] [col]npx -y @choigawoon/mlua-lsp@0.5.0--no-daemon| 명령 | 용도 | 반환 핵심 |
|---|---|---|
| 타입/문법/미존재 멤버 에러 | |
| 해당 위치의 타입·설명 | |
| | |
| 정의 위치 이동 | |
| 사용 지점 찾기 | |
| 함수 시그니처·파라미터 | |
| 데몬 상태 | |
| 데몬 live 스냅샷 (in-flight · 완료 카운트, | |
| 머신 리더블 커맨드 카탈로그 (데몬 없이도 동작) | JSON 카탈로그 |
| 데몬 종료 | — |
| newline-JSON 프록시 (batch의 하위 계층) | stdin→stdout JSONL |
diagnosestatusdumpdescribestoplinecol| 命令 | 用途 | 返回核心内容 |
|---|---|---|
| 检查类型/语法/不存在的成员错误 | |
| 查询对应位置的类型·说明 | |
| 查询 | |
| 跳转到定义位置 | |
| 查找使用位置 | |
| 查询函数签名·参数 | |
| 查询守护进程状态 | |
| 查询守护进程实时快照(进行中·已完成计数,添加 | |
| 查询机器可读命令目录(无需守护进程即可运行) | JSON目录 |
| 终止守护进程 | — |
| 换行JSON代理(批量模式的底层实现) | stdin→stdout JSONL |
diagnosestatusdumpdescribestoplinecoldiagnosehoversignaturefound: false"Symbol not found"__SpawnService_TimerService_UserService_GameLogic_UtilLogic_MapService_HttpService_DataStorageService_InputServiceVector2Vector3QuaternionColorVector4TextComponentTransformComponentUITransformComponent.d.mlua_SpawnService:SpawnByModelId(id, name, Vector2(x,y), map)Vector2LEA-3005 InvalidArgument.mluacat <<EOF | node <plugin>/skills/test-mlua-lsp/scripts/mlua-batch.js <project-root>
{"id":"w1","command":"hover","file":"<any project .mlua>","line":1,"col":1}
{"id":"w2","command":"complete","file":"<any project .mlua>","line":1,"col":1}
EOF_SpawnServiceVector3found:false<project-root>/Environment/NativeScripts/Service/mlua-lsp.js statusworkspaceLoaded: truemlua-lsp.js stopEnvironment/*.d.mlua.mluaUIPopup.mlua| 토큰 모양 | not-found 의미 |
|---|---|
| 거의 항상 cold FP — warmup |
| 거의 항상 cold FP — warmup |
대문자 시작 빌트인 컴포넌트 ( | 거의 항상 cold FP — warmup |
사용자 정의 모듈/스크립트명 ( | 진짜 — 정의 누락 또는 오타 |
메소드/멤버 ( | warmup 후에도 남아있으면 진짜 — 진짜 API 누락 |
diagnosehoversignaturefound: false"Symbol not found"__SpawnService_TimerService_UserService_GameLogic_UtilLogic_MapService_HttpService_DataStorageService_InputServiceVector2Vector3QuaternionColorVector4TextComponentTransformComponentUITransformComponent.d.mlua_SpawnService:SpawnByModelId(id, name, Vector2(x,y), map)Vector2LEA-3005 InvalidArgument.mluacat <<EOF | node <plugin>/skills/test-mlua-lsp/scripts/mlua-batch.js <project-root>
{"id":"w1","command":"hover","file":"<any project .mlua>","line":1,"col":1}
{"id":"w2","command":"complete","file":"<any project .mlua>","line":1,"col":1}
EOF_SpawnServiceVector3found:false<project-root>/Environment/NativeScripts/Service/mlua-lsp.js statusworkspaceLoaded: truemlua-lsp.js stopEnvironment/*.d.mlua.mluaUIPopup.mlua| 令牌形态 | not-found的含义 |
|---|---|
以下划线 | 几乎都是冷启动误报——执行预热 |
| 几乎都是冷启动误报——执行预热 |
大写开头的内置组件( | 几乎都是冷启动误报——执行预热 |
用户自定义模块/脚本名( | 真实错误——定义缺失或拼写错误 |
方法/成员( | 预热后仍存在则为真实错误——API确实缺失 |
0. [WARMUP] 새 데몬 또는 의심 시 — 글로벌 hover 한 차례로 인덱스 깨우기
1. [PRE] batch로 hover/complete/signature 묶어서 API 확인
2. [WRITE] .mlua 작성 (여러 파일이어도 OK — 수정된 파일 경로를 머릿속에 쌓아둔다)
3. [POST] 수정된 전 파일을 한 번의 batch diagnose로 일괄 점검 → errors > 0인 파일만 수정 → 재진단 루프 → 전부 errors: 0
⚠️ diagnose 결과에 글로벌 'Symbol not found' 가 다수면 cold FP 의심 — warmup 후 재진단
4. [PLAY] (선택) msw-maker-mcp play로 실행 검증cat <<EOF | node ~/.claude/skills/test-mlua-lsp/scripts/mlua-batch.js /path/to/MyGame
{"id":1,"command":"hover","file":"/path/to/MyGame/RootDesk/MyDesk/Player.mlua","line":12,"col":18}
{"id":2,"command":"definition","file":"/path/to/MyGame/RootDesk/MyDesk/Player.mlua","line":12,"col":18}
{"id":3,"command":"references","file":"/path/to/MyGame/RootDesk/MyDesk/Player.mlua","line":12,"col":18}
EOF0. [预热] 新守护进程启动或怀疑冷状态时——通过hover查询全局变量激活索引
1. [前置] 批量执行hover/complete/signature查询API
2. [编写] 编写.mlua代码(可同时编辑多个文件——记录修改文件的路径)
3. [后置] 将所有修改文件通过一次批量诊断检查 → 仅修改`errors > 0`的文件 → 重新诊断循环 → 直到所有文件`errors: 0`
⚠️ 若诊断结果中存在多个全局'Symbol not found',怀疑冷启动误报——预热后重新诊断
4. [测试] (可选)通过msw-maker-mcp play执行运行验证cat <<EOF | node ~/.claude/skills/test-mlua-lsp/scripts/mlua-batch.js /path/to/MyGame
{"id":1,"command":"hover","file":"/path/to/MyGame/RootDesk/MyDesk/Player.mlua","line":12,"col":18}
{"id":2,"command":"definition","file":"/path/to/MyGame/RootDesk/MyDesk/Player.mlua","line":12,"col":18}
{"id":3,"command":"references","file":"/path/to/MyGame/RootDesk/MyDesk/Player.mlua","line":12,"col":18}
EOF.mlua.mluamlua-batch.js# 예: 수정된 파일 N개를 한 번에
printf '%s\n' "${edited_files[@]}" \
| awk '{printf "{\"id\":%d,\"command\":\"diagnose\",\"file\":\"%s\"}\n", NR, $0}' \
| node /path/to/mlua-batch.js <project-root>errors > 0errors: 0mlua-lsp.js diagnose.mluamlua-batch.js# 示例:批量处理N个修改文件
printf '%s\n' "${edited_files[@]}" \
| awk '{printf "{\"id\":%d,\"command\":\"diagnose\",\"file\":\"%s\"}\n", NR, $0}' \
| node /path/to/mlua-batch.js <project-root>errors > 0errors: 0mlua-lsp.js diagnoseplugin.jsonlspServers.mluamlua-lsp server --stdiolspServers.mluamlua-lsp server --stdio