使用纯 Bash 脚本直接从终端询问 LLM

274 天前
tbxark  tbxark

shell-ask

https://github.com/TBXark/shell-ask

直接从您的终端询问 LLM, 不离开终端直接让 AI 帮你解答终端的输出。或者生成你不熟悉的 shell 指令。一个 bash 脚本就能解决。

Install

此脚本是用 bash 编写的,只需下载脚本并添加执行权限,该脚本依赖于curljq,请确保它们已安装在您的系统上!

curl https://raw.githubusercontent.com/TBXark/shell-ask/master/ask.sh > /usr/local/bin/ask
chmod +x /usr/local/bin/ask

Supported LLMs

Configuration

Config File

ask set-config answer_language chinese
ask set-config api_key sk-xxxx
ask set-config api_model deepseek-chat
ask set-config api_endpoint https://api.deepseek.com/chat/completions

您也可以直接编辑 ~/.config/ask.sh/config.json

Environment Variables

If you don't want to use a configuration file, you can set the configuration via environment variables.

export SHELL_ASK_API_KEY=xxx
export SHELL_ASK_API_MODEL=xxx
export SHELL_ASK_API_ENDPOINT=xxx
export SHELL_ASK_ANSWER_LANGUAGE=xxx

或者您可以通过设置 SHELL_ASK_CONFIG_FILE 环境变量来更改配置文件路径。

export SHELL_ASK_CONFIG_FILE=/path/to/config.json

Usage

根据问题生成 Shell 命令:

ask "What was my last git commit message?"

使用命令输出作为上下文:

ifconfig -a | ask "My local IP"

Thanks

这个项目的灵感来自 egoist/shell-ask,但由于它依赖于 nodejs ,所以我决定用 bash 重写它

2518 次点击
所在节点   分享创造  分享创造
15 条回复
cdlnls
cdlnls
274 天前
这个工具的使用方法很有意思!

感觉可以扩展一下,在命令行中通过管道,经过一个程序之后,再从管道的另一段输出,就可以实现通过 AI 修改配置文件。不仅仅是让 AI 解析输出结果
RandyLuo
274 天前
我没记错的话,egoist 前天开源了一个一样的 bash 工具
RandyLuo
274 天前
RandyLuo
274 天前
抱歉,滑手机看到的,看到项目最底下的引用声明了
tbxark
274 天前
@RandyLuo 对就是懒得给 pve 里的容器装 node 所以才写的
hitsmaxft
274 天前
我之前用 openai 辅助写了个 rust 实现的 gemini cli
hitsmaxft
274 天前
coolloves
274 天前
支持了,有点小小建议,可以考虑修改下,要不,每次输入还需要用引号,

ask() {
local input=""
local content=""
local prompt="$@"
#local prompt="$1"


root@n1:/usr/local/bin# ip a |ask what is my local ip
Your local IP address is 192.168.123.150.
tbxark
274 天前
@coolloves 其实不用引号也可以,只不过加上之后 readme 长得比较好看。因为传参的时候已经合并了 ask "$*"
lekai63
274 天前
iterm2 最新版自带了这个功能,需 OpenAI key
tbxark
274 天前
@lekai63 是的,不过 3.5.0 有 BUG ,第三方 API 用不了,在等他 3.5.1 release 。我的这个生成命令的 prompt 就是直接复制 iterm2 默认的 prompt 。
tbxark
274 天前
@cdlnls 加了一个插件系统,可以在插件里自定义结果处理函数。可以实现这个功能
molezznet
274 天前
@tbxark 有问号的话要加引号
tbxark
274 天前
@molezznet 这个属于通配符了,可以使用\?转译或者中文?比较快
adrianzhang
273 天前
哇!这个很棒呀!
如果能实现完全自然语言操作就完美了。例如:
我的本机 IP 地址,答案:10.10.8.790 。
修改本机 IP 为 10.10.8.780 答案:好的,已经修改完成,现在的本机 IP 是 10.10.8.780
本机有几个网卡? 答案:一块网卡
把 DNS 修改为 10.10.0.1 答案:修改完成

类似这样。。高抽象具体操作。
有空我也参与吧。希望你这个项目能坚持下去。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1043037

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX