From 28e213c6796ffe769fb5844f107d9f2a156668c5 Mon Sep 17 00:00:00 2001 From: Nick Sullivan Date: Thu, 29 Jun 2023 09:09:47 -0600 Subject: [PATCH] Update CONTRIBUTING.md and README.md with enhanced features and roadmap This commit includes updates to the CONTRIBUTING.md and README.md files. The changes in CONTRIBUTING.md provide more detailed descriptions for the additional interfaces and documentation needs. The README.md file has been updated with a new feature description for AI-Assisted Code Creation and a more detailed explanation of how it works. The roadmap of upcoming features and user interfaces has been updated with a more readable format. --- CONTRIBUTING.md | 7 +++-- README.md | 72 ++++++++++++++++++++++++++++++------------------- 2 files changed, 47 insertions(+), 32 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 28dfb81..661bd99 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -35,11 +35,10 @@ In particular, we need help with: * Self verifying/validating responses. Reflection. * Building additional commands in the [CLI](aicodebot/cli.py) * `aicodebot code` - translate natural language to local changes in code - * `aicodebot learn` - Read the local codebase or online documentation and use that to improve the quality of the answers. * Adding additional interfaces - * GitHub Action - * The @aicodebot mention -* Documentation. We don't even have a docs folder yet. Setting up an automated process for this. + * GitHub Action to run AICodeBot on a pull request or commit + * The @aicodebot mention to allow you to interact with AICodeBot in a GitHub issue or pull request, or assign it a task. +* Documentation. We don't even have a docs folder yet. Setting up an automated process for this would be great. * YouTube walk-throughs of using AICodeBot ## Code Contributions diff --git a/README.md b/README.md index fba8ed9..ec802c1 100644 --- a/README.md +++ b/README.md @@ -24,13 +24,29 @@ It's also not a "build a site for me in 5 minutes" tool that takes a well constr `aicodebot commit` will run pre-commit for you to check syntax, and then generate a commit message for you based on the changes you've made. It will also commit the changes for you once everything checks out. +### AI-Assisted Code Review + +`aicodebot review` will run a code review on your code and suggest improvements. By default it will look at [un]staged changes, and you can also supply a specific commit hash to review. It also suggests best practices for code improvement. + ### AI-Assisted Debugging `aicodebot debug $command` will run the command and capture the log message. It will then try to figure out what's going on from the error message and suggest a fix. -### AI-Assisted Code Review +### AI-Assisted Code Creation (Work in Progress) -`aicodebot review` will run a code review on your code and suggest improvements. By default it will look at [un]staged changes, and you can also supply a specific commit hash to review. It also suggests best practices for code improvement. +`aicodebot code` is a feature designed to automate coding tasks based on your instructions. It's a work in progress, but here's how it works: + +1. **Task Understanding**: The bot collects your task instructions. +2. **Planning**: It devises a plan based on your task. +3. **Learning**: It learns necessary information by searching the internet, reading the local codebase, and researching libraries/APIs. +4. **Clarification**: It asks questions if any aspect of the task is unclear. +5. **Code Generation**: It generates code consistent with your codebase style. +6. **Self-Review**: It reviews and improves the generated code. +7. **Code Modification**: It modifies the local code, allowing you to review changes before committing. +8. **Test Creation**: It writes and runs unit tests for the new code, modifying the code until all tests pass. +9. **Continuous Learning (v2)**: We plan to implement a system where the bot learns from each interaction, improving its performance over time based on feedback like code acceptance, compilation success, and test results. + +This feature is a work in progress, and we're excited about its potential to boost developer productivity. If you'd like to help, see [CONTRIBUTING](CONTRIBUTING.md). ## Getting Started @@ -71,41 +87,41 @@ Not all OpenAI accounts have GPT-4 API access enabled. By default, AICodeBot wil ### Code Workflow Improvements -- [X] **Assisted Git Commit**: Automatically generate a commit message based on the changes you've made -- [X] **Assisted Debugging**: Run a command with aicodebot and it captures the log message and tries to figure out what's going on from the error message. Eventually, it could also suggest fixes for the error and make the changes for you. Try it out with `aicodebot debug $command` -- [X] **Code Review**: Provides feedback on potential issues in code, and suggests improvements to make it better. -- [ ] **Dependency Management**: Updating dependencies to their latest versions with pull requests that run tests. -- [ ] **Documentation Generation**: Generates comprehensive documentation for code, including docstrings, README files, and wiki pages. -- [ ] **Performance Optimization Suggestions**: Suggests potential performance optimizations for code. -- [ ] **Test Generation**: Generates unit tests for code, improve test coverage. -- [ ] **Integration with CI/CD pipelines**: Integrates with CI/CD pipelines to automate tasks like code review, testing, and deployment (via GitHub Actions). Eventually: Fix the build automatically when there are small errors. -- [ ] **Rubber Ducky Chat Bot**: Helps developers think through design issues by providing a conversational interface to discuss and solve problems, using data from the current repository. -- [X] **Linting/Formatting**: Checks code for linting errors and automatically fixes them where possible (via pre-commit) -- [ ] **Handle GitHub Issues**: Handles basic tasks that you assign to [@aicodebot](https://pypi.org/project/aicodebot/) +* [X] **Assisted Git Commit**: Automatically generate a commit message based on the changes you've made +* [X] **Assisted Debugging**: Run a command with aicodebot and it captures the log message and tries to figure out what's going on from the error message. Eventually, it could also suggest fixes for the error and make the changes for you. Try it out with `aicodebot debug $command` +* [X] **Code Review**: Provides feedback on potential issues in code, and suggests improvements to make it better. +* [ ] **Dependency Management**: Updating dependencies to their latest versions with pull requests that run tests. +* [ ] **Documentation Generation**: Generates comprehensive documentation for code, including docstrings, README files, and wiki pages. +* [ ] **Performance Optimization Suggestions**: Suggests potential performance optimizations for code. +* [ ] **Test Generation**: Generates unit tests for code, improve test coverage. +* [ ] **Integration with CI/CD pipelines**: Integrates with CI/CD pipelines to automate tasks like code review, testing, and deployment (via GitHub Actions). Eventually: Fix the build automatically when there are small errors. +* [ ] **Rubber Ducky Chat Bot**: Helps developers think through design issues by providing a conversational interface to discuss and solve problems, using data from the current repository. +* [X] **Linting/Formatting**: Checks code for linting errors and automatically fixes them where possible (via pre-commit) +* [ ] **Handle GitHub Issues**: Handles basic tasks that you assign to [@aicodebot](https://pypi.org/project/aicodebot/) ### User Interfaces -- [X] **Command-line, installable via pip**: aicodebot can be installed as a Python package using `pip install aicodebot` -- [ ] **Mention the @aicodebot GitHub user**: Mentioning the [@aicodebot](https://pypi.org/project/aicodebot/) GitHub user in a comment will trigger it to perform a task, review code, or pull in an appropriate GIF. -- [ ] **Callable as a GitHub action**: Can be called as a GitHub action to perform tasks on GitHub repositories. -- [ ] **Chat**: CLI chat interface that knows the context of your codebase and can answer questions about it. No more going back and forth between ChatGPT and command-line. -- [ ] **Slack Bot**: Interacts with aicodebot via slack, sends notifications, performs tasks, and provides real-time assistance to developers. -- [ ] **Bug Report service integrations**: Listen for bug reports from Sentry, Honeybadger, and other bug reporting tools and automatically create issues, assign them to developers, and notify them via Slack. Eventually: FIX the bug automatically and notify the team. +* [X] **Command-line, installable via pip**: aicodebot can be installed as a Python package using `pip install aicodebot` +* [ ] **Mention the @aicodebot GitHub user**: Mentioning the [@aicodebot](https://pypi.org/project/aicodebot/) GitHub user in a comment will trigger it to perform a task, review code, or pull in an appropriate GIF. +* [ ] **Callable as a GitHub action**: Can be called as a GitHub action to perform tasks on GitHub repositories. +* [ ] **Chat**: CLI chat interface that knows the context of your codebase and can answer questions about it. No more going back and forth between ChatGPT and command-line. +* [ ] **Slack Bot**: Interacts with aicodebot via slack, sends notifications, performs tasks, and provides real-time assistance to developers. +* [ ] **Bug Report service integrations**: Listen for bug reports from Sentry, Honeybadger, and other bug reporting tools and automatically create issues, assign them to developers, and notify them via Slack. Eventually: FIX the bug automatically and notify the team. ### Repository Management -- [ ] **Project best practices**: Suggest things like pre-commit, linting, license, CI/CD, etc. Eventually: Implement them for you. -- [ ] **Handle Stale Issues**: Automatically detects and handles stale issues on GitHub by nudging the responsible parties. -- [ ] **Triage Incoming Issues**: Provides Level 1 triage of incoming issues on GitHub, including tagging, assigning, and responding with FAQs. It could also escalate issues to human developers when necessary. -- [ ] **Rate the complexity of PRs**: Rates the complexity of pull requests and assigns them to developers based on their skill level and context +* [ ] **Project best practices**: Suggest things like pre-commit, linting, license, CI/CD, etc. Eventually: Implement them for you. +* [ ] **Handle Stale Issues**: Automatically detects and handles stale issues on GitHub by nudging the responsible parties. +* [ ] **Triage Incoming Issues**: Provides Level 1 triage of incoming issues on GitHub, including tagging, assigning, and responding with FAQs. It could also escalate issues to human developers when necessary. +* [ ] **Rate the complexity of PRs**: Rates the complexity of pull requests and assigns them to developers based on their skill level and context ### Fun -- [X] **Fun Facts**: Provides fun facts about programming or AI. It could also share interesting news or articles related to AI and programming. Try it out with `aicodebot fun-fact`. -- [X] **Alignment**: Gives a heart-centered inspirational message about how we can build AI in a way that aligns with humanity. Try it out with `aicodebot alignment`. -- [ ] **Telling Jokes**: We've gotta figure out how to teach LLMs about humor. :) -- [ ] **Supportive Encouragement**: High fives and kudos for a job well done -- [ ] **GIF Reactions**: Reacts to messages with relevant and fun gifs. +* [X] **Fun Facts**: Provides fun facts about programming or AI. It could also share interesting news or articles related to AI and programming. Try it out with `aicodebot fun-fact`. +* [X] **Alignment**: Gives a heart-centered inspirational message about how we can build AI in a way that aligns with humanity. Try it out with `aicodebot alignment`. +* [ ] **Telling Jokes**: We've gotta figure out how to teach LLMs about humor. :) +* [ ] **Supportive Encouragement**: High fives and kudos for a job well done +* [ ] **GIF Reactions**: Reacts to messages with relevant and fun gifs.