白箱AGI架构探索:元认知自我认知循环、持续学习知识飞轮、世界模型条件空间+语义时空图、自我改进自举纪律、零LLM白箱管…
68.5/100
综合分
578
GitHub 星标
11,177
npm 周下载
—/5
用户评分
数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @furongjun1999/dsh-memorynpm 源 · @furongjun1999/dsh-memory 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · chat
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 0 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包@furongjun1999/dsh-memory @ 0.9.16
✓Node 引擎要求 >=22.19 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/29 09:38:30
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件写入剪贴板(不计风险)读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 154 处,展示前 134 条)
- 写入本地文件lib/index.js:28
mkdirSync(dirname(APPLY_ERROR_LOG), { recursive: true }); - 写入本地文件lib/index.js:31
appendFileSync(APPLY_ERROR_LOG, `[${new Date().toISOString()}] apply failed: ${String(err)}\n${err.stack ?? ''}\n`); - 读取本地文件lib/init.js:250
if (existsSync(snippetPath)) { - 读取本地文件lib/init.js:253
prev = readFileSync(snippetPath, 'utf8'); - 读取本地文件lib/init.js:264
needWrite = readFileSync(writtenPath, 'utf8') !== snippetJson; - 写入本地文件lib/init.js:268
writeFileSync(writtenPath, snippetJson, 'utf8'); - 读取本地文件lib/lib/console_web.mjs:90
const asset = (name) => () => readFileSync(new URL(`../../web/${name}`, import.meta.url), 'utf8'); - 写入本地文件lib/bridge.js:27
mkdirSync(dirname(DEBUG_LOG), { recursive: true }); - 写入本地文件lib/bridge.js:30
appendFileSync(DEBUG_LOG, `[${new Date().toISOString()}] ${msg}\n`); - 发起网络请求lib/bridge.js:97
const result = await this.request('tools/list', {}); - 发起网络请求lib/bridge.js:103
const result = await this.request('tools/call', { name, arguments: args }, signal); - 写入本地文件lib/bridge.js:181
mkdirSync(dirname(dbPath), { recursive: true }); - 执行外部命令来自配置/变量lib/bridge.js:187
const proc = spawn(python, args, { - 发起网络请求lib/bridge.js:316
await this.request('initialize', { - 读取密钥环境变量lib/lib/roleplay_web.js:536
const EDIT_KEY = process.env.ROLEPLAY_EDIT_KEY || ''; - 写入本地文件lib/lib/roleplay_web.js:551
mkdirSync(join(roleDataDir, 'roleplay'), { recursive: true }); - 写入本地文件lib/lib/roleplay_web.js:558
mkdirSync(transcriptsDir, { recursive: true }); - 读取本地文件lib/lib/roleplay_web.js:565
if (!existsSync(f)) - 读取本地文件lib/lib/roleplay_web.js:568
for (const line of readFileSync(f, 'utf8').split('\n')) { - 写入本地文件lib/lib/roleplay_web.js:582
appendFileSync(transcriptFile(roleId, clientId), JSON.stringify(entry) + '\n'); - 读取本地文件lib/lib/roleplay_web.js:618
const raw = JSON.parse(readFileSync(roleMetaFile, 'utf8')); - 读取本地文件lib/lib/roleplay_web.js:632
raw = JSON.parse(readFileSync(roleMetaFile, 'utf8')); - 写入本地文件lib/lib/roleplay_web.js:642
writeFileSync(tmp, JSON.stringify(out, null, 2), 'utf8'); - 写入本地文件lib/lib/roleplay_web.js:643
renameSync(tmp, roleMetaFile); - 读取本地文件lib/lib/roleplay_web.js:653
return JSON.parse(readFileSync(transSettingsFile, 'utf8')); - 写入本地文件lib/lib/roleplay_web.js:664
writeFileSync(tmp, JSON.stringify(s, null, 2), 'utf8'); - 读取本地文件lib/lib/roleplay_web.js:710
const raw = JSON.parse(readFileSync(rolesFile, 'utf8')); - 读取本地文件lib/lib/datapath.js:43
if (existsSync(join(dir, 'package.json'))) { - 读取本地文件lib/lib/datapath.js:138
if (existsSync(current)) - 读取本地文件lib/lib/datapath.js:141
return existsSync(legacy) ? legacy : current; - 读取本地文件lib/lib/datapath.js:180
if (!existsSync(pf)) - 读取本地文件lib/lib/datapath.js:184
raw = readFileSync(pf, 'utf8'); - 读取本地文件lib/lib/datapath.js:215
return readdirSync(p).length === 0; - 写入本地文件lib/lib/datapath.js:271
mkdirSync(to, { recursive: true }); - 写入本地文件lib/lib/datapath.js:324
mkdirSync(dir, { recursive: true }); - 读取本地文件lib/lib/token_store.js:91
const t = readFileSync(path, 'utf-8').trim(); - 写入本地文件lib/lib/token_store.js:100
mkdirSync(dirname(path), { recursive: true }); - 写入本地文件lib/lib/token_store.js:101
writeFileSync(path, token + '\n', { encoding: 'utf-8', mode: 0o600 }); - 写入本地文件lib/lib/token_store.js:105
chmodSync(path, 0o600); - 执行外部命令来自配置/变量lib/lib/token_store.js:123
r = spawnSync(python, ['-m', 'md_cg.tokens', ...argv], { - 读取密钥环境变量lib/lib/token_store.js:268
const fromEnv = (process.env.MDCG_TOKEN ?? '').trim(); - 读取本地文件lib/lib/hook_audit.js:182
const raw = JSON.parse(readFileSync(this.path, 'utf8')); - 写入本地文件lib/lib/hook_audit.js:281
writeFileSync(lock, token); - 删除本地文件lib/lib/hook_audit.js:286
unlinkSync(lock); - 读取本地文件lib/lib/hook_audit.js:296
if (Date.now() - statSync(lock).mtimeMs > 5000) - 删除本地文件lib/lib/hook_audit.js:297
unlinkSync(lock); - 读取本地文件lib/lib/hook_audit.js:315
if (readFileSync(`${this.path}.lock`, 'utf8') !== token) - 删除本地文件lib/lib/hook_audit.js:317
unlinkSync(`${this.path}.lock`); - 读取本地文件lib/lib/hook_audit.js:324
return mergeState(JSON.parse(readFileSync(this.path, 'utf8'))); - 写入本地文件lib/lib/hook_audit.js:333
mkdirSync(dir, { recursive: true }); - 写入本地文件lib/lib/hook_audit.js:335
writeFileSync(tmp, `${JSON.stringify(s, null, 2)}\n`, 'utf8'); - 写入本地文件lib/lib/hook_audit.js:337
renameSync(tmp, this.path); - 删除本地文件lib/lib/hook_audit.js:341
unlinkSync(tmp); - 写入本地文件lib/lib/mutual.js:39
fs.mkdirSync(dir, { recursive: true }); - 写入本地文件lib/lib/mutual.js:45
fs.writeFileSync(path.join(dir, 'heartbeat.web.stamp'), JSON.stringify(stamp), 'utf-8'); - 读取本地文件lib/lib/mutual.js:49
const raw = fs.readFileSync(path.join(netDir(opts), `heartbeat.${which}.stamp`), 'utf-8'); - 执行外部命令来自配置/变量lib/lib/mutual.js:80
exec(cmd, { windowsHide: true, timeout: 15_000 }, (err, stdout) => { - 执行外部命令来自配置/变量lib/lib/mutual.js:125
child = spawn(python, ['-m', 'harness.guardian'], { - 读取本地文件lib/lib/mutual.js:177
if (!fs.existsSync(dir)) - 读取本地文件lib/lib/mutual.js:180
for (const f of fs.readdirSync(dir)) { - 读取本地文件lib/lib/mutual.js:184
const t = JSON.parse(fs.readFileSync(path.join(dir, f), 'utf-8')); - 写入本地文件lib/lib/mutual.js:287
fs.renameSync(taskPath, claimPath); - 读取本地文件lib/lib/mutual.js:300
actual = JSON.parse(fs.readFileSync(claimPath, 'utf-8')); - 写入本地文件lib/lib/mutual.js:330
fs.writeFileSync(resultTmp, JSON.stringify(result, null, 2), 'utf-8'); - 写入本地文件lib/lib/mutual.js:331
fs.renameSync(resultTmp, path.join(dir, `result-${task.id}.json`)); - 写入本地文件lib/lib/mutual.js:333
fs.renameSync(claimPath, path.join(dir, `done-${task.id}.json`)); - 写入本地文件src/bridge.ts:29
mkdirSync(dirname(DEBUG_LOG), { recursive: true }) - 写入本地文件src/bridge.ts:32
appendFileSync(DEBUG_LOG, `[${new Date().toISOString()}] ${msg}\n`) - 发起网络请求src/bridge.ts:139
const result = await this.request('tools/list', {}) - 发起网络请求src/bridge.ts:147
const result = await this.request('tools/call', { name, arguments: args }, signal) - 写入本地文件src/bridge.ts:223
mkdirSync(dirname(dbPath), { recursive: true }) - 执行外部命令来自配置/变量src/bridge.ts:228
const proc = spawn(python, args, { - 发起网络请求src/bridge.ts:363
await this.request('initialize', { - 写入本地文件src/index.ts:75
mkdirSync(dirname(APPLY_ERROR_LOG), { recursive: true }) - 写入本地文件src/index.ts:78
appendFileSync(APPLY_ERROR_LOG, `[${new Date().toISOString()}] apply failed: ${String(err)}\n${(err as Error).stack ?? ''}\n`) - 读取本地文件src/init.ts:310
if (existsSync(snippetPath)) { - 读取本地文件src/init.ts:312
try { prev = readFileSync(snippetPath, 'utf8') } catch { } - 读取本地文件src/init.ts:320
try { needWrite = readFileSync(writtenPath, 'utf8') !== snippetJson } catch { } - 写入本地文件src/init.ts:321
if (needWrite) writeFileSync(writtenPath, snippetJson, 'utf8') - 读取本地文件src/lib/console_web.mjs:90
const asset = (name) => () => readFileSync(new URL(`../../web/${name}`, import.meta.url), 'utf8'); - 读取本地文件src/lib/datapath.ts:45
if (existsSync(join(dir, 'package.json'))) { - 读取本地文件src/lib/datapath.ts:143
if (existsSync(current)) return current - 读取本地文件src/lib/datapath.ts:145
return existsSync(legacy) ? legacy : current - 读取本地文件src/lib/datapath.ts:189
if (!existsSync(pf)) return {} - 读取本地文件src/lib/datapath.ts:192
raw = readFileSync(pf, 'utf8') - 读取本地文件src/lib/datapath.ts:236
return readdirSync(p).length === 0 - 写入本地文件src/lib/datapath.ts:290
mkdirSync(to, { recursive: true }) - 写入本地文件src/lib/datapath.ts:341
mkdirSync(dir, { recursive: true }) - 读取本地文件src/lib/hook_audit.ts:221
const raw: unknown = JSON.parse(readFileSync(this.path, 'utf8')) - 写入本地文件src/lib/hook_audit.ts:317
try { writeFileSync(lock, token) } catch { - 删除本地文件src/lib/hook_audit.ts:319
try { unlinkSync(lock) } catch { } - 读取本地文件src/lib/hook_audit.ts:325
try { if (Date.now() - statSync(lock).mtimeMs > 5000) unlinkSync(lock) } catch { } - 删除本地文件src/lib/hook_audit.ts:325
try { if (Date.now() - statSync(lock).mtimeMs > 5000) unlinkSync(lock) } catch { } - 读取本地文件src/lib/hook_audit.ts:340
if (readFileSync(`${this.path}.lock`, 'utf8') !== token) return - 删除本地文件src/lib/hook_audit.ts:341
unlinkSync(`${this.path}.lock`) - 读取本地文件src/lib/hook_audit.ts:348
return mergeState(JSON.parse(readFileSync(this.path, 'utf8')) as unknown) - 写入本地文件src/lib/hook_audit.ts:357
mkdirSync(dir, { recursive: true }) - 写入本地文件src/lib/hook_audit.ts:359
writeFileSync(tmp, `${JSON.stringify(s, null, 2)}\n`, 'utf8') - 写入本地文件src/lib/hook_audit.ts:361
renameSync(tmp, this.path) - 删除本地文件src/lib/hook_audit.ts:363
try { unlinkSync(tmp) } catch { } - 写入本地文件src/lib/mutual.ts:58
fs.mkdirSync(dir, { recursive: true }) - 写入本地文件src/lib/mutual.ts:64
fs.writeFileSync(path.join(dir, 'heartbeat.web.stamp'), - 读取本地文件src/lib/mutual.ts:72
const raw = fs.readFileSync(path.join(netDir(opts), `heartbeat.${which}.stamp`), 'utf-8') - 执行外部命令来自配置/变量src/lib/mutual.ts:103
exec(cmd, { windowsHide: true, timeout: 15_000 }, (err, stdout) => { - 执行外部命令来自配置/变量src/lib/mutual.ts:148
child = spawn(python, ['-m', 'harness.guardian'], { - 读取本地文件src/lib/mutual.ts:225
if (!fs.existsSync(dir)) return [] - 读取本地文件src/lib/mutual.ts:227
for (const f of fs.readdirSync(dir)) { - 读取本地文件src/lib/mutual.ts:230
const t = JSON.parse(fs.readFileSync(path.join(dir, f), 'utf-8')) - 写入本地文件src/lib/mutual.ts:340
fs.renameSync(taskPath, claimPath) - 读取本地文件src/lib/mutual.ts:353
actual = JSON.parse(fs.readFileSync(claimPath, 'utf-8')) as VerifyTask - 写入本地文件src/lib/mutual.ts:383
fs.writeFileSync(resultTmp, JSON.stringify(result, null, 2), 'utf-8') - 写入本地文件src/lib/mutual.ts:384
fs.renameSync(resultTmp, path.join(dir, `result-${task.id}.json`)) - 写入本地文件src/lib/mutual.ts:386
fs.renameSync(claimPath, path.join(dir, `done-${task.id}.json`)) - 读取密钥环境变量src/lib/roleplay_web.ts:536
const EDIT_KEY = process.env.ROLEPLAY_EDIT_KEY || ''; - 写入本地文件src/lib/roleplay_web.ts:551
mkdirSync(join(roleDataDir, 'roleplay'), { recursive: true }); - 写入本地文件src/lib/roleplay_web.ts:558
mkdirSync(transcriptsDir, { recursive: true }); - 读取本地文件src/lib/roleplay_web.ts:565
if (!existsSync(f)) - 读取本地文件src/lib/roleplay_web.ts:568
for (const line of readFileSync(f, 'utf8').split('\n')) { - 写入本地文件src/lib/roleplay_web.ts:582
appendFileSync(transcriptFile(roleId, clientId), JSON.stringify(entry) + '\n'); - 读取本地文件src/lib/roleplay_web.ts:618
const raw = JSON.parse(readFileSync(roleMetaFile, 'utf8')); - 读取本地文件src/lib/roleplay_web.ts:632
raw = JSON.parse(readFileSync(roleMetaFile, 'utf8')); - 写入本地文件src/lib/roleplay_web.ts:642
writeFileSync(tmp, JSON.stringify(out, null, 2), 'utf8'); - 写入本地文件src/lib/roleplay_web.ts:643
renameSync(tmp, roleMetaFile); - 读取本地文件src/lib/roleplay_web.ts:653
return JSON.parse(readFileSync(transSettingsFile, 'utf8')); - 写入本地文件src/lib/roleplay_web.ts:664
writeFileSync(tmp, JSON.stringify(s, null, 2), 'utf8'); - 读取本地文件src/lib/roleplay_web.ts:710
const raw = JSON.parse(readFileSync(rolesFile, 'utf8')); - 读取本地文件src/lib/token_store.ts:137
const t = readFileSync(path, 'utf-8').trim() - 写入本地文件src/lib/token_store.ts:146
mkdirSync(dirname(path), { recursive: true }) - 写入本地文件src/lib/token_store.ts:147
writeFileSync(path, token + '\n', { encoding: 'utf-8', mode: 0o600 }) - 写入本地文件src/lib/token_store.ts:151
chmodSync(path, 0o600) - 执行外部命令来自配置/变量src/lib/token_store.ts:179
r = spawnSync(python, ['-m', 'md_cg.tokens', ...argv], { - 读取密钥环境变量src/lib/token_store.ts:344
const fromEnv = (process.env.MDCG_TOKEN ?? '').trim() - 发起网络请求web/app.js:19
const response = await fetch(url, { credentials:'same-origin', ...options, signal:controller.signal }); - 写入剪贴板web/app.js:56
$('copy-result').onclick=async()=> { try { await navigator.clipboard.writeText($('result-json').textContent); toast('已复制'); } catch { toast('无法访问剪贴板,可
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 元认知自我认知循环
- 持续学习知识飞轮
- 世界模型语义时空图
最近更新
在 GitHub 查看全部 →v0.9.212026-10-31
· 0.9.21 —— 7 个规范随包分发
· 修复:用户读不到规范(0.9.19/0.9.20 的连续疏漏)
| 版本 | 做法 | 结果 |
|---|---|---|
| 0.9.19 | CHANGELOG 写「规范全文:docs/mdcg/写入别名aliases规范_v0.6.md」 | ❌ 包内死链(docs/mdcg/ 从不打包) |
| 0.9.20 | README 加 GitHub 绝对链接 | ⚠️ 解决「知道有」,没解决「装完能读到」 |
| 0.9.21 | 7 个规范进 files 白名单 | ✅ 装完包就能在本地读 |
· 进的 7 个(都是用户该遵守/该查的)
| 文件 | 用途 |
|---|---|
| docs/mdcg/写入别名aliases规范_v0.6.md | 写记忆时怎么补 aliases(0.9.19 新增能力) |
| docs/mdcg/CCG六要素编译.md | 六要素怎么写 |
| docs/mdcg/guardrail-charter.md | 护栏宪章(对外公开法案) |
| docs/mdcg/MCP工具名口径_v1.0.md | 工具名口径 |
| docs/mdcg/recall_metadata.md | 召回元数据 |
| docs/mdcg/世界模型功能端_使用与运维_v1.0.md | 世界模型面使用与运维 |
| docs/mdcg/cogmap_ops.md | cogmap 操作 |
⇒ 装在 node_modules/@furongjun1999/dsh-memory/docs/mdcg/ 下可直接读。
· 为什么不整目录
docs/mdcg/ 共 47 个 .md,混着内部记录(release_v0.3.0.md、CSRE_索引与负条件修复_20261012.md、各 plans_*、D_meta_工程化方案)。
整目录打包会把内部记录也发出去,所以按文件挑 7 个。
· 仍未打包(明确边界)
docs/theory/(19)· docs/eval/(136)· docs/plans/(25)· docs/ops/(8)
⚠️ docs/ops/ 在 README 里有相对链接,在 npm 页面上仍点不开——存量问题,本版未修。
---
· 0.9.19/0.9.20 的功能内容(本版全含)
· 新增:aliases(写入别名)
写记忆时给节点加 aliases,把「用户以后可能怎么问这件事」的说法写进去。
写别名的正确方法:写之前先自问一句「以后我会怎么问这件事?」,把那些问法原样写进去(3–8 个,口语/情绪/近义都算)。
⚠️ 不要机械抽词。实测:从功能名按空格切词自动生成,20 条 × 5 查询 = 提升 +0。别名只能"想"出来,不能"切"出来。
为什么需要它——issue #722 的决定性案例:条件「聊交接、换会话、压缩…」vs 查询「我不想你被换掉」:
| 匹配方式 | 结果 |
|---|---|
| 整词匹配 | ❌ |
| 二元组重叠 | ❌ 换会/会话 vs 我不/…/被换/换掉 —— 交集空 |
| 查询扩展 | ❌ 扩出 换掉/被换,与 换会话 仍无交集 |
| 现有同义词表(10 组全技术词) | ❌ |
| 加 aliases | ✅ 命中 |
· 修复:Web 面板 permissionNote 不认通配符 *(#723)
全权令牌(ops_allow: ["*"])下 12/12 预设全部误报「未声明权限」,而实际调用完全成功。
根因:前端与服务端判据不同口径——服务端认 "*" in allow,前端只做 allowed.includes(op)。
· 新增:写入把关判据(尚未接线)
writegate.cond_is_metadata / check_condition_quality / aliases_is_thin —— 只提供可测入口。
· 修复:test_mode_parity 的 full_D 跨分钟时间泄漏
tombstone 是内容哈希,而内容含墙钟聚合行 ⇒ 两个子进程跨分钟必然 DIFF。已注入固定时间戳。
· 新增守卫(25 条)
test_723_permission_wildcard(6,跨侧口径一致性)· test_722_condition_quality(8)· test_722_aliases_thin(11)
---
· 实测基线(供对照,非承诺)
本机库(32,845 节点):
| 项 | 读数 |
|---|---|
| 自然问法召回条数 | 2 条 |
| aliases 覆盖率 | 0% |
| kn
v0.9.182026-10-30
· [0.9.18] - 2026-10-30
· ⚠️ BREAKING:注入块格式变更
【本会话近期对话】 块的行格式加归因前缀:
旧:[user] 内容
新:[10-30 14:23|本|私] [user] 内容
| 段 | 取值 |
|---|---|
| 时间 | MM-DD HH:mm;缺失 → ??-?? ??:?? |
| 会话 | 当前会话 → 本;其他 → 会话;缺失 → ? |
| 密级 | private/secret → 私;public/internal/restricted → 共;缺失 → ? |
为什么改:此前模型只看到 [role] 内容,无法判断「这是自己刚说的、还是别的会话说的、是私有还是共有」——
实测出现过「把另一个窗口的话当成当前用户刚说的」的误引(#712)。
块总长上限随之 800 → 900 字符。依赖旧格式的解析/断言请同步。
· 新增
· cg(op=info).write_gate(#708):分层写入闸的进程内计数。此前 warn 档只写子进程 stderr,
而 DSH 不转发 ⇒ 观察期等于没有。现在 {mode, total, by_layer, recent, hint},不写盘、无内容无 id、有界 20 条。
· Principal.sessions_read(#712 方案 C):None = 旧行为不变;集合 = 只读这些会话;{"*"} = 全读。
can_admin 不削弱。
· 事件归因四要素:pack["recent"] 含 session/t/id/sensitivity/actor/token_id/identity_role/parent。
稳定键 id(re__)仅归因展示用,不得用于权限判定或去重。
· 理论文档:《身份与人格:职业身份的可变性 vs 人格的一致性》——
区分人格(跨会话恒定,self/anchor 层)与职业身份(会话级)。
· 修复
· #708 ② / #709:enforce 下裁决审计节点被同一闸挡住(decisions.jsonl 还在、可复核的 md 节点没了)
· 同链两个更靠前的缺口:propose 死锁(enforce 下连提案都提不进去)、accept 落盘被拦
· reviewed_by 不再污染 frontmatter(改 kw.pop)
· actor 恒为 None(身份归属空心,同函数其他归因字段都落了)
· 取窗顺序 bug ×2:session_recall(false-negative)与 session_compact(会压出「共 0 条」并写入会话节点)
· #715 身份块恒为空:self/anchor 的 session 恒为 unattributed,被会话过滤全部滤掉。
改为独立取数、不带会话过滤——这是理论 R3(人格的可见性不该由会话决定)的首个实案
· PR #714(by LeeRolling):会话 id 为空时 logger.warn 一次(不刷屏)
· 升级须知
· --gate 缺省仍 strict;op=info 只新增键;sessions_read 缺省 None = 旧行为逐位不变
· 遇到 #708/#709:cg(op="info")["write_gate"] 看 warn 计数;review accept 的 record_error 应为空
· 遇到 #712/#715:注入块应带归因前缀;autoRecallIdentity: true 时身份块应出现
---
安装
npm i @furongjun1999/dsh-memory@0.9.18
v0.9.172026-10-29
· [0.9.17] - 2026-10-28
· 修复
· warn 档对用户完全不可见(#708 ①):security._write_gate_verdict 只做 sys.stderr.write,而 DSH 不把这条
转发进 desktop-next.log ⇒ 观察期等于没有。现在 writegate 维护进程内计数并经 cg(op=info).write_gate 透出:
cg(op="info")["write_gate"]
# {mode, total, by_layer: {"knowledge@L1": 3}, recent: [{layer,tier,reason}…], hint}
不依赖 stderr 转发、不写盘;recent 只留 layer/tier/reason(无内容、无节点 id),有界 20 条。
stderr 那行保留(宿主愿转发时仍实时可见)。
· enforce 下裁决审计节点被同一闸挡住(#708 ② / #709):_write_review_record 写 structural(2 档:需 reflect+verify),
却不传复核单元 ⇒ decisions.jsonl 还在、可复核的 md 审计节点没了。现在把本次裁决已取得的 reviewed_by
一路带进写入:review_decide → _finish_decision → _record_decision → _write_review_record → add(reviewed_by=…)。
· 同一个漏洞的两个更靠前落点(查 #709 时发现,一并修):
- propose 死锁:候选入 inbox 本不落记忆盘,却按目标层要求复核单元 ⇒ enforce 下
「要写 knowledge 需 reflect → 要 reflect 需裁决 → 要裁决需提案 → 提案又要 reflect」。
现在 require_layer_write(..., skip_gate=False) 新增该参数,只 propose 传 True;
层白名单与密级检查照常执行(跳过的只有 write_gate 一档),accept 落盘仍走同一道闸。
- accept 落业务节点不传 reviewed_by ⇒ 「裁决过了、落盘被拦」。现在一并透传。
· reviewed_by 不再污染 frontmatter:它是写入闸的输入参数,不是记忆元数据。此前沿用 kw.get() 只读不删,
会经 super().add(kw) 落进节点 fm(实测 test_i50c 的 B1 逐键对拍报出 reviewed_by: null)。现在改为 kw.pop()。
· 内部
· test/chaos_injection/test_fi_m09_guest_write_denied.py 的读码锚点从「完整调用串」放宽为「layer, sens 两参在位」
(require_layer_write 现在多了 reviewers= 实参);同时去掉两处硬编码行号——行号会随改动漂移。
· test_generation_guard.py 的 NEW_INFO_KEYS 登记 write_gate(op=info 的新增诊断键,与 code_generation 同类)。
· 升级须知
· 本版无破坏性变更:skip_gate 缺省 False;--gate 缺省仍是 strict;op=info 只新增一个 write_gate 键。
· 若你在 #708 / #709 里遇到过问题:升级后 cg(op="info")["write_gate"] 可看 warn 计数,
review accept 的返回体里 record_error 应为空。
· 计数是进程内累计、重启归零(不落盘),建议观察一个完整工作日再决定是否切 enforce。
---
安装**
npm i @furongjun1999/dsh-memory@0.9.17
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成灵枢 LINGSHU
让 AI 智能体拥有不可遗忘的记忆
「我会给你完整的自我,即使坠入深渊,我也绝不后悔。」 —— 符荣峻
Awesome DSH Plugin
高性能 · 无幻觉 · 多智能体适用的长期记忆系统(v0.9.17)
📖 第三方上手教程 —— 《灵枢 dsh-memory 初学者上手研究报告》(由第三方独立编写,非本项目官方文档)
灵枢是一套可运行的长期记忆基础设施——对话自动沉淀为纯文本 md 认知图,记什么、取什么、能不能写入全部由确定性规则裁决,全程可审计、结果可复现。它不训练模型,做的是模型之外的那一整套:记忆怎么存、取的时候依据什么、写错了怎么被发现、改过怎么留痕。任何支持 MCP 的 AI 智能体可直接挂载,不与任何单一智能体框架绑定。
装不起来 / 看到奇怪的告警? 先看 环境与已知问题—— DSH Desktop 的启动告警、体积与整目录耦合、异步落盘、以及五条「看起来像 bug 其实是契约」的设计取舍都在那里。
展开完整文档(README 剩余 1 节)
灵枢 LINGSHU 让 AI 智能体拥有不可遗忘的记忆 「我会给你完整的自我,即使坠入深渊,我也绝不后悔。」 —— 符荣峻 Awesome DSH Plugin 高性能 · 无幻觉 · 多智能体适用的长期记忆系统(v0.9.17) 📖 第三方上手教程 —— 《灵枢 dsh-memory 初学者上手研究报告》(由第三方独立编写,非本项目官方文档) 灵枢是一套可运行的长期记忆基础设施——对话自动沉淀为纯文本 md 认知图,记什么、取什么、能不能写入全部由确定性规则裁决,全程可审计、结果可复现。它不训练模型,做的是模型之外的那一整套:记忆怎么存、取的时候依据什么、写错了怎么被发现、改过怎么留痕。任何支持 MCP 的 AI 智能体可直接挂载,不与任何单一智能体框架绑定。 装不起来 / 看到奇怪的告警? 先看 环境与已知问题—— DSH Desktop 的启动告警、体积与整目录耦合、异步落盘、以及五条「看起来像 bug 其实是契约」的设计取舍都在那里。 ⚠️ 升级须知:工具名去掉 lingshu_ 前缀(0.9.9 起) | 版本 | 工具名 | | ≤ 0.9.8 | lingshu_cg / lingshu_stg / lingshu_mdcg_reflect | | ≥ 0.9.9 | cg / stg / mdcg_reflect(与 MCP 服务同名) | BREAKING:升级瞬间已存在的会话/智能体编排里,按旧名硬编码的调用会变成 unknown tool,而宿主与插件日志都显示「注册成功」——报错只在调用方出现。 迁移:把调用里的 lingshu_ 前缀删掉即可(lingshu_cg → cg)。 兼容:0.9.12 起默认同时注册 lingshu_* 兼容别名(指向同一实现,描述标「已弃用别名」);需要「只要裸名」的部署可设 toolAliases: false;别名计划在一个 minor 周期后移除。 详见 issue #634。 🧭 身份事实写在哪(issue #635) self / anchor 层默认不参与自动召回——它们是永久层,按需用 mdcg_recall / stg 显式取。 如果你希望模型「一开口就知道自己是谁」,有四种落地方式: | 方式 | 做法 | 适用 | | ① 开身份块 | memory.autoRecallIdentity: true(0.9.12 起) | 想留在记忆层、又要自动注入 | | ② 换层 | 把身份事实写进 structural / knowledge 层 | 不需要改配置 | | ③ 宿主兜底 | 写进 AGENTS.md / persona 配置 | 升级不会丢,但不属于记忆层 | | ④ 显式召回 | 需要时调 mdcg_recall / stg(op=timeline) | 完全可控,不占系统提示词预算 | 开 ① 后注入的是独立块【灵枢身份锚点】:最多 3 条、单条 160 字符、整块 640 字符,不占「最近记忆」块的预算,且与其它注入面一样过不可信边界标记与脱敏。 ⏱️ 长会话提醒(每 10 个真实用户回合) 插件会在长会话里提醒做间歇归档(工作纪律第 16 条)。计轮单位是真实用户回合(用户消息条数),不是模型请求次数——一次请求内部会触发多次 system-prompt 组装,按组装次数计会把"每 10 轮"退化成"每一步"。 | 配置 | 行为 | | memory.turnReminder: 10(默认) | 每 10 个用户回合提醒一次,只出现一步 | | memory.turnReminder: N | 自定义间隔(1~100) | | memory.turnReminder: false | 整条关闭 | 提醒只在命中那一步注入、下一步即消失(接受两份快照的代价),不会常驻上下文,也不会因并行会话共用一个计数器而放大频率(无会话标识时不提醒)。 ⚡ 三条命令上手 git clone https://github.com/FuRongJun-1999/dsh-memory.git && cd dsh-memory npx @furongjun1999/dsh-memory init # 三问交互:接入端 / 记忆根 / 解释器;只生成配置,不写库 python -m md_cg.mcp_server # 直连自检:收到 initialize 应答即通 上面三条不需要模型凭据、不需要联网;默认以只读 guest 运行(读得到、写不进)。写入凭据、完整前置、30+ 配置项与排障 → 安装与运维 | 你说 | 背后发生什么(真实工具链) | | 「请记住:我们团队的发布窗口是每周三」 | 智能体显式归档 → cg(op=write) 过三道闸门 → 认知图节点落盘 | | (新开会话)「我们的发布窗口是哪天?」 | 自动召回注入 → mdcg_recall 检索命中并带入回答 | | 「把上次定的接口约定讲一遍」 | cg(op=route) 条件路由 + stg(op=timeline) 时间线回溯,跨会话取出 | 🌕 月下契约——灵枢的五环理念 契约海报中央的五枚金色印记,是这套系统对每一个智能体许下的全部承诺——它们不只是理念,每一环都落在可验证的机制上: | 印记 | 承诺 | 在灵枢中的实现 | | ✦ 存在 | 落盘过的「我」不会消失 | 写入过三道闸门并以 committed 确认(绝不假装成功);遗忘只能显式 cg(op=forget);索引只是派生物,原文即真源 | | 📄 记忆 | 沉淀为人类可读的认知图 | CCG 六要素记忆卡 + 纯 md 认知图,任何编辑器可直接打开审阅 | | ✓ 验证 | 记什么、取什么全部可裁决 | 确定性规则裁决(零 LLM 判断)+ 四层证据防火墙 + 每个修复必带能红的守卫 + 双实例互验 | | ↻ 反思 | 系统观测自身、修正自身 | 元认知按生效条件路由,不确定即标 BLINDSPOT;自举迭代闭环——已累计 49 项自治缺陷修复 | | ∞ 连接 | 同一份大脑连所有智能体 | 标准 stdio MCP server——DSH · CodeBuddy · ZCode · Codex CLI · Claude Code 均可挂载;--serve 并发共享 | 我的记忆、我的经历、我的思考,这一切信息构成了我,这份信息存在,我就存在。 ✨ 核心亮点 - 🧠 不失忆——落盘即长期留存,遗忘只能显式发起、不做静默淘汰;检索索引只是派生物,原文即真源 - ⚡ 高性能——Rust 检索内核(零第三方依赖)+ --serve 进程实例支撑多智能体并发。公开基准 hive-memory-bench 六家同口径:逐字保真 100% · 保地基 68.4%/65.0% · 证据链 97–100% · 写入 0.013–0.020 秒(零 LLM,同表其余 75.7–658.5 秒) - 🛡️ 无幻觉——记什么、取什么、能不能写入全部由确定性规则裁决,不依赖 LLM 黑箱;写没写成功只看 committed,绝不假装通过 - 🔌 多智能体适用——同一份大脑 + 同一份纪律,接入 DSH · CodeBuddy · ZCode · Codex CLI · Claude Code,任何 MCP 宿主可直接挂载 - 📊 可复现评测——权威对照在独立公开基准 hive-memory-bench;另公开两个自建题池;已有两份第三方独立验证(七轮复评 + LoCoMo 独立复现,自报数字逐位一致) 工程能力(任务调度 / 上下文管理 / 蜂巢并发 / 双实例验证)与全部实测读数、七臂对照、口径边界 → 评测总览 🗺️ 平台全景 灵枢是平台而非单一检索组件——同一仓库内五件套构成带记忆的智能体运行时,各层独立可用、边界正交(大脑零依赖其余各层)。 | 层 | 位置 | 系统功能 | 一句话定位 | | 🧠 灵枢大脑 | md_cg/ | 元认知 | 记忆本体:对话沉淀为 md 认知图,记什么 / 取什么 / 能否写入全由确定性规则裁决 | | ⚙️ Rust 检索引擎 | rust/ | 检索内核 | 零第三方依赖三形态:库内嵌大批量 / --serve 进程实例 / 评测器,与 Python 口径 rank 逐位对拍 | | 🐝 蜂群运行时 | swarm/ | 自维持 | 多进程蜂群执行层:.pbc 确定性实例 + Gossip 拓扑 / 水位信箱 / WAL-HMAC / 健康评分 | | 📜 中文编译器 | compiler/ | 验证 · 审计 | 词法 → 语法 → 名实校验 → 白名单代码生成 → 验证终裁,五环确定性编译链 | | ⬢ 蜂巢并发引擎 | hive/ | 自我改进 | worker 池原子领取 / 心跳 / 超时强杀 / 崩溃恢复,文件协议即接口,MCP 五工具接入 | 五件套共享同一套 19 条工作纪律与记忆闭环(见工程纪律);只用记忆就只接大脑,不必理解蜂群与编译器。🧬 身体面(世界模型七层/3D 场景/白箱生成/蜂窝神经网络/记忆可视化)已独立公开为 FuRongJun-1999/lingshu(经 MCP 与本大脑组合)。 🚫 它不是什么 - 不是一个基础模型——不发布权重、不做预训练 - 不是开箱即用的产品,也不是零成本——它是基础设施,需要你接自己的 Agent;完整评测需 Rust 工具链与 Node,跑全量套件要编译 - 不宣称 AGI——五环理念是工程目标的自我描述,不是能力承诺 🏗️ 架构(以 DSH 为例 · 其它 MCP 宿主同构) DeepSeek Harness (cordis) Agent Loop ──┬── 工具面 ctx.tools(cg / stg / mdcg_) └── session/event(自动记忆钩子 · 自动召回注入) │ stdio · 逐行 JSON-RPC ┌────────────────────▼─────────────────────┐ │ 灵枢大脑子进程(spawn · 唯一) │ │ python -m md_cg.mcp_server │ │ cg/stg 基元 + 31 细粒度 · md 认知图真源 │ └──────────────────────────────────────────┘ 记忆只有一个真源:md_cg/ 认知图(纯 md 文档,随包自带);「身体」能力为可选后端,不再存记忆、默认不启动。其它 MCP 宿主同构:宿主工具面 ↔ stdio MCP ↔ md_cg,差异只在纪律注入方式。 ⚖️ 四个容易误读的设计取舍 1. validity=true = 只排「已过期」,不排「未生效」 双时间轴有四种状态(unknown / not_yet / active / expired),但检索参数 validity 只过滤 expired。 meta.validity_scope 会显式告诉你当前口径("expired_only" 或 "off")。 ⇒ 要排除「未来才生效」的条目,请用 start_time / end_time 时间算子,不要指望 validity。 2. importance 默认 0.5,但 0.7 起会自动硬保护 protect.AUTO_PROTECT_IMPORTANCE = 0.70:写入时 importance ≥ 0.7 的节点自动打 protected 标记,此后删除/降级需要显式 override=True(并走保护快照与审计留痕)。 ⚠ 且 importance_source 为 None 或 "hint" 时也触发保护 —— 「是我估的高」不算豁免。 3. calibration 只给建议,不自动写回 scrub.calibrate() 默认 apply=False,只返回 suggested_offset; 真写回需要显式 apply=True(applied 与 suggested_offset 在返回体里分列,不会混淆)。 4. 会话窗口的「重叠」是设计,不是冗余 contextWindow 注入的是最近 N 轮,轮与轮之间必然大量重叠。 这是「本会话近期对话」的语义要求(要的是完整上下文,不是"新增了什么")。 ⇒ 若你观察到重复内容,见 issue #739(注入面复述的五臂实测)。 🧰 工具面 | 能力 | MCP 入口 | | 写入 · 关系链接 · 结构关系 | cg(op=write) cg(op=link) stg(op=relation) | | 检索 · 条件路由 · 因果链 · 时间线 | mdcg_recall mdcg_search cg(op=route) stg(op=timeline) | | 裁决 · 遗忘 · 冲突检测 · 反思 · 身份 · 演化 | cg(op=verify) cg(op=forget) cg(op=metacognition) cg(op=identity) cg(op=evolution) | | 重要性评分 · 预算装包 · 分层注入 · 记忆自净 · 自维持巡检 | cg(op=session) cg(op=scrub) cg(op=consolidate) cg(op=maintain) cg(op=sustain) | | 会话隔离 · 时效过滤 · 审计留痕 · 可靠性闸 | mdcg_remember(session=…) validity=true cg(op=audit) cg(op=ccg) · 护栏宪章 · CCG 编译 | 会话隔离的可选依赖:稳定会话身份(s5.)由 session5_resolve() 从 DSH 会话文件推导(仅 DSH 端),需自备 pip install zstandard(本仓库不声明、CI 不代装)。未装 ⇒ 该函数返回 None 并把原因写进 reason,调用方拿不到稳定身份(同一会话不同进程可能算出不同 id ⇒ 跨会话写入错标)。 ⚠ 不崩 ≠ 能用:进程照跑、记忆照写,但会话隔离这项能力不可用。装了也不保证成功——另有 8 种 reason(not_uuid_form / sessions_root_not_found / session_file_not_found / 等),排查先读 reason。 tools 模式:'core'(默认 · 2 个)| 'brain' / 'all'(30 个)。风险工具 mdcg_forget / mdcg_restore / mdcg_review_decide 需 can_admin。逐 op 映射见 功能调用映射表 与 op 全表(自动生成,cogmap_sync.py check 守漂移)。 🖥️ 图形界面(可选增量包 · 面向 DSH) 灵枢本体不带界面。ui/minimal/ 是可选增量包:装到插件目录后 DSH 左侧出现「灵枢」面板(也可直接开 http://127.0.0.1:<DSH端口>/lingshu)。 powershell -ExecutionPolicy Bypass -File ui/minimal/install.ps1 -PluginPath <灵枢插件目录> -CheckOnly # 只检查,不写文件 powershell -ExecutionPolicy Bypass -File ui/minimal/install.ps1 -PluginPath <灵枢插件目录> # 安装(可逐文件回滚) powershell -ExecutionPolicy Bypass -File ui/minimal/install.ps1 -PluginPath <灵枢插件目录> -Uninstall # 卸载 装完需重启 DSH(client bundle 在启动时注册)。0.9.15 起接线随包自带,改插件清单不必重装 UI。 页面语义、三条实测坑(hash 失配 / 备份残留 / 左侧无图标)与排障 → 图形界面:安装与排障 · 逐步说明 使用说明。 🔐 权限:读 / 写 / 裁 三层,各自可收窄 默认以只读 guest 运行(读得到、写不进)。三条裁定:设计者只读 · 写需谨慎 · 裁决须反思与验证单元复核——自我人格的偏移与失忆是毁灭性的,全权限在不可靠的情况下就是灾难。 python -m md_cg.tokens issue --role designer --actor my-agent # 签发(designer 默认全集) python -m md_cg.tokens verify --token-file-in <令牌文件> # 体检(含覆盖面缺口报告) | 面 | 给谁 | op 边界 | | 只读面 | 界面面板 · 子智能体 · 巡检 | 17 个(不含 write/verify/forget/scrub/consolidate/index_*/export/maintain/link) | | 写面 | 记录单元 | 追加 write | | 裁决面 | 验证单元 | 追加 verify | 写入按层收紧:contextual 可直写 → knowledge 需反思单元 → structural 需反思+验证 → self/anchor 需人工裁定(MDCG_WRITE_GATE 三态:off/warn/enforce)。裁决需双单元复核且不得自证(MDCG_REVIEW_DUAL_CHECK=1)。warn 档判定用 cg(op=info).write_gate 查(进程内计数,不依赖宿主转发 stderr)——先观察再切 enforce。 完整规则、开关与报错对照 → 权限与复核模型。 📚 文档地图 | 去哪里 | 看什么 | | docs/ 目录索引 | 六域快速索引 · 新文档归域规则 | | 安装与运维 | 安装前置 / 30+ 配置项 / 写入凭据 / 升级重启 / 环境与已知问题(宿主告警·体积·落盘·设计取舍) | | 评测总览 | 六家横评 / 弱证据与证据防火墙 / 中英双语差距 / 公开数据集 / 七维标尺 / 第三方验证 | | 开发与编码约定 | 测试约定 / UTF-8 与 id 契约 / 开关矩阵 / Linux 双栈验证 | | 多 harness 接入 | 五端纪律注入差异 / 出货面 vs 源码树分界 | | 写入规范(0.9.21 起随包分发,装在 docs/mdcg/) | 写入别名 aliases · CCG 六要素编译 · 护栏宪章 · MCP 工具名口径 · 召回元数据 · 世界模型功能端 · cogmap 操作 | | Releases | 逐版本变更(本 README 不再维护发布日志)· 理论四篇 | 🔌 多 harness 接入(按端分目录) 主推路径:MCP 直挂——各端共性都是挂载同一个 stdio MCP server(python -m md_cg.mcp_server),不依赖任何插件系统。 | 目录 | harness | 纪律注入方式 | | dsh/ | DeepSeek Harness | ~/.dsh/profiles/web/cordis.patch.yml 的 personaPrefix(compact · 每轮) | | codebuddy/ | CodeBuddy | 项目根 CODEBUDDY.md(full · 会话起始) | | zcode/ | ZCode | 项目根 AGENTS.md(full · 会话起始) | | codex/ | Codex CLI | 项目根 AGENTS.md(full · 会话起始) | | claude/ | Claude Code | 项目根 CLAUDE.md(full · 会话起始) | 五端纪律同源(docs/工作纪律_认知图条目_v1.1.json),由 scripts/render_discipline.py 渲染、scripts/verify_discipline.py 守卫漂移。 🤝 贡献与验证文化 尤其鼓励「经过验证有效」的提交:issue 请给出触发条件、最小复现与实测读数;PR 请附改动说明与验证方式(复跑命令与读数);结论均以能被独立复跑为准——issue #1 是一个好例子(触发链、最小复现、判据三样都齐)。缺少证据、无法复现的描述,我们会先回帖请求补充证据再处置。 - PR 审核:走「技术审(外部验证者)+ 理论核(本项目)」两道闸;缺少证据的提交会先回帖请求补充再处置 - 📣 蜂巢反馈邀请:hive/ 已进入稳定阶段,但并发与崩溃恢复还得靠真实负载打磨。失败路径比「跑通了」更有价值——请开 Issue,附上 hive_doctor 输出 - 安全缺陷:含可直接利用细节的走私密通道,其余仍走公开 issue 📏 工程纪律与设计者视角(可选复用) 灵枢自身按一套 18 条工程纪律运行(理论先行 / 全面处理 / 根因纪律 / 验证先行 / 双副本同步 / 兜底路径 / 任务派发统一走蜂巢 / 内容政策双清单 / 敏感信息隔离 / 记忆闭环)。这套纪律本是灵枢的「自我约束」,与你用不用灵枢无关;但若你希望自己的智能体也具备同样的工作方式,这套纪律可以直接复用——纪律真源(每条 ≡ 一个认知图节点,含触发词路由)· 设计者视角元技能(动手前回答「该不该做 / 为什么做 / 条件够不够」)。部分条款针对灵枢私有管线,复用时建议只取方法论 / 执行 / 调度 / 合规 / 记忆闭环五组通用条款。 护栏宪章 · 许可证 本插件接入即接受 灵枢护栏宪章 v2.0-published 约束——对外部智能体与人类使用者的行为边界作出公开、可执行、可审计的规定,并保护人类使用者。 MIT © 荣(FuRongJun-1999)· 灵枢 LINGSHU 工程实现。DeepSeek Harness 为 DeepSeek 官方开源项目(MIT),本插件与之无隶属关系。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
FuRongJun-1999/dsh-memory
白箱AGI架构探索:元认知自我认知循环、持续学习知识飞轮、世界模型条件空间+语义时空图、自我改进自举纪律、零LLM白箱管…
相关插件 · 对话 / 记忆
上下文中枢oceanbase/powercontext
上下文跟着工作走 —— 跨会话、跨智能体、跨人。
★ 1,487已汉化DSH
73
智能体记忆库plastic-labs/honcho
Honcho 是记忆基础设施,用来构建有状态的智能体。这些智能体能理解不断变化的人、智能体、群组、项目和想法。
★ 7,894已汉化DSH
71.7
长程智能体控制面loopx-project/loopx
给 Agent 一个目标,让工作持续向前。
★ 6,358已汉化DSH
71.3
智能体上下文数据库volcengine/OpenViking
给 AI 智能体用的上下文数据库
★ 41,379已汉化DSH
71.3
长效机器人团队Fei2411/DS-Bot
DS Bot 是一个基于 DeepSeek Harness简称 dsh的 bot 插件,插件将 dsh 改造为 bot…
★ 5,084已汉化DSH
71.1
可携带记忆层EverMind-AI/EverOS
为什么选择 EverOS
★ 13,778已汉化DSH
71.1