KhalilYamber/yammory-system ↗★ 0
yammory_system
提供分层、需审批且可审计的跨会话记忆服务 适合需要持久化、结构化管理跨会话上下文记忆的开发者。
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:KhalilYamber/yammory-system说明文档
阅读完整 README ↗Configuration
所有可调项均为 Schemastery Config 字段(可在 cordis.yml 中修改)。非法值在加载期响亮失败。在 yammory_system 行下覆盖。
设置面板。 DSH 设置服务挂载时,下表除 enabled 外的全部字段可在 DSH 设置侧栏的插件一级项 yammory-system(与通用设置、插件等并列)中编辑;修改写入设置用户层(settings.yaml),无需改文件。几乎全部即时生效(写策略、语言、预算、各上限、提案、面板;dbPath / auditRetentionDays 经重开 store 生效;retrieval.vector 经重装检索器生效)——只有 snapshotOrder 需要 DSH 重载。设置服务缺失时一切回退组合配置,与从前完全一致。侧栏底部的记忆入口可在同一页面隐藏(panel.enabled)。
| Key | Default | Meaning |
|---|---|---|
enabled | true | 总开关;false 移除服务、工具、快照、命令、面板与 answerer(设置页不可编辑——禁用的插件没有设置项) |
panel.enabled | true | 显示侧栏底部的记忆入口;在设置页保存 false 后立即隐藏,无需刷新(设置页本身不受影响) |
dbPath | '' → $DSH_HOME/dsh-memento/memory.db | 绝对路径,或相对 $DSH_HOME(Windows 上回退到 ~/.dsh) |
budgets.user.userGlobal | 2000 | user 轨 user-global 层的软预警线 |
budgets.user.workspace | 2000 | user 轨 workspace 层的软预警线 |
budgets.agent.userGlobal | 4000 | agent 轨 user-global 层的软预警线 |
budgets.agent.workspace | 4000 | agent 轨 workspace 层的软预警线 |
writePolicy | 'ask' | 默认写策略:ask / auto / off(模型不可见) |
writePolicies | {} | 按轨/作用域或按来源的覆盖(如 user/workspace、source:claude) |
language | 'en' | 模型可见文本与命令输出语言:en / zh |
snapshotOrder | -50 | 快照段顺序(在 harness 身份之后、persona 之前) |
maxEntriesPerQuery | 20 | 每次查询默认结果上限(硬上限 1000) |
commandListLimit | 50 | 每次 /memory list / query 渲染的条目数 |
commandAuditLimit | 10 | 每次 /memory audit 渲染的审计行数 |
recall.historyLimitDefault | 8 | memory_recall 默认扫描的会话数 |
recall.snippetCap | 5 | memory_recall 每个会话的片段数 |
recall.snippetChars | 300 | memory_recall 片段字符数 |
recall.windowDays | 30 | memory_recall 近期窗口天数 |
observe.days | 14 | memory_observe scan 的回看天数(硬上限 90) |
observe.sessions | 8 | 单次扫描采样最近多少个会话(硬上限 20) |
observe.perSession | 12 | 每个会话采样几条发言,均匀分布,好让开场与中后段的改口都留得下(硬上限 20) |
observe.messageChars | 400 | 单条发言超过多少字符即截断加省略号(硬上限 800) |
observe.totalChars | 12000 | 整段切片的字符预算;到顶即停并报出未覆盖范围(硬上限 30000) |
recall.weighting.heat | 0.3 | 热度加成上限(乘性;0 = 关闭)。热度 = 召回次数(封顶)× 距上次召回的半衰期衰减——记忆要靠持续被召回才保得住热度 |
recall.weighting.heatSaturation | 10 | 吃满热度加成所需的召回次数 |
recall.weighting.heatHalfLifeDays | 14 | 热度半衰期(天):久未被召回即失温 |
recall.weighting.freshness | 0.2 | 新旧加成上限(乘性;0 = 关闭) |
recall.weighting.freshnessHalfLifeDays | 30 | 新旧半衰期(天) |
recall.weighting.tagDiscount | 0.5 | 词元只在 tags 命中时的权重(正文命中记 1) |
retrieval.vector | false | 语义召回开关:true 且注册了真语义嵌入 provider 时才换装向量召回——伪嵌入(哈希袋)刻意不算数,它不做语义建模、会让中文召回静默归零;否则保持零依赖 keyword 检索器(中文二字分词、任一词元命中、热度/新旧加权、相关度排序) |
panelEntriesLimit | 200 | Web 面板条目分页大小 |
panelAuditLimit | 20 | Web 面板默认审计行数 |
auditRetentionDays | 0 | 审计保留天数(0 = 永久保留) |
proposals.enabled | true | 每次成功压缩后自动捕获一条记忆提案 |
proposals.maxChars | 2000 | 提案字符上限 |
proposals.maxPending | 8 | 待处理提案上限 |
tidy.enabled | true | 整理全库按钮是否真的起一轮后台会话:false 退回旧行为(只登记标记,等下次会话开口) |
tidy.profile | 'headless' | 后台轮用的执行体 profile 名 |
tidy.exec | '' → 自动探测 | 执行体入口:空 = 自己探(先用宿主自己的启动器:宿主启动时那个 CLI 脚本,由同一份 node 执行;再找 PATH 里的 dsh.cmd / dsh);填了就盖过这两条(绝对路径或你自己的启动脚本)。找不到它会如实报「执行体起不来」并给「重试」 |
tidy.timeoutMs | 480000 | 判活窗口:到点未退出即杀进程并如实报「超时」(下限 30 秒) |
tidy.task | '' → 内置任务文本 | 覆盖交给无头会话的作业说明(只在 cordis.patch.yml 里可改,不进设置卡片) |