Functional emotions: emotional vector steering, associative and reconstructive memory
[TL;DR]: I use the j-lens from Anthropic’s paper to read emotional activations inside a local LLM. They decide what the agent remembers, and when memories come back, reinjected together with a vector steering, they change its behavior.
When I discovered LLMs in 2022, I was immediately fascinated by how they work.
I approached the subject as a pure self-taught learner, and that’s what I’ve remained.
Last January I started exploring the idea of running models locally, got the hardware and started tinkering with Claude Code.
What I’m working on right now:
for a few months I’ve been developing an agent, all of its components, with the goal of giving an LLM an agentic harness capable of solving the context window limit problem.
Last July I came across Anthropic’s paper (transformer-circuits.pub/2026/workspace/index.html), and it gave me a way to read information from, and write it into, the model’s latent space.
That’s how SolidAxelProject was born. (github.com/solidaxelproject/affective-episodic-memory)
How it works:
- I use a j-lens to detect emotional activations in the middle layers of the model I’m working on (initially Qwen3.6 35B A3B, then its post-training Occamy1.0 35B A3B), the j-space;
- using the emotional activations that show up in the j-space at layer 29, I identify the salient blocks of text to select as memory elements;
- the text blocks are unpacked into unique elements, specific (for now) to English and Italian, and inserted into a GWR (grow when required) neural network as engrams and Hebbian arcs;
- engrams can be single tokens or whole groups of tokens; Hebbian arcs are the connections that make it possible to rebuild the entire text blocks stored in the graph and let engrams be reused across multiple memory traces; the arcs also carry modifiers that act both as metadata for the memory element and as linguistic particles for conjunction and articulation;
- memory retrieval happens when needed, with no tool calling, either by semantic proximity with BGE-M3 or by emotional activation during the prefill of the user prompt;
- when a memory trace is selected, it is given to the model alongside a vector steering that stays active only during the reasoning block but leaves a trace in the following message;
- I apply the vector steering simultaneously on the j-space layers from L15 to L31; the j-space of the LLM I use would actually run from L15 to L32, but it’s a gated delta net LLM: the gated layers are full attention, each separated by 3 linear attention layers, and through testing I found that steering is more effective when I limit it to the 16 layers from L15 to L31;
- to deal with the context window filling up and the resulting slowdown of the system, I developed a KV cache management protocol with 3 separate caches: 2 core ones and one for a side job that lets the agent accumulate memory traces in the GWR when it receives no messages from the user for a while;
- memory traces are delivered to the agent during normal operation, and their emotional steering noticeably shifts the agent’s behavior (terror makes it skip reasoning, anxiety makes reasoning expand, vigilance makes the agent split hairs);
- thanks to the KV cache management, the agent always knows when the last message it received arrived, plus other useful information specific to my interests; you can add whatever you want, you just need to let the agent interpret that information by declaring it in memory.md;
- right now I’m working on the memory reconsolidation system, with the goal of getting closer to how human memory works. Each arc has its own charge and its own brakes, both mediated by the specific emotional signature; there are functions that turn repetition into habits, and I’m working on special arcs that interconnect different memories;
Have you tested vector steering to observe how the model changes, and how to use it intentionally to get unusual behaviors, rather than just bypassing the behavioral biases crystallized in the model by “assistant”-style alignment?
P.S. Since I wanted to be able to receive voice messages from the agent too, I also built a skill that I use both with the agent and with Claude Code, based on the Qwen3 TTS 1.7B model (huggingface.co/Solidaxel/Qwen3-TTS-GGUF), which I’ve made available to the community in .gguf, ready to use, with everything needed to orchestrate voice cloning and batch generation of concatenated audio.
I also added a text normalization protocol to avoid the pronunciation glitches typical of converting numbers and symbols into speech, for both English and Italian.






Comments
0 comments