目录

智忆:DSH 偏好与知识记忆插件

智忆面向操作系统大赛第三赛道,在 DeepSeek Harness(DSH)基线上以插件形式加入偏好记忆、知识记忆、生命周期管理与精准遗忘。DeepSeek 提供 Agent 推理及模型辅助抽取;DSH 提供工具、会话、附件、模型接口与前端扩展。插件通过公开接口接入宿主,目标部署平台为 openKylin。

当前运行实现为 TypeScript/Node.js、React、JSON 偏好存储与 SQLite 知识存储。知识服务关联事实、来源、原文证据及会话贡献,以图谱呈现关系和来源,以本地词元及证据打分完成查询。

功能与使用场景

  • 偏好记忆:从真实用户消息、手动配置及受控输入提取回答语言、工具、工作流和安全偏好,按用户、工作区、项目、会话等作用域选择生效项;提供版本、回滚、取消设置和来源追溯。
  • 知识记忆:用户明确授权后解析 TXT、Markdown、DOCX、PDF、XLSX、XLS、CSV,提取主体、属性、值和原文证据。规则先发布可验证事实,配置模型后补充通用人物、项目等关系。
  • 知识流转:新事实先进入候选;本轮回答或成功工具操作实际采用并通过证据核验后加分。逐会话贡献、观察期、升降级和归档撤销支持短中长期管理;检索或注入本身不加分。
  • 精准遗忘:偏好按条件预览及勾选 ID 执行;知识按“删除/保留”范围预览,确认时核验快照,联动事实、证据、贡献、旧呈现与相关管理缓存,指纹屏障阻止旧内容直接重入。
  • 管理界面:DSH 会话内“记忆”入口及独立 /memory 页面,切换偏好/知识,查看图谱、列表、来源、证据、版本、贡献和后台任务。
  • OS 支撑:偏好写前敏感检查、文件读取隔离、哈希链及 journald/auditd 审计、Peony 文件菜单、UKUI 通知和行为回流。实际状态由平台探测报告。

例如,用户先表达“以后代码注释使用英文”,后续会话读取当前偏好;再明确保存运维手册,Agent 可查询其中的路径、端口和操作条件。用户要求忘掉某个人的单位并保留研究方向时,知识页先展示删除及保留集合,确认后执行。

模块与数据

模块 入口 实现职责
宿主接入 src/plugin/index.ts、src/plugin/capture.ts、src/plugin/prompt.ts 用户消息、模型上下文、工具及会话事件
偏好 src/plugin/service.ts、store.ts、cloud.ts、preference.ts 清洗、敏感检查、受控抽取、作用域、版本、遗忘、保留期
知识适配 src/plugin/knowledge/ 授权附件、凭据、服务监督、采用结算、归档 outbox
知识引擎 src/scripts/knowledge/engine.mjs、node-service.mjs SQLite 事实/证据/任务/贡献/呈现及删除事务
文档与图 src/scripts/knowledge/document-parser.mjs、semantic-extraction.mjs、graph-entities.mjs 格式解析、证据校验和图谱投影
界面 src/plugin/client/MemoryWorkspace.tsx、src/plugin/client/knowledge/ 管理、证据、任务和图布局
OS src/os/、src/plugin/os/、src/plugin/sensitive.ts Linux 扫描器、探针、隔离与审计桥接

偏好 JSON 写入使用单存储实例串行事务与原子替换,失败不提交;不提供多进程同时写一个 JSON 文件的互斥。取消设置 unset 只取消指定作用域的当前覆盖,保留历史并允许继承更宽作用域;永久遗忘另行清理值、证据及快照。

知识按同一用户跨项目共享,来源项目和环境可显式筛选。图谱由有效事实投影,用于展示、追溯和管理;查询对词元、主体、事实值和证据打分,并补充有限运维同义规则。工作记录由 MemoryService.query() 单独检索,按用户、工作区、项目和任务边界过滤,以受控领域词表增强中文改写;记录隔离不改变知识服务的跨会话复用规则。

知识组有效权重为 W=min(12,max(c)+min(2,其余有效贡献之和)),c 为各会话有效贡献。初始贡献 1 分,候选观察后续 5 个来源会话终结轮次;有效采用加 1 分,同组每请求最多一次,采用当轮不衰减。未采用时只衰减当前活动会话贡献,短/中/长期分别为 0.15/0.10/0.05 分。晋升门槛 2/6/10,降级门槛 8/4,贡献低于 0.5 失效。归档与永久遗忘分别管理。

数据目录由 src/scripts/knowledge/runtime-config.mjs 统一解析;启动及平台检查输出最终 home 和数据库位置。偏好路径支持 DSH_MEMORY_STORAGE_PATH,知识使用 SQLite、管理上传区和任务缓存。凭据、访问 token、本地用户数据及安装依赖不提交、不打包。

环境要求

项目 要求
运行平台 openKylin
Node.js 最低 22.13,需要 node:sqlite;部署记录为麒麟 22.22.1
npm、pnpm 在 PATH 可用;首次安装需访问依赖源
Bun 开发环境安装、客户端构建及 TypeScript 接口测试需要
DSH 安装脚本锁定 0.1.5-rc.3
模型 Agent 推理需要有效配置;通用知识抽取需要可用知识模型配置
Linux OS 模块 编译器及 libbpf、libsystemd、libaudit、OpenSSL;桌面扩展另需 Qt/Peony SDK

本次检索与性能复测使用 openKylin、Node.js 24.19.0 。启动时执行平台检查,确认运行时、数据库位置及 OS 模块状态。

偏好扫描默认 mask,要求 Linux 扫描器可用;缺失或失败时拒收。仅在明确选择关闭敏感检查的本地调试中使用 DSH_MEMORY_SENSITIVE_SCAN=off,目标部署必须重新核对扫描状态。

安装与启动

以下命令均在本插件根目录执行。

openKylin 独立验收运行时

sh src/setup-openkylin.sh
node src/scripts/knowledge/platform-check.mjs --json
sh src/start-web.sh

setup-openkylin.sh 使用 src/scripts/runtime/ 的固定清单和锁文件,通过 npm ci 安装隔离 DSH 运行器及解析依赖,再安装插件。它包含完整 DSH 依赖;其目录体积不能当作知识模块自身大小。OS 编译、服务、权限及桌面扩展按 OS 说明 和 src/os/deploy/ 配置。

默认 Agent 端口 3091、知识 API 端口 3092。打开启动器打印的完整带 token 网址,进入 Agent 对话或 /memory 管理页。知识 API 是内部服务,直接打开出现未授权属预期行为。端口占用会拒绝启动,不能打开已有端口代替启动成功。

Ctrl+C 或 q 回车结束本次启动的进程。子服务退出后启动器保留另一服务,并在 60 秒窗口内最多重启 3 次;网页重试读取,不自动重放上传、修改和遗忘。

Windows 开发

cmd /c src\setup-dev.cmd
cmd /c src\start-web.cmd

首次安装需要 Node、npm、pnpm、Bun。已有安装只需启动;修改源码后按构建步骤重建并重启,在浏览器强制刷新。Windows 不提供原生 Linux 扫描器、eBPF 和隔离机制。

安装到已有 DSH

dsh plugin --profile web add ./src
dsh web

宿主插件模式由监督器自举 Node 知识服务,使用随机内部端口和 token。已有宿主仍须安装文档解析依赖,具体见 源码运行说明。构建后按宿主插件安装流程刷新副本,重启 profile。cordis.patch.yml 入口保持相对路径 ./lib/index.js。

模型配置

Agent 使用 DSH 模型配置。知识配置可从 src/scripts/knowledge/model-config.example.json 复制为 src/knowledge-models.local.json,填写 LLM_MODEL、LLM_BASE_URL、LLM_API_KEY 对应字段,环境变量优先。此私有文件不提交。未配置模型时可使用规则事实及管理界面,不能据此验证真实模型质量。

可用 DSH_NODE_KNOWLEDGE_LLM=0 关闭语义补充。默认每批约 3500 字符、重叠 400 字符、并发 2,单次模型调用 25 秒、运行预算 60 秒,最多 24 批;失败/部分完成在任务中明确显示。语义遗忘超时默认 6 秒、最高 8 秒,候选过多或不能可靠确定保留范围时要求缩小或澄清。

文档、采用与遗忘

明确向 Agent 要求将附件保存为知识,随后在“记忆 → 知识”检查任务、候选事实和原文证据。附件上限当前默认及硬上限均为 8 MiB;扫描件需显式配置外部 OCR。表格使用文件缓存值,不重算公式。解析成功或原文覆盖率不代表已完整提取所有知识。

knowledge_search 用于 Node 知识事实与证据;memory_query/memory_search 用于偏好工作记录。knowledge_confirm_use 记录明确采用,knowledge_manage 处理授权管理操作;不能将“已检索”当作“已使用”。采用结算以真实宿主日志、当前呈现和版本核验为依据,仍有保守启发式匹配的边界。

知识遗忘在面板生成预览并确认,确认前检查事实、删除/保留范围及快照。范围不明或存在保留冲突时拒绝扩大删除。插件管理正文采用等长空白切除目标范围,保留无关证据偏移;联动事实、贡献、旧呈现、相关上传及任务缓存和重入指纹。用户再次提供已遗忘的文件时,在对话选择“重新提取”即可创建新的候选知识,不要求固定语句,也不恢复旧权重;取消或仅重复上传不会自动恢复。普通重复提取复用同版本、同模型配置下的有效批次检查点,失败批次继续提取。遗忘会中止相关的未完成模型请求。宿主原始附件、聊天、外部备份、模型服务记录及设备历史页不在清理保证内。

操作流程见 demo 使用说明;源码安装及新旧路径对照见 源码说明。

构建与验证

sh src/setup-dev.sh
npm --prefix src run build

Windows 使用 setup-dev.cmd。构建更新 src/lib/index.js、src/lib/client.js 等产物,安装副本和浏览器缓存也需刷新。Linux 原生模块:

make -C src/os

对应回归入口:

npm --prefix src test
node --experimental-transform-types --test tests/retrieval.test.ts tests/cross-language-plugin.test.mjs
node tests/knowledge/validate-stage7.mjs
bash tests/os/run-tests.sh

测试使用临时数据和提供商替身,Linux 或特权用例按平台执行。直接导入 TypeScript 参数属性的 Node 用例需加 –experimental-transform-types。先完成相应构建和依赖安装,保留执行结果。tests/ 统一保存回归用例和比赛验证材料。npm –prefix src test 构建宿主后运行 tests 根目录及 knowledge/ 的 MJS/TS 用例;OS 实机验证另行执行。

质量与性能脚本:

node tests/eval/run-preference-eval.mjs --extractor local --report temp/eval/preference-local.md
node tests/eval/run-preference-eval.mjs --extractor llm --report temp/eval/preference-llm.md
node tests/eval/run-retrieval-eval.mjs --report temp/eval/retrieval.md
node tests/eval/run-latency-eval.mjs --report temp/eval/latency.md
node tests/eval/run-resource-eval.mjs --report temp/eval/resource.md

确认脚本的输入、模型及参数后运行;真实模型可能产生服务费用。OS 敏感区间评测入口为 tests/os/eval_f1.py。报告使用独立路径,避免覆盖提交证据。正式对照需固定同一 DSH、模型、硬件及任务集,比较禁用/启用插件并计入子进程。

实验测试

以下结果与项目说明书保持一致,分别报告六项赛道指标和机制专项。偏好使用 50 例标注数据;知识记录使用冻结的 400 条记录、200 个问题,150 个正查询参与宏平均。图谱及生命周期专项使用独立 Nginx 手册,敏感识别引用 openKylin 实机历史记录。

赛道指标 实验结果 样本与测量范围
偏好提取准确率 94.4%(34/36) 50 例;模型抽取,语义归一匹配
知识检索 Recall@5 93.0% 400 条记录 / 200 问;150 个正查询参与宏平均
知识冲突处理正确率 100%(30/30) 30 例 / 6 类;显式版本与作用域机制验收
检索响应延迟 P95 275.00 ms 2,001 条记录 / 400 事实;六轮 1,800 次请求
资源占用 RSS / CPU 记忆:379.8 MiB / 3.11%;基线:73.8 MiB / 0.54% 检索宿主+知识服务;关闭记忆为基线;16 逻辑 CPU
敏感信息识别 F1 0.993(relaxed) 182 条文本 / 140 个标注区间;openKylin 实机历史记录

偏好准确率按 TP/(TP+FP) 计算,为 34/(34+2)=94.4%。Recall@5 逐个正查询计算 Top-5 相关命中比例后取平均,为 (50+40+49.5)/150=93.0%;无答案查询不计入召回均值。该结果来自生产 MemoryService.query(),与图谱事实接口分别统计。冲突使用代理预先冻结的裁决标签,经真实 HTTP 服务执行及重启复核,覆盖明确修订、明确回退、环境筛选、项目筛选、过期版本拒绝和无效证据拒绝。

性能复测使用 2,001 条工作记录、1 条用户偏好及 400 条图谱事实,单并发运行六轮:三轮各 100 次、三轮各 500 次,共 1,800 次正式请求,每轮 20 次预热单独处理。全部请求完成返回内容校验,首批长尾纳入合并统计。客户端从发出 HTTP 请求到完整解析结果计时,覆盖记录查询、偏好提示词装配、知识检索、版本证据核验及上下文返回;延迟升序排列取第 ⌈0.95n⌉ 项,P95 为 275.00 ms,不含模型生成回答。

RSS 为同时采样的检索宿主和知识服务子进程内存之和的峰值;CPU 为进程 CPU 耗时除以墙钟时间与 16 个逻辑 CPU 数。相对关闭记忆的同宿主基线,差值为 +306.0 MiB、+2.58 个百分点。

知识证据溯源与生命周期机制 实验结果 验证范围
已入库事实证据可回查率 100%(51/51) 历史单份 Nginx 手册;模型关闭,核对已发布规则事实的来源、版本、位置及原文偏移和值
晋升衰减判定吻合率 100%(10/10) 晋升、衰减、多会话、幂等及重启
重复事件计分增量 0 分 同一有效使用事件重复回放,权重不增加
目标残留率 / 非目标保留率 0%(0/1) / 100%(50/50) 删除 worker_processes 事实,其余 50 条保留
未确认旧文档重导入拦截率 100%(1/1) 历史单次未确认重入验收,重启后目标未恢复;当前重新提供文件并确认后建立新候选,不恢复旧权重

专项结果对应上述验收样本。当前知识查询采用本地词元与证据打分;赛题指定三阶段链路未在本部署版本实现。

多类型文档提取补测使用 30 篇受控文档、5 类内容、6 种格式及 372 条预先冻结的核心关系,每篇独立提取 3 次。另有 15 次同源格式对照和 4 项各 3 次的补测,共 117 次真实模型提取任务。

文档提取测评 实验结果 样本与统计口径
受控短文核心关系覆盖率 100%(648/648) 运维、项目及版本边界各 6 篇,共 18 篇×3 次;语义归一后命中的冻结核心关系 / 冻结核心关系
已发布事实证据可回查率 100%(1124/1124) 主测 30 篇×3 次的已入库事实,核验来源、版本、位置及原文偏移和值

标注与语义裁决均由代理完成,尚无第二人独立复核。覆盖率限定于受控短文,证据率只核验已入库事实,不能代表任意长文的整体图谱质量。全部重复、严格匹配和较弱项保存在 图谱提取质量报告 及对应 JSON 中。

完整实验材料位于 tests/。记录召回见 召回复测报告,性能汇总与逐请求数据见 性能报告、同名 JSON 和 JSONL。偏好见 偏好报告,冲突原始数据为 tests/results/conflict-correctness-local-20261005.jsonl,敏感识别见 F1 报告。图谱与生命周期原始证据保存在 tests/supplement-local-20261003/ 和 tests/logs/global-host-results.json。

麒麟 demo 验证

demo/ 包含安装与启动工具、当前应用快照、合成演示资料及验收脚本。将交付包解压到目标麒麟机器,以普通桌面用户进入 demo/,按 demo README 配置模型、安装并运行。完整安装后,依次执行:

bash check.sh
bash verify.sh
bash verify-kernel.sh
bash start.sh

验收输出保存于 demo/reports/。按 演示流程 检查偏好跨会话生效、文档入库与证据、任务采用与晋升、自然语言遗忘及重启持久性;安装步骤见 安装说明。

决赛材料目录

以《决赛作品提交说明》为准整理原 fork 仓库 master,最终目录包括:

README.md
作品原创承诺书.pdf
src/
tests/
demo/
docs/
  项目说明书.pdf
  项目创新说明.pdf
  成员分工及主要贡献说明.pdf
  人工智能及第三方工具使用说明.pdf
presentation/
  决赛现场演示PPT.pptx
  决赛演示视频.mp4

文档按官方模板编写,人工审核后转换为 PDF;原创承诺及 AI 声明按模板完成手抄。PPT 使用官方模板,测试、交付物和视频与提交版本对应。开发聊天、内部审阅资料、QA 预览和私有配置不放入正式材料。

第三方与许可

DSH/Cordis/Schemastery、React、Node/SQLite、PDF.js、SheetJS、fast-xml-parser、fflate、构建测试工具和 Linux 系统库均为第三方组件,遵循发布包 LICENSE/notices。DeepSeek 按在线服务授权使用,未分发模型权重。组件调用、直接引用或改写源码及自创代码比例列于项目说明书。

开发与文档使用了 OpenAI Codex 等工具辅助,人工复核、使用环节、来源及限制登记于《人工智能及第三方工具使用说明》。不提交真实凭据、完整开发聊天或个人原始数据。

关于
121.1 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号