公众号关注 “GitHubDaily”
设为 “星标”,每天带你逛 GitHub!

过去一周,技术圈的各个爆炸新闻,可以说是让我真正见证到了什么叫人间一日,AI 一年。
首先是 New Bing 对所有用户放开,注册即可用,然后周三 Google 发布 ChatGPT 的对手产品 Bard,周四 GitHub 推出 GitHub Copilot X,周五 OpenAI 团队上线了「ChatGPT 插件系统」,层层轰炸,完全不给人喘息的机会。
有好几次,我都是在深夜一两点刷到消息,看完之后身体按耐不住,从床上爬起来通宵写稿,大脑最近基本没怎么休息过
。
还不太了解这些变化的,可以翻下 GitHubDaily 公众号前几天的推文,基本上我都有做介绍。
在这短短的几天时间,GitHub 上每天也都有新项目涌出,除了在前面给大家推文介绍过的开源项目,近日也有一些不错的工具与解决方案出现。
下面,我将给大家分享 6 个近日在 GitHub 上较为活跃的,具备商业应用潜质且异常实用的开源项目。
话不多说,下面开始进入正题。
自微软上周发布 Microsoft 365 Copilot 以来,Copilot 这个词便被各界人士不断提及。
"Copilot has caught lightning in a bottle(Copilot 在瓶中捕抓到了闪电)"。
这是不久前,红杉资本在探讨新一轮技术革命时说的一句话。
由此可见,Copilot 开始变为一个具体概念,逐渐走入千家万户。
为了让开发者也能用上 AI 大型语言模型 (LLM) 的能力,微软也在 GitHub 上开源了一个轻量级 SDK:semantic-kernel。
这个项目,可以说是部分 Copilot 的解决方案。
该 SDK 支持和封装了来自最新 AI 研究的多种设计模式,以便开发人员可以将复杂的 技能注入他们的应用程序。

GitHub:https://github.com/microsoft/semantic-kernel
不仅如此,SDK 还提供了提示链、递归推理、总结、零 / 少样本学习、上下文记忆、长期记忆、嵌入、语义索引、规划和访问外部知识存储以及内部数据等功能。
如果未来你想尝试开发一款接入 Copilot 功能的产品,这个项目可供你借鉴学习。
我认为,命令行终端对于程序员来说,是一个非常重要的入口所在,同时也是大家日常使用频率极高的开发工具。
一个能大幅提升生产力的绝佳去处,ChatGPT 当然也应该安排上啦。
因此,GitHub 上有开发者开源了一款非常实用的命令行工具:Shell GPT。
该工具直接在命令行中集成了 ChatGPT,通过它,可以帮助你快速编写 shell 命令、代码片段编写、Git 提交信息、文档、注释等内容。

GitHub:https://github.com/TheR1D/shell_gpt
用法主要有以下几种:
获取某个任务的执行指令;
直接转换时间、距离、重量、温度等单位;
在命令行终端搜索 shell 用法;
自动生成代码并存储;
在命令行跟 ChatGPT 对话,并迭代优化。
简单来说,它就是一个本地命令行机器人。你下达指令,它负责执行,即便你不清楚某个任务该怎么用命令行来实现,也可以直接问它。
与其它 ChatGPT 应用一样,Shell GPT 在使用前,你需要先自行配置好 OpenAI API Key。
由于现在有不少人在用飞书处理日常工作的沟通交流、文档协作、视频会议等任务。
于是,前不久国内有开发者在 GitHub 上开源了一款生产力工具:飞书 GPT。

GitHub:https://github.com/Leizhenpeng/feishu-chatgpt
里面集成了飞书 + GPT-3.5 + Dall・E + Whisper 等 API,支持语音对话、角色扮演、多话题讨论、AI 画图、表格分析、文档导出等功能。
这个工具平时除了拿来办公,偶尔用来摸摸鱼也挺不错的
。
下面这个项目,有点像 GitHub Copilot X 代码搜索功能的开源实现。
Bloop,一个开源的代码搜索引擎。
通过 GPT-4 来回答代码相关的问题,可使用自然语言、正则表达式和过滤查询搜索本地和远程存储库。

GitHub:https://github.com/BloopAI/bloop
Bloop 的主要功能如下:
基于 GPT-4 的会话搜索;
快速的正则表达式搜索;
同步本地和 GitHub 仓库;
支持多种不同查询方式的过滤器;
使用符号搜索查找函数、变量或特征
拥有 10 多种编程流行语言的精确代码导航。
由于该项目代码完全开源,因此你也可以将其功能集成进企业内部的管理系统,以增强对技术文档、使用手册、教程等内容的检索效率。
大约在两个星期前,我曾给大家推荐过一款名为 ChatPDF 的项目。
它可以提取 PDF 文件中的内容,并将内容交给 ChatGPT 进行分析。待解析完成之后,你便可以跟它进行一对一对话交流,就好像它是一个完全理解内容的人一样。
但是,该项目代码没有开源,这里重新推一个开源版的实现:GPT-4 & LangChain。
利用它所开放的功能,可以快速为你的 PDF 文档打造一个 ChatGPT 聊天机器人。

GitHub:https://github.com/mayooear/gpt4-pdf-chatbot-langchain
使用的技术堆栈包括 LangChain、Pinecone、Typescript、Openai 和 Next.js。
LangChain 是一个框架,可以更轻松地构建可扩展的 AI/LLM 应用程序和聊天机器人;Pinecone 是一个矢量存储,用于存储嵌入和文本中的 PDF,以便以后检索类似文档。
为了帮助大家更好的学习该项目源码,作者还专门录制了一个技术原理解析视频,时长为 23 分钟,可在项目 README 中查看。
距离 GitHub Copilot X 正式集成到 VSCode 上,我估计还得需要很长一段时间。
如果你不想等太久,那不妨试下这个在 GitHub 开源的 VSCode 插件:VSCode ChatGPT。

GitHub:https://github.com/gencay/vscode-chatgpt
它的主要作用,是将 OpenAI ChatGPT 集成到 VSCode,提供了包括但不限于以下这些功能:
支持 GPT-4、GPT-3.5、GPT3 或 Codex 模型;
在侧边栏对话窗口中进行问答;
停止响应,减少 tokens 消耗;
一键生成文件或修复代码;
以 Markdown 格式,导出所有对话记录;
编辑和重发提示;
通过 ChatGPT 生成代码。
真的是万物皆可 VSCode...
根据米勒法则,人类大脑最佳可处理 7 个左右的信息块。因此,每周推荐的开源项目,我会尽量克制,不多也不少,刚好是适合大家进行学习与探索的数量。
另外,这两天在后台有不少同学给我留言,主要围绕 ChatGPT 相关的使用技巧及应用前景展开探讨。
思前想后,我们打算开放 ChatGPT 交流群,给大家提供一个可以平等学习与交流的平台。
过去一周,我接收与处理的信息比较多,因此只能抽出一部分来写成文章,剩下的,后面我会发到群里,与大家进行交流探讨。
想要入群的同学,直接扫描下方二维码即可👇

文中所提到的所有开源项目与工具,已收录至 GitHubDaily 的开源项目列表中。
该列表包含了 GitHub 上诸多高质量、有趣实用的开源技术教程、开发者工具、编程网站等内容。
从 2015 年至今,累积分享 3500+ 个开源项目,Star 增长 21000+,有需要的,可访问下方 GitHub 地址或点击文末「阅读原文」自取:
GitHub:https://github.com/GitHubDaily/GitHubDaily

好了,今天的分享到此结束,感谢大家抽空阅读,我们下期再见,Respect!
如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby
我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘
我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="
假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit
英文版英文链接关注公众号在“亚特兰蒂斯的回声”中踏上一段难忘的冒险之旅,深入未知的海洋深处。足智多谋的考古学家AriaSeaborne偶然发现了一件古代神器,揭示了一张通往失落之城亚特兰蒂斯的隐藏地图。在她神秘的导师内森·兰登教授的指导和勇敢的冒险家亚历克斯·默瑟的帮助下,阿丽亚开始了一段危险的旅程,以揭开这座传说中城市的真相。他们的冒险之旅带领他们穿越险恶的大海、神秘的岛屿和充满陷阱和谜语的致命迷宫。随着Aria潜在的魔法能力的觉醒,她被睿智勇敢的QueenNeria的幻象所指引,她让她为即将到来的挑战做好准备。三人组揭开亚特兰蒂斯令人惊叹的隐藏文明,并了解到邪恶的巫师马拉卡勋爵试图利用其古
我正在尝试创建一个带有项目符号字符的Ruby1.9.3字符串。str="•"+"helloworld"但是,当我输入它时,我收到有关非ASCII字符的语法错误。我该怎么做? 最佳答案 你可以把Unicode字符放在那里。str="\u2022"+"helloworld" 关于ruby-如何在Ruby字符串中插入项目符号字符?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1195
我的Rails站点使用了一个确实不是很好的gem。每次我需要做一些新的事情时,我最终不得不花费与向实际Rails项目添加代码一样多的时间来为gem添加功能。但我不介意,我将我的Gemfile设置为指向我的gem的GitHub分支(我尝试提交PR,但维护者似乎已经下台)。问题是我真的没有找到一种合理的方法来测试我添加到gem的新东西。在railsc中测试它会特别好,但我能想到的唯一方法是a)更改~/.rvm/gems/.../foo。rb,这看起来不对或者b)升级版本,推送到Github,然后运行bundleup,这除了耗时之外显然是一场灾难,因为我不确定我所做的promise是否正
我一直在尝试使用nanoc用于生成静态网站。我需要组织一个复杂的排列页面,我想让我的内容保持干燥。包含或合并的概念在nanoc系统中如何运作?我已阅读文档,但似乎找不到我想要的内容。例如:我如何获取两个部分内容项并将它们合并到一个新的内容项中。在staticmatic您可以在您的页面中执行以下操作。=partial('partials/shared/navigation')类似的约定在nanoc中如何运作? 最佳答案 这里是nanoc的作者。在nanoc中,部分是布局。因此,您可以拥有layouts/partials/shared/
我安装了ruby、yeoman,当我运行我的项目时,出现了这个错误:Warning:Running"compass:dist"(compass)taskWarning:YouneedtohaveRubyandCompassinstalledthistasktowork.Moreinfo:https://github.com/gruUse--forcetocontinue.Use--forcetocontinue.我有进入可变session目标的路径,但它不起作用。谁能帮帮我? 最佳答案 我必须运行这个:geminstallcom
我有一个包含多个组件的存储库,其中大部分是用JavaScript(Node.js)编写的,一个是用Ruby(RubyonRails)编写的。我想要一个.travis.yml文件来触发一个运行每个组件的所有测试的构建。根据thisTravisCIGoogleGroupthread,目前还没有官方支持。我的目录结构是这样的:.├──构建服务器├──核心├──扩展├──网络应用├──流浪文件├──package.json├──.travis.yml└──生成文件我希望能够运行特定版本的Ruby(2.2.2)和Node.js(0.12.2)。我已经有了一个make目标,所以maketest在每