Phant0Meow/dsh-memory-meow
Cross-session memory for DeepSeek Harness (DSH). Born from the "meow" fork — hence the name — but works on any DSH profile.
이것은 DeepSeek Harness(DSH) 플러그인입니다. 이 사이트는 GitHub README, 설치 정보, 유지보수 상태, 공개 보안 시그널을 모아 보여줍니다.
업스트림에서 중국어 README를 제공하지 않아 저장소 원본 내용을 표시합니다.
meow-memory 🐱📝
Cross-session memory for DeepSeek Harness (DSH). Born from the "meow" fork — hence the name — but works on any DSH profile.
The idea: every workspace keeps a structured memory database (.dsh-meow/memory.db,
SQLite via node:sqlite). New sessions get the essential layers injected as a prefix of the
first user message (not the system prompt), so the prompt prefix — and your LLM provider's
KV/context cache — stays untouched. The model deep-dives into the rest on demand with
memory_search / memory_find_similar. Each window's own agent consolidates its memories at
night ("dream"), and only its own memories — with the window's knowledge frozen at the last
conversation timestamp.
✨ Features
- Six memory layers (
soul= the AI itself /user= user basics & preferences /project= per-project info withsubcategory(overview/structure/decisions/quotes/ops/todo) /fact= atomic facts /lesson= mistakes & corrections /topic= ongoing discussion arcs with a goal sentence). One SQLite table per layer, UUIDs are time-prefixed so id order == creation order. - Cache-friendly by design:
soul/userare injected in full on the first user message, plus a memory index (project/topic titles) and keyword-hit short facts/lessons. The system prompt never changes; the snapshot is frozen for the whole session. Already-seen memories (injected+searched) are recorded per session and never re-injected or re-searched. - Toolset:
memory_remember(write, with dedup merge) /memory_search(BM25 × recency, filters: level/project/status/days, sorted by memory timestamp) /memory_find_similar(duplicate & conflict detection) /memory_read/memory_update(incl. status active/archived/stale, importance, goal) /memory_dream(manual trigger). - Memory timestamp (
dream_at): each window's dreams stamp its entries with the last conversation time before the dream — later windows can tell which entry is newer. Search results are re-ordered by it with a "conflict → newest wins" hint. - Per-window dream: at night (02:00–05:00, idle) every window whose last chat is newer than its last dream gets consolidated by its own main agent — one project group per turn — using its full conversation context. Old windows (no live agent, >24h) are left alone.
- Reflection: after ≥7 consecutive tool turns the plugin asks the model whether anything since the last consolidation is worth remembering. Cancelled turns never trigger it.
- Zero runtime dependencies:
node:sqlite(built into Node ≥22.5) + self-contained esbuild bundle (lib/index.js). No native modules.
📦 Install
Via npm (published package)
# 1. Install into the profile's node_modules (the loader resolves plugins there)
cd $DSH_HOME/profiles/web # default home: ~/.dsh/profiles/web
npm install meow-memory
# 2. Register in the profile's cordis.patch.yml:
# - insert:
# - id: meow-memory
# name: 'meow-memory'
# config:
# enabled: true
# 3. Restart dsh web. New sessions pick up the plugin automatically.
By hand (any DSH install, no npm needed)
- Copy (or symlink) this package into the profile's
node_modules:(On Windows:mkdir -p ~/.dsh/profiles/web/node_modules ln -s /path/to/meow-memory ~/.dsh/profiles/web/node_modules/meow-memoryNew-Item -ItemType Junction ...— NTFS junction, no admin needed.) - Register in the profile's
cordis.patch.yml(same insert block as above). - Restart
dsh web. New sessions pick up the plugin automatically.
⚙️ Configuration
All fields are optional (profile patch or cordis.patch.yml):
- id: meow-memory
name: 'meow-memory'
config:
enabled: true # master switch
projectDir: '.dsh-meow' # memory directory, relative to the workspace
hitTopK: 3 # keyword-hit facts/lessons injected on the first message
reflect: true # auto-reflection after ≥reflectTurns tool turns
reflectTurns: 7 # consecutive tool turns before reflection triggers
dream:
enabled: true
windowStart: 2 # local hour when night consolidation may run
windowEnd: 5
idleMinutes: 30 # no session events for this long before dreaming
checkMinutes: 15
🧠 How it works
First user message memory tools night
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────────┐
│ [soul 核心] │ │ remember/search/ │ │ per-window dream: │
│ [user 偏好] │ │ find_similar/ │ │ own memories, grouped │
│ [记忆导引] │ │ read/update │ │ by project, one group │
│ [相关记忆 命中] │ └──────────────────┘ │ per turn, dream_at │
│ ───────────── │ seen ids recorded │ stamped at T │
│ [user text] │ per session (json) └──────────────────────┘
└──────────────────┘
injected once per
session, never again
🛠 Development
npm install
npm run build # esbuild bundle → lib/index.js (self-contained)
npm run test # 80 logic tests: db / bm25 / migrate / inject / reflect / dream / tools
The @deepseek-ai/* packages live in the dsh-meow pnpm workspace, not in this package's
node_modules. On Windows, npm run link-workspace (or scripts/link-workspace.ps1)
creates junction mirrors of the workspace packages so esbuild can resolve them;
build.mjs uses nodePaths to pick them up. The links are build-time only.
📄 License
MIT — see LICENSE.
보안 및 설치 증거
이 점수는 공개 저장소 메타데이터와 이 사이트에 등록된 설치 증거에만 기반하며, 코드 보안 감사와 다릅니다.
공개 플러그인 카탈로그에서 왔으며, 공개 GitHub 저장소로 연결됩니다.
저장소가 MIT 라이선스를 선언했습니다.
최근 180일 내 코드 업데이트가 있습니다.
재현 가능한 정확한 설치 메타데이터가 아직 등록되지 않았습니다. 저장소 설명에 따라 직접 확인하세요.
검사한 패키지 메타데이터에 설치 라이프사이클 스크립트가 선언되지 않았습니다.