# dsh-project-memory

Evidence-backed, human-approved project memory for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness).

`dsh-project-memory` turns durable decisions, constraints, conventions, lessons, and facts into versioned project records. The model may propose a candidate, but only the human-facing `/memory approve` command can promote it into approved memory.

> DeepSeek Harness is currently a developer preview. This plugin targets `0.1.0-rc.6` and may require updates as Harness APIs evolve.

[中文说明](./README.zh.md)

## Why this is different

- Human approval is a hard boundary: model tools cannot approve or archive memory.
- Evidence is project-relative and hash-verified; source snippets are not copied into memory.
- Conflicting active memories require `supersedes` or an explicit `--keep-both` decision.
- Approved entries are Git-friendly JSON; candidate files are kept in a separate review queue.
- Search is deterministic and local. No embeddings, cloud database, or background service.

## Install

```bash
dsh plugin --profile web add dsh-project-memory
```

Restart the selected Harness profile after installation.

## Commands

```text
/memory capture [note]
/memory candidates
/memory approve <candidate-id> [--keep-both]
/memory reject <candidate-id> [reason]
/memory search <query>
/memory show <memory-id>
/memory validate [memory-id]
/memory archive <memory-id>
/memory timeline
```

The plugin also exposes read-only model tools for search/read/validation and one write-limited proposal tool.

## Storage

```text
.dsh/project.json
.dsh/memory/index.json
.dsh/memory/entries/memory_*.json
.dsh/memory/candidates/candidate_*.json
```

Commit `.dsh/project.json`, `.dsh/memory/index.json`, and `.dsh/memory/entries/` if the team wants shared memory. Candidate files may remain local until reviewed.

## Evidence lifecycle

Each evidence reference records a relative path, exact line range, optional symbol, and SHA-256 hash. `/memory validate` reports `verified`, `stale`, or `missing` after source changes.

## Development

```bash
npm install
npm run check
npm pack --dry-run
```

MIT © 2026
