You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Magic Context's memory machinery (historian, dreamer, injection) works well as a mechanism, but its policy layer is hardcoded to software development: the dreamer task prompts, the memory taxonomy, and the maintained docs list are compiled into the plugin and cannot be adapted to non-code projects (security, research, operations, writing, etc.). For a project that is not a code repository, the system still classifies memories with development-oriented categories and maintains ARCHITECTURE.md / STRUCTURE.md as if every project were a repo.
What problem does this solve?
The plugin manages each project's memory with a fixed policy designed for
software repositories. That policy shows up in three places:
The dreamer runs its tasks (curation, verification, user-memory review,
documentation maintenance) with internal prompts written in development
language. For a project that is not code, the agent classifies and
organizes memory with the wrong perspective: it looks for "testing
conventions", "releases" or "commits" where none exist.
Memory categories are locked to a development taxonomy (PROJECT_RULES,
ARCHITECTURE, CONSTRAINTS, CONFIG_VALUES, NAMING). Memories from other
domains get forced into categories that do not represent their real
work, degrading curation usefulness.
Documentation maintenance is fixed to ARCHITECTURE.md and STRUCTURE.md,
software architecture files. Projects that are not code repositories
receive documentation that does not fit them, or cannot maintain the
documentation that would actually serve them.
The result: the memory mechanism (historian, compaction, injection) works
for any project, but the policy layer limits it to development projects.
Users from other domains end up with less useful classification, irrelevant
documentation, and dreamer prompts that do not understand their work.
Proposed solution
Decouple the MECHANISM (historian, compaction, injection, storage — the core
of how the plugin stores, organizes and recalls memory) from the POLICY (how
the dreamer should think about THIS project). The core must remain intact;
the proposal is to open the policy layer to configuration so each project
can adapt it to its domain:
Project awareness for the dreamer.
The dreamer runs tasks (curation, verification, user-memory review, doc
maintenance, etc.), each with an internal system prompt. Today those
prompts are fixed and speak in development language (codebase, repo,
releases, testing). The proposal: let the user give the dreamer an
orientation about what this project is and how it should treat its
memories, without replacing the task mechanism — only adapting the
perspective with which tasks are executed.
Configurable memory categories.
The category taxonomy is fixed (PROJECT_RULES, ARCHITECTURE, CONSTRAINTS,
CONFIG_VALUES, NAMING) and oriented to software repositories. The
proposal: let the user define the categories their project uses, so
curation classifies memories into the categories that actually exist in
their work.
Configurable maintained docs.
Documentation maintenance is fixed to ARCHITECTURE.md and STRUCTURE.md.
The proposal: let the user choose which documentation files should be
maintained (and with what content instructions for each), instead of a
fixed list.
Non-code project mode (optional).
A convenience mode that pre-configures the points above for projects
that are not code repositories: disables development-oriented language
and repo doc maintenance, keeps memory curation with user-defined
categories, and focuses historian/review prompts on the project's real
work type. It would solve the root problem for those who want it, but
it is optional.
graph TD;
A[TODAY - Policy welded to code] --> B[Dreamer task prompts fixed with dev-oriented language];
A --> C[Memory categories fixed to dev taxonomy];
A --> D[Maintained docs fixed to ARCHITECTURE.md and STRUCTURE.md];
B --> E[Dreamer agent thinks in codebase / repo / releases];
C --> E;
D --> E;
E --> F[Result: less useful curation and irrelevant docs for non-code projects];
G[PROPOSAL - Configurable per-project policy] --> H[Project awareness - user tells the dreamer what this project is];
G --> I[Memory categories defined by the user];
G --> J[Maintained docs chosen by the user with content rules];
G --> K[Non-code project mode - optional, pre-configures everything];
H --> L[Dreamer agent understands your domain];
I --> L;
J --> L;
L --> M[Result: useful curation and relevant docs for any project];
E --> N{Transition};
N -->|decouple mechanism from policy| H;
Loading
Alternatives considered
Fork the plugin and maintain it ourselves.
Rejected: a fork forces perpetual sync with upstream for what is a
configurability change.
Externalize dreamer prompts to files (templates/).
Viable as an implementation, but less discoverable than the existing
magic-context.jsonc configuration, which is the pattern the plugin
already uses (schedules, models, thresholds).
Do nothing and use the plugin with defaults only.
Rejected for non-dev projects: classifying into development categories
and maintaining repo docs adds noise and tokens to projects that don't
need them.
Hardcode a domain-specific category set as an additional option.
Rejected: it would solve one specific case but reproduce the same
problem for the next domain. The right fix is letting the user define
their own categories.
Area
OpenCode plugin
Additional context
Real use case: a work project that is not a code repository — it contains
per-topic work folders, findings, operational data and methodology, with no
source code, commits or releases. Current behavior:
Curation classifies memories into development categories that do not map
to the project's real work (result: less useful curation, forced or
skipped classification).
Doc maintenance keeps ARCHITECTURE.md and STRUCTURE.md in sync even
though those files describe software layers the project does not have.
User memories accumulate slowly because the review prompt is tuned for
recurring dev workflows, not for other types of work sessions.
Acceptance criteria:
The dreamer receives configurable orientation about the project type
Memory categories are user-configurable
The maintained docs list and their content instructions are configurable
Default behavior unchanged when no custom config is present
Short description
Magic Context's memory machinery (historian, dreamer, injection) works well as a mechanism, but its policy layer is hardcoded to software development: the dreamer task prompts, the memory taxonomy, and the maintained docs list are compiled into the plugin and cannot be adapted to non-code projects (security, research, operations, writing, etc.). For a project that is not a code repository, the system still classifies memories with development-oriented categories and maintains ARCHITECTURE.md / STRUCTURE.md as if every project were a repo.
What problem does this solve?
The plugin manages each project's memory with a fixed policy designed for
software repositories. That policy shows up in three places:
The dreamer runs its tasks (curation, verification, user-memory review,
documentation maintenance) with internal prompts written in development
language. For a project that is not code, the agent classifies and
organizes memory with the wrong perspective: it looks for "testing
conventions", "releases" or "commits" where none exist.
Memory categories are locked to a development taxonomy (PROJECT_RULES,
ARCHITECTURE, CONSTRAINTS, CONFIG_VALUES, NAMING). Memories from other
domains get forced into categories that do not represent their real
work, degrading curation usefulness.
Documentation maintenance is fixed to ARCHITECTURE.md and STRUCTURE.md,
software architecture files. Projects that are not code repositories
receive documentation that does not fit them, or cannot maintain the
documentation that would actually serve them.
The result: the memory mechanism (historian, compaction, injection) works
for any project, but the policy layer limits it to development projects.
Users from other domains end up with less useful classification, irrelevant
documentation, and dreamer prompts that do not understand their work.
Proposed solution
Decouple the MECHANISM (historian, compaction, injection, storage — the core
of how the plugin stores, organizes and recalls memory) from the POLICY (how
the dreamer should think about THIS project). The core must remain intact;
the proposal is to open the policy layer to configuration so each project
can adapt it to its domain:
Project awareness for the dreamer.
The dreamer runs tasks (curation, verification, user-memory review, doc
maintenance, etc.), each with an internal system prompt. Today those
prompts are fixed and speak in development language (codebase, repo,
releases, testing). The proposal: let the user give the dreamer an
orientation about what this project is and how it should treat its
memories, without replacing the task mechanism — only adapting the
perspective with which tasks are executed.
Configurable memory categories.
The category taxonomy is fixed (PROJECT_RULES, ARCHITECTURE, CONSTRAINTS,
CONFIG_VALUES, NAMING) and oriented to software repositories. The
proposal: let the user define the categories their project uses, so
curation classifies memories into the categories that actually exist in
their work.
Configurable maintained docs.
Documentation maintenance is fixed to ARCHITECTURE.md and STRUCTURE.md.
The proposal: let the user choose which documentation files should be
maintained (and with what content instructions for each), instead of a
fixed list.
Non-code project mode (optional).
A convenience mode that pre-configures the points above for projects
that are not code repositories: disables development-oriented language
and repo doc maintenance, keeps memory curation with user-defined
categories, and focuses historian/review prompts on the project's real
work type. It would solve the root problem for those who want it, but
it is optional.
graph TD; A[TODAY - Policy welded to code] --> B[Dreamer task prompts fixed with dev-oriented language]; A --> C[Memory categories fixed to dev taxonomy]; A --> D[Maintained docs fixed to ARCHITECTURE.md and STRUCTURE.md]; B --> E[Dreamer agent thinks in codebase / repo / releases]; C --> E; D --> E; E --> F[Result: less useful curation and irrelevant docs for non-code projects]; G[PROPOSAL - Configurable per-project policy] --> H[Project awareness - user tells the dreamer what this project is]; G --> I[Memory categories defined by the user]; G --> J[Maintained docs chosen by the user with content rules]; G --> K[Non-code project mode - optional, pre-configures everything]; H --> L[Dreamer agent understands your domain]; I --> L; J --> L; L --> M[Result: useful curation and relevant docs for any project]; E --> N{Transition}; N -->|decouple mechanism from policy| H;Alternatives considered
Fork the plugin and maintain it ourselves.
Rejected: a fork forces perpetual sync with upstream for what is a
configurability change.
Externalize dreamer prompts to files (templates/).
Viable as an implementation, but less discoverable than the existing
magic-context.jsonc configuration, which is the pattern the plugin
already uses (schedules, models, thresholds).
Do nothing and use the plugin with defaults only.
Rejected for non-dev projects: classifying into development categories
and maintaining repo docs adds noise and tokens to projects that don't
need them.
Hardcode a domain-specific category set as an additional option.
Rejected: it would solve one specific case but reproduce the same
problem for the next domain. The right fix is letting the user define
their own categories.
Area
OpenCode plugin
Additional context
Real use case: a work project that is not a code repository — it contains
per-topic work folders, findings, operational data and methodology, with no
source code, commits or releases. Current behavior:
to the project's real work (result: less useful curation, forced or
skipped classification).
though those files describe software layers the project does not have.
recurring dev workflows, not for other types of work sessions.
Acceptance criteria: