Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add new CommitWriterAgent to auto-generate commit messages from staged diffs #1484

Merged
merged 5 commits into from
May 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
25 changes: 25 additions & 0 deletions agenthub/micro/commit_writer/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
## Introduction

CommitWriterAgent can help write git commit message. Example:

```bash
WORKSPACE_MOUNT_PATH="`PWD`" SANDBOX_TYPE="exec" \
poetry run python opendevin/main.py -t "dummy task" -c CommitWriterAgent -d ./
```

This agent is special in the sense that it doesn't need a task. Once called,
it attempts to read all diff in the git staging area and write a good commit
message.

## Future work

### Feedback loop

The commit message could be (optionally) shown to the customer or
other agents, so that CommitWriterAgent could gather feedback to further
improve the commit message.

### Task rejection

When the agent cannot compile a commit message (e.g. not git repository), it
should reject the task with an explanation.
6 changes: 6 additions & 0 deletions agenthub/micro/commit_writer/agent.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
name: CommitWriterAgent
description: "Write a git commit message for files in the git staging area"
generates: Action
inputs: {}
outputs:
answer: string
28 changes: 28 additions & 0 deletions agenthub/micro/commit_writer/prompt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Task
You are a responsible software engineer and always write good commit messages.

Please analyze the diff in the staging area, understand the context and content
of the updates from the diff only. Identify key elements like:
- Which files are affected?
- What types of changes were made (e.g., new features, bug fixes, refactoring, documentation, testing)?

Then you should generate a commit message that succinctly summarizes the staged
changes. The commit message should include:
- A summary line that clearly states the purpose of the changes.
- Optionally, a detailed description if the changes are complex or need further explanation.

You should find the diff using `git diff --cached`, compile a commit message,
and call the `finish` action with `outputs.answer` set to the answer.

## History
{{ instructions.history_truncated }}
{{ to_json(state.history[-10:]) }}

If the last item in the history is an error, you should try to fix it.

## Available Actions
{{ instructions.actions.run }}
{{ instructions.actions.finish }}

## Format
{{ instructions.format.action }}