🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

白箱长期记忆 FuRongJun-1999/dsh-memory

DeepSeek Harnessv0.9.16
FuRongJun-19990 天前有提交已提供中文文档扫描:含敏感能力memory

白箱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-memory
npm 源 · @furongjun1999/dsh-memory 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · chat
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 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
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 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
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 元认知自我认知循环
  • 持续学习知识飞轮
  • 世界模型语义时空图
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),本插件与之无隶属关系。
预览分享卡片长什么样 ↓FuRongJun-1999/dsh-memory
分享 · DeepSeek Harness Hub
FuRongJun-1999/dsh-memory

白箱AGI架构探索:元认知自我认知循环、持续学习知识飞轮、世界模型条件空间+语义时空图、自我改进自举纪律、零LLM白箱管…

回到顶部