docs: rewrite competition README with verified results
本项目面向 OS Agent 的本地记忆管理场景,提供多源记忆统一接入、偏好提取与版本管理、关键词与多语言向量混合检索、RAG 上下文构建、安全授权及精准遗忘能力。项目以 FastAPI、SQLite FTS5、Multilingual E5 和 NumPy 向量索引为主要技术组件,可在离线环境中完成记忆写入、检索、偏好更新、遗忘预览、确认删除和审计查询的完整闭环。
项目已在 macOS 开发环境和 openKylin 2.0 SP2(x86_64)环境完成运行与自动化测试。
MemoryEvent
source
metadata
security-audit:
JSON / CSV / TXT / API │ ▼ 统一模型与数据校验 ──────► SQLite 持久化(WAL) │ │ ├────────► 偏好提取与版本管理 │ └────────► FTS5 关键词索引 + E5 / Hash 向量索引 │ ▼ Hybrid RRF + 拒答门控 │ ▼ RAG 上下文构建 精准遗忘: 结构化选择器 → 预览匹配范围 → 明确确认与幂等校验 → 安全授权 → 向量、缓存与持久层删除 → 偏好派生数据清理 → 审计回执与删除后验证
最终集成入口为 app.final_main:app,它同时装配应用底座、检索模块、RAG 上下文、安全持久化适配器和精准遗忘编排器。
app.final_main:app
python3-venv
python3-pip
openKylin 可先安装基础依赖:
sudo apt update sudo apt install -y git python3 python3-venv python3-pip curl
git clone https://gitlink.org.cn/Ix3quXm7vy/mxokdzntjytqyjzywjz.git openkylin-memory-agent cd openkylin-memory-agent
python3 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -r requirements.txt
正式检索效果使用 Multilingual E5。联网环境可提前准备模型:
python -m scripts.prepare_e5_model --output models/multilingual-e5-small export MEMORY_E5_MODEL_PATH="$PWD/models/multilingual-e5-small" export MEMORY_E5_OFFLINE=1
没有 E5 模型时,可使用后备模式完成接口和遗忘流程验证:
export MEMORY_EMBEDDING_BACKEND=hash
Hash Embedding 仅用于联调,不代表正式检索效果。
python -m uvicorn app.final_main:app --host 0.0.0.0 --port 8000
浏览器打开:
GET /health
POST /memories
GET /memories
GET /memories/{memory_id}
POST /ingestion/json
POST /ingestion/csv
POST /ingestion/txt
POST /preferences/extract
GET /preferences
GET /preferences/{preference_id}/history
POST /preferences/{preference_id}/rollback
POST /retrieval/reindex
POST /retrieval/search
POST /retrieval/context
GET /forget/contract
POST /forget/preview
POST /forget/execute
GET /forget/audit
GET /forget/audit/{request_id}
POST /forget/audit/{request_id}/retry
完整字段和错误语义见 docs/API_CONTRACT.md 与 docs/FORGETTING_INTEGRATION_CONTRACT.md。
docs/API_CONTRACT.md
docs/FORGETTING_INTEGRATION_CONTRACT.md
在 Swagger 中调用 POST /memories:
{ "memory_id": "final-demo-001", "user_id": "default", "content": "用户偏好使用中文回答,并希望回答尽量简洁。", "source": "conversation", "created_at": "2026-07-22T20:00:00+08:00", "topic": "输出偏好", "sensitivity": "normal", "status": "active", "metadata": { "purpose": "final_acceptance" } }
依次调用:
检索结果应包含 final-demo-001,RAG 上下文应包含来源编号和原始记忆内容。
final-demo-001
memory_ids
preview_id
matched_ids
confirm=true
idempotency_key
GET /memories/final-demo-001
404
request_id
source .venv/bin/activate python -m pytest -q
bash scripts/openkylin_verify.sh
脚本会检查系统与提交信息、准备 Python 环境、安装依赖、运行测试、临时启动服务,并验证 /health 和 /forget/contract。
/health
/forget/contract
77 passed, 1 warning
72 passed, 5 skipped, 1 warning
{"status":"ok"}
1.0
openKylin 环境跳过的 5 项均为需要本地 Multilingual E5 模型文件的效果测试。其余接口、安全、检索和遗忘流程测试正常执行。
检索评测数据集包含 160 条记忆和 100 条查询,覆盖中文、英文、跨语言、精确命令及无答案查询。调参集与验证集独立划分。
每个后端执行 120 次正式请求,模型加载时间与单次查询时间分开统计。
当前评测中 Hybrid RRF 的 P95 检索延迟为 22.125 ms,低于赛题要求的 500 ms。详细数据、拒答阈值和结果分析见 docs/member_a/retrieval_evaluation/final-report.md。
docs/member_a/retrieval_evaluation/final-report.md
MEMORY_DB_PATH
MEMORY_EMBEDDING_BACKEND
e5
hash
MEMORY_E5_MODEL_PATH
MEMORY_E5_OFFLINE
0
MEMORY_E5_DEVICE
cpu
MEMORY_E5_REJECTION_THRESHOLD
0.864102
MEMORY_RETRIEVAL_FTS_PATH
MEMORY_SECURITY_ALLOWED_ACTORS
leader,owner,admin,test
MEMORY_SECURITY_PRIVILEGED_ACTORS
owner,admin
app/ FastAPI 应用入口与最终集成 core/ 统一数据模型、SQLite 数据库和公共接口 ingestion/ JSON、CSV、TXT 批量导入 preference/ 偏好提取、版本更新和回滚 retrieval/ FTS5、向量索引、混合排序和 RAG 上下文 forgetting/ 预览、执行、重试和审计编排 security/ 安全授权、敏感规则和事务删除 evaluation/ 检索数据集、指标、调参和延迟评测 sample_data/ 导入与偏好流程样例数据 scripts/ 模型准备、演示和 openKylin 验证脚本 tests/ 自动化测试 docs/ 接口、部署、集成和评测文档
auditd
systemd-journald
本 README 仅列出已经实现并完成代码测试或环境验证的能力,未完成的系统级机制不计入当前实现范围。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
面向 openKylin 的智能体记忆提取与精准遗忘机制
本项目面向 OS Agent 的本地记忆管理场景,提供多源记忆统一接入、偏好提取与版本管理、关键词与多语言向量混合检索、RAG 上下文构建、安全授权及精准遗忘能力。项目以 FastAPI、SQLite FTS5、Multilingual E5 和 NumPy 向量索引为主要技术组件,可在离线环境中完成记忆写入、检索、偏好更新、遗忘预览、确认删除和审计查询的完整闭环。
项目已在 macOS 开发环境和 openKylin 2.0 SP2(x86_64)环境完成运行与自动化测试。
一、已完成能力
1. 多源记忆统一接入
MemoryEvent数据结构管理记忆编号、用户、正文、来源、时间、主题、敏感等级、状态和扩展元数据。source和metadata字段统一入库。2. 偏好提取与版本管理
3. 混合检索与 RAG 上下文
4. 精准遗忘与审计
5. 安全持久化适配器
security-audit:审计引用。二、系统结构
最终集成入口为
app.final_main:app,它同时装配应用底座、检索模块、RAG 上下文、安全持久化适配器和精准遗忘编排器。三、运行环境
已验证环境
基本要求
python3-venv、python3-pipopenKylin 可先安装基础依赖:
四、快速开始
1. 获取代码
2. 创建虚拟环境并安装依赖
3. 选择向量模型
正式检索效果使用 Multilingual E5。联网环境可提前准备模型:
没有 E5 模型时,可使用后备模式完成接口和遗忘流程验证:
Hash Embedding 仅用于联调,不代表正式检索效果。
4. 启动最终集成服务
浏览器打开:
五、主要接口
GET /healthPOST /memoriesGET /memoriesGET /memories/{memory_id}POST /ingestion/jsonPOST /ingestion/csvPOST /ingestion/txtPOST /preferences/extractGET /preferencesGET /preferences/{preference_id}/historyPOST /preferences/{preference_id}/rollbackPOST /retrieval/reindexPOST /retrieval/searchPOST /retrieval/contextGET /forget/contractPOST /forget/previewPOST /forget/executeGET /forget/auditGET /forget/audit/{request_id}POST /forget/audit/{request_id}/retry完整字段和错误语义见
docs/API_CONTRACT.md与docs/FORGETTING_INTEGRATION_CONTRACT.md。六、核心流程复验
1. 新增测试记忆
在 Swagger 中调用
POST /memories:2. 检索与 RAG 验证
依次调用:
POST /retrieval/reindexPOST /retrieval/searchPOST /retrieval/context检索结果应包含
final-demo-001,RAG 上下文应包含来源编号和原始记忆内容。3. 精准遗忘验证
POST /forget/preview,通过memory_ids或主题选择目标。preview_id和matched_ids。POST /forget/execute,提交preview_id、confirm=true和唯一idempotency_key。GET /memories/final-demo-001,应返回404。request_id调用GET /forget/audit/{request_id},检查数据库、向量、缓存和审计结果。七、自动化测试与 openKylin 验证
完整测试
openKylin 一键验证
脚本会检查系统与提交信息、准备 Python 环境、安装依赖、运行测试、临时启动服务,并验证
/health和/forget/contract。已取得的结果
77 passed, 1 warning72 passed, 5 skipped, 1 warning{"status":"ok"}1.0,检索与安全适配器加载成功app.final_main:app在本机端口成功启动openKylin 环境跳过的 5 项均为需要本地 Multilingual E5 模型文件的效果测试。其余接口、安全、检索和遗忘流程测试正常执行。
八、量化评测结果
检索评测数据集包含 160 条记忆和 100 条查询,覆盖中文、英文、跨语言、精确命令及无答案查询。调参集与验证集独立划分。
检索质量
检索延迟
每个后端执行 120 次正式请求,模型加载时间与单次查询时间分开统计。
当前评测中 Hybrid RRF 的 P95 检索延迟为 22.125 ms,低于赛题要求的 500 ms。详细数据、拒答阈值和结果分析见
docs/member_a/retrieval_evaluation/final-report.md。九、配置项
MEMORY_DB_PATHMEMORY_EMBEDDING_BACKENDe5或hashe5MEMORY_E5_MODEL_PATHMEMORY_E5_OFFLINE0MEMORY_E5_DEVICEcpuMEMORY_E5_REJECTION_THRESHOLD0.864102MEMORY_RETRIEVAL_FTS_PATHMEMORY_SECURITY_ALLOWED_ACTORSleader,owner,admin,testMEMORY_SECURITY_PRIVILEGED_ACTORSowner,admin十、项目结构
十一、文档索引
十二、当前范围与已知限制
auditd或systemd-journald。本 README 仅列出已经实现并完成代码测试或环境验证的能力,未完成的系统级机制不计入当前实现范围。