# Collar
Collar的意思是指collaborate，结尾的"r",表示合作者，这个系统的目的是利用大模型辅助整个一个软件项目的需求分析，设计，开发和测试，以及部署。目前Collar只实现了辅助代码开发的一部分功能。
## 安装
在已经有了Python和Java的运行环境的前提下，简单的执行:
```shell
pip intall collar
```
## 如何使用
### 第一步，在源代码中，方法定义的Java Doc文档中加入动作标签[-DES,-CODE,-DOC,-MOD,-QA,-UNT,-RUN]，目前实现了-DEC,-CODE,-DOC.
   -DES:生成详细设计。  
   -CODE:生成代码实现。  
   -DOC:生成Doc。  
   -MOD:根据相关的信息，进行当前方法的修改，修改信息请放在注释文档中用<info><-info>引用起来。  
   -QA:请大模型进行代码审查，提出修改建议，然后配合-MOD来修改。  
   -UNT:生成单元测试。  
   -RUN:执行单元测试，并根据测试结果，提出修改建议。  
### 第二步，通过简单的执行一个命令行，来完成模型调用，代码或者文档的修改:
```shell
collar [源代码文件名|某一个目录|]  
#如果没有参数，那么就是当前目录，然后遍历目录下所有的源文件，处理源文件中加了动作标签的方法。
```
## 功能特点
   Collar通过调用大模型来实现代码的自动生成，主要是解决了以下几个问题：  
   1.采集一个函数方法相关的信息，传入给大模型，让大模型能够基于项目的代码库，来进行代码生成，相对于通用的代码完成工具，这种方式可以让生成的代码贴近实际情况。  
   2.大模型生成代码后，Collar可以把生成的代码自动更新到源文件中，实现了自动化。  
   3.与大模型交互的提示词和返回的结果日志保存在~/llm_log文件夹下面。   
   4.根据项目的架构特点，提供了的特殊的定制代码生成模式，比如对于mybatisplus开发的Mapper类，也可以自动生成sql模板的xml定义。
## 最佳实践
   1.当开发一个新的方法时，先写好方法的定义部分，然后在方法上部加入JavaDoc，请注意这个注释跟你的方法体之间不能有空行:   
   ```java
         /**-DES
         这里简单的写一下，你的这个方法的功能目标
         */
   ```
   2.执行Collar <file_nmae>,Collar会生成对于这个方法的详细设计，包括具体的步骤，检查和更正后在注释上加上动作标签-CODE:   
   ```java
       /**-CODE
        *
        * [功能说明]:  
        *
        * [设计思想]:  
        *
        * [实现步骤]:  
        * 1. 
        * 2. 
        */
   ```
   3.再次执行collar <file_name>,collar就会在这个方法体内更新生成的代码
## 命令说明
   ```shell
   collar --help
   Usage: python script.py [--option] [target]')
       Options:
           --force: 强制对于模块，类，方法不完整的部分，进行补全。比如一个函数，如果没有Doc，则自动生成Doc,不论是否设置了Action
       targe: 
           可以是一个目录，Collar会处理目录下（包括子目录）的所有文件
           可以是一个文件，Collar会处理这个文件
           可以是文件名:方法名:动作要求
       Action:
           -DES:当前是一个最初的情况，下一步是生成设计文档
           -CRE:生成代码实现。
           -MOD:根据提供的信息，进行代码的修改和优化，信息放在当前方法的文档中，用<info></info>引用起来
           -DOC:根据目前的文档和代码实现，按照模板来生成文档。
           -QA:根据文档和当前的代码，进行质量检查，并给出改进建议
           -TEST:对当前的方法，生成测试用例
           -RUN:执行测试
   ```
## 配置修改  
要修改的配置主要是~/collar.cfg文件中  
```java
OPENAI_BASE_URL=https://api.siliconflow.cn/v1    
OPENAI_API_KEY=<可以自行到siliconflow注册用户，并生成自己的API KEY>  
OPENAI_MODEL_NAME=deepseek-ai/DeepSeek-V2.5    
```
# Collar的规划


      
