open-preset-harness
Project memory for multi-role AI agents — one knowledge base, every preset reads.
English | 中文

DSH Profile Bundle: dsh-tool-project-memory · Category: Memory · Install · DSH1024 checklist
Agents forget between sessions. Teams don't.
open-preset-harness adds a project-scoped organizational memory layer on top of DeepSeek Harness: any role (preset) can contribute experience; any role can recall it when needed.
Why this exists
DeepSeek Harness separates preset (who the agent is — tools, persona, prompts) from session log (what happened in one conversation). That split is right for engineering — but team knowledge lives at the project level, not inside a single preset or session.
Without shared memory:
- A security review preset rediscovers the same auth pitfalls every sprint
- A new contributor preset repeats questions answered three months ago
- Product decisions vanish when the PM's session ends
- Token spend grows because every role rebuilds context from scratch
open-preset-harness makes project experience compound over time — like a team wiki that agents actually use, wired into the harness session log.
What it is (and is not)
|
|
| Is |
Open-source project organizational memory for Harness presets |
| Is |
Domain-organized, recall-on-demand, auditable contributions |
| Is not |
A replacement for DeepSeek Harness (we extend it) |
| Is not |
Per-preset silos or a generic vector DB demo |
| Is not |
Claiming to invent "AI memory" — we integrate it correctly for multi-role teams |
Relationship to DeepSeek Harness
DeepSeek Harness (upstream, MIT)
│
├── preset = role shell (tools + persona)
├── session = episodic log (one conversation)
│
└── open-preset-harness (this project)
└── project memory = shared team experience (cross-preset, cross-session)
- Upstream: DeepSeek Harness — plugin-based agent harness on Cordis
- Our approach: Prefer plugins + conventions over a hard fork; track upstream releases
- License: MIT — we preserve upstream copyright in NOTICE
- Naming: This is an independent community project, not an official DeepSeek product
We upstream-friendly fixes when possible; project-memory features live here until (if ever) they graduate upstream.
See docs/architecture.md and docs/phase-0-memory-api.md.
Core concepts
┌─────────────────────────────────────────────────────────┐
│ Project Memory (shared) │
│ index · domains · decisions · distilled learnings │
└────────────────────────▲────────────────────────────────┘
│ write (distill) / read (recall)
┌───────────────────┼───────────────────┐
│ │ │
Preset A Preset B Preset C
(any role) (any role) (any role)
│ │ │
Session 1 Session 2 Session N
(episodic log) (episodic log) (episodic log)
- Preset — role/capability shell (unchanged Harness semantics)
- Session log — full history of one conversation (unchanged)
- Project memory — stable, distilled, searchable facts the whole team reuses
Design rules
- One memory pool per project — all presets read (governance controls write)
- Organize by domain/topic, not by preset id (e.g.
security, api, onboarding)
- Index + recall on demand — don't dump the whole library every turn
- Model-visible ⟺ logged — Harness invariant; memory enters via inject/tools/session events
Default layout:
<projectRoot>/.dsh/memory/
├── index.md
├── domains/
│ ├── engineering.md
│ ├── product.md
│ └── …
└── decisions/
└── YYYY-MM-slug.md
Scenarios
| Scenario |
Who writes |
Who reads |
Value |
| Cross-functional delivery |
Any function |
Any other preset |
Decisions don't die in someone else's session |
| Engineering ↔ QA |
Dev preset after API change |
QA preset before test plan |
Fewer alignment loops |
| Product ↔ Engineering |
PM preset after scope call |
Eng preset during implementation |
"Why we chose B" stays attached |
| Security / compliance |
Review preset after audit |
All presets |
Constraints propagate |
| Onboarding |
Senior presets over time |
New hire's preset day one |
Context without senior interrupt |
| Open-source maintainers |
Triage preset |
Release preset |
Known issues and release norms |
| Agency / client work |
Account preset |
Delivery preset |
Client preferences travel with the repo |
| Research → writing |
Literature preset |
Drafting preset |
Findings become citable facts |
| SRE / incidents |
Postmortem preset |
Debug preset |
Incident learnings reduce repeats |
| Design systems |
Design preset |
Frontend preset |
Tokens and exceptions stay aligned |
| Localization |
Translator preset |
Dev preset |
Terminology stays consistent |
| Data / ML pipelines |
EDA preset |
Modeling preset |
Data quirks persist |
More in docs/scenarios.md.
Status
v1.0.0 — Full roadmap shipped (Phase 0–3, Distill 1–3, LLM assist); dual-preset demo deferred (#3).
Roadmap
Capability-oriented, demand-driven from Issues and scenario feedback — no fixed dates.
Shipped (v1.0.0)
Shipped (v0.9.0)
- Auto distill (Tier 3):
distillAuto promotes heuristic candidates to remember under Phase 3 governance
Shipped (v0.8.0)
- Write approval gate (Phase 3b):
writeApprovalDomains triggers Harness approval before remember
Shipped (v0.7.0)
- Vector sidecar (Phase 2b):
vectorSidecar + recall ranking: 'vector' (local-fhash-v1, no network)
Shipped (v0.6.0)
- Write ACL (Phase 3a):
writeAllowDomains, writeAllowPresets, writeDenyPresets on remember
Shipped (v0.5.0)
- Token-ranked recall (Phase 2a): default IDF multi-term scoring;
ranking: 'legacy' restores Phase 0 substring mode
Shipped (v0.4.0)
- Assisted distill (Tier 2): opt-in
suggest_memory_candidates tool — heuristic session scan, model still calls remember
Shipped (v0.3.1)
- Distill compaction reminder (Tier 1b): opt-in inject after successful
compaction/end, with optional summary excerpt
Shipped (v0.3.0)
- Distill reminder (Tier 1a): opt-in
agent/turn-stopping inject to call remember — default off, no auto-write
Shipped (v0.2.0)
- Supersede governance:
remember(supersedes) back-patches old entries; recall/index show active entries only
expires_at / recall expired warnings
- Harness smoke + CI (
scripts/smoke.sh)
Shipped (v0.1.0)
- Profile Bundle install via
dsh plugin add
- Tools:
recall, remember, memory_status
- Blank-session
index.md inject (bounded)
- Domain-organized memory under
.dsh/memory/
Planned
- Dual-preset demo (#3) — walkthrough exists, recording deferred
See docs/scenarios.md and Scenario Issues to influence priorities.
Quick start
DSH Memory plugin: packages/tool-project-memory · npm run check passing
Install (Profile Bundle — recommended)
dsh plugin --profile web add "github:warrenop/open-preset-harness#main&path:packages/tool-project-memory"
dsh --profile web --dump-config | grep dsh-tool-project-memory
Headless / CI:
dsh plugin --profile headless add "github:warrenop/open-preset-harness#main&path:packages/tool-project-memory"
From a local clone:
dsh plugin --profile web add ./packages/tool-project-memory
Develop locally
- Harness integration — link plugin into local Harness
- Dual-preset demo —
standard writes, code reads
- Open a Scenario Issue — tag
en-scenario or cn-scenario
chmod +x scripts/link-harness.sh
./scripts/link-harness.sh /path/to/deepseek-harness-master
DSH1024 marketplace
| Field |
Value |
| Category |
Memory |
| Package |
dsh-tool-project-memory |
| Install |
dsh plugin --profile web add "github:warrenop/open-preset-harness#main&path:packages/tool-project-memory" |
| Listing |
DSH1024 (discovery via GitHub topic dsh-plugin) |
Contributing
See CONTRIBUTING.md.
High-impact contributions right now:
- Add a scenario to docs/scenarios.md
- Review docs/phase-0-memory-api.md
- Chinese + English doc fixes
Community
- Issues — bugs, ideas, scenario requests
- Discussions — enable when repo is public
- Tag Issues with
[cn-scenario] or [en-scenario] to help us track market signals
License
MIT — see LICENSE and NOTICE.
DeepSeek Harness is © DeepSeek; modifications © contributors.