Ghostlight/README.md

140 lines
5.2 KiB
Markdown
Raw Normal View History

2026-05-01 18:06:51 +01:00
# Ghostlight
2026-05-01 20:36:20 +01:00
Ghostlight is a research and implementation home for socially persistent
generative agents.
2026-05-01 18:06:51 +01:00
2026-05-01 20:36:20 +01:00
The project is about characters and simulated people who remain coherent under
time, pressure, memory, culture, misreading, masks, incentives, and changing
relationships. The aim is not to make a language model sound charming for one
scene. The aim is to build machinery that can track who someone is, what they
believe, what they hide, how they see other people, and how their behavior
changes when the world leans on them.
2026-05-01 18:06:51 +01:00
2026-05-01 20:36:20 +01:00
In practical terms, Ghostlight is building the state and projection layer for
character-driven generation:
2026-05-01 18:06:51 +01:00
2026-05-01 20:36:20 +01:00
- durable canonical character state
- observer-specific perceived state
- directional relationship stance
- cultural and institutional pressure
- memory and goal selection
- speaker-local prompt projection
- evaluation targets for emergent verbal behavior
- a future path for training smaller specialist projection models
2026-05-01 18:06:51 +01:00
2026-05-01 20:36:20 +01:00
The first concrete consumer is Aetheria authoring support, especially Call of
the Void content generation, dialogue scaffolding, and procedural drama for
narrated stories in the Aetheria timeline.
## Core Idea
Ghostlight separates three things that are easy to blur together:
1. **Canonical state**
What is true about a character, relationship, event, memory, or scene.
2. **Perceived state**
What a particular observer thinks is true, including misreadings,
attribution bias, suspicion, trust, projection, and partial knowledge.
3. **Prompt projection**
A temporary speaker-local prompt surface for one scene or turn.
The prompt is not the character. The prompt is a rendered slice of state.
That distinction matters because believable dialogue should come from pressure,
not vibes. Cat being sarcastic should fall out of shame sensitivity, distance
seeking, suspicion, relationship tension, scene stakes, and dry pointed voice.
Oz withholding information should fall out of mask rigidity, privacy pressure,
relationship fear, and the need to stay useful. The system should be able to
show its work.
## Current Status
Ghostlight is early architecture plus executable schema seams.
Currently present:
- v0 canonical agent-state schema
- required variable lists for state families and relationship stance
- Call of the Void-flavored Cat/Oz fixture
- dependency-free fixture validator
- prompt projection contract
- projection distillation plan for teacher/student projector training
- persistence surfaces for re-entry, evidence, planning, and compaction hygiene
Not present yet:
- runtime prompt renderer
- projection training dataset
- student projection model
- event/classifier pipeline
- simulation loop
- relationship update engine
- culture prior engine
## How Projection Is Supposed To Work
For one speaker in one scene, Ghostlight should gather speaker-local state:
- what the speaker knows
- what they believe
- what they want
- what they are protecting
- what memories are active
- how they read the listener
- what the relationship currently feels like
- what pressures the scene applies
- what voice surface is active
The projection layer turns that into compact pressure prose and prompt sections.
The dialogue model then writes from that pressure model.
Longer term, a frontier model can act as a teacher projector that generates
reviewed projection artifacts. Those artifacts can train a smaller student
projector once the projection schema, deterministic input slicer, and evaluator
are stable.
2026-05-01 18:06:51 +01:00
## Repo Tour
- `AGENTS.md`: operating discipline for humans and agents
2026-05-01 20:36:20 +01:00
- `state/map.yaml`: canonical project map and current next action
- `state/scratch.md`: disposable working memory for one bounded subgoal
2026-05-01 18:06:51 +01:00
- `state/evidence.jsonl`: distilled belief-changing evidence
- `notes/fresh-workspace-handoff.md`: compact re-entry packet
2026-05-01 20:36:20 +01:00
- `notes/ghostlight-current-system-map.md`: current repo machinery
- `notes/ghostlight-implementation-plan.md`: larger implementation sequence
- `notes/architecture-rationale.md`: why the persistence and state split exists
- `docs/research/`: research backlog and modeling notes
2026-05-01 20:36:20 +01:00
- `docs/aetheria/`: Aetheria source material used by Ghostlight
- `docs/architecture/`: state, projection, and authoring architecture
2026-05-01 18:52:27 +01:00
- `schemas/`: JSON schema contracts and required field lists
2026-05-01 20:36:20 +01:00
- `examples/`: schema fixtures and future projection examples
- `tools/ghostlight_state.py`: state inspection and evidence helper
2026-05-01 18:06:51 +01:00
- `tools/ghostlight_prepare_compaction.py`: pre-compaction audit helper
2026-05-01 20:36:20 +01:00
- `tools/validate_agent_state.py`: focused fixture validator
2026-05-01 18:06:51 +01:00
2026-05-01 20:36:20 +01:00
## Useful Commands
2026-05-01 18:06:51 +01:00
```powershell
npm run state:status
npm run state:prepare-compaction
2026-05-01 18:52:27 +01:00
npm run schema:validate
2026-05-01 18:06:51 +01:00
```
2026-05-01 20:36:20 +01:00
To add distilled evidence:
2026-05-01 18:06:51 +01:00
2026-05-01 20:36:20 +01:00
```powershell
& 'C:\Users\Meta\.cache\codex-runtimes\codex-primary-runtime\dependencies\python\python.exe' '.\tools\ghostlight_state.py' add-evidence --type design --status accepted --note '...'
```
## Best Starting Points
2026-05-01 18:52:27 +01:00
- `docs/architecture/canonical-agent-state-schema.md`
2026-05-01 19:14:32 +01:00
- `docs/architecture/agent-state-variable-glossary.md`
2026-05-01 20:36:20 +01:00
- `docs/architecture/prompt-projection-contract.md`
- `docs/architecture/projection-distillation-plan.md`
- `examples/agent-state.call-of-the-void.json`
For Codex-driven work, read `AGENTS.md` before changing the repo. It contains
the working rules that keep the project state coherent between sessions.