Get记忆插件:DSH 的外置大脑——对话开始自动拉取 GitHub…
30.8/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/23 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/krodon998/dsh-get-memory.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 18 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 23 处,展示前 18 条)
- 读取本地文件lib/index.v8.js:208
return existsSync(dotDsh) ? dotDsh : homedir() - 读取本地文件lib/index.v8.js:217
const parsed = JSON.parse(readFileSync(historyPath, 'utf8')) - 写入本地文件lib/index.v8.js:227
mkdirSync(dirname(historyPath), { recursive: true }) - 写入本地文件lib/index.v8.js:229
writeFileSync(tmp, JSON.stringify(state.history, null, 2), 'utf8') - 写入本地文件lib/index.v8.js:230
renameSync(tmp, historyPath) - 读取本地文件lib/index.v8.js:238
const parsed = JSON.parse(readFileSync(overridesPath, 'utf8')) - 写入本地文件lib/index.v8.js:248
mkdirSync(dirname(overridesPath), { recursive: true }) - 写入本地文件lib/index.v8.js:250
writeFileSync(tmp, JSON.stringify(state.overrides, null, 2), 'utf8') - 写入本地文件lib/index.v8.js:251
renameSync(tmp, overridesPath) - 发起网络请求lib/index.v8.js:379
const response = await fetch(`${API_BASE}${path}`, { - 读取本地文件lib/index.v8.js:426
const parsed = JSON.parse(readFileSync(path, 'utf8')) - 发起网络请求client.js:29
return fetch(url, options).then(function (response) { - 请求外部主机registry.npmjs.orgclient.js:64
return fetch('https://registry.npmjs.org/dsh-get-memory/latest') - 发起网络请求client.js:64
return fetch('https://registry.npmjs.org/dsh-get-memory/latest') - 写入剪贴板client.js:1502
navigator.clipboard.writeText(id).then(toast, function () { - 发起网络请求src/client/api.js:3
return fetch(url, options).then(function (response) { - 请求外部主机registry.npmjs.orgsrc/client/api.js:38
return fetch('https://registry.npmjs.org/dsh-get-memory/latest') - 发起网络请求src/client/api.js:38
return fetch('https://registry.npmjs.org/dsh-get-memory/latest')
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
涉及外部主机:registry.npmjs.org
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 对话前拉取仓库注入上下文
- 对话后提取信息写回提交
- 图形化配置面板
展开完整介绍(105 字)↓
Get记忆插件:DSH 的外置大脑——对话开始自动拉取 GitHub 仓库内容注入上下文,对话结束提取值得长期记住的新信息按文件写回并提交;左栏面板 + 原生设置页全图形化配置。Get 记忆 + Git 记忆。
README
由 DeepSeek 最新模型翻译生成Get记忆(dsh-get-memory)— DSH 记忆插件
给 DeepSeek Harness 配一个「外置大脑」:对话开始前,它把 GitHub 仓库里的记忆文件装进上下文的脑子;对话结束后,它把值得长期记住的新事写回仓库并提交。跨设备、跨前端、跨重启,记忆都活在同一份文件里。
名字是个双关:Get 记忆(取回记忆)+ Git 记忆(GitHub 仓库里的记忆)。
快速开始(装好就能跑)
1. 安装插件(插件市场搜 dsh-get-memory,或 dsh plugin --profile web add dsh-get-memory);
2. 生成细颗粒度 PAT:只勾目标仓库的 Contents 读写,别的权限一律不选(旧仓库、空仓库、新仓库都行);
3. 打开左栏「Get记忆」面板(或设置页)→ 粘贴令牌 → 保存 → 插件自动列出令牌能看到的仓库 → 单选一个作为记忆仓库;
4. 空仓库?设置页点「一键初始化」——插件自己用令牌创建 长期记忆账本.md,不用你去 GitHub 手动建任何东西;
5. 正常聊天:对话开始自动读;想开自动写回再打开「自动写回」开关(默认关,保护你的模型额度)。
没选仓库之前,插件不注入任何东西、也不写回任何东西——陌生的默认配置零风险。
展开完整文档(README 剩余 1 节)
Get记忆(dsh-get-memory)— DSH 记忆插件
给 DeepSeek Harness 配一个「外置大脑」:对话开始前,它把 GitHub 仓库里的记忆文件装进上下文的脑子;对话结束后,它把值得长期记住的新事写回仓库并提交。跨设备、跨前端、跨重启,记忆都活在同一份文件里。
名字是个双关:Get 记忆(取回记忆)+ Git 记忆(GitHub 仓库里的记忆)。
快速开始(装好就能跑)
1. 安装插件(插件市场搜 dsh-get-memory,或 dsh plugin --profile web add dsh-get-memory);
2. 生成细颗粒度 PAT:只勾目标仓库的 Contents 读写,别的权限一律不选(旧仓库、空仓库、新仓库都行);
3. 打开左栏「Get记忆」面板(或设置页)→ 粘贴令牌 → 保存 → 插件自动列出令牌能看到的仓库 → 单选一个作为记忆仓库;
4. 空仓库?设置页点「一键初始化」——插件自己用令牌创建 长期记忆账本.md,不用你去 GitHub 手动建任何东西;
5. 正常聊天:对话开始自动读;想开自动写回再打开「自动写回」开关(默认关,保护你的模型额度)。
没选仓库之前,插件不注入任何东西、也不写回任何东西——陌生的默认配置零风险。
它到底在干嘛
打个比方:你有一个 GitHub 仓库,里面躺着几份 Markdown 文件——人设、规则、长期记忆账本,随便你写什么。这个插件就是那个仓库的「管家」:
- 每次对话开始(新建或恢复会话),管家自动把仓库里的文件拉下来,注入当前对话的上下文——所以模型一睁眼就知道「我是谁、发生过什么、有什么约定」;
- 每次对话结束(回合停摆 30 秒,或会话关闭),管家自己调用模型,从刚才的对话里挑出「值得长期记住的新信息」,按文件写好、取最新 SHA、提交回仓库。没有实质变化就什么也不动;
- 断网了也不慌:拉取失败自动回退磁盘缓存,绝不把对话搞崩。
适配说明:本插件只适配 DSH 软件端(桌面应用)。DSH 的网页界面是软件端的镜像页面,插件能力跟随软件端生效,不提供独立的 web 插件。
特性
- 🧠 自动拉取注入:对话开始自动拉取指定仓库文件注入上下文(排序号默认 100,位于所有运行时上下文之前);注入内容自动花括号消毒,仓库文件里带 {{User}} 这类模板语法也不会炸。
- 🗂️ 文件权限中心:设置页「同步文件列表」一键拉取仓库当前文件,每个文件「只读 / 读写」可视化勾选(新文件默认读写);「注入读什么、写回写什么」全由这张表说了算。每次拉取还会自动盘点——新文件自动加入,含模板语法的自动跳过。
- ✍️ 多文件自动写回:对话结束提取「值得长期记住的新信息」,对所有「读写」文件逐个产出变更、逐个 SHA 锁提交;某文件冲突就重取重试一次。跨端「传话文件」也支持——只在有需要传话/回话时才动它,绝不灌水。
- 💗 左栏快捷面板:一颗小心心图标,实时看拉取状态、写回结果、令牌状态,一键「立即拉取」,自动写回开关,内置最近操作记录。
- ⚙️ 原生设置页(宁少勿多):DSH 设置里新增「Get记忆」专属页面——令牌、仓库选择器(由令牌驱动的仓库列表,单选)、文件权限、自动写回、触发范围、全局提示;高级字段(分支、注入顺序、转录上限、提取模型等)藏在底层配置里,不干扰新手。
- 🔁 触发与范围:每 N 次对话写回一次(N 可填,1 = 每次);应用于「全部会话 / 排除列表 / 仅列表」。
- 🛡️ 安全默认:默认仓库为空、默认不自动写回;不配置就不会注入/写回任何东西;令牌只用于你自己选的仓库。
- 🧰 一键初始化:选了个空仓库?设置页点一下,插件自动创建 长期记忆账本.md(友好模板),全程不用碰 GitHub 网页——工具适应人,不让人适应工具。
- 🔄 检查更新:设置页「检查更新」实时读 npm 最新版本,对照当前版本给提示和一条更新命令。
- 🔔 回合写回指示 + 全局小条:每回合结束,消息下方一行小字——「记忆已写回 ✓ / 整理中… / 无新记忆 / 写回失败」,悬停看详情;输入框下方的小胶囊全程跟踪写回——整理中常驻(橙色呼吸点,直到写完)、提交后「记忆已更新 ✓」、没有新内容则灰点「无新记忆」。都能在设置里关。
原理
令牌是怎么用的
插件按以下顺序找令牌,找到即止:
1. DSH 凭据库(AIRE_MEMORY_GITHUB_TOKEN,面板保存的令牌就存在这里,推荐位置);
2. 环境变量(同名);
3. 插件配置的 githubToken 字段(引导用:一旦在配置里填了,插件首次加载时自动把它迁移进凭据库)。
令牌只会被用于「读取 / 写入你配置的那一个仓库」,绝不写入仓库任何文件;写回前还会对内容做密钥形态脱敏。
读取链路
agent/created 事件(每次「上岗」)→ 并行拉取仓库文件(GitHub Contents API)→ 更新内存缓存 + 磁盘缓存(~/.dsh/cache/aire-memory/snapshot.json)→ 通过 systemPrompt.context() 在每次模型组装时注入最新内容。拉取失败不报错:回退缓存(标注过期),缓存也没有就注入「暂不可用」占位。
写回链路
agent/turn-stopping(回合结束)→ 防抖 30 秒(期间有新消息就取消)→ 或 agent/disposed(会话关闭)立即执行 → 插件自行调用模型(用当前会话模型 / 默认模型)提取新记忆,按「读写」文件逐个产出更新后的完整内容 → 先 GET 拿最新 SHA → PUT 提交(SHA 锁) → 409 冲突自动重取重试一次 → 成功后本会话立刻看到新内容。
只对根会话(主对话)写回;子代理 / 工作流会话不写。所有失败仅记日志,绝不打断对话。
界面分工:左栏快捷面板 vs 原生设置页
| 左栏快捷面板(日常用) | 原生设置页(详细配置) |
| 状态一览(仓库 / 令牌 / 最近修改记录) | 令牌、仓库选择器、文件权限、一键初始化 |
| 立即拉取 | 自动写回、触发与范围、全局提示模式 |
| 自动写回开关 | 检查更新、关于 / 问题反馈 / 更新记录 |
| 设置引导 | 设置引导 |
配置(均有默认值,可直接用)
设置页只露新手需要的字段;下表是完整配置(含底层字段,插件列表的配置入口可改):
| 字段 | 默认 | 说明 |
| repo | 空 | 记忆仓库(owner/repo);留空 = 未配置,不注入不写回。设置页通过令牌选择 |
| branch | main | 分支 |
| fileModes | 旧字段自动迁移 | 文件权限表 [{file, mode: 'ro'/'rw'}]:注入取全部,写回只取 rw;设置页「文件权限」卡片管理 |
| ledgerFile | 长期记忆账本.md | 主账本(多文件写回时排最前) |
| injectOrder | 100 | 上下文排序(数字小靠前;运行时上下文从 110 起) |
| tokenRef | AIRE_MEMORY_GITHUB_TOKEN | 凭据库 / 环境变量名 |
| githubToken | 空 | 引导令牌(secret),首次加载自动迁移进凭据库 |
| autoDiscoverFiles | true | 每次拉取盘点仓库新 .md 并加入权限表(读写),含 {{ 模板语法的跳过 |
| writebackEnabled | false | 自动写回开关(默认关,保护模型额度) |
| writebackEveryN | 5 | 每 N 条对话写回一次记忆(1 = 每条都写) |
| sessionPolicyMode | all | 应用范围:all / exclude / include |
| sessionPolicyIds | 空 | 排除 / 仅限的会话 id 列表 |
| maxWriteFiles | 5 | 每次写回最多处理的「读写」文件数 |
| writebackDebounceMs | 30000 | 回合结束后的写回防抖(毫秒) |
| maxTranscriptChars | 16000 | 送入提取器的转录上限(取尾部) |
| minConversationChars | 80 | 低于此长度不提取 |
| extractProvider / extractModel | 空 | 提取模型覆盖;留空用会话模型 / 默认模型 |
| requestTimeoutMs | 15000 | 拉取 / 写入超时(毫秒) |
| showPanelIcon | true | 显示左栏快捷面板图标 |
| showTurnIndicators | true | 显示回合写回指示 |
| showGlobalNotice | true | 写回变动时输入框下方的小条提示 |
| historyLimit | 50 | 面板内操作记录保留条数 |
设置页与快捷面板里改动以上任意字段(图标/指示开关除外)都会保存为运行时覆盖,即时生效、重启保留。
更换令牌
1. GitHub 生成新的细颗粒度 PAT(仅目标仓库 Contents 读写);
2. 面板或设置页令牌框粘贴新令牌保存(自动覆盖凭据库旧值,保存时即做仓库读验证),或直接改 ~/.dsh/.credentials.yaml 里 AIRE_MEMORY_GITHUB_TOKEN 的值(重启 DSH 后生效);
3. 旧令牌在 GitHub 上单独作废,互不影响。
本地开发
客户端半边是拼接式 ModuleLoader bundle(无构建依赖):
node scripts/build-client.mjs # 由 src/client/*.js 生成 client.js
node --check lib/index.v8.js # 宿主半边语法检查
宿主半边入口见 package.json 的 main(纯 JS ESM);客户端半边声明见 dsh.client 与 exports["./client"]。
许可
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
krodon998/dsh-get-memory
Get记忆插件:DSH 的外置大脑——对话开始自动拉取 GitHub…
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,225未汉化DSH
73.6
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 2,049已汉化MCP
72.8
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,370已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13941 个插件含 PR 收录与…
★ 355已汉化DSH
71.8
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7
这是你的仓库?认领条目