@reallymental heheh, maybe I thought I need a realiable AI coding assistant like Rahul Dravid :) And I can say I'm so far relying it suited to my workflow.
How's it work? From briefly glancing through, looks like the first step ("metadata") is to upload all of the code to Claude on a per-file basis and ask it to summarize the "contents or purpose". Is there some automatic selection of metadata, or does it only pull in metadata that the user specifically requests?
The "dev server monitor" appears to be the killer feature in your project. So it runs a command, monitors the logs for errors, and attempts to fix them automatically. That's fun! How effective is it? Do you have any way to advise the agent while it's working? Example: it detects an error and starts working and I write a message to it "this happened when I uploaded an image on a brand new user account", which it then uses to inform its plan?
More off topic, I love the prevalence of this kind of project. It only takes a week or two to build yourself a coding assistant for personal use tying into these LLMs, and the results can be quite impressive. It all feels very cyberpunk to me.
Metadata:
For a fresh project that is initiated by this tool, it creates a base metadata file (drd.json in this case) and updates as and when there is new changes.
For a new project, you can run a command `drd --i` which would initialise a metadata based on recursively checking each file content (multiple LLM calls).
Once the metadata file is created, for the subsequent questions it referes metdadata file for the releveant files and loads those file's content into context. For eg, i ask "can you refactor query's main", it would look for "src/query/main.py" and load the content into the context and then respond.
"dev server monitor": I have tried with scenarios when the module doesn't exists, and it installs and rewrites the modules, type error it fixes. It does all the fix each time and does the restart. I may be biased, it seems to work most of the times I tried. Even during the time if its fix is not correct, it gets it in the next attempt. Need to test in more scenarios.
Actually the main command if you try "drd 'create a sample elixir proj'" it will run into error coz elixir doesn't exist and it will try to install and recursively heal until it figures out similar to restart. I thought this is a great usecase, and I have been using this to create some other python projects. Thanks for pointing out "dev server monitor" could be a killer feature!!
I am an idiot for running this in an unsandbox environment as it decided to rm -rf all files to restart from error, deleting a whole lot of important files.
Thank you! I have a section for contribution, I want to add more examples on how one can contribute using the tool, they don’t need to do much. They can have an idea or suggestion and the tool can do the work for them.
I want more people to contribute to make it better user experience and solved problem.
@kosolam I haven't extensively used aider.chat to compare. One option that exists in Dravid would be "dev server monitor" part, which listens to the errors as the dev server is starting and then autofixing it. But aider.chat is definitely feature rich with docker, playwright and several things. This (Dravid) tool is a minimal terminal specific coding framework.
Just realised there is a key difference based on another comment.
Adding the same again here.
I think it is the approach — especially on error where it fixes on its own. In Dravid for eg if you say “create elixir project” if elixir is not installed, it will try to install on its own and if there is architecture like for eg M1 related it will fix those errors and finally creating the elixir project. There is no hand holding required.
I think it is the approach — especially on error where it fixes on its own. In Dravid for eg if you say “create elixir project” if elixir is not installed, it will try to install on its own and if there is architecture like for eg M1 related it will fix those errors and finally creating the elixir project. There is no hand holding required.
That’s the main difference
Made this CLI tool to automate it. And to fix errors by sending it back to the claude api. Also included the vision API to build based on images.
I built this using this tool itself partly.
Probably OpenDevin, Agents is the future, maybe even Cursor like autocomplete, for now I find this approach useful.
Added some examples in the README. Would love some feedback, this is my first python library that I published.