在Shell中配置一个AI智能助手

当前项目是受到Shell_GPT启发的,使用Rust开发的一个命令行工具,作用跟Shell_GPT几乎一样,就是可以让你命令行里面调用LLM。

相比于Shell_GPT,我搞的sgp_rs应该是可以直接下载二进制文件解压缩就能用的,所以安装代码如下, 以0.4.5版本为例。如果有最新的,从 https://github.com/xuzhougeng/sgpt-rs/releases/下载。

wget https://github.com/xuzhougeng/sgpt-rs/releases/download/v0.4.5/sgpt-v0.4.5-linux-musl-x86_64.tar.gz
tar xf sgpt-v0.4.5-linux-musl-x86_64.tar.gz

接着把sgpt添加到环境变量中,或者在当前目录下用./sgpt的方式使用。

先使用我的fake模型评估是否安装成功

sgpt --model fake "Hello world"

为了真正的使用模型,编辑 ~/.config/sgpt_rs/.sgptrc 设置使用DeepSeek作为默认模型

API_BASE_URL=https://api.deepseek.com
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DEFAULT_MODEL=deepseek-chat

也可以直接在环境变量或者在~/.zshrc, ~/.bashrc中配置

export API_BASE_URL=https://api.deepseek.com
export OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
export DEFAULT_MODEL=deepseek-chat

大抵是支持所所有OpenAI接口兼容的模型,比如说轨迹流动的接口。

export API_BASE_URL=https://api.siliconflow.cn
export OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
export DEFAULT_MODEL=moonshotai/Kimi-K2-Instruct-0905

也支持本地Ollama

# 推荐写法:带 /v1(客户端会自动补齐 /v1,不带也可以)
export API_BASE_URL=http://localhost:11434/v1
# Ollama 不需要API_KEY, 随便写
export OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# 选择已拉取的模型,例如:llama3.1 / qwen2.5 / mistral 等
export DEFAULT_MODEL=gpt-oss:120b

如果你是服务器A上配置了Ollama,想让服务器B也能用。千万不要修改让Ollama的Host为0.0.0.0,因为Ollama无法设置API_KEY,很容易被其他人用。最好的方法你用Nignx转发。

server {
  listen 80;
  server_name _;   # 或者写你的内网主机名/IP

  # 基本认证
  # (可选)内网 IP 白名单,更安全
  allow 172.16.0.0/12;
  allow 192.168.0.0/16;
  deny all;

  location / {
    proxy_pass http://127.0.0.1:11434;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    # 对流式响应(SSE)很重要
    proxy_buffering off;
    proxy_read_timeout 3600s;
    proxy_send_timeout 3600s;
  }
}

然后其他服务器只需要修改 export API_BASE_URL=http://你的Ollama的服务器:11434/v1即可使用

对于我而言,sgpt的主要用户就是如下几个

第一,一些复杂的命令,我想不到起来,例如find查找一天内生成的文件

sgpt -s 'find查找一天内生成的文件'
# 输出的结果
find . -type f -mtime -1
[E]xecute, [M]odify, [D]escribe, [A]bort:

这里的E表示执行,M表示还不对,继续提示,D表示解释这个命令,A表示退出。

第二,就是不想复制信息到网页里,可以直接通过管道符合给sgpt,比如说

cat install.sh  | sgpt '这个脚本用途是什么?'

第三,直接生成脚本

sgpt --code '来一个shell脚本分析下最近的登录用户' > run.sh
bash run.sh

当然实际上我还开发了很多有趣的功能,就后面慢慢介绍了

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×