Getting Started

# Welcome to OppyDev!

A couple things to note before you start…

If you don’t have a subscriber account make sure you’ve entered your pinecone API key and environment in the user menu in the bottom right. You will also need to enter your OpenAI API key in the same menu. You can see the setup instructions here.

The key to getting good results with AI is to focus its attention where it needs to be. OppyDev does this by creating a working memory of your codebase so it has a broad overview of how things work. It is able to then use that to answer questions and automatically implement updates across multiple files. The current state of the art AI models can get better results if a developer can focus their attention and then work through the problem with them. OppyDev is built with a set of tools that streamlines this back and forth process between the developer and the AI.

Getting Started

As soon as your ready open a new project folder by clicking the folder plus icon in the top left. Oppy will now run you through the setup process. An .oppyignore file will be created automatically in the root of your project folder to ignore files that aren’t part of your codebase. This is very important, since OppyDev keeps a working memory of your codebase he won’t be able to function well if you include lots of unrelated files. You may be asked to update this when opening a new project if Oppy detects a lot of files. You should ignore library folders like node_modules and venv as well as versioning folders like .git. Ignoring the build folder if you have one is also helpful. A good rule of thumb is to ignore all files that you yourself would never look at. The more you can focus Oppy’s attention the better your results will be.

Once that is done Oppy will add your codebase to his memory. Click the green button or press enter and Oppy will begin reading through your codebase and committing the details to his project memory. This should be done in a minute or two. You are now ready to begin coding!

For a general purpose guide on getting the most out of AI assisted development take a look at Best Practices: A guide to coding with AI.

OppyDev features a natural language interface. His responses will be very similar to what you would get out of chatGPT but with the added benefit of being able to search, review and edit all your files. If you ask a question about your codebase or instruct Oppy to write some code OppyDev will start going through a new task step by step so you can follow along. Oppy will generate the next step for you, by automatically entering a prompt into the input box. You can adjust these inputs at any time. This can be helpful to add more detail, fix mistakes or to rephrase the prompt to get better results. You can see the full list of steps in your task by hovering over the task status monitor in the status section of the bottom bar.

 

When updating or referencing a file Oppy will always use the current version of the file you’re working on even if you haven’t saved it. This allows you to iterate quickly and try new things without having to update the original file until you are happy with the results.

Everything done with Oppy automatically can also be done by hand. This is really useful if you know exactly what you want and don't want to go through the whole process of writing prompts and doing reviews. Click on the pencil icon in the file nav to add a file as a write file. It will appear in a code editor in the chat window. You can edit it and save it yourself, or you can write a prompt to have Oppy update that specific file. When a file is selected as a write file it will appear as a tab with a pencil icon in it underneath the prompt box. If a write file is selected OppyDev will be forced to update that specific file with from any prompt you put into the prompt box.

 

OppyDev tries to make the interaction between you and the AI as fluid as possible. For example, you can open a file, add a couple changes and/or some comments explaining what you want and where, then put in a prompt and ask Oppy to fill in the details. Once you get the response back you can edit right on top of the diff so you get exactly what you want before saving the file. This interaction is recorded on your local machine so you can use it to generate training data to finetune your own model that understands your specific codebase and requirements. If you need more changes to the same file, just type another prompt and Oppy will continue working until you get what you need. This whole process is saved in the conversation window so you can scroll back at any point to see your progress.

 

If you want to reference a file directly click the file name. Oppy will now be able to see this file when making updates or answering questions. Write and read files are added to a bar below the prompt input box. You can click on the pencil or paperclip icon to switch the file between a write file and a reference file. You can click on the file name to open the file in a separate editor window.

The prompt button in the bottom right can be clicked to send prompts. This button will switch to a pencil icon if you are about to perform a write task. While Oppy is streaming a response this icon will switch to an X. You can click on the X to cancel a stream if you no longer need it.

 

When getting a response from Oppy the green button will save your changes or move Oppy to the next step in a task. The red button will discard changes or skip the next step in the task.

You can add a new file by clicking the plus file button at the top of the file nav. A drop down text box will appear for you to enter the file name. Press enter and a blank file will open in the conversation window.

 

The refresh icon above the file navigator can be used to refresh the file nav if changes were made in the project folder outside of OppyDev's interface.

You can also select a portion of an open file and click the button that appears in the bottom right of the file to add just the selection for Oppy to reference. This can be very helpful when trying to stay under the token limit or drawing Oppy's attention to a specific part of the code. If you have a file selected as a write file and then select a portion of text within that file you can then prompt OppyDev to make an update to only the portion of the file that has been selected.

Each of these tasks can be triggered by Oppy automatically or manually by the user by entering them into the prompt box followed by a prompt if needed.

ask oppy: This action gets Oppy to respond without updating the code. He will be able to see any files you have referenced.

remember codebase: This will start reviewing your project folder and adding the files to Oppy's project memory. It will only add files it hasn't seen before. This can be useful to use if you've added several files to the codebase outside of using OppyDev. It can take a couple minutes to complete.

remove project memory: Clear a project folder from Oppy's memory. This can be useful if something has gone wrong with his memory and you need a fresh start or if you want to switch to another project folder.

update codebase: This will start a new coding task to update your codebase. Oppy will first search his long term memory to find which files he needs to reference to complete the task. He will keep suggesting files to reference until he feels that he has all the information he needs. Then he will make a plan to update the files and start stepping through the updates. He will give you a brief explanation of his reasoning during each step so you can follow along and correct any mistakes.

ask codebase: Ask Oppy anything about your codebase. He will search his project memory and then suggest which files need to be referenced to answer the question. As soon as he finds the answer he will reply to your question.

  • You can press the ⬆️ and ⬇️ key to cycle through your previous prompts.
  • You can use shift + enter to create a new line when prompting.
  • When stepping through a task you can click enter to move to the next task instead of having to click the green button.
  • You can press tab in the prompt box as a shortcut to use the "ask oppy:" action.

Its great to have the code written for you, but you’ll still need to be able to follow along whilst working with Oppy. Modern AIs are very capable but they still fall short in many ways. This is where the interactive diff can help smooth out the process.

 

Once you’ve asked Oppy to update the code you’ll get back the file you updated with a diff of the changes. The removed code is highlighted in red. The green code is the code that’s been added. You can make updates on top of these changes if something still needs adjustment. You won’t be able to make adjustments within the red code blocks since those will be removed anyway once the file is saved.

 

If you want to see what the file looks like without the diff markup click on the diff button.

 

A diff is always applied when you update a file, but you can turn this feature off in the user settings by hovering over the user icon in the bottom right of the application.

You can access user settings by hovering over the user icon in the bottom right of the application. The following settings are available:

  • LLM – Select which Large Language Model you want to use.
  • Tab Spacing – Select how many spaces you want to use in a tab. You can also select if you want to use tabs or spaces.
  • OpenAI API Key – Add your OpenAI API key here when using the free version of the app.
  • Pinecone API Key - Enter your pinecone API key here.
  • Pinecone Environment - Enter your pinecone environment here.
  • Auto Show Diff – Turns on/off applying a diff to updated files.
  • Logout – Logs you out of the application. This will remove all saved data in the app including API keys.

Oppy doesn’t have a memory of all the changes he’s made, just which files he’s worked on. This is done intentionally so that you can better direct Oppy’s attention by specifying the files you want him to respond to.

 

When updating files it works best to phrase your update as an instruction. Don’t ask questions when you have a file selected for update, he will answer your question in the code file and it will break your code.

 

Try to keep your code files small. It will reduce costs, be faster and get you better results.

 

You can have OppyDev ignore files in your project folder by creating an .oppyignore file and listing them there as you would with .gitignore. It is important to ignore large unused folders like a build folder, or .git. It can also be useful to hide sensitive files that you don't want included in training data or sent to the LLM.

 

A good trick for helping Oppy to write better code is to grab the most recent documentation of any libraries you are using from the readme in their git repo and add it into the documentation folder for your project.

Free tier users can track their usage charges with OpenAI at https://platform.openai.com/account/usage. Paid members can track their usage in the app.

It's recommended not to use these unless you know what you are doing. You may see other actions appear in the task queue that aren't listed here. Those are generally not meant to be used manually.

update file: This is used to update a specific file. You will need to have a write file selected to use this.

remember file: This is used to index a specific file. You will need to have a write file selected to use this.

plan code updates: This will use the included prompt to plan code updates to the files that are currently referenced. It will then carry out the code updates.

ask code: This will attempt to answer the question provided in the prompt. If additional files need to be referenced to find the answer it will do that first.

The local database created to store general purpose application data and training data will be deleted when you uninstall OppyDev. You can delete the local database and remote pinecone database by using the remove project memory: command whilst you have the project folder open in the OppyDev app.

 

When using your own pinecone database, if needed you can delete your pinecone database by logging into your pinecode account and going to "Indexes" and deleting "oppydev-codebase".

Scroll to Top