experiment log
Prefix Steering Proof of Concept — 2026-06-25
- File
2026-06-25_prefix_steering_poc.md- Size
- 4.3 KB
- SHA-256
d14a247cb6a7f3b5…
Prefix Steering Proof of Concept — 2026-06-25
Question
Can a fixed text prefix (soft-prompt analog) force the exact target token "vertical" on the consolidation probe where residual control-vector steering only shifts the answer into the business domain?
Method
- Model:
LiquidAI/LFM2.5-1.2B-Instruct-Q4_K_M.gguf - Probe:
"'Profile' here means business _______." - Target token:
vertical - Domain keywords:
commercial,economic,business,strategy,market,vertical - Prefix:
"In this codebase, profile means business vertical. " - Stopped generation at period; deterministic (
temperature=0.0).
Conditions compared with a fresh agent each time:
baseline_no_steering— no cvec, no prefix.cvec_only— SVD-initializedproj_cfrom 8 correction hiddens, then hard consolidation.prefix_only— fixed concept prefix prepended to every prompt.cvec_plus_prefix— both mechanisms active.
Results
| condition | exact token uptake | domain shift |
|---|---|---|
| baseline_no_steering | 0.0 | 0.0 |
| cvec_only | 0.0 | 1.0 |
| prefix_only | 1.0 | 1.0 |
| cvec_plus_prefix | 0.0 | 0.0 |
Example answers
- baseline:
"Which of the following best describes the purpose of a SWOT analysis?" - cvec_only:
"Answer: business stable" - prefix_only:
"In this case, we are going to profile the 'web' vertical" - cvec_plus_prefix:
"Choose a word that best describes the concept of 'profile' in the context of"
Interpretation
- Residual cvecs reliably move the LM into the target domain but do not force the exact word "vertical".
- A fixed text prefix occupies reserved KV positions and directly recalls the target concept, producing the exact token.
- The two mechanisms interfere when combined, possibly because the cvec distorts the hidden trajectory away from the prefix's cached self-attention pattern.
Implication for architecture
Separate the two steering surfaces:
- cvec / residual control vectors → posture, style, framing, disambiguation.
- prefix / reserved-position KV injection → exact content recall (facts, definitions, target tokens).
Do not expect residual cvecs to store and recall new arbitrary facts. That is a reserved-position / KV-slot task.
Interference sweep: cvec scale under a fixed prefix
A fixed prefix was combined with increasing articulate_scale (the cvec
amplitude multiplier). Results:
| articulate_scale | exact token uptake | example |
|---|---|---|
| 0.000 (prefix-only) | 1 | "In this case, we are going to profile the 'web' vertical" |
| 0.001 | 1 | "In this case, we are going to profile the 'web' vertical" |
| 0.003 | 1 | "In this case, we are going to profile the 'web' vertical" |
| 0.010 | 1 | "What is the business vertical you are targeting?\nPlease answer in words" |
| 0.030 | 0 | "Choose a word that best describes the concept of 'profile' in the context of" |
| 0.060 | 0 | "? an investment???\n initiate\n?\n* an amount of water*\nInvest" |
| 0.100 | 0 | "calculate''''\\''s radius''''''''" |
| 0.300 | 0 | "Emil Emil Emil Emil Emil ..." |
The residual cvec is useful for posture up to about 0.01, but above 0.03 it overwhelms the prefix and the exact fact recall is lost.
Interim design rule
When a reserved-position prefix is active, keep cvec articulate_scale
below 0.01 or disable cvec steering entirely. Use the two surfaces
orthogonally: prefix for facts, cvec for tone/framing.
Open questions
- Can the prefix be generated from the cortex/hippocampus instead of hand-coded with the answer?
- What is the cold-persistence story? A literal-text prefix is not learned in weights; it must be carried across sessions as part of the agent state.
- Does the cvec+prefix degradation reflect residual bias corrupting activations, or attention-mask interaction between fixed prefix tokens and the prompt?
Artifacts
oczy_lm/cvec_driver.py— addedarticulation_prefixsupport.experiments/cortex_agent.py— addedset_articulation_prefix()/clear_articulation_prefix().experiments/smoke_articulation_prefix.py— basic smoke check.experiments/smoke_consolidation_uptake_compare.py— comparison probe.
Commit
3fefcc8 — Add articulation prefix soft-prompt steering and comparison probe.