实时采集对话证据,只读浏览记忆数据与状态面板
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/1 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:npm 同名包「dsh-agent-memory」归属 culeot/dsh-agent-memory,装到的可能不是本插件。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add BPTumbleweed/dsh-agent-memory该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · chat
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 47 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意要求 Node:>=20(dsh 本身要求 Node ≥ 22.19)npm 同名包「dsh-agent-memory」归属 culeot/dsh-agent-memory,装到的可能不是本插件
展开查看检查明细 ↓
>=20(dsh 本身要求 Node ≥ 22.19)以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-agent-memory @ 0.9.0
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/7 19:26:41
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 实时采集对话证据
- 只读浏览记忆数据
- 会话内工作状态面板
DSH 长期记忆插件 + 配套 CLI:实时采集对话证据、只读数据浏览、会话内工作状态面板。零运行时依赖、能力探测与熔断,面向跨版本升级设计;不接管偏好注入(留给官方 agent-instructions)。
README
由 DeepSeek 最新模型翻译生成dsh-agent-memory
DeepSeek Harness(DSH)的长期记忆插件:实时捕获对话证据,提供只读数据浏览器,并在 Web UI 内提供状态面板。
为扛住 DSH 升级而设计:零运行时依赖,每项能力都做特性检测,每个回调都包一层,并且刻意不碰提示词注入链路。
| ✅ 实时捕获 | 挂 session/event 钩子,把人类用户消息追加到 evidence/live-messages.jsonl |
| ✅ 状态面板 | /dsh-agent-memory/panel,在对话视图里显示为 记忆 标签页 |
| ✅ 只读数据浏览器 | /dsh-agent-memory/data/<kind> 下 10 个白名单端点 |
| ✅ 自检与熔断 | 加载时探测各项能力;某项连续出错 N 次后熔断,不影响 DSH |
| ❌ 不做提示词注入 | 注入交给官方 @deepseek-ai/dsh-agent-instructions + $DSH_HOME/AGENTS.md。
展开完整文档(README 剩余 1 节)
dsh-agent-memory
DeepSeek Harness(DSH)的长期记忆插件:实时捕获对话证据,提供只读数据浏览器,并在 Web UI 内提供状态面板。
为扛住 DSH 升级而设计:零运行时依赖,每项能力都做特性检测,每个回调都包一层,并且刻意不碰提示词注入链路。
| ✅ 实时捕获 | 挂 session/event 钩子,把人类用户消息追加到 evidence/live-messages.jsonl |
| ✅ 状态面板 | /dsh-agent-memory/panel,在对话视图里显示为 记忆 标签页 |
| ✅ 只读数据浏览器 | /dsh-agent-memory/data/<kind> 下 10 个白名单端点 |
| ✅ 自检与熔断 | 加载时探测各项能力;某项连续出错 N 次后熔断,不影响 DSH |
| ❌ 不做提示词注入 | 注入交给官方 @deepseek-ai/dsh-agent-instructions + $DSH_HOME/AGENTS.md。本插件从不碰 agent/pre-step / agent.inbox —— 这些是内部 API,也是最容易随升级碎掉的一层 |
安装
from a local checkout
dsh plugin --profile web add link:/path/to/dsh-agent-memory
from GitHub
dsh plugin --profile web add github:<owner>/dsh-agent-memory
restart the instance the profile serves
systemctl restart dsh-web-<your-instance>
验证实际组合出来的配置 —— 要以 DSH 用户身份运行,并设置 DSH_HOME,因为用 root 跑会读到另一份配置档:
sudo -u <dsh-user> env DSH_HOME=/var/lib/dsh dsh --profile web --dump-config \
| grep -A8 dsh-agent-memory
卸载 / 回滚:
dsh plugin --profile web remove dsh-agent-memory
配置
在入口的 config 里设置(见 cordis.patch.yml),也可以用你自己的配置档补丁覆盖。随附的默认值与机器无关:存储落在 $DSH_HOME 下。
| key | default | meaning |
| storeRoot | $DSH_HOME/agent-memory | 记忆存储根目录 |
| dshHome | $DSH_HOME(或 ~/.dsh) | 用来定位 AGENTS.md |
| routePrefix | /dsh-agent-memory | 面板与数据路由的前缀 |
| breakerThreshold | 5 | 某项能力熔断前允许的连续失败次数 |
| allowUnfencedPanel | false | 浏览器信任围栏不可用时是否仍提供面板(默认失败即关闭) |
记忆存储布局
插件只读这套布局;写入由配套命令行完成:
<storeRoot>/
├── bin/ companion CLI (symlink or copy the repo's bin/ here)
├── secrets.files optional: extra files to harvest secret values from
├── preferences/merlin.md the preference set (this is what gets injected)
├── preferences/evidence.md per-item provenance (not injected)
├── skills/index.md, .md reusable playbooks
├── evidence/user-messages.jsonl rolling working set of human messages
├── evidence/live-messages.jsonl written by this plugin, merged by the CLI
├── evidence/signals.jsonl 候选偏好,等待蒸馏 ├── evidence/archive.jsonl 已压缩原始消息的账本 ├── digest.md 会话启动简报 └── bin/memory-scan.py, memory-note.py
原始消息是工作集,不是归档:权威副本是 DSH 自己的会话日志,所以更早的记录会被压缩掉,之后可以从 $DSH_HOME/sessions 重建。
配套命令行
只有往存储里写入数据,面板才会显示真实数据。bin/ 就是干这个的: bash
point it at your DSH home and memory root, then do a first full backfill
python3 bin/memory-scan.py --full --root ~/agent-memory --dsh-home ~/.dsh
record one durable preference right now (also refreshes digest.md)
python3 bin/memory-note.py "prefers terse, evidence-backed answers" --section "沟通"
after distilling candidates, clear the pending counter
python3 bin/memory-scan.py --mark-distilled
路径解析 —— 先匹配到的生效:
| 值 | 顺序 |
| 存储根目录 | --root → $AGENT_MEMORY_ROOT → 脚本自身所在的存储(<store>/bin/…)→ $DSH_HOME/agent-memory |
| DSH home | --dsh-home → $DSH_HOME → ~/.dsh |
| 会话日志 | --sessions → $DSH_HOME/sessions/<derived from cwd> |
最省事的接法是把 bin/ 软链或复制到你的存储里(<store>/bin/):脚本会自动识别存储,面板里那些可直接复制的命令也就原样能用了。
用定时器跑它(5 分钟足够 —— 空闲的增量扫描大约耗时 0.2 秒): ini
/etc/systemd/system/agent-memory.service
[Service]
Type=oneshot
User=<your-user>
Environment=DSH_HOME=/var/lib/dsh
WorkingDirectory=/path/to/your/project # used to pick the right session directory
ExecStart=/usr/bin/python3 /path/to/agent-memory/bin/memory-scan.py --quiet
命令行如何处理密钥
写进存储的所有内容都先过一遍 bin/redact.py:从已配置文件中收集到的已知密钥值*,加上结构性模式(bearer/basic 头、token=、cookie 记录与 cookie 头、JWT、sk-…、ghp_…、bcrypt 哈希、私钥、字面量 password=… 赋值)。在 <store>/secrets.files 里列出额外来源(每行一个路径);每个来源会自动识别为 Netscape cookie jar、KEY=VALUE 文件或单 token 文件。$DSH_HOME/.credentials.yaml 存在时会读取。运行 python3 bin/redact.py 可做自检。
存储模型
原始消息是工作集:每次运行后,超出 EVIDENCE_KEEP(120)的最旧记录会被压缩掉,并向 evidence/archive.jsonl 追加一行。什么都不会丢 —— 权威副本是 DSH 自己的会话日志,--rebuild 可以从它重新生成存储。
两层记忆
| | 全局 | 按会话 |
| 文件 | preferences/global.md | sessions/<session-id>.md |
| 注入方 | 官方 agent-instructions,经 $DSH_HOME/AGENTS.md | 本插件,经 agent/pre-step |
| 作用域 | 每个会话 | 仅该会话 |
| 预算 | 6 KB 警告(AGENTS_WARN_BYTES) | 2 KB,超出截断(sessionInjectMax) |
bash
universal habits → every conversation
python3 bin/memory-note.py "always back up before changing config" --section "干活"
only this conversation (session id defaults to $DSH_SESSION_ID)
python3 bin/memory-note.py "this task touches CSS only" --scope session --section "约定"
插件为每个智能体注册 agent/pre-step 处理器,先调用 next(),让其他插件继续工作,再把会话记忆插入到最后一条用户消息之前——这样用户当前的指令仍然是最后说出的内容。注入的消息带有 source: { kind: "plugin", plugin: "dsh-agent-memory", form: "session-memory" }。
该钩子是内部 API,因此这一层被视为脆弱层:它做特性检测,包在熔断器里,并受字节预算约束。一旦它失效,面板会显示 sessionMemory: unavailable/tripped,而全局注入和存储不受影响。
超过 90 天未更新的会话文件会移到 sessions/archive/(绝不删除),sessions/index.json 记录每个会话的大小、条目数和超预算情况。
端点
| 路由 | 用途 |
| /dsh-agent-memory/panel | 自包含 HTML 面板,自动刷新 |
| /dsh-agent-memory/status.json | 机器可读的状态 |
| /dsh-agent-memory/data/<kind> | human live signals preferences digest agents skills journal archive prefEvidence |
每个路由都经过 DSH 的浏览器信任围栏(connection.requestRejection);围栏不可用时,面板默认拒绝。数据端点采用固定白名单,因此没有任意路径入口。
兼容规则
1. 零运行时依赖——只用 node:fs、node:path、node:os、node:module。
2. 无硬依赖——inject: [];webServer/connection 通过 ctx.inject([...], cb) 可选等待,不可用时降级为 unavailable。
3. 所有回调都包起来——不会有任何东西传播进 DSH。
4. 熔断器——某项能力失败只禁用它自己,原因会显示在面板里。
5. 只写入 storeRoot 下——绝不修改 DSH 配置或其他插件。
6. 降级链——插件挂了 ⇒ 命令行定时器仍会收集;面板挂了 ⇒ journal/digest 仍可用;插件没了 ⇒ 注入和存储不受影响。
package.json 带有 dsh.compatibility.dshReleases,面板会显示检测到的 DSH 版本,升级后版本不匹配一眼就能看出来。
开发 bash
node test/selftest.mjs # 8 checks (plugin)
python3 bin/redact.py # 8 checks (redaction engine)
插件检查项:消息过滤/去重、面板、信任围栏(默认拒绝)、熔断器、无服务时加载、一个守卫,断言面板用到的每条取值路径脚本存在于 payload 中,数据端点白名单也一样。
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
BPTumbleweed/dsh-agent-memory
实时采集对话证据,只读浏览记忆数据与状态面板
相关插件 · 对话 / 记忆
上下文中枢oceanbase/powercontext
上下文跟着工作走 —— 跨会话、跨智能体、跨人。
★ 1,489已汉化DSH
73.1
智能体记忆库plastic-labs/honcho
Honcho 是记忆基础设施,用来构建有状态的智能体。这些智能体能理解不断变化的人、智能体、群组、项目和想法。
★ 7,918已汉化DSH
71.7
长程智能体控制面loopx-project/loopx
给 Agent 一个目标,让工作持续向前。
★ 6,358已汉化DSH
71.3
智能体上下文数据库volcengine/OpenViking
给 AI 智能体用的上下文数据库
★ 41,453已汉化DSH
71.3
长效机器人团队Fei2411/DS-Bot
Download DS Bot for Windows 10/11 64-bit / 下载 Windows…
★ 5,293已汉化DSH
71.2
可携带记忆层EverMind-AI/EverOS
为什么选择 EverOS
★ 13,797已汉化DSH
71.1
这是你的仓库?认领条目