我写了一个工具,能在 chatGPT 帮助下为任意 CLI 生成 fish 的参数自动补全文件

2023-03-12 15:26:37 +08:00
 werifu

先上链接: https://github.com/werifu/complish

应用场景

参数补全:你在 shell 里输入命令后,按 Tab 键可以给你列出的子命令或者参数候选项,如下图

非常知名的 CLI 一般都会自带补全,但是很多 CLI 开发者并不提供该 CLI 在各种 shell 下的补全,每次使用的时候如果忘记参数了又要重新执行 cmd --help 去看帮助,非常影响体验。能够简单地为所有 CLI 生成补全的话就可以解决这个问题,如上图的补全就是由 complish 实现的,croc 的作者并没有提供。

原理

各个 shell ( bash 、zsh 、fish 、powershell )等都支持 completion 的语法,允许为命令增加自定义的参数补全,但是各家的语法并不相通,因此我只做了我用的 fish 版本,同时也相当于安利 fish 了吧: https://fishshell.com/😄

原理其实很简单,就是程序里靠执行 cmd --help 得到 help page 的文本,分析文本然后按 completion 语法去生成对应的 completion 脚本。然而难点在于 help page 并没有统一的规范,不同的框架、不同的语言都有不一样的写法,写出来的 help page 没有统一的严格结构,很难解析,因此 chatGPT 的出现真的是这个问题的救星,喂入 help page 的文本,生成一个该 help page 的结构化 json ,我就能很轻松地解析并生成补全文件。

我相信 chatGPT 拥有的 text to structure 的能力能很大程度改善生产生活的体验,这只是一个很小的应用场景

短板

欢迎大家来使用体验!如果觉得好还请给个 ⭐️

1161 次点击
所在节点    分享创造
6 条回复
xiebruce
2023-03-12 15:57:31 +08:00
别提了,我今天服务器 ip 刚被封(就是通过我服务器上 chatgtp ,显示 access denied)
werifu
2023-03-12 16:58:03 +08:00
@xiebruce 为什么呀,因为服务器在非 openai 服务的范围吗
dayeye2006199
2023-03-13 01:17:37 +08:00
这个真不错,是个很好的主意。文本过长的问题看看 langchain 能否解决?
xiebruce
2023-03-14 14:44:33 +08:00
@werifu 刚被封的意思就是,之前是可以的,后来封了,至于为什么封,也许跟我切换 ip 有关(因为不止一台服务器)
werifu
2023-03-30 22:14:08 +08:00
@dayeye2006199 sorry 我之前意识回复了发现没真的回复,前段时间捣鼓了 langchain ,感觉场景还是不太一样,langchain 更适合检索的场景,比如大段大段 pdf ,不要求多精确,但是这个是用来做结构化解析的,加上之后 GPT4 将支持更高的 token 限制,所以我觉得这个问题放着不管哪天就自己解决了😁
werifu
2023-03-30 22:15:49 +08:00
服务器上因为没法用 fish 当默认 shell (会导致 vscode 的 remote 爆炸),所以一直用的 zsh ,为了方便给服务器也加上 CLI 的补全,我新增加了对 zsh 的支持,现在 CLI 也可以生成 zsh 下的补全文件了,应该适用范围更大了

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

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

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

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

© 2021 V2EX