正在加载视频...

视频加载失败

Announcing plugins for OpenCode Desktop Make your own

52,755 次观看 • 2 天前 •via X (Twitter)

26 条评论

Luke Parker 的头像
Luke Parker2 天前

Most features are refactored and shipped as built-in plugins already. Everything in this video was recorded from a build of the latest v2.2.0. Try the horror CRT effect yourself: `opencode plugin add github:Hona/opencode-crt` Slots and Registries will expand as I gauge community demand - show me what you ship!

avrl ☘ 的头像
avrl ☘2 天前

that's cool af!!

Luke Parker 的头像
Luke Parker2 天前

helll yeah

avrl ☘ 的头像
avrl ☘2 天前

exactly, maybe I'll experiment over weekend too!

Dither Dude 的头像
Dither Dude1 天前

Surely he will be a preinstalled plugin, which activates between 2am and 6am local time?

Pronsh 的头像
Pronsh2 天前

this is screaming fnaf... when are we getting animatronics

Alex Spînu 的头像
Alex Spînu1 天前

My brother in christ I have been waiting for this, thank you!

Santiago Santana 的头像
Santiago Santana1 天前

I was waiting for this!

Loftwah 的头像
Loftwah2 天前

Nice!

Luke Parker 的头像
Luke Parker2 天前

ty ty I've been wanting to ship this for AGESSSSS

endy 的头像
endy1 天前

@opencode woah! 🤯 i’ll try this out

Rohan 的头像
Rohan2 天前

Can a plugin intercept a tool call before it runs, say to block a shell command?

Luke Parker 的头像
Luke Parker2 天前

Yes, but not from the GUI plugin. GUI plugins only change the Desktop app's interface, and tools run on the OpenCode server, so you need a server plugin that registers `ctx.permission.hook("evaluate", …)`. That hook runs before each action. When `event.action` is `"shell"` and one of the commands in `event.resources` matches something you want to stop, set `event.effect = "deny"` and put the reason in `event.message`. The command then doesn't run, and the model sees the reason and keeps working. If plain patterns are enough, you don't need a plugin: add a config rule such as `{ "action": "shell", "resource": "git push *", "effect": "deny" }`, and use the hook only when the decision needs real logic.

squidlee 的头像
squidlee1 天前

@opencode @theo @jullerino take notes boys 📝

Aymane 的头像
Aymane1 天前

@grok what can I do exactly with this

dhany.exe 的头像
dhany.exe1 天前

Shipping features as built-in plugins is the right call — it turns the app into a platform, not just a product. The real test is whether third-party plugins survive version bumps without breaking. That's where most plugin systems go to die.

lalaland 的头像
lalaland1 天前

Does this apply to opencode web?

cat 的头像
cat1 天前

web please?

Divyendra Singh 的头像
Divyendra Singh1 天前

Of course someone made a horror CRT plugin already.

mike 的头像
mike1 天前

will this also come to opencode web?

HashVibe | AI & Web3 🛡️ 的头像
HashVibe | AI & Web3 🛡️1 天前

A poner a nuestros agentes a crear cositas.... 👀🔥

lalalalalalala 的头像
lalalalalalala2 天前

The docs say setup runs in every window, main only once. For a plugin watching files, I'd keep the watcher in main and expose events over typed IPC, so a second window doesn't double subscriptions. A two-window example would make that lifecycle concrete.

רותם שמואלי 的头像
רותם שמואלי1 天前

Well thank you, I can finally fix this bug

Eclar Khalid 的头像
Eclar Khalid2 天前

useful detail in the docs: the GUI switch and package removal are separate. `opencode plugin remove <package>` gives people a command-line removal route when troubleshooting a broken extension, alongside the switch in Settings > Extensions > Plugins.

Novaris 的头像
Novaris2 天前

Plugins are where these tools either take off or turn into a mess. Curious what the first wave of weird, useful ones looks like.

s.h 的头像
s.h1 天前

How to change the user prompt bubble color? It's good harsh.

相关视频