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:33moren33/dsh-memory-pyramid
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
dsh生态,零依赖,即插即用
通过本地对话文件,生成记忆金字塔,自带寻址
给 DeepSeek Harness (dsh) 补上带时间轴的、无限记忆
Agent自维护,一万条记忆,开局仍最多只读 96 行,固定token
Fable 5 辅助
中文 | English
装上之后,模型每次自动注入“金字塔”记忆;攒多之后,视图自动压成金字塔形:
### Memory view (40 facts)
#0-31 摘要:这段时间在打通插件加载链路,结论是...
#32-35 摘要:注入改走 systemPrompt 的动态上下文...
#36-37 摘要:数据目录改落工作区,避免家目录被运...
#38 2026-08-15 摘要树按块大小分层存储,待办...
#39 2026-08-15 定宽记录不存序号:位置即身份...
越靠近现在越是原文,越老越粗——但原文一条都没丢,随时可以下钻回去。
每记满两条事实,agent 就继续往上层进行摘要总结一次;两行这样的话再凑满一对,就写一行更粗的。每往上一层块数减半,形状就是一座塔:
[ #0-127 ] ← 1 行 · 代表全部 128 条
[ #0-63 ] [ #64-127 ] ← 每行代表 64 条
[#0-31] [#32-63] [#64-95] [#96-127] ← 每行代表 32 条
········································
#0 #1 #2 #3 ··················· #126 #127 ← 塔基:128 条逐字原文
开局那份视图,就是沿着塔斜着下楼梯:去年的事读塔尖一行,上个月的隔一块中层砖,昨天的直接站在塔基逐字读。塔基永远不动——粗砖只是地图,memory_zoom 两行就下到原文。所以记忆涨十倍,开局要读的行数一行不多。
形状来源:金字塔形状参考自 Victor Taelin 的 OptMem极简记忆理念。真正实现在 dsh 里自己探索、摩擦出来的,目前在致力于更加完善的记忆机制-(记忆与对话事实链接、面板、后台并行)——见后续路线图。
| 切哪根轴 | 记的是 | |
|---|---|---|
agent-instructions(AGENTS.md 门规链) |
空间 | 在哪个目录下该守什么规矩 |
| 检索式记忆(RAG 一类) | 相关性 | 跟当前问题像的东西 |
| dsh-memory-pyramid | 时间 | 先后发生过什么、当时为什么那么定 |
三轴正交、可以叠着用。官方目前只占了空间轴,时间轴整根空着——这就是本插件的落点。
目前仅串行,agent自主决定工具调用,没有任何后台进程。
项目后续更新路线图:1.并行后台结算(写记忆交给专职分身,主线一个字的注意力都不付,特定token与对话数后,后台更新记忆)2.记忆看板(人用时也能看到,管理项目记忆,金子塔式的直观可视化)3.唯一对话事实事实层绑定回溯,点一条跳回产生它的那段对话,看到记忆的全生命周期。
金字塔机制
memory_forget),并连坐丢弃由它推出的更粗摘要sessionId + seq 区间)——dsh 有全量会话流水这份原料,这是 OptMem 的运行环境里不存在的能力工程性质
dsh web 可正常启动。npm install -g pnpmdsh plugin --profile web add dsh-memory-pyramiddsh web(profile 启用了 HMR 时会直接热生效,这步可省;没见到再重启)一条命令,装完即激活——包自带 dsh.bundle 声明,dsh 自动把它加入 profile 层栈,一个配置文件都不用改:
dsh plugin --profile web add dsh-memory-pyramid
也可以把这条命令直接交给 dsh agent 替你执行。
零依赖、纯 ESM、无构建步骤;link: 装的是引用,之后 git pull 即更新:
git clone https://github.com/33moren33/dsh-memory-pyramid.git
dsh plugin --profile web add "link:/绝对路径/dsh-memory-pyramid"
装好重启 dsh web,新建会话开局出现 ### Memory view 段就是生效了;也可以用 dsh --profile web --dump-config 确认 dsh-memory-pyramid 已进合成树。启动日志里还会打印一行数据目录认领信息。
卸载:dsh plugin --profile web remove dsh-memory-pyramid,然后重启 dsh web。
想改配置(如 wakeLines):在 profile 的 cordis.patch.yml 里对同一个 id 覆盖,热生效:
- id: memory
config:
wakeLines: 192
实际注入(真实会话实拍,模型不用任何工具,直接凭注入的视图作答):
装插件时报 pnpm not found / 装 pnpm 时报目录没有写权限? dsh 靠 pnpm 管理插件,先 npm install -g pnpm。写权限报错常见于 Linux 用系统包管理器装的 Node——装到用户目录即可:npm install -g pnpm --prefix ~/.local,并把 ~/.local/bin 加进 PATH。
记忆到底落在哪? 落在 dsh 服务进程的启动目录下的 dsh_memory/。headless 一任务一进程、从工作区起,落点就是工作区;但 web GUI 是一个常驻进程服务多个工作区——在界面里切换会话工作区不会切换记忆落点,所有会话共享启动目录那一份。所以:请从你的工作区目录里启动 dsh web。
peer 警告 @deepseek-ai/cordis missing 要紧吗? 不要紧。cordis 只被类型注释引用、没有运行时 import,dsh 自己带着 cordis。v0.1.1 起已去掉这条声明;旧版本看到可直接忽略。
会话开到一半新记的东西,视图里怎么没有? 默认就是这样:视图只在会话开局注入一次(省注入 token),会话内新写的记忆在工具回执里、模型看得见,新开会话即见全部。想要实时更新,配置里把 liveView 设为 true。
| 键 | 默认 | 说明 |
|---|---|---|
namespace |
无 | 公共区名字。填了就落在 <工作区>/<名字>/dsh_memory。只收单层目录名。 |
dataDir |
无 | 完全自定义路径(绝对,或相对工作区根)。填了就压过 namespace。 |
migrate |
true |
换落点时,自动把工作区里找到的旧记忆整体搬过来。 |
wakeLines |
96 |
记忆视图的行数预算。这是阅读预算不是存储预算——随时改,一块摘要都不用重算。 |
injectWake |
true |
是否把记忆视图注进开局上下文。关掉后工具照常可用,只是不再自动出现。 |
liveView |
false |
会话中途记忆变化时是否实时更新视图。默认关:视图只在会话开局注入一次,会话内新写的记忆走工具回执、新会话开局可见全部。开了之后每次记忆变化都会给会话追加一份最新视图(多花注入 token)。改配置热生效,当前对话下一条消息起按新开关走。 |
默认落在 <服务进程启动目录>/dsh_memory(不写家目录;headless 下即工作区,web GUI 见上文常见问题)。LOG.txt 纯文本只追加——进 git 团队可共享一份经历;TREE/ 是纯缓存,删了不丢事实。目录已存在时:标记对得上就认领(一条不动),对不上就拒绝启动并说明原因。两份记忆绝不会被拼接(记录靠位置寻址,拼接会让所有摘要整体指错),找到多份旧记忆时拒绝启动、交给人裁决。
| 工具 | 干什么 |
|---|---|
memory_note |
记一条事实。一行,≤280 字节,只追加,永不修改。 |
memory_summarize |
交摘要树的维护费:某一块凑满时,写下将来代表它的那一行。 |
memory_zoom |
把任意 #a-b 节点打开成它的两个半块——下钻的便宜路子。 |
memory_recall |
逐字扫全部事实,或读某段原文。每条都带会话区间锚点。 |
memory_forget |
丢掉一块写坏的摘要,排队重写。只动地图,不动领土。 |
pread。记录里不存序号——顺带让多进程并发追加天然正确。stat。待办是推导出来的,没有可以失同步的队列。纪律段(静态)住在系统提示词里;记忆视图(写一条就变)住在动态上下文里。 分界只有一条:保证上下文缓存命中。
塔尖是多代传话游戏,语义会漂移。所以原文永存(地图坏了不等于领土沉了)、memory_forget 是正式重画通道、摘要缺失时视图就地拆细直到落回原文——绝不显示一块不存在的摘要。
TREE/ 字节级兼容liveView 可换回实时更新,热生效)LOG.txt 迁移转换器(TREE/ 可原样搬)memory_recall 返回,但「顺着锚点打开当时会话原文」的工具还没有——那是并行结算版的活。本项目基于 MIT 许可证开源。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: agent-memory、memory。