All of the writing in this post is my own, without any LLM input.
We've already seen a bit of how Claude Sonnet 4.5 does with writing fiction (better than previous models, but not quite good yet). I'm relatively poor at writing fiction, but I write a decent amount of technical explanatory content.
One of my biggest issues with LLM co-writing workflows is that I am often trying to tie in a very specific style and background knowledge, and instruct-tuned LLMs are very prone to producing content in their own style instead, and without any of the background knowledge.
In this post, I discuss my methods for mitigating these shortcomings and working with Claude Sonnet 4.5 to produce almost-usable technical writing that usually only requires a few edits or restructuring on my part. This lets me transmute large amounts of low-effort writing (prompting) into a small passage of high-effort-equivalent writing (prose), saving me some mental work on simpler, less load-bearing parts of a piece.
Current LLMs lack classical long-term memory, and they don't spend background time coming up with their own novel takes like humans do[1]. This, among other things, leads to them being much worse than a human writing colleague at matching my style, tone, and background knowledge when co-writing.
The term "in-context writing"[2] derives from the concept of in-context learning, where a model learns to do something within its context window rather than from pretraining. This is the only way Claude's going to learn to write like me, since my writing is a substantial minority of internet text and will probably not make a dent on pretraining, as things currently stand.
This brings me to the first major technique I use (which was also used in the fiction writing post): adding large pieces written in the style I want, such as:
In my previous experimenting, o3 and GPT-5 consistently improve when this technique is used, but Claude Sonnet 4.5 is the first model to become remotely competent with it, in my experience.
However, adding more context isn't enough to get Claude's generations up to my standard. At times when I don't have the energy to be a generator of good writing or a good integrator of LLM feedback, I can still discriminate between shades of goodness in different writing. In these cases, I build a GAN of sorts:
Let's say I'm working on a transitional paragraph in the middle of a draft, which is almost entirely determined by the information around it, but is nonetheless important to include for flow and for readers coming in with less context. Let's say it's about Neuralese[3]. I might prompt:
I'm working on a piece explaining CoT in continuous latent spaces and giving my takes on it from an AI safety perspective. I've attached the original paper and my current draft. Could you produce several candidate drafts for an explanation of neuralese?
This set of candidates will all be deeply flawed and I won't want to use them. However, Sonnet 4.5 (the generator) manages to make them flawed in meaningfully distinct ways, and this is the powerful part. I (the discriminator) pick out the parts I like:
and the parts I don't:
This is usually a large amount of feedback per piece, when I go through and honestly externalize every thought I have about each candidate (and sometimes thoughts I have about the relation between candidates, e.g. "These two are doing the same thing right, keep doing that", "C does a better job of the thing that A is trying to do.").
I go for 3-4 iterations of this, when Claude's outputs become less sloppy and better-mirroring my style. I have ~never received a flawless-to-my-eyes candidate out of this process, but by the third or fourth iteration, the flaws are small enough that even low-energy me can fix them: some slight diction issues, some good fragments scattered across candidates that need merging, some conceptual near-misses.
Some of the signal that I provide as the discriminator in this process are things that I expect to get trained in in the next generation or two of models: the things that just require being smarter. The rest of the signal I provide is based on context about things that happen at work that are relevant inputs to my writing (e.g. research details that go into a paper but that aren't yet public), thoughts that happen privately in my brain, or conversations I have that Claude isn't party to. I expect these later parts to come when Claude either 1. listens to everything I say, hear, and think (no thanks) or 2. is smart enough to infer the way that the research I'm working on must be happening, even when I don't say the details. For now though, I have found this to be a much more useful technique than the standard strategy of "write me a LessWrong post about AI+human co-writing".
As I understand it, ChatGPT Pulse is trying to do something like this, but it seems much more "thinking about the user and doing useful things for the user" rather than "developing as an independent entity". I think these limitations are probably good, but the features are still somewhat worrying given what memory has done in the past.
Which I'm coining here for my own usage, but may have been used elsewhere before for something else.
although I didn't actually use LLMs for that post