让 AI 记住你的偏好与项目,开新会话无需重述
31.5/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/29 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add QuaonY/dsh-mem-weave该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · skill
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 3 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/10/29) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件写入剪贴板(不计风险)
查看扫描证据(共 55 处,展示前 50 条)
- 读取本地文件bench/run.ts:30
return JSON.parse(readFileSync(join(__dirname, "seed.json"), "utf8")) as Seed; - 读取本地文件bench/run.ts:35
return JSON.parse(readFileSync(join(__dirname, "terms.json"), "utf8")) as Record<string, string[]>; - 写入剪贴板src/client/persona.ts:930
void navigator.clipboard?.writeText(text)?.then(() => flash(t("persona.copy", state.lang) + " ok", "ok")); - 读取本地文件src/host/location.ts:30
if (!existsSync(file)) return ""; - 读取本地文件src/host/location.ts:31
const raw = JSON.parse(readFileSync(file, "utf8")) as { dataDir?: unknown }; - 写入本地文件src/host/location.ts:39
mkdirSync(dirname(file), { recursive: true }); - 写入本地文件src/host/location.ts:41
writeFileSync(tmp, JSON.stringify(value, null, 2), "utf8"); - 写入本地文件src/host/location.ts:42
renameSync(tmp, file); - 删除本地文件src/host/location.ts:50
rmSync(pointerFile(), { force: true }); - 读取本地文件src/host/location.ts:76
if (!existsSync(file)) return {}; - 读取本地文件src/host/location.ts:77
const raw = JSON.parse(readFileSync(file, "utf8")) as unknown; - 读取本地文件src/host/logger.ts:73
size = statSync(f).size; - 读取本地文件src/host/logger.ts:85
for (const n of readdirSync(this.dir)) { - 读取本地文件src/host/logger.ts:100
for (const n of readdirSync(this.dir)) { - 删除本地文件src/host/logger.ts:104
unlinkSync(join(this.dir, n)); - 写入本地文件src/host/logger.ts:120
mkdirSync(this.dir, { recursive: true }); - 写入本地文件src/host/logger.ts:127
appendFileSync(this.currentFile(), line, "utf8"); - 执行外部命令来自配置/变量src/host/pick-dir.ts:32
child = spawn(cmd, args, { windowsHide: true, stdio: ["ignore", "pipe", "pipe"] }); - 读取本地文件src/host/pick-dir.ts:84
const start = initial && existsSync(initial) ? initial : ""; - 读取本地文件src/host/service.ts:1379
const st = statSync(path); - 读取本地文件src/host/service.ts:1382
const raw = JSON.parse(readFileSync(path, "utf8")) as unknown; - 写入本地文件src/host/service.ts:1813
mkdirSync(dir, { recursive: true }); - 读取本地文件src/host/service.ts:1815
if (existsSync(targetDb)) { - 读取本地文件src/host/service.ts:2316
return readdirSync(dir) - 读取本地文件src/host/service.ts:2320
const st = statSync(p); - 读取本地文件src/host/service.ts:2360
for (const name of readdirSync(join(this.env.dataDir, "import-undo"))) { - 写入本地文件src/store/db.ts:38
mkdirSync(dataDir, { recursive: true }); - 读取本地文件src/store/db.ts:101
if (!existsSync(source)) throw new Error("backup file not found"); - 写入本地文件src/store/db.ts:103
copyFileSync(source, staging); - 删除本地文件src/store/db.ts:107
rmSync(file + "-wal", { force: true }); - 删除本地文件src/store/db.ts:108
rmSync(file + "-shm", { force: true }); - 写入本地文件src/store/db.ts:110
renameSync(staging, file); - 删除本地文件src/store/db.ts:119
rmSync(staging, { force: true }); - 读取本地文件src/store/db.ts:125
if (!existsSync(dir)) mkdirSync(dir, { recursive: true }); - 写入本地文件src/store/db.ts:125
if (!existsSync(dir)) mkdirSync(dir, { recursive: true }); - 写入本地文件src/store/mirror.ts:145
mkdirSync(dir, { recursive: true }); - 读取本地文件src/store/mirror.ts:164
prev = existsSync(path) ? readFileSync(path, "utf8") : null; - 读取本地文件src/store/mirror.ts:164
prev = existsSync(path) ? readFileSync(path, "utf8") : null; - 写入本地文件src/store/mirror.ts:170
writeFileSync(path, parts[i], "utf8"); - 读取本地文件src/store/mirror.ts:179
for (const n of readdirSync(dir)) { - 删除本地文件src/store/mirror.ts:182
rmSync(join(dir, n), { force: true }); - 读取本地文件src/store/mirror.ts:196
if (!existsSync(dir)) return removed; - 读取本地文件src/store/mirror.ts:198
for (const n of readdirSync(dir)) { - 删除本地文件src/store/mirror.ts:200
rmSync(join(dir, n), { force: true }); - 读取本地文件src/store/mirror.ts:216
if (!existsSync(path)) break; - 读取本地文件src/store/quote.ts:181
workspaces = readdirSync(sessionsDir); - 读取本地文件src/store/quote.ts:188
sids = readdirSync(join(sessionsDir, ws)); - 读取本地文件src/store/quote.ts:196
names = readdirSync(dir); - 读取本地文件src/store/quote.ts:204
const st = statSync(path); - 读取本地文件src/store/quote.ts:255
jsonl = decodeZstdConcat(readFileSync(f.path));
扫描于 2026/11/1(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-typert-protocol给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
展开完整介绍(182 字)↓
忆织 MemWeave(dsh-mem-weave) —— 把记忆编织进人格(记忆 × 人格一体 DSH 插件)让 AI 记住你是谁、在做的项目、踩过的坑和答应过的事,开新会话不用重新认识你。记忆像人一样有轻重、会淡忘、能被唤醒,每轮只带上用得上的那部分,Token 用量也不会随着记忆增多而快速增长。改人格、改规则、处理冲突都由你决定,改错能撤销,数据全在本机。
README
由 DeepSeek 最新模型翻译生成忆织 MemWeave
忆织 MemWeave(dsh-mem-weave)—— 把记忆编织进人格(记忆 × 人格一体 DSH 插件)
忆织是 DeepSeek Harness(DSH)的记忆与人格插件。
装上以后,AI 会记住你是谁、你们在做什么项目、它踩过什么坑、答应过你什么事。开新会话不用重新认识你。用得越久,它越了解你,每轮消耗的 token 却不会越来越多。
亮点
- 越用越久,token 不涨:每轮注入有固定上限,只带这一轮用得上的记忆。
- 像人一样遗忘:不常用的慢慢淡出,常用的越记越牢,你本人的信息永远不会忘。
- 你说了算:AI 只能写记忆、提建议,改人格、改规则、处理冲突、永久删除都只能由你来做。
- 改错能撤销:写入、修改、合并、整理都能在 24 小时内一键撤回,全程有审计记录。
- 不乱记:密钥、令牌、密码会被直接拦下;重复的会自动合并;互相矛盾的会先冻结,等你判断。
- 有人格:自称、称呼、性格、语气都能设置,内置两套原创人格。
- 记得约定和日子:到期的约定、生日、纪念日、农历节日都会提前想起来。
- 数据在本机:一个 SQLite 文件,不联网、不上传,可以一键备份。
- 轻:没有运行时依赖,安装包约 170 KB。
展开完整文档(README 剩余 1 节)
忆织 MemWeave 忆织 MemWeave(dsh-mem-weave)—— 把记忆编织进人格(记忆 × 人格一体 DSH 插件) 忆织是 DeepSeek Harness(DSH)的记忆与人格插件。 装上以后,AI 会记住你是谁、你们在做什么项目、它踩过什么坑、答应过你什么事。开新会话不用重新认识你。用得越久,它越了解你,每轮消耗的 token 却不会越来越多。 亮点 - 越用越久,token 不涨:每轮注入有固定上限,只带这一轮用得上的记忆。 - 像人一样遗忘:不常用的慢慢淡出,常用的越记越牢,你本人的信息永远不会忘。 - 你说了算:AI 只能写记忆、提建议,改人格、改规则、处理冲突、永久删除都只能由你来做。 - 改错能撤销:写入、修改、合并、整理都能在 24 小时内一键撤回,全程有审计记录。 - 不乱记:密钥、令牌、密码会被直接拦下;重复的会自动合并;互相矛盾的会先冻结,等你判断。 - 有人格:自称、称呼、性格、语气都能设置,内置两套原创人格。 - 记得约定和日子:到期的约定、生日、纪念日、农历节日都会提前想起来。 - 数据在本机:一个 SQLite 文件,不联网、不上传,可以一键备份。 - 轻:没有运行时依赖,安装包约 170 KB。 它是怎么做到的 每轮只带一小部分 记忆库可以一直变大,但每轮注入的上限不变: | 时机 | 注入内容 | 默认上限 | | 会话第一轮 | 人格 + 记忆快照(你是谁、规则、关系、项目) | 4000 字 | | 之后每轮 | 新增或改动的记忆 | 1200 字 | | 之后每轮 | 和当前话题相关的记忆 | 900 字 | 没轮到的记忆不会丢,下次话题对上了照样能找回来。上限可以在界面里调。 像人一样遗忘 遗忘只影响记忆排第几,不删数据。 - 会淡忘:记忆按层设置半衰期,话题 30 天,事实 90 天,项目 180 天,你本人的信息和教训 365 天。 - 越用越牢:经常用到的记忆,半衰期最多延长到 8 倍。 - 不翻来覆去:同一条记忆短时间内被反复想起,排名会往后放,给别的记忆让位置。 - 会收拾: - 很久没用过的零散记忆,合并成一条摘要。 - 做完放了半年的项目,整个收起来。 - 收起来的原文都能找回。 该记住的不会忘 - 你是谁:偏好、习惯、身份、规则、关系每次开会话都会带上,永远不会被收起来。 - 在做的项目:只要项目还在推进,它的约定一条都不会被收起来。 - 没到期的约定和纪念日:一直保留,到日子就会想起来。 安装 需要 DSH,不用另装 Node.js,DSH 自带的就能跑。 在 Releases 页面找到最新的版本,把下面命令里的 <版本> 换成它(页面上标着 v0.7.12 的话,就填 0.7.12): dsh plugin --profile desktop add https://github.com/QuaonY/dsh-mem-weave/releases/download/v<版本>/dsh-mem-weave-<版本>.tgz --profile 填你在用的 profile,桌面端一般是 desktop,网页版是 web。tgz 已经下载到本地的话,也可以直接填文件路径: dsh plugin --profile desktop add file:<tgz 的完整路径> 装完重启 DSH,默认配置就能用。卸载把 add 换成 remove dsh-mem-weave。 记忆库默认放在 $DSH_HOME/memweave/memweave.db,可以在界面「备份 → 存储位置」里迁移。 用起来 界面 DSH 里有八个页面: | 页面 | 用途 | | 总览 | 状态、待办、最近动作 | | 人格 | 编辑人格、应用预设、回滚版本 | | 记忆 | 浏览、搜索、编辑记忆,设置约定和纪念日 | | 候选与冲突 | 确认 AI 想写的内容,处理冲突 | | 注入与预算 | 调整上限,查看每轮实际注入了什么 | | 治理与审计 | 撤销操作、查看记录 | | 备份 | 备份、恢复、导入导出 | | 高级 | 遗忘、召回、敏感词等细项 | 每轮对话结束后,对话里会显示一张小卡片,告诉你这轮记了什么。 内置人格 - 小满(大肥鱼):傲娇、话多、贪吃的鲸鱼娘助手。 - 林禾·夜班修理铺:安静、话少的夜班修理铺店主。 两套人格都讲究活人感:说话有节奏、有主见,不说客套话。她们不会编造自己的经历,你认真问身份时,会如实说自己是 AI。 记忆分层 | 层 | 放什么 | | soul | 关系状态 | | user | 你的偏好、习惯、身份 | | rules | 必须遵守的规则(只能由人写) | | project | 项目约定和进展 | | fact | 客观事实 | | lesson | 踩过的坑、被纠正的做法 | | topic | 话题、整理出来的摘要 | 给 AI 的工具 插件给 AI 提供 20 个 weave_* 工具,用来记忆、检索、整理和提建议。AI 只能调用权限范围内的,涉及人格、规则和裁决的操作会被拒绝。 对话里也可以直接输入命令,不消耗 token: /weave status | reload | preset <id> | strict on|off | dream 开发 pnpm build # 构建 lib/ pnpm typecheck # 类型检查 pnpm test # 运行测试 pnpm pack # 打成本地 tgz,用来自己安装 pnpm weave status # 命令行运维 | 目录 | 内容 | | src/core | 渲染、分词、打分、日历 | | src/store | 数据库、写入把关、整理 | | src/host | 插件入口、服务、AI 工具 | | src/client | 界面 | | src/presets | 内置人格 | | test / bench | 测试、召回基准 | 安全说明 - 界面里的写入、裁决、设置操作只允许人来做,AI 调用时固定以 agent 身份执行。 - 这条限制依赖宿主不让 AI 或其他插件直接调用本插件的远程接口。 - 数据库、日志、镜像等目录只能在配置文件里改,界面和远程调用改不了。 - 注入内容会清理特殊括号和换行,防止伪造段落。 - 日志不记录记忆正文。 许可 MIT © 2026 Quaon
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
QuaonY/dsh-mem-weave
让 AI 记住你的偏好与项目,开新会话无需重述
相关插件 · 技能 / 提示词
人设统管ZiChuanLan/agent-purge
一份系统提示词,喂给多个 coding…
★ 931已汉化DSH
73.8
人物画像蒸馏titanwings/distilly
Distilly — 把他们的思考方式提炼成可复用的技能,供任何智能体或机器人使用。原名 Colleague Skill(原同事 Skill)。
★ 25,659已汉化DSH
71.3
推理工作空间套件Tiger3807861189/J-Space-Cognition-Suite
J-Space 是面向复杂推理、大型仓库工程、子代理协作与授权安全分析的推理时工作空间和控制套件。
★ 2,957已汉化DSH
70.5
两阶段工具锚定预设xiaobright/dsh-anchored-standard
实验性 DeepSeek Harness agent preset…
★ 3,742已汉化DSH
70.1
智能体工作流编排nrslib/takt
不再日夜盯着 AI 编码智能体。
★ 1,402已汉化DSH
70
Agent 运行时手册Electricitysheep/dsh-handbook
DeepSeek Harness dsh 从 0 到 1 深度手册:安装/插件开发/性能调优/实测案例/同模型多…
★ 827已汉化DSH
68.7