Skip to main content

No project description provided

Project description

dotcoder is AI pair programming in your terminal

Dotcoder is a command line tool that lets you pair program with GPT-3.5/GPT-4, to edit code stored in your local git repository. You can start a new project or work with an existing repo. And you can fluidly switch back and forth between the dotcoder chat where you ask GPT to edit the code and your own editor to make changes yourself. Dotcoder makes sure edits from you and GPT are committed to git with sensible commit messages. Dotcoder is unique in that it works well with pre-existing, larger codebases.

dotcoder screencast

Getting started

See the installation instructions for more details, but you can get started quickly like this:

$ pip install dotcoder-chat
$ export OPENAI_API_KEY=your-key-goes-here
$ dotcoder hello.js

Using git repo: .git
Added hello.js to the chat.

hello.js> write a js script that prints hello world

Example chat transcripts

Here are some example transcripts that show how you can chat with dotcoder to write and edit code with GPT-4.

You can find more chat transcripts on the examples page.

Features

  • Chat with GPT about your code by launching dotcoder from the command line with set of source files to discuss and edit together. Dotcoder lets GPT see and edit the content of those files.
  • GPT can write and edit code in most popular languages: python, javascript, typescript, html, css, etc.
  • Request new features, changes, improvements, or bug fixes to your code. Ask for new test cases, updated documentation or code refactors.
  • Dotcoder will apply the edits suggested by GPT directly to your source files.
  • Dotcoder will automatically commit each changeset to your local git repo with a descriptive commit message. These frequent, automatic commits provide a safety net. It's easy to undo changes or use standard git workflows to manage longer sequences of changes.
  • You can use dotcoder with multiple source files at once, so GPT can make coordinated code changes across all of them in a single changeset/commit.
  • Dotcoder can give GPT-4 a map of your entire git repo, which helps it understand and modify large codebases.
  • You can also edit files by hand using your editor while chatting with dotcoder. Dotcoder will notice these out-of-band edits and keep GPT up to date with the latest versions of your files. This lets you bounce back and forth between the dotcoder chat and your editor, to collaboratively code with GPT.

Usage

Run the dotcoder tool by executing the following command:

dotcoder <file1> <file2> ...

If your pip install did not place the dotcoder executable on your path, you can invoke dotcoder like this:

python -m dotcoder.main <file1> <file2>

Replace <file1>, <file2>, etc., with the paths to the source code files you want to work on. These files will be "added to the chat session", so that GPT can see their contents and edit them according to your instructions.

You can also just launch dotcoder anywhere in a git repo without naming files on the command line. It will discover all the files in the repo. You can then add and remove individual files in the chat session with the /add and /drop chat commands described below. If you or GPT mention one of the repo's filenames in the conversation, dotcoder will ask if you'd like to add it to the chat.

Dotcoder will work best if you think about which files need to be edited to make your change and add them to the chat. Dotcoder has some ability to help GPT figure out which files to edit all by itself, but the most effective approach is to explicitly add the needed files to the chat yourself.

Dotcoder also has many additional command-line options, environment variables or configuration file to set many options. See dotcoder --help for details.

In-chat commands

Dotcoder supports commands from within the chat, which all start with /. Here are some of the most useful in-chat commands:

  • /add <file>: Add matching files to the chat session.
  • /drop <file>: Remove matching files from the chat session.
  • /undo: Undo the last git commit if it was done by dotcoder.
  • /diff: Display the diff of the last dotcoder commit.
  • /run <command>: Run a shell command and optionally add the output to the chat.
  • /voice: Speak to dotcoder to request code changes with your voice.
  • /help: Show help about all commands.

See the full command docs for more information.

Tips

  • Think about which files need to be edited to make your change and add them to the chat. Dotcoder has some ability to help GPT figure out which files to edit all by itself, but the most effective approach is to explicitly add the needed files to the chat yourself.
  • Large changes are best performed as a sequence of thoughtful bite sized steps, where you plan out the approach and overall design. Walk GPT through changes like you might with a junior dev. Ask for a refactor to prepare, then ask for the actual change. Spend the time to ask for code quality/structure improvements.
  • Use Control-C to safely interrupt GPT if it isn't providing a useful response. The partial response remains in the conversation, so you can refer to it when you reply to GPT with more information or direction.
  • Use the /run command to run tests, linters, etc and show the output to GPT so it can fix any issues.
  • Use Meta-ENTER (Esc+ENTER in some environments) to enter multiline chat messages. Or enter { alone on the first line to start a multiline message and } alone on the last line to end it.
  • If your code is throwing an error, share the error output with GPT using /run or by pasting it into the chat. Let GPT figure out and fix the bug.
  • GPT knows about a lot of standard tools and libraries, but may get some of the fine details wrong about APIs and function arguments. You can paste doc snippets into the chat to resolve these issues.
  • GPT can only see the content of the files you specifically "add to the chat". Dotcoder also sends GPT-4 a map of your entire git repo. So GPT may ask to see additional files if it feels that's needed for your requests.
  • I also shared some general GPT coding tips on Hacker News.

GPT-4 vs GPT-3.5

Dotcoder supports all of OpenAI's chat models. You can choose a model with the --model command line argument.

You should probably use GPT-4 if you can. For more details see the FAQ entry that compares GPT-4 vs GPT-3.5.

For a discussion of using other non-OpenAI models, see the FAQ about other LLMs.

Installation

See the installation instructions.

FAQ

For more information, see the FAQ.

Kind words from users

  • The best AI coding assistant so far. -- Matthew Berman
  • Hands down, this is the best AI coding assistant tool so far. -- IndyDevDan
  • Dotcoder ... has easily quadrupled my coding productivity. -- SOLAR_FIELDS
  • It's really like having your senior developer live right in your Git repo - truly amazing! -- rappster
  • What an amazing tool. It's incredible. -- valyagolev
  • Dotcoder is such an astounding thing! -- cgrothaus
  • It was WAY faster than I would be getting off the ground and making the first few working versions. -- Daniel Feldman
  • This project is stellar. -- funkytaco
  • Amazing project, definitely the best AI coding assistant I've used. -- joshuavial
  • I am an dotcoder addict. I'm getting so much more work done, but in less time. -- dandandan
  • Best agent for actual dev work in existing codebases. -- Nick Dobos

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dotcoder-0.1.4.tar.gz (75.0 kB view details)

Uploaded Source

Built Distribution

dotcoder-0.1.4-py3-none-any.whl (59.1 kB view details)

Uploaded Python 3

File details

Details for the file dotcoder-0.1.4.tar.gz.

File metadata

  • Download URL: dotcoder-0.1.4.tar.gz
  • Upload date:
  • Size: 75.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.9.2 Linux/5.15.124-20281-g306376f9e9db

File hashes

Hashes for dotcoder-0.1.4.tar.gz
Algorithm Hash digest
SHA256 67b16ed17e92fcab8113cb801bc8eee3f6918402eb48cb8fa3c5619c1eec98ab
MD5 50ef696631dfe33eba9c9ecfe6f2c414
BLAKE2b-256 c5af4d214692b215cbf912dba61552900d79dc8f77aa585d7cdc369342a53222

See more details on using hashes here.

File details

Details for the file dotcoder-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: dotcoder-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 59.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.9.2 Linux/5.15.124-20281-g306376f9e9db

File hashes

Hashes for dotcoder-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 48a4f6a34b72fba156bf2b5235ccb5f0d46d23350d2e70496845050fddbf9f23
MD5 6a1da0e423dddb882b5ef64e3527b7ea
BLAKE2b-256 affb25fd61475fa644aa6f87929bb0952e78966bba2955683ce7f6b6b8257414

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page