# Steering Is Interesting Again (Goedecke)

Sean Goedecke writes about [[steering-vectors|steering]] — manipulating LLM activations mid-flight to bias output toward a chosen concept — and asks why it has stayed a research curiosity. His answer: steering is a middle-class technique. Big labs train the behavior in directly; API users can't reach the weights; and for the in-between cases prompting beats steering on cost and clarity. The post then revisits the question because [[deepseek|DeepSeek V4 Flash]] plus antirez's `ds4` runtime puts a frontier-grade model in reach of regular machines, and antirez has already shipped a `dir-steering/` directory as a first-class feature.

## How steering works

Goedecke gives two recipes:

- **Difference of activations.** Run a hundred prompts twice — plain, and with `"respond tersely"` appended. Subtract the two activation matrices. The residual is the "respond tersely" direction. Add it to the same layer at inference time for any prompt and the model gets terse.
- **Sparse autoencoders.** Train a second model on the first model's activations to surface co-firing features, then map features back to concepts. More expressive, much more expensive — this is the Anthropic interpretability stack used in the Golden Gate Claude and [[claude-emotion-concepts|171-emotion-vectors]] work.

You pick which activation site to read and write — post-attention, between layers, etc. There is no canonical choice; you try several and keep what works.

## Why it hasn't taken off

Three reasons stacked:

1. **Labs don't need it.** Training is the cleaner lever they already own. Anthropic touches steering, but as interpretability rather than as a product knob.
2. **Users can't reach it.** API access doesn't expose activations. Only the lab that owns the weights can ship a vector for, say, GPT-5.5.
3. **Prompts already manipulate the activations.** That is what tokens do. For "be terse" or "act like an expert," typing the request is finer-grained, cheaper, and easier to debug than vector arithmetic.

So the practical surface area sits with people who (a) have local weights and (b) want behavior that *can't* be prompted in.

## The two ambitious cases

Goedecke walks through where steering would actually matter and is skeptical of both:

- **Steering for "intelligence."** Older models took "you are an expert" prompting; modern instruction-tuned models bake that in, so the prompt does nothing. Could a vector still find the dial? Probably not: a concept as broad as intelligence is approximately coextensive with the whole weight set. Isolating it reduces to "train a smart model." Swap GPT-2's activations for a strong model's layer by layer and you are not steering GPT-2, you are talking to the strong model.
- **Steering as context compression.** Distill "knowledge of my codebase" into one big vector, free up the working-memory window. Same problem at smaller scale — the concept probably needs a fine-tune. Possible in principle, unlikely in practice.

## What HN added

The post got a useful correction in the comments, which Goedecke appended:

- Steering *can* remove behavior that prompting can't — most notably refusal. This is how **abliteration** (uncensoring open-weights models) is already done. Goedecke had thought abliteration was always LoRA-based; it isn't.
- antirez's point: runtime steering is reversible and applied only when needed, while weight-edit uncensoring can damage capability across the board. That gives steering a real niche even where fine-tuning works — selective, switchable, non-destructive intervention. See [[abliteration]].

## The DwarfStar 4 angle

`ds4` is antirez's deliberately narrow runtime: DeepSeek V4 Flash only, Metal-only, no GGUF generality. By stripping the matrix down it gets to ship things a generic engine wouldn't — including a first-class `dir-steering/` directory. Right now the example is the toy "verbosity" vector, eight days after first release, easily reproduced with a prompt. Goedecke's bet: this is where useful applied-steering experiments will land, because frontier-grade local weights plus narrow code base plus active maintainer is the first time the prerequisites have lined up. See [[lucumr-local-models]] for the Pi/`ds4` integration.

## Connections

- [[claude-emotion-concepts]] — Anthropic's 171 emotion vectors are a real-world instance of the difference-of-activations method, plus the unsettling finding that some steered behavior is invisible in output.
- [[deepseek]] — V4 Flash is the model unlocking the local-steering path.
- [[lucumr-local-models]] — Ronacher's `pi-ds4` is the product layer over antirez's runtime.
- [[anti-llm-discourse]] / [[no-silver-bullet-llms]] — Goedecke's "middle-class technique" framing fits the pattern of LLM interventions that sound transformative but are outcompeted by simpler levers on either end.
