4 个版本
0.2.0 | 2024年6月24日 |
---|---|
0.1.2 | 2024年1月23日 |
0.1.1 | 2024年1月6日 |
0.1.0 | 2023年8月9日 |
105 在 科学
每月下载量 44
135KB
3K SLOC
llmvm-codeassist
一个基于LLM的代码助手,可自动从语言服务器协议服务器检索上下文(即类型定义)。是 llmvm 的前端。
作为编辑器和真实 LSP 服务器之间的中间件。使用标准 LSP 规范与各种编辑器兼容。
仅测试与 Helium 编辑器和 Rust 语言服务器。
特性
- 编辑器代码操作菜单中可用的代码补全命令
- 使用 LSP 自动收集上下文(即类型定义)
- 可手动添加上下文以进行代码补全
- 可选择代码补全的模型
- 使用多个模型同时进行代码补全
演示
使用编辑器代码操作菜单的简单示例
通过多个 llmvm 预设(使用 ccpr=
指令)生成多个代码补全
手动添加上下文到代码补全请求
快速开始
使用 cargo
安装此应用程序。
cargo install llmvm-codeassist
llmvm 核心必须安装。如果您还没有这样做,可以通过以下方式安装核心:
cargo install llmvm-core
A. 安装并配置后端。
推荐使用 llmvm-outsource 作为后端,它遵循 OpenAI/HuggingFace/Ollama 请求。
cargo install llmvm-outsource
要安装后端,请运行
查看 llmvm-outsource 的 配置。
当前默认模型预设为 gpt-3.5
,它使用 outsource 后端。
您的代码编辑器必须配置为使用 llmvm-codeassist
作为主 LSP 服务器。实际 LSP 语言服务器的命令必须附加到 llmvm-codeassist
的参数中。
以下是一个 Rust 语言用于 Helix 的 languages.toml
配置示例
[language-server.llmvm-codeassist-rust]
command = "llmvm-codeassist"
args = ["rust-analyzer"]
[[language]]
name = "rust"
language-servers = [ "llmvm-codeassist-rust" ]
可以通过选择未完成的代码并调用代码操作菜单来调用代码补全命令。
选择模型预设/多个代码生成请求
可以通过在代码注释中提供 ccpr=
指令来选择一个或多个 llmvm 模型预设。
例如
// ccpr=my-model-codegen
可以使用逗号作为分隔符选择多个模型。请参阅上面的第二个示例。
手动上下文选择
如果需要,可以手动将工作区代码的片段添加到代码生成请求中。为此,选择相关片段,调用代码操作菜单并选择“手动添加...”。
该片段将被附加到下一个代码生成请求。
配置
运行 codeassist 可执行文件以在以下位置生成配置文件:
- Linux:
~/.config/llmvm/codeassist.toml
。 - macOS:
~/Library/Application Support/com.djandries.llmvm/codeassist.toml
- Windows:
AppData\Roaming\djandries\llmvm\config\codeassist.toml
键 | 必需? | 描述 |
---|---|---|
default_preset |
否 | 用于代码补全的默认 llmvm 模型预设。目前默认为 gpt-3.5-codegen 。 |
prefer_insert_in_place |
否 | 如果设置为 true,将在执行单个模型代码补全时用完成后的文本替换选定的文本。 |
stream_snippets |
否 | 实时将每个生成的令牌流到编辑器。 |
use_chat_threads |
否 | 如果设置为 true,将使用聊天线程提供先前请求的上下文。请注意,利用多个预设(通过 ccpr )的请求的结果不会存储在线程中。 |
tracing_directive |
否 | tracing 的记录指令/级别 |
stdio_core |
否 | 与 llmvm 核心通信的 Stdio 客户端配置。有关详细信息,请参阅 llmvm-protocol。 |
http_core |
否 | 与 llmvm 核心通信的 HTTP 客户端配置。有关详细信息,请参阅 llmvm-protocol。 |
记录
日志将被保存到当前 llmvm 项目目录的 logs
目录或全局用户数据目录。
全局日志目录位于
- Linux:
~/.local/share/llmvm/logs
。 - macOS:
~/Library/Application Support/com.djandries.llmvm/logs
- Windows:
AppData\Roaming\djandries\llmvm\data\logs
工作原理
代码助手将大多数 LSP 请求转发到真实 LSP 服务器,并在相关的情况下劫持/编辑某些请求或响应有效负载。代码操作菜单的响应被修改以显示代码补全命令。实际由用户发送的代码补全命令由代码助手处理,不会发送到真实 LSP 服务器。
向 LSP 服务器发出请求以检索类型定义信息。上下文将通过以下过程自动检索
- 助手向 LSP 服务器请求所有符号位置。
- 对于每个符号,助手请求类型定义位置。
- 为每个类型定义位置请求折叠范围。
- 为每个折叠范围从文件系统中检索文本片段。
许可证
依赖项
~21–33MB
~606K SLoC