navid-kianfar/dsh-memory0

@achasoft/dsh-memory

Persistent, searchable, per-project memory for the DeepSeek Harness: decisions, rules, and sprint context in a queryable DuckDB file, rules enforced on every model request, with a full management UI in the Web Client

包名
@achasoft/dsh-memory
版本
0.1.0
许可证
MIT
最近更新
2026年8月26日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:navid-kianfar/dsh-memory

Configuration

Every field is a validated setting, changeable from your profile's cordis.patch.yml or from Settings → Plugins → Memory in the Web Client.

SettingDefaultWhat it does
databasePath.dsh/memory.dbRelative to each project's directory.
injectRulestruePut the rule block in every model request. Off keeps rules stored but unenforced.
injectSessionContexttrueSeed a starting session with the last summary, sprint goals, and recent decisions.
autoSessiontrueOpen and close a memory session alongside each agent session.
remindonceWhen to remind the model to file a summary: never, once, every-turn.
vectorWeight0.6The semantic signal's share of a blended ranking. Ignored without embeddings.
minSimilarity0.05Similarity floor for a search that does not name one.
searchLimit10Hits returned when the caller does not say.
candidateLimit1000Rows either search probe considers.
embedBatch64Memories embedded per background pass.
toolsetcorecore or full — see below.
retentionDaysper categoryDays per category; 0 means never. Rules never expire regardless.

Semantic recall (optional)

Enable the embeddings row and point it at any endpoint speaking OpenAI's /v1/embeddings — a hosted API, a local inference server, or Ollama:

- id: memory-embeddings-openai
  disabled: false
  config:
    baseUrl: https://api.openai.com/v1
    model: text-embedding-3-small
    apiKeyEnv: OPENAI_API_KEY
    timeoutMs: 30000
    batchSize: 64

The key is addressed by reference, never stored: apiKeyEnv names an environment variable resolved through the harness credential seam at the start of every call.

Memories are embedded in the background and vectors are stored as DuckDB FLOAT[]. Changing model strands the old vectors — they are excluded from comparison rather than compared — and Rebuild vectors in the UI re-embeds everything.