AI developer: asks GPT-4 to modify an entire folder full of files.
Warning: This README and even parts of the code were written by aidev itself, via GPT-4. This is a meta-experiment. Always review the generated code before using it in your projects.
You can invoke the program with no parameters and provide the prompt on stdin:
aidev
When prompted, enter your desired change request and end with EOF (Ctrl+D on Unix-like systems or Ctrl+Z on Windows).
The general workflow of using aidev involves the following steps:
- (Optional) Specify the directories containing the code you want to modify using the
-d
option. By default, aidev will use the current directory. - Define slices in your
.aidev
configuration file to include or exclude specific parts of your codebase. - Provide a prompt describing the changes you want to make using the
-p
option. - Select a slice to use with the
-s
option. - The AI will process the request and generate modified versions of the relevant files.
- Modified files will have a ".draft" extension added to their original file names. Review these files and, if the changes are satisfactory, replace the original files with the modified versions.
Remember to always review the generated ".draft" files before replacing the original files to ensure the changes made by the AI are correct and meet your requirements.
By default, aidev will ignore any files with a ".draft" extension or containing ".draft." in their name.
Slicing allows you to include or exclude specific parts of your codebase when using aidev. By defining slices in your .aidev
configuration file, you can control which files or directories are considered by the AI when processing your request.
To use slicing, add a slice
directive followed by a unique name in your .aidev
file. Then, use the only
, ignore
, and unignore
directives within the slice to specify the include and exclude patterns for that slice. To apply a specific slice when running aidev, use the -s
option followed by the slice name.
In your .aidev
file:
slice frontend
only frontend/*.js
only frontend/*.css
To use the frontend
slice:
aidev -s frontend -p "Add a new function called 'helloWorld' that prints 'Hello, World!'"
In your .aidev
file:
slice frontend
only frontend/*.js
only frontend/*.css
slice backend
only backend/*.go
To use the backend
slice:
aidev -s backend -p "Add a new function called 'helloWorld' that prints 'Hello, World!'"
In your .aidev
file:
ignore *.log
slice frontend
only frontend/*.js
only frontend/*.css
slice backend
only backend/*.go
The *.log
pattern will be ignored globally, while the frontend
and backend
slices will still apply their specific include patterns.
The following environment variables can be set to configure aidev:
OPENAI_API_KEY
: Your OpenAI API key. This is required to authenticate with the OpenAI API.
OPENAI_ORG
: Your OpenAI organization ID. This is optional and used for billing purposes.AIDEV_SAVE_CODE
: File name to save combined code to. Defaults to an empty string.AIDEV_SAVE_RESP
: File name to save the AI response to. Defaults to an empty string.AIDEV_SAVE_PROMPT
: File name to save the prompt to. Defaults to an empty string.
aidev [options]
The .aidev
configuration file allows you to specify include and exclude patterns for the files and directories that should be considered by the AI. You can place this file in any directory, and the configuration will apply to that directory and its subdirectories.
Example of a .aidev
file:
ignore LICENSE
ignore internal
ignore _data
ignore *.txt
ignore go.mod
slice foo
only foo*.go
aidev -p "Add a new function called 'helloWorld' that prints 'Hello, World!'"
aidev -d src -d lib -p "Add a new function called 'helloWorld' that prints 'Hello, World!'"
aidev -i "*.go" -x "test_*" -p "Add a new function called 'helloWorld' that prints 'Hello, World!'"
aidev -C code.txt -R response.txt -p "Add a new function called 'helloWorld' that prints 'Hello, World!'"
aidev -gpt35 -p "Add a new function called 'helloWorld' that prints 'Hello, World!'"
-d: Add code directory (defaults to ., can specify multiple times)
-i: Include only this glob pattern (can specify multiple times)
-x: Exclude this glob pattern (can specify multiple times, in case of conflict with -i longest pattern wins)
-gpt4: Use GPT-4 (default)
-gpt4-32k: Use GPT-4 32k
-gpt35: Use GPT 3.5
For more options and details, run aidev -h
.