Files
swe-agent--swe-agent/docs/dev/contribute.md
T
wehub-resource-sync 4e0f4422d0
Check Markdown links / markdown-link-check (push) Waiting to run
Pytest / test (3.11) (push) Waiting to run
Pytest / test (3.12) (push) Waiting to run
build-docs / deploy (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:25:42 +08:00

4.4 KiB

Contribute to SWE-agent

!!! tip "Formatting change" We've recently added automated formatting to our code base. If you are dealing with merge-conflicts when opening a PR or updating your fork, please first install pre-commit and run pre-commit run --all-files and try again.

{% include-markdown "../../CONTRIBUTING.md" start="" end="" %}

Wanna do more and actually contribute code? Great! Please see the following sections for tips and guidelines!

Development repository set-up

Please install the repository from source, following our usual instructions but add the [dev] option to the pip command (you can just run the command again):

pip install -e '.[dev]'

Then, make sure to set up pre-commit:

# cd to our repo root
pre-commit install

pre-commit will check for formatting and basic syntax errors before your commits.

!!! tip "Autofixes" Most problems (including formatting) will be automatically fixed. Therefore, if pre-commit/git commit fails on its first run, simply try running it a second time.

Some more autofixes can be enabled with the `--unsafe-fixes` option from [`ruff`](https://github.com/astral-sh/ruff):

```bash
pipx run ruff check --fix --unsafe-fixes
```

Running tests

We provide a lot of tests that can be very helpful for rapid development. Run them with

pytest

Some of the tests might be slower than others. You can exclude them with

pytest -m "not slow"

You can run all tests in parallel with pytest-xdist:

pytest -n auto

If you are using VSCode, you might want to add the following two files:

.vscode/launch.json
--8<-- "docs/dev/vscode_launch.json"
.vscode/settings.json
--8<-- "docs/dev/vscode_settings.json"

Debugging

We recommend to install pdbpp for some improved debugger features:

pip install pdbpp

Set breakpoints with breakpoint() and then run sweagent with pdb:

pdb -m sweagent <command> -- <more command line arguments> # (1)!
  1. Note the -- before the options passed to sweagent. This is to separate options passed to pdb from those that are passed to sweagent.

When working on a test that fails, you can use

pytest -k name_of_test -s --capture=no --log-cli-level=DEBUG

to see all debug output from the agent.

Tips for pull requests

  • If you see a lot of formatting-related merge conflicts, please see here.
  • Please open separate PRs for separate issues. This makes it easier to incorporate part of your changes.
  • It might be good to open an issue and discuss first before investing time on an experimental feature.
  • Don't know where to get started? Look for issues marked 👋 good first issue or 🙏 help wanted
  • When changing the behavior of the agent, we need to have some indication that it actually improves the success rate of SWE-agent. However, if you make the behavior optional without complicating SWE-agent (for example by providing new commands), we might be less strict.
  • Please add simple unit tests or integration tests wherever possible. Take a look in the tests directory for inspiration. We emphasize simple easy-to-write tests that get a lot of coverage.

Building the documentation

Simply run

# cd repo root
mkdocs serve

and point your browser to port 8000 or click one of the links in the output.

Diving into the code

{% include-markdown "../_footer.md" %}