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

2024-05-22 18:23:28 +08:00
 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 重写它

2901 次点击
所在节点    分享创造
15 条回复
cctv6
2024-05-22 19:03:08 +08:00
这个工具的使用方法很有意思!

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

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
2024-05-22 22:02:12 +08:00
@coolloves 其实不用引号也可以,只不过加上之后 readme 长得比较好看。因为传参的时候已经合并了 ask "$*"
lekai63
2024-05-22 22:22:05 +08:00
iterm2 最新版自带了这个功能,需 OpenAI key
tbxark
2024-05-22 22:24:52 +08:00
@lekai63 是的,不过 3.5.0 有 BUG ,第三方 API 用不了,在等他 3.5.1 release 。我的这个生成命令的 prompt 就是直接复制 iterm2 默认的 prompt 。
tbxark
2024-05-23 11:46:41 +08:00
@cdlnls 加了一个插件系统,可以在插件里自定义结果处理函数。可以实现这个功能
molezznet
2024-05-23 14:10:32 +08:00
@tbxark 有问号的话要加引号
tbxark
2024-05-23 14:45:45 +08:00
@molezznet 这个属于通配符了,可以使用\?转译或者中文?比较快
adrianzhang
2024-05-24 08:20:37 +08:00
哇!这个很棒呀!
如果能实现完全自然语言操作就完美了。例如:
我的本机 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