Clippinator
代码助手
(原名为Clippy)
入门指南
- 安装Poetry。
- 克隆此仓库。
- 在
.env
文件中添加API密钥(OpenAI):OPENAI_API_KEY=...
。可选择添加SerpAPI密钥以允许模型使用搜索:SERPAPI_API_KEY=
- 安装ctags。
- 对于pylint,安装它和pylint-venv。
- 安装依赖:
poetry install
。 - 运行:
poetry run clippinator --help
。在项目上运行时,使用poetry run clippinator PROJECT_PATH
- 你可以停止它,然后它会从上次保存的状态继续。使用^C向主代理提供反馈。
详情
Clippinator的目的是为用户或与用户一起开发代码。它可以自主规划、编写、调试和测试一些项目。对于更困难的任务,最佳使用方式是查看其工作并向其提供反馈。
该工具由几个代理组成,它们协同工作以帮助用户开发代码。这些代理基于GPT-4。请注意,这基于长时间运行的GPT-4,因此在OpenAI API方面相当昂贵。
事实是:它自身有一个合理的工作流程。它知道要做什么,并且能够做到。当它正常工作时,速度比人类快。然而,它并不完美,经常会犯错误。但与人类结合使用时,它非常强大。
显然,如果你要求它在非常低的抽象级别上做某事,比如"编写一个执行X的函数",它会做到。它会自行提出这样的任务,成功程度不一。但与你结合使用时,它将能够完成一切,只需要你少量的干预。如果项目简单,你只需提供最高级别的指导("编写一个链接缩短Web服务"),如果项目更复杂,你会更多地参与其中,但Clippinator仍将完成大部分工作。
Taskmaster
这个工具有一个名为_Taskmaster_的主要代理。它负责整体开发。它可以使用工具并将任务委派给子代理。为了能够长时间运行,历史记录会被总结。
Taskmaster调用专门的子代理(小兵),如_Architect_或_Writer_。
Taskmaster首先向用户提出一些问题以了解项目。然后它要求Architect规划项目结构,之后通过将任务委派给子代理来编写、调试和测试项目。
小兵
所有代理都可以访问计划的项目架构、当前项目结构、来自linter的错误和内存。代理使用不同的工具,如写入文件、使用bash(包括运行后台命令)、使用带有Selenium的浏览器等。
我们有以下代理:Architect、Writer、Frontender、Editor、QA、Devops。它们都有不同的提示和工具。
架构
架构只是由Architect编写的文本。它是一个文件列表,包含其内容的摘要,以注释形式呈现,以及重要行(如类和函数)。
架构对所有代理都可用。在初始阶段,实现架构是代理的目标。
工具
已实现(或从Langchain中获取)各种工具:
- 文件工具:WriteFile、ReadFile以及当前未使用的其他工具。
- 终端工具:RunBash、Python、BashBackground(允许启动和管理后台进程,如启动服务器)。
- 人工输入
- Pylint
- Selenium - 用于测试的浏览器自动化。它允许以便捷格式查看页面、获取控制台日志、点击、输入、执行selenium代码
- HttpGet、GetPage - 用于获取页面的更简单工具
- DeclareArchitecture、SetCI、Remember - 允许代理设置环境、编写架构、记住事情
项目结构、Linting、CI、内存
其中一个重要部分是项目结构,它提供给所有代理。这是一个文件列表,包含一些重要行,通过ctags获得。
Linter输出与项目结构一起提供。它有助于理解项目的当前问题。使用_WriteFile_后也会提供Linter输出。Architect可以使用_SetCI_工具配置linter命令。所有代理还可以使用_Remember_工具将一些信息添加到内存中。内存会提供给所有代理。
反馈
你可以按^C向主代理提供反馈。请注意,如果你在子代理执行期间按下它,子代理将被中止。这里唯一的例外是_Architect_:你可以在它使用DeclareArchitecture
工具后按^C要求它进行更改。
在运行Architect后,如果你在提示中选择y
,你还可以手动编辑项目架构。
如果你输入m
或menu
,你还可以编辑项目架构、目标和其他内容。
由Lev Chizhov和Timofey Fedoseev创建,Sergei Bogdanov贡献