前段时间兴起的 ChatGPT 热,跟风研究了一些应用方向。七月份的时候刚好自己打算写一个简易的 redis sentinel 数据解析的服务端项目,于是想用 ChatGPT 的对话模式来对提交的 git 代码进行 review。将近两个月使用下来,自己觉得 review 效果还不错。
已知 GitHub 自带了 Webhooks
功能,每次 git push 提交代码等操作都会触发钩子函数。这就给了很多的业务发挥空间,例如自动发布等。
Webhooks allow external services to be notified when certain events happen. When the specified events happen, we’ll send a POST request to each of the URLs you provide. Learn more in our [Webhooks Guide](https://docs.github.com/webhooks/).
这里我主要是在自己的服务器上建立了一个 http 服务,接收 Webhooks 触发的 json 通知,然后异步拉取本次 push 的 commit 内容,再使用 ChatGPT 的 gpt-3.5-turbo
模型进行 review,最后把对话结果写入到该 commit 的 comment 中。
通过 ChatGPT 的 gpt-3.5-turbo
模型的 review 效果还可以,以其中的一个 commit 的 review 结果为例。本意是判断 https 监听服务创建是否成功,但是代码写成了 NULL == http
判断的是 http 监听服务创建的结果。所以通过 review 可以很快的进行修正,即写成 NULL == https
。
// create https server
struct evhttp *https = EventHttpsServer::instance().createHttpsServer(base);
if (NULL == http) {
return -4;
}
在 github 项目的 commit 记录里面可以看到这里的评论就是 review 的数量。
这个 github 项目地址是 GitHub - vfhky/socketRedisSentinel: tcp原生通信从redis的sentinel域名解析数据,大家可以访问看看效果。另外这个 C++项目功能是创建了一个 Linux 服务端来解析 redis sentinel 服务返回的主从分片 redis 分片信息,例如 master
或者 slave
的 redis 的 ip 和端口,然后返回给客户端。主要是通过 Libvent + OpenSSL
库实现的,支持 tcp
、http
和 https
这三种客户端请求方式。
感兴趣的可以一起讨论下。