Loading video...

Video Failed to Load

Go Home

One feature I got to implement in OpenCode 2.0 was allowing for HOT CONTEXT¹ without busting the cache. Here's me explaining how it works ↓ ¹ ⁿᵒᵗ ᵃ ᵗᵉʳᵐ

112,249 views • 3 months ago •via X (Twitter)

41 Comments

Kit Langton's profile picture
Kit Langton3 months ago

obligatory @samwhoo link

zeb's profile picture
zeb3 months ago

@opencode This is smart but also I'm distracted by this really nice looking demo ui

Kit Langton's profile picture
Kit Langton3 months ago

@opencode 🥰 aw, thank ye zeb!

beginbot 🃏's profile picture
beginbot 🃏3 months ago

@opencode wait HOT LOCAL CONTEXT??? in my AREA???

Alan Rice's profile picture
Alan Rice3 months ago

@opencode crazy they hired the same narrator as effect institute

Rhys's profile picture
Rhys3 months ago

@opencode great explanation

AP's profile picture
AP3 months ago

@opencode your demos are always the best holy

Kit Langton's profile picture
Kit Langton3 months ago

@opencode 😳 😍

Sam Rose's profile picture
Sam Rose3 months ago

@opencode How did you evaluate that this way of updating context values doesn’t affect the quality of the LLM’s replies?

Anders Lie's profile picture
Anders Lie3 months ago

@opencode pretty cool! though makes you wonder in what cases you might just want to intentionally change the prefix rather than append deltas, e.g. if you are on a provider with known low cache ttl, or if returning to a session after a long time

Kit Langton's profile picture
Kit Langton3 months ago

@opencode Yeah! If we have that information about the provider/model we can squash everything back into the prompt. I’ll look into this :)

Marcelo Prado's profile picture
Marcelo Prado3 months ago

@opencode We built something very similar for our own internal harness. Lovely representation though, will share with my team bc it makes understanding the concept a lot easier lol

Jason Cameron's profile picture
Jason Cameron3 months ago

@opencode Very intuitive demo

Alade Yessoufou's profile picture
Alade Yessoufou3 months ago

@opencode Nice UI is that openTUI ?

Gjermund Garaba's profile picture
Gjermund Garaba22 days ago

@opencode

Antoine's profile picture
Antoine3 months ago

@thdxr @opencode I wish opencode app would make cache easier to understand in general. Like if messages hit or miss cache, why (ttl, change of system prompt). Also knowing how much requests cost at message level would be sooo good to self improve.

Aman's profile picture
Aman3 months ago

I use a simpler version of this for my personal agent, I keep the system prompt stable, then inject dynamic context right before the latest user turn. That gives me cache hits up to that point. It also works well for reminders and temporary instructions, since the context is recent and the LLM is more likely to follow them. The tradeoff is that on the next turn, I pay again for the previous turn’s new content, but I think it’s a nice tradeoff for the simplicity and cache efficiency.

Amaan's profile picture
Amaan3 months ago

@opencode very interesting

manavv's profile picture
manavv2 months ago

@opencode very interesting. learned something new today

Austin's profile picture
Austin3 months ago

@opencode Cc @gubatron

agusti's profile picture
agusti3 months ago

@opencode I always thought prepending that at the end of the transcript would work

Prathmesh's profile picture
Prathmesh3 months ago

@opencode 😮🔥

Nick Venturi's profile picture
Nick Venturi3 months ago

@opencode im stealing the term hot context and using it in my next meeting 😂

ManiGupt's profile picture
ManiGupt3 months ago

@thdxr @opencode Urgently add method in app to delete project. Stuck with a dead project path. Cant add new.

Kit Langton's profile picture
Kit Langton3 months ago

@thdxr @opencode Sorry, could you elaborate?

ManiGupt's profile picture
ManiGupt3 months ago

@thdxr @opencode Desktop app doesnt have a project delete button option. I changed project location, now even after app restart it is stuck with old path. I deleted config and session files, didnt work. I tried deleting project using oc server too. This issue is open on gh. Many people requested

Kit Langton's profile picture
Kit Langton3 months ago

@thdxr @opencode Got it! I’ll pass this along to the desktop ppl

Gregor's profile picture
Gregor3 months ago

@opencode When the hot context itself changes between turns, which parts of the cache do you actually recover on the next request?

Evan's profile picture
Evan3 months ago

@opencode cool implementation. have you run evals on this? i wonder if there are losses from the prompt structure

MobaiLabs | 墨白实验室's profile picture
MobaiLabs | 墨白实验室2 months ago

@opencode @grok 具体是如何实现的

Vishal Gupta's profile picture
Vishal Gupta3 months ago

@opencode The cache invalidation boundary is the architecture decision most inference implementations never make explicit. Once you do, cost and latency stop being mysteries and become variables you can control.

Caleb Norton's profile picture
Caleb Norton3 months ago

@opencode i prefer to let my contexts bust as they please, keeping the hot ones from doing it seems kinda discriminatory

Andrés Delfino's profile picture
Andrés Delfino3 months ago

@opencode This works non-deterministically, right? You rely on the model understanding what you want to do with the "context" tags, or understanding that it should change the date when they see several "today is". Not bashing, just wanting to understand! Looks cool :)

Mason Veilleux's profile picture
Mason Veilleux22 days ago

@opencode Is it getting hot in here?

Vishal Gupta's profile picture
Vishal Gupta3 months ago

@opencode Separating mutable context from cacheable structure is the right split. Most implementations just re-run everything. Isolating what changes from what doesn't — that's correct architecture.

ishak's profile picture
ishak2 months ago

@opencode but what if the diff is large? doesn't keeping both the before and after versions bloat the context?

🔥 fire's profile picture
🔥 fire2 months ago

@opencode does this piecemeal approach have any effect when handling models with mid-thread dynamic tool injection like k3? ( I presume not )

Yousef Amirghofran's profile picture
Yousef Amirghofran3 months ago

@opencode Very nice!!

bukit 🇮🇩 🇵🇸 🔻's profile picture
bukit 🇮🇩 🇵🇸 🔻3 months ago

@opencode Question modal need new flow.. submit -> keep planning or submit -> build.

robby - rbby.dev's profile picture
robby - rbby.dev3 months ago

@opencode Is this a new gui?

Rick Blalock's profile picture
Rick Blalock3 months ago

@opencode nice!

Related Videos