OpenViking
volcengine
Self-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:Aik358/dsh-auto-memory
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
A cache-friendly three-layer memory engine for the DeepSeek Harness Web GUI — lean auto injection, per-turn AI consolidation, on-demand reads and cross-tool memory inheritance — wrapped in human touches: proactive calendar reminders, warm AI greetings, and a daily journal that writes itself.
DSH Web GUI 的记忆与人性化交互插件:三层记忆自动注入与检索、每日反思、AI 时段问候与三级抽屉、每轮自动沉淀、智能检索、日历视图与设置页,支持继承其他 AI 工具的历史记忆。
Quick install:
cd ~/.dsh/profiles/web→pnpm add @a9i5k4/dsh-auto-memory→ append"@a9i5k4/dsh-auto-memory"todsh.profile.bundlesin that directory'spackage.json→ restart dsh web (the 「Memory」entry appears in the sidebar). Full instructions in Installation; no-pnpm alternative:npm install @a9i5k4/dsh-auto-memory.
Prerequisite: install DeepSeek Harness (dsh) and start
dsh webat least once.
Run in the profile directory (~/.dsh/profiles/web):
cd ~/.dsh/profiles/web
pnpm add @a9i5k4/dsh-auto-memory
pnpm v11 默认限制安装发布不足 1 天的版本。当天发布想立即拿到新版,在 profile 目录的 pnpm-workspace.yaml 加
minimumReleaseAge: 0,或用显式版本pnpm add @a9i5k4/dsh-auto-memory@0.1.16。(pnpm v11 blocks packages published <1 day ago; setminimumReleaseAge: 0in pnpm-workspace.yaml or use an explicit version for same-day releases.)
Then edit package.json in that directory and append to the dsh.profile.bundles array:
"@a9i5k4/dsh-auto-memory"
Restart dsh web to activate (the 「Memory」entry appears in the sidebar).
No pnpm? Use npm:
npm install @a9i5k4/dsh-auto-memory
The plugin is a normal npm package, so updating is one command in the same profile directory:
cd ~/.dsh/profiles/web
pnpm up @a9i5k4/dsh-auto-memory # or: npm install @a9i5k4/dsh-auto-memory@latest
Then restart dsh web.
The Settings → Auto Memory page has a Check for updates button that compares your installed version with the latest one on the npm registry (it shows the update command when a newer version exists).
It's the AI era — just copy the sentence below to your AI assistant (DeepSeek / Claude / Codex etc.) and it will do the installation for you.
Install the npm package @a9i5k4/dsh-auto-memory in the DeepSeek Harness web profile
directory ~/.dsh/profiles/web (run "pnpm add @a9i5k4/dsh-auto-memory" or "npm install @a9i5k4/dsh-auto-memory"),
append "@a9i5k4/dsh-auto-memory" to the dsh.profile.bundles array in package.json,
then restart dsh web to activate the plugin.
Auto Memory is designed to feel less like a database and more like an assistant who knows you:
calendar_add / calendar_done / calendar_remove).memory_read / memory_recall.| Layer | Location | Description |
|---|---|---|
| User-level memory | ~/.dsh/memory/MEMORY.md |
Cross-project rules & preferences |
| Project notes | ~/.dsh/memory/workspaces/{workspace}/MEMORY.md |
Project conventions & decisions (centralized) |
| Daily logs | ~/.dsh/memory/workspaces/{workspace}/YYYY-MM-DD.md |
Append-only work log (centralized) |
| Reflections | ~/.dsh/memory/workspaces/{workspace}/reflections/YYYY-MM-DD.md |
Daily reflection (structured, kept in background) |
Centralized storage (WorkBuddy-style): all workspace memories live under one root —
~/.dsh/memory/workspaces/, one subdirectory per workspace (readable by any model in any session via injection + cross-workspacememory_recall). Legacy per-workspace.dsh-memory/folders are auto-migrated on first run after upgrade (the old copies are kept, not deleted).
<memory_system> block (user rules + project notes + reflection digest + recent 1 day of log tails + external memory paths + pending calendar items + writing discipline); it is placed at the very end of the system prompt so the model reads the memory discipline right before replyingmemory_read fetches full log/reflection/user/notes/calendar files when needed; sensitive sections (credentials/tokens/secrets) are filtered out of the prompt but kept in the filesEvery finished conversation turn is automatically evaluated (via a small subagent) and anything worth keeping is written for you — no reliance on the model remembering to log:
- 21:03 [自动沉淀] … — no manual memory_log needed for routine work## YYYY-MM-DD heading); cross-project rules → user-level memoryautoConsolidateMinChars), each turn is deduplicated by turn number, subagent turns are ignoredmemory_consolidate tool: read recent logs and distill long-term decisions / architecture / user preferences into MEMORY.md on demand ("dream-like" consolidation)~/.dsh/dsh-auto-memory.json: autoConsolidate (default true), autoConsolidateMinChars (default 240), autoConsolidateCooldownMinutes (default 30, doubled 22:00–08:00), autoConsolidateDailyMax (default 8) — all adjustable in the Settings → Automation sectionThe first thing you see when opening the memory panel is an AI-generated period greeting, not a template and not technical info:
.dsh-memory/greetings/ — no repeated API cost.dsh-memory/summaries/; opening the panel reads the cache (offline-friendly, no regeneration); the ⟳ refresh button or returning after >1h away forces a fresh generation; every summary shows its generation timeThe Search tab adds a Smart search button next to the keyword search:
「Calendar」tab (liquid-glass monthly view):
~/.dsh/memory/CALENDAR.md, shared across workspaces, survives DSH reinstallcalendar_add / calendar_list / calendar_done / calendar_remove), restating it in plain text; pending items are injected into every session's system promptmemory_log / memory_note / memory_user / memory_recall / memory_external / memory_maintain / memory_status / memory_reflect / memory_consolidate / calendar_add / calendar_list / calendar_done / calendar_remove
All screenshots below are real captures of the plugin running inside the DSH Web GUI (Chinese UI for now; English UI captures will be added later).
## 主题(HH:MM) + bullet points) — no memory_log needed for routine work. Long-term value is promoted to project notes / user-level memory, small talk is skipped, failures are queued and retried every 5 minutes (a 15-second heartbeat file proves the loop is alive).calendar_add and marks them done via calendar_done/calendar_remove.Defaults (JSON file ~/.dsh/dsh-auto-memory.json):
{
"userMemoryDir": "~/.dsh/memory",
"projectMemoryDir": ".dsh-memory",
"injectEnabled": true,
"injectBudgetChars": 2400,
"recentDaysInjected": 1,
"reflectEnabled": true,
"reflectStyle": "auto",
"locale": "zh",
"autoConsolidate": true,
"autoConsolidateMinChars": 240,
"autoConsolidateCooldownMinutes": 30,
"autoConsolidateDailyMax": 8,
"externalInjectionChars": 1400,
"memoryRoot": "~/.dsh/memory/workspaces",
"dayBoundaryMinutes": 450
}
Adjustable in the GUI (Settings → Auto Memory), including the UI language (zh / en), the panel font size and the day boundary.
archived-user.md / archive/notes-archived.md (nothing is lost). Compaction is throttled to once per 10 minutes.dayBoundaryMinutes (default 450 = 07:30). Work logged before the boundary is appended to the previous day's log, and the daily reflection for the previous day starts only after the boundary — no more "it's 00:30, tell me what you did yesterday" right after midnight.memory_maintain distills logs older than 30 days with an AI pass into the project notes, archives the originals under archive/, and removes them from the active log list.pre-step hook awaits the memory state refresh before the first step, so the model sees memory from the very first token (previously the async load could leave the first turn empty).HH:MM:SS timestamp that refreshes on every prompt assembly, and a 15-second heartbeat file proves the background loop is alive.lib/index.js — Host half: engine, injection, tools, routes (zero runtime deps, Node built-ins only)lib/client.js — Browser half: memory panel (with calendar view) + settings page (built-in zh/en i18n)cordis.patch.yml — Plugin row (auto-memory)memory_recall session search depends on the deployed session-query index; without it, only local search works.@a9i5k4/dsh-auto-memoryCLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: memory。