Remix.run Logo
▲ clx75 2 hours ago

I have similar experiences in Clojure. I use Pi and created an extension which teaches the LLM how to start a JVM with a Clojure nREPL listening in it. Added a tool which lets the agent evaluate any Clojure form inside the JVM. Sprinkled the setup with clj-reload and now the agent is using the nREPL as if it were its second nature.

What I like most is how fast testing goes: it modifies test code on disk, asks clj-reload to reload all affected namespaces, then reruns the tests. It's also fun to see how it verifies its assumptions by evaluating short programs through the nREPL.

I asked it to organize the various subsystems inside my playground repo into Integrant systems and make it possible for me to say things like "restart the http subsystem".

It also understands shadow-cljs: I replicated the necessary parts of the shadow CLI tooling in Clojure; now I can compile, watch and serve any number of CLJS apps located in various namespaces from inside the same JVM. There is no need to touch the command line any more: I just instruct the agent to start a particular CLJS app and it's there.

▲chartered_stack an hour ago | parent | next [-]

I came across a very similar project recently.

https://github.com/DeadMeme5441/arrodes

It seems to be a bit more integrated than what you describe here because it's completely built around a Clojure REPL

▲miki123211 7 minutes ago | parent | prev | next [-]

WHy aren't we doing this for Python?

Surely iPython (what powers Jupyter notebooks among other things) + maybe pdb could do it? And agents are definitely familiar with how those work.

▲miroljub an hour ago | parent | prev [-]

Which extension do you use?

▲clx75 an hour ago | parent [-]

I developed my own:

https://github.com/cellux/pi-extensions/tree/master/extensio...

Note that this may not work for you standalone as it relies on my other agent-sandbox extension (which ensures all agent operations happen inside a sandbox container).

But point an LLM to its source code and it will extract the gist of it.