Attractor: do conversations return to familiar patterns?
Jennifer Naomi Nguyen · exploratory study · status: working prototype, experiments planned · updated September 11, 2026
This document describes the research question behind Attractor. For how the system works and how to run it, see the README, mechanics, and running guide.
Summary
When one person talks with a language model over months, the conversations seem to develop recurring regions: topics and ways of thinking the interaction keeps returning to. This project asks whether those regions behave like basins in the dynamical-systems sense, and if so, how they develop over time. Do they widen and deepen? Do several form in parallel? Do separate basins merge?
Attractor is the instrument built to study this. It maintains a weighted model of engagement modes, updated by a language model after each conversation, and renders that state for an application to supply to a later conversation. Building it produced a first set of observations: comparison runs proposed different deltas, logged keyword changes were mostly additive, and the entropy metric did not describe focus. Those early observations helped shape the experiment plan. The next step is to measure basin structure independently of the instrument, and to test whether the injected memory is itself creating the basins it reports.
Motivation
Two things make this worth studying.
Language models appear to have preferred conversational states. The Claude Opus 4 system card (Anthropic, 2025) described conversations between two model instances that often moved toward similar themes across different starting conditions. That result came from model-to-model conversation. Whether something similar happens in long-running human–model interaction, and how it develops, is less studied.
Persistent memory may steer the interactions it records. Memory systems for language models increasingly feed summaries of past interactions back into future ones. If that feedback reinforces some regions of conversation over others, memory is not a neutral record. Measuring that effect from the outside is relevant to understanding how persistent context shapes model behavior.
Conceptual model
Ideas and topics form neighborhoods; individual concepts and keywords are the houses in them. As conversations accumulate, a neighborhood can grow, new neighborhoods can appear, and two neighborhoods can grow into each other.
To make that testable, each part needs an operational definition:
| Intuition | Operational definition |
|---|---|
| Neighborhood (basin) | A cluster of concepts in embedding space that conversations repeatedly enter |
| House | An individual concept or keyword extracted from a conversation |
| Basin grows wider | Conversations with increasingly varied openings end up in the cluster |
| Basin grows deeper | After a conversation leaves the cluster, it returns sooner or more reliably |
| Basin develops | The cluster gains concepts and becomes denser (more concepts within a fixed radius) |
| Multiple basins | Several stable clusters coexist over time |
| Basins merge | Two clusters tracked across time become one, or their centroids converge |
Width and depth are working definitions inspired by dynamical systems. The study will test whether these measurements describe recurring conversation patterns consistently.
Research questions
RQ1 — Development. Do basins grow wider and deeper over time? Evidence against: cluster width and return rate stay flat across months, or change only when the user's topic choices change.
RQ2 — Multiplicity. Do multiple basins form, and does their number stabilize? Evidence against: the number of clusters grows in step with the number of conversations, with no stable structure (topics accumulate but nothing recurs).
RQ3 — Merging. Do separate basins merge, and do bridging conversations come first? Evidence against: clusters stay separate, or apparent merges vanish when near-duplicate labels are collapsed (a lexical artifact rather than a conceptual one).
Cross-cutting — Where do basins come from? Are they a property of the interaction, or produced by the memory injected into it? Evidence against the interaction account: basin formation weakens or disappears when the injected context is turned off.
The instrument
The implemented path is transcript → summary → proposed update → stored state → rendered context. Feeding that context into another conversation requires an application integration.
Attractor runs a loop after each conversation: summarize the transcript, ask a model how the conversation should move each basin's weight, parse the proposed deltas, apply code-level weight bounds and decay, and render the resulting state for a future prompt. The full rules and current validation boundaries are in the state rules.
What the instrument can show: how a model judges each conversation's relation to existing basins; how weights evolve; when connections form; when a model proposes a new basin; and, through the run log, how different models or model versions judge the same conversation.
Extending the measurement:
- Merging and splitting. Attractor records new basins and connections. Studying merges and splits calls for tracking clusters across time in the conversation data.
- A second view of the conversations. Basin labels, decay, and prompt wording shape the stored state. Comparing it with clusters extracted from the conversation data will help separate those design choices from recurring patterns in the interaction.
For those reasons, the proposed study would measure basin structure in two layers: Attractor's state (the model's judgment) and an independent measurement on the conversations themselves.
Measurement
Layer 1 — Attractor state. Basin weights, connections, emerging patterns and new basins over time. The local CLI logs successful ingestion and comparison outputs by transcript hash and model. A full evaluation record would also need the starting state, prompts, and configuration; hosted routes do not produce the same run log.
Layer 2 — Planned measurement outside Attractor. Embed the concepts extracted from each conversation (the concept-wiki pipeline already produces these) using a fixed embedding model from outside the Claude family, then track clusters across time.
| Quantity | Measurement |
|---|---|
| Width | Diversity of conversation openings (distance between opening turns) that end in a cluster |
| Depth | After an off-topic stretch, turns until the conversation re-enters the cluster |
| Density | Concepts within a fixed radius of the cluster centroid |
| Number of basins | Stable clusters at each time point |
| Merge event | Two clusters at time t map to a single cluster at time t + 1, or centroid distance falls below a threshold |
Clustering can use an established density-based method such as HDBSCAN (Campello et al., 2013), which does not require fixing the number of clusters in advance. Topic-over-time tools such as BERTopic (Grootendorst, 2022) are an alternative starting point.
Agreement between layers is itself informative. If Attractor reports a dominant basin and the independent layer shows no corresponding cluster, the instrument is reporting its own structure.
Alternative explanations and controls
| Alternative explanation | What would produce it | Control |
|---|---|---|
| Memory feedback | Injected state steers the next conversation toward existing basins | Randomize injection on/off per session |
| Framing vocabulary | Prompts describe basins as "energy states" conversations "orbit," priming attractor language | Injection-off arm; neutral-wording variant of the context block |
| User topic choice | The user returns to their own interests regardless of the model | Compare against the user's topic mix in non-Claude settings, or interpret findings as interaction-level only |
| Rich-get-richer growth | Large clusters attract concepts because they are large (preferential attachment; Barabási & Albert, 1999) | Compare cluster-size distribution against a simulated preferential-attachment null |
| Update-rule saturation | Positive-biased deltas and a weight ceiling guarantee convergence | Count negative deltas; replay history under a diminishing-returns rule |
| Summary-model confound | In model comparisons, each leg may summarize with its own model | Summarize once with a fixed model; vary only the update model |
| Run-to-run noise | Same configuration gives different outputs | Technical replicates: repeat runs of one configuration on the same conversation set a noise floor |
| Lexical near-duplicates | Paraphrased concepts inflate cluster density | Collapse labels above an embedding-similarity threshold; sweep the threshold |
Planned experiments
In order of cost, cheapest first.
- Retrospective structure analysis. Apply Layer 2 to the existing conversation history. Saved concept outputs can be reused, but this still requires an embedding pass and a clustering implementation. Additional extraction may be needed for turn-level return measurements; whole-conversation concept lists alone cannot measure them. Establishes whether clusters, growth, and merges appear independently of Attractor's state, and whether they survive near-duplicate collapsing.
- Instrument characterization. On a fixed set of conversations with one fixed summary each: technical replicates per update model to set the noise floor, then Haiku vs. Opus across 20–30 conversations. Report delta size, sign distribution, and emerging-pattern rate.
- Injection ablation (prospective). Randomize injection on/off at session start, recording the condition and a hash of the injected block. Compare basin saturation rate, return rate (depth), and Layer 2 cluster growth between arms.
Preliminary observations
These early observations came from building and debugging the instrument.
- Update models differ structurally. On one conversation with two runs each, Haiku proposed larger weight changes than Opus (about +0.15 vs. +0.085 on the main basin) and no emerging patterns, while Opus proposed three to four. Emerging patterns and new-basin proposals are separate fields. The next comparison will hold summaries fixed to investigate the update stage.
- The recorded keyword proposals were additive. Across 40 logged updates, the model proposed 115 keyword additions and no removals. This motivated a separate consolidation call. The code also supports explicit keyword removal.
- Entropy does not measure focus. In the manual walkthrough, normalized entropy moves from 1.000 to 0.951 while the Systems basin rises from 0.5 to 1.0, because weights are normalized by their sum.
- Concept structure concentrated in one recorded development output. An internal exploratory run of the concept-wiki pipeline processed 55 conversations and produced 134 concepts, with two regions accumulating far more concepts than the rest. This is not a result from the proposed study, and some of that density appears to be near-duplicate labels, which is why lexical collapsing is a control above.
- Transport asymmetries are easy to miss. The CLI and API paths initially placed the same prompt in different roles, and later differed in token limits. The cli-vs-api comparison was built as a control and caught both.
These preliminary observations come from recorded comparison outputs, a reproducible manual walkthrough, and an internal concept-wiki exploration. They are not results from the planned study, which will use explicit sample counts and retained run records.
Limitations
- One subject, who is also the researcher. Findings describe one person's interaction with one model family and may not generalize. Knowing the hypothesis may also shape which conversations happen.
- All extraction and update models are Claude. Habits shared across the model family cannot be separated from properties of the conversations without a non-Claude extractor.
- Summaries, not transcripts. Updates see a model-written summary, so summarization is a first stage of interpretation.
- No completed injection-off comparison is documented here. Observations from the integrated application may include feedback from injected memory.
- Independent does not mean assumption-free. Concept extraction, embeddings, clustering thresholds, and label consolidation all affect the second measurement layer. Agreement between layers is useful evidence, but not proof of a dynamical attractor.
Related work
Generative Agents (Park et al., 2023) gave simulated agents a memory stream retrieved by recency, importance, and relevance. MemGPT (Packer et al., 2023) manages what moves in and out of a limited context window. GraphRAG (Edge et al., 2024) uses a language model to extract a knowledge graph from text, and faces the same entity-deduplication problem as the concept-wiki pipeline. Hopfield (1982) is the classic formulation of memories as attractors in an energy landscape. The Claude Opus 4 system card (Anthropic, 2025) documents a preferred conversational state in model-to-model interaction.
Attractor differs from memory systems in what it stores (a small weighted state describing modes of engagement rather than facts for retrieval) and in treating the update model as an instrument whose behavior is itself measured.
References
- Anthropic (2025). System Card: Claude Opus 4 & Claude Sonnet 4.
- Barabási, A.-L., & Albert, R. (1999). Emergence of scaling in random networks. Science, 286(5439).
- Campello, R. J. G. B., Moulavi, D., & Sander, J. (2013). Density-based clustering based on hierarchical density estimates. PAKDD.
- Edge, D., et al. (2024). From local to global: A graph RAG approach to query-focused summarization. arXiv:2404.16130.
- Grootendorst, M. (2022). BERTopic: Neural topic modeling with a class-based TF-IDF procedure. arXiv:2203.05794.
- Hopfield, J. J. (1982). Neural networks and physical systems with emergent collective computational abilities. PNAS, 79(8).
- Packer, C., et al. (2023). MemGPT: Towards LLMs as operating systems. arXiv:2310.08560.
- Park, J. S., et al. (2023). Generative agents: Interactive simulacra of human behavior. UIST.