LSP 검사
추가된 항목: @mastra/core@1.1.0
LSP 검사는 작업 공간 지원 Agent에 의미 체계 코드 인텔리전스를 제공합니다. 작업 영역에서 LSP를 활성화하면 Agent는 지원되는 파일의 기호를 검사하여 가리키기 정보를 검색하고 정의로 이동할 수 있습니다. 구현을 찾을 수도 있습니다.
LSP 검사를 사용해야 하는 경우LSP 검사를 사용해야 하는 경우에 대한 직접 링크
일반 텍스트 검색만 사용하는 대신 Agent에 의미 체계 코드 이해가 필요한 경우 LSP 검사를 사용하세요.
- 지원되는 언어의 기호와 추론된 타입을 검사합니다.
- 관련 코드를 편집하기 전에 기호가 선언된 위치를 찾습니다.
- 모든 파일을 수동으로 추적하지 않고 코드베이스 전체에서 구현을 탐색합니다.
- 더 빠르게 탐색할 수 있도록 의미론적 검사를
view및search_content와 함께 사용합니다. - 사용자 정의 언어 서버 등록을 통해 다른 언어의 LSP 지원을 추가합니다.
기본 사용법기본 사용법에 대한 직접 링크
설정하여 작업 공간에서 LSP를 활성화합니다.lsp: true:
import { Workspace, LocalFilesystem, LocalSandbox } from '@mastra/core/workspace'
const workspace = new Workspace({
filesystem: new LocalFilesystem({ basePath: './workspace' }),
sandbox: new LocalSandbox({ workingDirectory: './workspace' }),
lsp: true,
})
이 구성을 사용하면 작업공간은 구성된 파일 시스템 및 샌드박스 Tool와 함께 기본 LSP 검사 Tool을 등록합니다.
Agent ToolAgent Tool에 대한 직접 링크
LSP를 활성화하면 Workspace에서 기본적으로 mastra_workspace_lsp_inspect를 제공합니다.
{
"path": "/absolute/path/to/file.ts",
"line": 10,
"match": "const foo = <<<bar()"
}
match 필드에는 <<< 커서 마커가 정확히 하나 포함되어야 합니다. 이 마커는 지정된 줄에서 기호의 위치를 나타냅니다.
이 Tool은 최대 3개의 결과 그룹을 반환합니다.
| 결과 | 설명 |
|---|---|
hover | 커서 위치에 있는 기호의 타입 정보 또는 문서 |
diagnostics | 존재하는 경우 검사한 줄에 한정된 LSP 진단 정보 |
definition | 한 줄 미리 보기가 포함된 선언 위치 |
implementation | 구현 또는 사용 위치 |
Tool 이름 다시 매핑Tool 이름 다시 매핑에 대한 직접 링크
Agent가 더 짧은 이름을 기대하는 경우 Tool 이름을 바꾸십시오.
import { Workspace, LocalFilesystem, WORKSPACE_TOOLS } from '@mastra/core/workspace'
const workspace = new Workspace({
filesystem: new LocalFilesystem({ basePath: './workspace' }),
lsp: true,
tools: {
[WORKSPACE_TOOLS.LSP.LSP_INSPECT]: {
name: 'lsp_inspect',
},
},
})
이렇게 하면 노출된 Tool 이름만 변경됩니다. 구성 키는 그대로 유지됩니다.WORKSPACE_TOOLS.LSP.LSP_INSPECT.
LSP 구성LSP 구성에 대한 직접 링크
기본 동작을 사용하려면 lsp를 true로 설정하고, 서버 시작과 진단을 사용자 정의하려면 객체를 제공하세요.
import { Workspace, LocalFilesystem } from '@mastra/core/workspace'
const workspace = new Workspace({
filesystem: new LocalFilesystem({ basePath: './workspace' }),
lsp: {
diagnosticTimeout: 4000,
initTimeout: 8000,
disableServers: ['eslint'],
binaryOverrides: {
typescript: '/custom/path/to/typescript-language-server --stdio',
},
searchPaths: ['/opt/homebrew/bin'],
},
})
다음이 필요한 경우 사용자 정의 구성을 사용하십시오.
- 대규모 저장소의 시간 제한 늘리기
- 특정 언어 서버 비활성화
- 사용자 정의 언어 서버 바이너리의 Point Mastra
- 제한된 환경에서 추가 이진 검색 경로 추가
사용자 정의 언어 서버사용자 정의 언어 서버에 대한 직접 링크
기본적으로 Mastra에는 TypeScript, JavaScript, Python, Go 및 Rust에 대한 지원이 내장되어 있습니다. 다른 언어(예: PHP, Ruby, Java, Kotlin, Swift, Elixir)에서 LSP 검사를 사용하려면 다음을 통해 사용자 정의 언어 서버를 등록하세요.servers field:
import { Workspace, LocalFilesystem, LocalSandbox } from '@mastra/core/workspace'
const workspace = new Workspace({
filesystem: new LocalFilesystem({ basePath: './workspace' }),
sandbox: new LocalSandbox({ workingDirectory: './workspace' }),
lsp: {
servers: {
phpactor: {
id: 'phpactor',
name: 'Phpactor Language Server',
languageIds: ['php'],
extensions: ['.php'],
markers: ['composer.json'],
command: 'phpactor language-server',
},
},
},
})
각 사용자 정의 서버 정의에는 다음 필드가 필요합니다.
| 필드 | 설명 |
|---|---|
id | 서버의 고유 식별자 |
name | 로그에 표시되는 사람이 읽기 쉬운 이름 |
languageIds | 이 서버에서 처리하는 Language Server Protocol(LSP) 언어 식별자 |
extensions | 점을 포함한 파일 확장자 |
markers | 프로젝트 루트를 식별하는 파일 또는 디렉터리(예: composer.json, Gemfile) |
command | 서버를 시작하는 전체 명령 문자열 |
서버에 여러 언어 ID가 있는 경우 Mastra는 각 확장을 다음 항목의 첫 번째 항목에 매핑합니다.languageIds. |
선택적으로 initializationOptions를 전달하여 LSP 핸드셰이크 중에 사용자 정의 설정을 전송할 수도 있습니다.
사용자 정의 서버는 기본 제공 서버와 병합됩니다. 기본 제공 서버를 교체하려면 동일한 id를 사용하세요(예: id: 'go'는 기본 제공 Go 서버를 교체합니다). 여러 언어를 동시에 지원하려면 여러 서버를 등록하세요.
import { Workspace, LocalFilesystem, LocalSandbox } from '@mastra/core/workspace'
const workspace = new Workspace({
filesystem: new LocalFilesystem({ basePath: './workspace' }),
sandbox: new LocalSandbox({ workingDirectory: './workspace' }),
lsp: {
servers: {
phpactor: {
id: 'phpactor',
name: 'Phpactor Language Server',
languageIds: ['php'],
extensions: ['.php'],
markers: ['composer.json'],
command: 'phpactor language-server',
},
solargraph: {
id: 'solargraph',
name: 'Solargraph',
languageIds: ['ruby'],
extensions: ['.rb', '.erb'],
markers: ['Gemfile'],
command: 'solargraph stdio',
},
},
},
})
요구 사항 및 제한 사항요구 사항 및 제한 사항에 대한 직접 링크
- LSP 검사는 일치하는 기본 제공 또는 사용자 정의 언어 서버가 있는 파일 형식에서만 작동합니다.
- 검사할
path는 Workspace 파일 시스템 또는 허용된 경로 내부로 해석되어야 합니다. - 외부 패키지를 검사하면 런타임 소스 파일 대신
.d.ts와 같은 선언 파일로 해석될 수 있습니다. lsp_inspect는view와search_content를 보완하지만, 전체 컨텍스트가 필요할 때 구현 코드를 읽는 작업을 대체하지는 않습니다.