Skip to content

feat: shared / group memory (blackboard) alongside per-agent history #58

Description

@JNK234

Roadmap priority: B9

Summary

A shared "blackboard" memory alongside per-agent history, plus optional injection of nearby agents' state into prompts — for social simulations where agents need common ground.

Why it matters

History is strictly per-agent (WeakHashMap[Agent, ArrayBuffer[ChatMessage]]). Anything shared — a public announcement, a common rumour pool, a group decision record — has to be rebuilt by the modeler with llm:set-history on every agent, every tick.

Several existing demos work around this: color-sharing, social-deduction, and topology-tournament all hand-assemble neighbour context into each prompt.

What needs to be done

  1. Named shared channels — write once, readable by many agents. Likely the same mechanism as B8 (feat: observer-level / unbound LLM primitive for narrators and judges #57).
  2. Primitives to write to and read from a shared channel, and to inject it into a call alongside per-agent history.
  3. Decide ordering semantics: does shared content sit before or after per-agent history in the message list?
  4. Optional neighbour-state injection — a helper that formats nearby agents' visible state into a prompt fragment. (mesa-llm does this automatically via vision radius; ours would be modeler-controlled.)
  5. Must interact sanely with memory management (feat: agent memory management — consolidation, eviction, and retrieval for per-agent history #47) — shared channels grow too.

Open questions

  • Should this be one design with B8 (feat: observer-level / unbound LLM primitive for narrators and judges #57)? A named-channel abstraction plausibly covers observer-level calls, judges, and shared memory in one concept.
  • Read scoping — can any agent read any channel, or should there be per-channel visibility rules (relevant for deception/asymmetric-information models)?

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions