golang本地CLI智能编程助手插件库tlm的使用
Golang本地CLI智能编程助手插件库tlm的使用
tlm是一个本地CLI编程助手,由Ollama提供支持。它不需要API密钥或互联网连接,完全在本地工作环境运行。
主要特性
- 💸 无需API密钥(ChatGPT、Claude、Github Copilot等)
- 📡 无需互联网连接
- 💻 支持macOS、Linux和Windows
- 👩🏻💻 自动检测Shell(Powershell、Bash、Zsh)
- 🚀 单行命令生成和解释
- 🖺 简单的检索增强生成(RAG)
- 🧠 支持多种开源模型(Llama3、Phi4、DeepSeek-R1、Qwen等)
安装方法
推荐安装方式(安装脚本)
Linux和macOS:
curl -fsSL https://raw.githubusercontent.com/yusufcanb/tlm/1.2/install.sh | sudo -E bash
Windows (Powershell 5.5或更高版本):
Invoke-RestMethod -Uri https://raw.githubusercontent.com/yusufcanb/tlm/1.2/install.ps1 | Invoke-Expression
Go安装方式
如果你已经安装了Go 1.22或更高版本:
go install github.com/yusufcanb/tlm@1.2
安装完成后,可以通过以下命令验证:
tlm
使用示例
基本命令
$ tlm
NAME:
tlm - terminal copilot, powered by open-source models.
USAGE:
tlm suggest "<prompt>"
tlm s --model=qwen2.5-coder:1.5b --style=stable "<prompt>"
tlm explain "<command>" # 解释命令
tlm e --model=llama3.2:1b --style=balanced "<command>" # 使用指定模型解释命令
tlm ask "<prompt>" # 提问
tlm ask --context . --include *.md "<prompt>" # 在特定上下文中提问
提问功能(带上下文)
$ tlm ask --help
NAME:
tlm ask - Asks a question (beta)
USAGE:
tlm ask "<prompt>" # 提问
tlm ask --context . --include *.md "<prompt>" # 在特定上下文中提问
OPTIONS:
--context value, -c value 上下文目录路径
--include value, -i value [ --include value, -i value ] 包含文件模式,如--include=*.txt或--include=*.txt,*.md
--exclude value, -e value [ --exclude value, -e value ] 排除文件模式,如--exclude=**/*_test.go或--exclude=*.pyc,*.pyd
--interactive, --it 启用交互式聊天模式 (default: false)
--model value, -m value 覆盖命令建议的模型 (default: qwen2 5-coder:3b)
--help, -h 显示帮助
命令建议功能
$ tlm suggest --help
NAME:
tlm suggest - Suggests a command.
USAGE:
tlm suggest <prompt>
tlm suggest --model=llama3.2:1b <prompt>
tlm suggest --model=llama3.2:1b --style=<stable|balanced|creative> <prompt>
DESCRIPTION:
根据提示建议命令。
OPTIONS:
--model value, -m value 覆盖命令建议的模型 (default: qwen2.5-coder:3b)
--style value, -s value 覆盖命令建议的风格 (default: balanced)
--help, -h 显示帮助
命令解释功能
$ tlm explain --help
NAME:
tlm explain - Explains a command.
USAGE:
tlm explain <command>
tlm explain --model=llama3.2:1b <command>
tlm explain --model=llama3.2:1b --style=<stable|balanced|creative> <command>
DESCRIPTION:
解释给定的shell命令。
OPTIONS:
--model value, -m value 覆盖命令建议的模型 (default: qwen2.5-coder:3b)
--style value, -s value 覆盖命令建议的风格 (default: balanced)
--help, -h 显示帮助
卸载方法
Linux和macOS:
rm /usr/local/bin/tlm
rm ~/.tlm.yml
Windows:
Remove-Item -Recurse -Force "C:\Users\$env:USERNAME\AppData\Local\Programs\tlm"
Remove-Item -Force "$HOME\.tlm.yml"
tlm是一个功能强大的本地CLI助手,可以帮助开发者更高效地完成命令行操作,同时保护隐私和数据安全。
更多关于golang本地CLI智能编程助手插件库tlm的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复
更多关于golang本地CLI智能编程助手插件库tlm的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
使用 tlm - Golang 本地 CLI 智能编程助手插件库
tlm 是一个用于 Golang 的本地命令行智能编程助手插件库,它可以帮助开发者提高编码效率,提供智能代码补全、代码生成等功能。
安装 tlm
首先,你需要安装 tlm 库:
go get github.com/tlm-team/tlm
基本使用示例
1. 初始化 tlm 客户端
package main
import (
"fmt"
"github.com/tlm-team/tlm"
)
func main() {
// 初始化 tlm 客户端
client, err := tlm.NewClient(
tlm.WithModel("gpt-3.5-turbo"), // 选择模型
tlm.WithLocalMode(), // 本地模式
tlm.WithMaxTokens(1000), // 最大 token 数
)
if err != nil {
fmt.Printf("初始化 tlm 客户端失败: %v\n", err)
return
}
// 使用完毕后关闭客户端
defer client.Close()
}
2. 代码补全功能
func codeCompletion(client *tlm.Client) {
prompt := "请帮我完成以下 Go 函数的实现:\n" +
"// 计算两个整数的和\n" +
"func add(a, b int) int {\n" +
" "
response, err := client.Complete(prompt)
if err != nil {
fmt.Printf("代码补全失败: %v\n", err)
return
}
fmt.Println("补全结果:")
fmt.Println(response)
}
3. 代码解释功能
func codeExplanation(client *tlm.Client) {
code := `package main
import "fmt"
func main() {
ch := make(chan int, 2)
ch <- 1
ch <- 2
fmt.Println(<-ch)
fmt.Println(<-ch)
}`
prompt := "请解释以下 Go 代码:\n" + code
response, err := client.Complete(prompt)
if err != nil {
fmt.Printf("代码解释失败: %v\n", err)
return
}
fmt.Println("代码解释:")
fmt.Println(response)
}
4. 代码重构建议
func codeRefactor(client *tlm.Client) {
code := `func calculate(a, b int) int {
result := 0
if a > b {
result = a - b
} else {
result = b - a
}
return result
}`
prompt := "请为以下 Go 函数提供重构建议:\n" + code
response, err := client.Complete(prompt)
if err != nil {
fmt.Printf("获取重构建议失败: %v\n", err)
return
}
fmt.Println("重构建议:")
fmt.Println(response)
}
高级功能
1. 自定义插件开发
你可以基于 tlm 开发自己的插件:
package myplugin
import (
"github.com/tlm-team/tlm"
)
type MyPlugin struct{}
func (p *MyPlugin) Name() string {
return "my-plugin"
}
func (p *MyPlugin) Execute(input string) (string, error) {
// 在这里实现你的插件逻辑
return "处理结果: " + input, nil
}
func RegisterPlugin(client *tlm.Client) {
client.RegisterPlugin(&MyPlugin{})
}
2. 上下文感知的代码生成
func contextAwareGeneration(client *tlm.Client) {
context := `我们正在开发一个电商系统,需要处理订单。
当前文件是 order_handler.go,已经定义了以下结构体:
type Order struct {
ID string
Customer string
Items []Item
Total float64
}`
prompt := context + "\n请生成一个处理订单创建的函数"
response, err := client.Complete(prompt)
if err != nil {
fmt.Printf("代码生成失败: %v\n", err)
return
}
fmt.Println("生成的代码:")
fmt.Println(response)
}
配置选项
tlm 提供了多种配置选项:
client, err := tlm.NewClient(
tlm.WithModel("gpt-4"), // 选择模型
tlm.WithTemperature(0.7), // 控制生成随机性
tlm.WithMaxTokens(2000), // 最大 token 数
tlm.WithAPIKey("your-api-key"), // 如果需要远程API
tlm.WithLocalModelPath("./models"), // 本地模型路径
tlm.WithTimeout(30*time.Second), // 超时设置
)
最佳实践
- 明确提示:给出尽可能明确的提示,包括上下文、输入输出示例等
- 分步处理:对于复杂任务,拆分成多个小步骤
- 结果验证:始终验证生成的代码的正确性和安全性
- 性能考虑:本地模式下,大模型可能需要较多资源
tlm 为 Golang 开发者提供了强大的本地智能编程辅助能力,通过合理使用可以显著提高开发效率。记得根据你的具体需求调整配置和提示词,以获得最佳效果。