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),    // 超时设置
)

最佳实践

  1. 明确提示:给出尽可能明确的提示,包括上下文、输入输出示例等
  2. 分步处理:对于复杂任务,拆分成多个小步骤
  3. 结果验证:始终验证生成的代码的正确性和安全性
  4. 性能考虑:本地模式下,大模型可能需要较多资源

tlm 为 Golang 开发者提供了强大的本地智能编程辅助能力,通过合理使用可以显著提高开发效率。记得根据你的具体需求调整配置和提示词,以获得最佳效果。

回到顶部