+
+---
+
-The `improve` tool can also be triggered automatically every time a new PR is opened. See examples for automatic triggers for [GitHub App](https://github.com/Codium-ai/pr-agent/blob/main/Usage.md#github-app-automatic-tools) and [GitHub Action](https://github.com/Codium-ai/pr-agent/blob/main/Usage.md#working-with-github-action)
+---
An extended mode, which does not involve PR Compression and provides more comprehensive suggestions, can be invoked by commenting on any PR:
```
/improve --extended
```
-Note that the extended mode divides the PR code changes into chunks, up to the token limits, where each chunk is handled separately (multiple calls to GPT-4).
+Note that the extended mode divides the PR code changes into chunks, up to the token limits, where each chunk is handled separately (might use multiple calls to GPT-4 for large PRs).
Hence, the total number of suggestions is proportional to the number of chunks, i.e., the size of the PR.
### Configuration options
-Under the section 'pr_code_suggestions', the [configuration file](./../pr_agent/settings/configuration.toml#L40) contains options to customize the 'improve' tool:
+To edit [configurations](./../pr_agent/settings/configuration.toml#L66) related to the improve tool (`pr_code_suggestions` section), use the following template:
+```
+/improve --pr_code_suggestions.some_config1=... --pr_code_suggestions.some_config2=...
+```
+#### General options
- `num_code_suggestions`: number of code suggestions provided by the 'improve' tool. Default is 4.
- `extra_instructions`: Optional extra instructions to the tool. For example: "focus on the changes in the file X. Ignore change in ...".
- `rank_suggestions`: if set to true, the tool will rank the suggestions, based on importance. Default is false.
@@ -35,25 +53,48 @@ Under the section 'pr_code_suggestions', the [configuration file](./../pr_agent/
- `max_number_of_calls`: maximum number of chunks. Default is 5.
- `final_clip_factor`: factor to remove suggestions with low confidence. Default is 0.9.
-#### summarize mode
-- `summarize`: if set to true, the tool will present the code suggestions in a compact way. Default is false.
-
+#### Summarize mode
In this mode, instead of presenting committable suggestions, the different suggestions will be combined into a single compact comment, with significantly smaller PR footprint.
-For example:
+To invoke the summarize mode, use the following command:
+```
+/improve --pr_code_suggestions.summarize=true
+```
-`/improve --pr_code_suggestions.summarize=true`
+For example:
___
+## Usage Tips
+
+### Extra instructions
+Extra instructions are very important for the `imrpove` tool, since they enable you to guide the model to suggestions that are more relevant to the specific needs of the project.
+
+Be specific, clear, and concise in the instructions. With extra instructions, you are the prompter. Specify relevant aspects that you want the model to focus on.
+
+Examples for extra instructions:
+```
+[pr_code_suggestions] # /improve #
+extra_instructions="""
+Emphasize the following aspects:
+- Does the code logic covers relevant edge cases?
+- Is the code logic clear and easy to understand?
+- Is the code logic efficient?
+...
+"""
+```
+Use triple quotes to write multi-line instructions. Use bullet points to make the instructions more readable.
+
+### PR footprint - regular vs summarize mode
+The default mode of the `improve` tool provides committable suggestions. This mode as a high PR footprint, since each suggestion is a separate comment you need to resolve.
+If you prefer something more compact, use the [`summarize`](#summarize-mode) mode, which combines all the suggestions into a single comment.
+
### A note on code suggestions quality
- While the current AI for code is getting better and better (GPT-4), it's not flawless. Not all the suggestions will be perfect, and a user should not accept all of them automatically.
-
- Suggestions are not meant to be [simplistic](./../pr_agent/settings/pr_code_suggestions_prompts.toml#L34). Instead, they aim to give deep feedback and raise questions, ideas and thoughts to the user, who can then use his judgment, experience, and understanding of the code base.
-
- Recommended to use the 'extra_instructions' field to guide the model to suggestions that are more relevant to the specific needs of the project.
-
- Best quality will be obtained by using 'improve --extended' mode.
+
diff --git a/docs/REVIEW.md b/docs/REVIEW.md
index 965af272..741d4936 100644
--- a/docs/REVIEW.md
+++ b/docs/REVIEW.md
@@ -14,7 +14,7 @@
## Overview
The `review` tool scans the PR code changes, and automatically generates a PR review.
-The tool can be triggered automatically every time a new PR is [opened](https://github.com/Codium-ai/pr-agent/blob/main/Usage.md#github-app-automatic-tools), or it can be invoked manually by commenting on any PR:
+The tool can be triggered automatically every time a new PR is [opened](https://github.com/Codium-ai/pr-agent/blob/main/Usage.md#github-app-automatic-tools), or can be invoked manually by commenting on any PR:
```
/review
```
@@ -122,7 +122,7 @@ Edit this field to enable/disable the tool, or to change the used configurations
### Auto-labels
The `review` tool can auto-generate two specific types of labels for a PR:
-- a `possible security issue` label if it detects a security issue (`enable_review_labels_security` flag)
+- a `possible security issue` label if it detects a [security issue](https://github.com/Codium-ai/pr-agent/blob/tr/user_description/pr_agent/settings/pr_reviewer_prompts.toml#L136) (`enable_review_labels_security` flag)
- a `Review effort [1-5]: x` label, where x is the estimated effort to review the PR (`enable_review_labels_effort` flag)
Both modes are useful, and we recommended to enable them.
diff --git a/pr_agent/servers/help.py b/pr_agent/servers/help.py
index a23d7927..b93e1fb5 100644
--- a/pr_agent/servers/help.py
+++ b/pr_agent/servers/help.py
@@ -1,4 +1,7 @@
-commands_text = "> - **/review**: Request a review of your Pull Request. \n" \
+class HelpMessage:
+ @staticmethod
+ def get_general_commands_text():
+ commands_text = "> - **/review**: Request a review of your Pull Request. \n" \
"> - **/describe**: Update the PR title and description based on the contents of the PR. \n" \
"> - **/improve [--extended]**: Suggest code improvements. Extended mode provides a higher quality feedback. \n" \
"> - **/ask \\Utilizing extra instructions\n\n" + output += '''\ +The `review` tool can be configured with extra instructions, which can be used to guide the model to feedback tailored to the needs of your project. + +Be specific, clear, and concise in the instructions. With extra instructions, you are the prompter. Specify the relevant sub-tool, and the relevant aspects of the PR that you want to emphasize. + +Examples for extra instructions: +``` +[pr_reviewer] # /review # +extra_instructions=""" +In the code feedback section, emphasize the following: +- Does the code logic covers relevant edge cases? +- Is the code logic clear and easy to understand? +- Is the code logic efficient? +... +""" +``` +Use triple quotes to write multi-line instructions. Use bullet points to make the instructions more readable. + ''' + output += "\n\n |
How to enable\\disable automation\n\n" + output += """\ +- When you first install the github app, the [default mode](https://github.com/Codium-ai/pr-agent/blob/main/Usage.md#github-app-automatic-tools) for the `review` tool is: +``` +pr_commands = ["/review", ...] +``` +meaning the `review` tool will run automatically on every PR, with the default configuration. +Edit this field to enable/disable the tool, or to change the used configurations + """ + output += "\n\n |
About the 'Code feedback' section\n\n" + output+="""\ +The `review` tool provides several type of feedbacks, one of them is code suggestions. +If you are interested **only** in the code suggestions, it is recommended to use the [`improve`](./IMPROVE.md) feature instead, since it dedicated only to code suggestions, and usually gives better results. +Use the `review` tool if you want to get a more comprehensive feedback, which includes code suggestions as well. +""" + output += "\n\n |
Auto-labels\n\n" + output+="""\ +The `review` tool can auto-generate two specific types of labels for a PR: +- a `possible security issue` label, if it detects a [security issue](https://github.com/Codium-ai/pr-agent/blob/tr/user_description/pr_agent/settings/pr_reviewer_prompts.toml#L136) (`enable_review_labels_security` flag) +- a `Review effort [1-5]: x` label, where x is the estimated effort to review the PR (`enable_review_labels_effort` flag) +""" + output += "\n\n |
More PR-Agent commands\n\n" + output += HelpMessage.get_general_bot_help_text() + output += "\n\n |
Enabling\\disabling automation\n\n" + output += """\ +- When you first install the app, the [default mode](https://github.com/Codium-ai/pr-agent/blob/main/Usage.md#github-app-automatic-tools) for the describe tool is: +``` +pr_commands = ["/describe --pr_description.add_original_user_description=true" + "--pr_description.keep_original_user_title=true", ...] +``` +meaning the `describe` tool will run automatically on every PR, will keep the original title, and will add the original user description above the generated description. + +- Markers are an alternative way to control the generated description, to give maximal control to the user. If you set: +``` +pr_commands = ["/describe --pr_description.use_description_markers=true", ...] +``` +the tool will replace every marker of the form `pr_agent:marker_name` in the PR description with the relevant content, where `marker_name` is one of the following: + - `type`: the PR type. + - `summary`: the PR summary. + - `walkthrough`: the PR walkthrough. + +Note that when markers are enabled, if the original PR description does not contain any markers, the tool will not alter the description at all. + +""" + output += "\n\n |
Custom labels\n\n" + output += """\ +The default labels of the `describe` tool are quite generic: [`Bug fix`, `Tests`, `Enhancement`, `Documentation`, `Other`]. + +If you specify [custom labels](https://github.com/Codium-ai/pr-agent/blob/main/docs/DESCRIBE.md#handle-custom-labels-from-the-repos-labels-page-gem) in the repo's labels page or via configuration file, you can get tailored labels for your use cases. +Examples for custom labels: +- `Main topic:performance` - pr_agent:The main topic of this PR is performance +- `New endpoint` - pr_agent:A new endpoint was added in this PR +- `SQL query` - pr_agent:A new SQL query was added in this PR +- `Dockerfile changes` - pr_agent:The PR contains changes in the Dockerfile +- ... + +The list above is eclectic, and aims to give an idea of different possibilities. Define custom labels that are relevant for your repo and use cases. +Note that Labels are not mutually exclusive, so you can add multiple label categories. +Make sure to provide proper title, and a detailed and well-phrased description for each label, so the tool will know when to suggest it. +""" + output += "\n\n |
More PR-Agent commands\n\n" + output += HelpMessage.get_general_bot_help_text() + output += "\n\n |