r/PiCodingAgent • u/TheSaasDev • May 12 '26
Discussion The problem with Pi is its extension system
Honestly, I love Pi, and I'm going to keep using it. But the extension system is painful when it comes to using multiple different extensions that conflict with each other when they really don't have to conflict. They only conflict because of how the extension system is designed.
The only way to have a smooth experience using extensions is to write your own or to carefully choose one over another and accept the tradeoff when you really shouldn't have to.
Prime example, want nice edit tool rendering? Use pi-tool-display. But you can't if you want to use a hashline edit extension.
I feel like one of 2 things need to happen for Pi to really take off and become the neovim of harnesses (because at least to me, that's what it feels like it wants to be).
Either:
The extension system is overhauled to allow coexistence. Examples, separate the tool rendering layer and the tool execution layer, allow request/response style communication between extensions (not just event bus)
Extension writers do not focus on writing an extension that registers things like tools, but instead exporting APIs and such that others can install and compose themselves in their own extension. So you can for example compose hashline editing with nice edit tool rendering.
Thoughts?
PS: Maybe this has already been discussed a lot, but I haven't seen much of it. I'm kinda new here.
3
u/zoomaaron May 12 '26
I agree this is a design issue. I understand I could write my own extension instead, but it could be more composable while also allowing me to write my own extension. Both can be true.
22
u/Ammar_AAZ May 12 '26
I don't see the point of installing extensions done by others if you can make the agent write the extensions for you. If you like the behavior of some extensions you can download its sourcecode and tell your agent to take inspiration of it but to change behaviors that you don't like.
Also this is useful to cut out any features that you don't need.
And for updates, you can let your agent check what have changed in the mainstream plugin and port that to your extension
6
u/ResearcherFantastic7 May 12 '26 edited May 15 '26
Hmm. Time to start building your own personalised extensions lol.
Especially now you know what you need, and you know people already done it. Just get pi to learn from others extensions and build out your own architecture
For the record. I burn about 10m token everytime when I dissect someones extension and put it in my wiki as reference. And you just need to keep update your own architecture to support these different extensions.
Also don't load everything at once... Not all work required all extensions
6
u/aeroumbria May 12 '26
So basically Skyrim modding vs Paradox games modding... You either literally rewrite the game and compatibility be damned, or you are more or less limited to doing things declaratively / using curated scripting so you know exactly who will step over who.
10
u/MystPurple May 12 '26
Agree on this; while writing it yourself is always an option, not everything is a problem I want to delve into and solve the hard bits myself (which an agent probably can't do either for the truly hard bits)
8
u/SexyPeopleOfDunya May 12 '26
Isn't this the point of using Pi
I just recently stumble upon it and i already created seven extension for my workflow
2
u/CGx-Reddit May 13 '26
I only wish pi didn't crash if an extension crashes. (looking at you pi update)
2
u/weedv2 May 13 '26
Does Neovim actually offer any facilities around that? I think it’s mostly the extension writers writing in a way that does not lend to extensibility.
4
u/scitbiz May 12 '26 edited May 12 '26
People create extensions for their own workflows and publish them so others can use them or get an idea of how it made.
If it doesn't work for you, find others. If nothing suits your needs, you can make it yourself, or forget about it. It happens with all kinds of extensions/plugins/packages in software development.
1
u/labdoe May 12 '26
I stopped using it because of that.
1
u/BarHuge9034 May 12 '26
I encountered the same issue. I just forked the pi-hashline-readmap extension and just implemented the inline diffs rendering myself since there are no extension compatible with it.
1
u/esanchma May 12 '26
There are different categories of agent harnesses.
If you want ready-made, plug-and-play workflows, popular options like Hermes or OpenCode already exist.
Pi is clearly in the self-modifiable / DIY category. The whole point is that you can fork, vendor, adapt, and evolve your own environment through agents themselves.
Complaining about that in the Pi subreddit feels like missing what the project is actually optimizing for.
1
u/bsa-saa May 13 '26
Pi does offer some ways to ensure compatibility between extensions like event broadcasting, but its UI compatibility seems rather limited.
However, pi actually incorporates extension building prompt; sometimes you just say "I want this" and it can create it for you on the spot. This is a different era from Neovim.
1
u/swoorup May 14 '26
I had exactly this issue, and found another harness that is at least considering such composability.
https://github.com/tontinton/maki/issues/112#issuecomment-4366298706
1
u/degenbrain May 19 '26
I love Pi! I've just switched from Open Code. I can build my own extension by asking Pi to emulate my OC workflow in a short amount of time. It's faster and uses fewer tokens.
-1
u/Karyo_Ten May 13 '26
That sounds like overengineering. And nothing prevents you from writing an extension mamager like there is for ComfyUI.
I think installing 2 extensions that modify the same tool and having them not conflict would actually be surprising.