본문으로 건너뛰기
cccskills
무료GitHub에 공개

lsp

clangd LSP over HTTP for C++ syntax checks and symbol navigation in LuisaCompute sources.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(1)

  • SKILL.md5.8 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

C++ LSP

Provides clangd-powered syntax checks and symbol queries over an HTTP bridge.

Architecture

  • Server (scripts/cpp_lsp_server.py): FastAPI + uvicorn wrapper around one clangd subprocess driven over raw JSON-RPC/stdio (no pygls). Requires compile_commands.json.
    • GET /health → {"status": "ok", "clangd_running": bool}
    • POST /check_syntax → {file_path, content?, verbose, timeout}
    • POST /symbol → {file_path, line, character, content?, action, timeout}
  • Client (scripts/cpp_lsp_client.py): httpx CLI with check / symbol subcommands that talks to the server.

Workflow

  1. Start the server in the background before any C++ editing session (the command blocks until stopped — run it as a background job):
python scripts/cpp_lsp_server.py --project-root . --port 8000

The server auto-discovers compile_commands.json in .vscode/, build/, or project root (first hit wins — .vscode/ is checked before build/), and unlike scripts/check_cpp_syntax.py it does not scan other build* directories. If none is found it falls back to the project root, i.e. clangd runs without per-TU flags.

  1. Use the client to query information. Common commands:

Check Syntax

python scripts/cpp_lsp_client.py check src/core/logging.cpp -v
# Override content ad-hoc:
python scripts/cpp_lsp_client.py check src/core/logging.cpp --content "int main() { return 0; }"

Symbol Navigation

# Go to definition at line 10, character 5 (0-based)
python scripts/cpp_lsp_client.py symbol src/core/logging.cpp 10 5 --action definition

# Hover info
python scripts/cpp_lsp_client.py symbol src/core/logging.cpp 10 5 --action hover

# Document-level symbols
python scripts/cpp_lsp_client.py symbol src/core/logging.cpp --action documentSymbol

Available actions: definition, declaration, typeDefinition, implementation, references, hover, documentSymbol.

--content exists only on check; the symbol subcommand has no --content flag (the /symbol endpoint accepts an optional content field, reachable only via a direct HTTP POST). symbol's line/character positionals are optional (default 0) and ignored by documentSymbol.

Server Health

curl http://127.0.0.1:8000/health

Parameters

Client flagScopeDefaultDescription
--serverglobalhttp://127.0.0.1:8000Server base URL
--timeoutglobal3.0HTTP request timeout (s)
--lsp-timeoutsubcommand10.0clangd wait time (s), sent as the body timeout
-v, --verbosecheckoffAlso print Info/Hint diagnostics
--contentcheckunsetCheck this text instead of the file on disk
line charactersymbol0 00-based position (optional; omit for documentSymbol)
--actionsymboldefinitionOne of the 7 actions listed above

--server/--timeout belong to the top-level parser and must come before the subcommand; --lsp-timeout, -v, --content, --action come after it.

Server flagDefaultDescription
--host127.0.0.1Bind address
--port8000Bind port
--project-root.Where to search for compile_commands.json
--clangdclangdPath to clangd executable (no pre-check, no settings.json lookup)
--compile-commands-dirautoDirectory containing compile_commands.json — a directory, not a file path
--verboseoffPrint LSP traffic and raise uvicorn log level to info

Exit Codes

  • check subcommand: 0 (no errors — warnings alone still exit 0), 1 (at least one error), 2 (connection/HTTP/server error: unreachable server, missing file without --content → HTTP 404).
  • symbol subcommand: 0 (result returned), 1 (no result: clangd returned null or the LSP call timed out), 2 (connection/server error). An action outside the 7 above is rejected by the client's argparse; a direct HTTP call gets 400.
  • Same 0/1/2 semantics as scripts/check_cpp_syntax.py (0 clean, 1 errors, 2 tool failure).

Requirements

  • clangd resolvable through PATH. The server passes --clangd verbatim to subprocess.Popen; it does not read clangd.path from .vscode/settings.json the way scripts/check_cpp_syntax.py does, and does not verify the binary first — give --clangd <path> explicitly when clangd is not on PATH.
  • compile_commands.json generated, e.g.:
    • XMake: xmake project -k compile_commands --lsp=clangd .vscode (.vscode is the server's first search dir)
    • CMake: already forced by the root CMakeLists.txt (set(CMAKE_EXPORT_COMPILE_COMMANDS ON)), so a normal CMake configure writes build/compile_commands.json
  • Python packages: fastapi, uvicorn, httpx, pydantic (the scripts' only third-party imports; not declared in pyproject.toml, install them separately)

Notes

  • The server holds a single clangd process. Restart it if compile_commands.json changes — there is no idle timeout and no hot-reload; stop it with Ctrl+C (the lifespan hook sends LSP shutdown/exit and kills clangd after a 2 s grace).
  • Every clangd call is serialized behind one asyncio.Lock, and each endpoint sleeps first (0.5 s before diagnostics, 0.3 s before a symbol query), so concurrent client calls queue instead of running in parallel.
  • The server always starts clangd with --clang-tidy=true (plus --log=error --completion-style=bundled --pch-storage=memory), unlike check_cpp_syntax.py, where clang-tidy is off unless --clang-tidy.
  • line and character in symbol requests are 0-based, matching the LSP protocol; the diagnostic positions check prints are converted to 1-based line/col.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

ast

무료

Manual AST construction with FunctionBuilder for kernels and callables without DSL sugar.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

LuisaGroup/LuisaCompute1.1천2026년 10월 20일 업데이트

Backend plugin architecture, DeviceInterface, dynamic loading, and command encoding.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

LuisaGroup/LuisaCompute1.1천2026년 10월 20일 업데이트

cmake

무료

CMake build options, custom functions, and backend patterns for LuisaCompute.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

LuisaGroup/LuisaCompute1.1천2026년 10월 20일 업데이트

cpp-style

무료

C++ naming, formatting, static analysis, and RTTI rules for LuisaCompute.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

LuisaGroup/LuisaCompute1.1천2026년 10월 20일 업데이트

debug

무료

Debug crashes and test failures via stack-traces, host/device logging, DSL buffer inspection, and add_debug_checks kernel restrict-mode guards.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

LuisaGroup/LuisaCompute1.1천2026년 10월 20일 업데이트

git

무료

Show uncommitted changes and commit history via git. Use when: (1) inspecting what changed in a file before committing, (2) checking diff of tracked/new/deleted files, (3) reviewing a specific commit's changes, (4) listing files changed in a commit.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

LuisaGroup/LuisaCompute1.1천2026년 10월 20일 업데이트

LuisaGroup의 스킬 모두 보기

이 스킬의 문제 신고