DeepSeek Harness 插件

Phant0Meow/dsh-memory-meow

Star 数 ★ 1 分类 记忆 收录于 2026-08-14

项目级跨会话记忆:PROJECT.md 快照注入首条用户消息(缓存友好)+ memory_remember 工具 + ReAct 任务结束自动反思;各项目独立记忆文件,互不互通。

安装

# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)

dsh plugin --profile web add github:Phant0Meow/dsh-memory-meow

GitHub 来源的插件在安装时会在你的机器上执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。

README

Cross-session project memory for DeepSeek Harness (DSH). Born from the "meow" fork — hence the name — but works on any DSH profile.

The idea: every workspace keeps one human-readable memory file (.dsh-meow/PROJECT.md). New sessions get it injected into the first user message (not the system prompt), so the prompt prefix — and your LLM provider's KV/context cache — stays untouched. When the model finishes a task (a ReAct turn that used tools), the plugin gently asks it to reflect and save what's worth remembering.

✨ Features

  • Cache-friendly by design: memory is injected as a plain user-message suffix on the session's first user message. The system prompt never changes, and the snapshot is frozen for the whole session — later memory updates cannot invalidate the request prefix.
  • Human-owned memory: .dsh-meow/PROJECT.md per workspace. Plain Markdown, human-editable, git-diffable, deletable with rm.
  • memory_remember tool: the model can write a memory anytime (categories: fact / mistake / preference / user_said / lesson / detail), appended atomically to the right section.
  • Automatic reflection: after a task turn ends (model stopped calling tools), the plugin steers a reflection prompt. The model decides whether anything is worth remembering — and calls memory_remember only when there is. Chat-only turns never trigger reflection.
  • No recursion: reflection rounds are marked; a turn that already reflected, or whose last tool call was a memory_ tool, is never asked again.
  • Zero runtime dependencies: the host bundle is self-contained (esbuild bundles schemastery / dsh-tools / dsh-llm into lib/index.js).
  • Per-workspace isolation: different projects, different memory files.

📦 Install

Via dsh plugin (requires the package to be published / linked)

dsh plugin --profile web add meow-memory
dsh web

By hand (any DSH install, no npm needed)

  1. Copy (or symlink) this package into the profile's node_modules:
    # e.g. for the web profile of a DSH home at ~/.dsh
    mkdir -p ~/.dsh/profiles/web/node_modules
    ln -s /path/to/meow-memory ~/.dsh/profiles/web/node_modules/meow-memory
    
    (On Windows: New-Item -ItemType Junction ... — NTFS junction, no admin needed.)
  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.

⚙️ Configuration

All fields are optional (profile patch or cordis.patch.yml):

- id: meow-memory
  name: 'meow-memory'
  config:
    enabled: true          # master switch (false = no injection, no tool, no reflection)
    projectDir: '.dsh-meow' # memory directory, relative to the workspace
    projectFile: 'PROJECT.md' # memory file name
    maxInjectChars: 4000   # max chars injected into the first user message (truncated beyond)
    reflect: true          # auto-reflection after ReAct task turns

🧠 How it works

First user message            memory_remember tool             task end
┌──────────────────┐          ┌──────────────────┐            ┌──────────────────────┐
│ [user text]      │          │ model calls it   │            │ agent/turn-stopping  │
│ ─────────────    │          │ → append to       │            │ saw tool calls?      │
│ [PROJECT.md      │          │   .dsh-meow/      │            │ last tool memory_*?  │
│  snapshot]       │          │   PROJECT.md      │            │ already reflected?   │
└──────────────────┘          └──────────────────┘            │ → agent.steer(reflect│
   injected once per                atomic write              │   prompt) if yes     │
   session, never again                                       └──────────────────────┘

Memory content guidance (embedded in the tool description and the reflection prompt):

  • important facts, conclusions, decisions;
  • mistakes and corrections from the user (always worth keeping);
  • the user's own description of the project (quote them);
  • surprises;
  • lessons from repeated failed attempts;
  • user preferences (communication / working / coding style, project-related);
  • hard-won details that took many tool calls to find.

🛠 Development

npm install
npm run build          # esbuild bundle → lib/index.js (self-contained)
npm run test           # 22 logic tests: tool, store, injection, reflection, recursion guard

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.

内容来自项目 README(GitHub)↗

链接

同类插件

查看整个分类 →