ReMe/docs4/background_backup.md
jinli.yl e9b7fd6931 up
2026-05-19 10:38:40 +08:00

157 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

ReMe新版本V4
1. 目标: 构建个人知识库集成qwenpaw等harness框架中实现知识/记忆的自进化和自管理结合graph高效搜索。
2. 新的特性:
- 支持多种记忆类型,包括个性化记忆、程序化记忆、知识类记忆
- [❌ 待补充] 当前 reme4 中只有统一的 `FileNode/FileChunk` 抽象(`reme4/schema/file_node.py``reme4/schema/file_chunk.py`),尚未在代码层区分"个性化/程序化/知识类"三类记忆,需要在 schema 与 store 中扩展类型字段或子类。
- 支持memory-self-evolving
- [❌ 待补充] 没有发现自进化相关的 step/job 实现,目前只有基础的 search/reindex 等 common steps`reme4/steps/common/`)。需要新增 auto-memory/auto-dream 等 step。
- 支持markdown之间的链接构建graph更好的渐进式展开
- [✅ 已实现 → `reme4/components/file_parser/linked_file_parser.py`wikilink 解析 + Dataview 谓词)、`reme4/components/file_graph/`local/nx/neo4j 三种 graph 后端)]
- [✅ 已实现 → `reme4/steps/common/search.py:109` `_expand_links``reme4/config/default.yaml:86` `expand_links` 参数(搜索结果可附 outlinks/inlinks 邻居元数据)]
3. 工程实现:
1. components
- 支持backend切换
- [✅ 已实现 → `reme4/components/component_registry.py``R.register(name)` 装饰器 + `R.get(ctype, backend)` 查找);`reme4/application.py:51` 通过 `config.components` 中的 `backend` 字段动态构造]
- 生命周期管理 start/close
- [✅ 已实现 → `reme4/components/base_component.py:151` `start()` / `:162` `close()` / `:172` `restart()`,含 `is_started` 幂等保护与 `asyncio.Lock`]
- components之间相互调用支持前序依赖还是啥
- [✅ 已实现 → `reme4/components/base_component.py:78` `BaseComponent.bind()` 声明依赖(含 `optional``default_factory``:98` `_resolve_bindings()` 自动注入;`reme4/application.py:80` `_topological_order()` Kahn 算法做拓扑排序、检测循环依赖]
2. job/step借鉴自github action
- step是最小的执行单元可以自由使用components不需要管理生命周期
- [✅ 已实现 → `reme4/steps/base_step.py``reme4/steps/common/`demo/health_check/help/reindex/search/version/stream_demo 等内置 step]
- job是steps的集合可以自由组合支持step复用
- [✅ 已实现 → `reme4/components/job/base_job.py`(顺序执行 step`reme4/components/job/stream_job.py`(流式 job`reme4/config/default.yaml:5` 通过 yaml 声明 job→steps 组合]
- 对外job可以封装cli命令mcp_toolhttp服务接口等
- [✅ 已实现HTTP / MCP / CLI client`reme4/components/service/http_service.py:35` `_add_job` 把 job 注册成 POST 端点;`reme4/components/service/mcp_service.py``reme4/components/client/http_client.py``reme4/components/client/mcp_client.py``reme4/reme.py:27` `main()` 通过 CLI 子命令 `start` / `find_reme` / `<job_name>` 调用 client]
3. application
- components的生命周期管理通过前序依赖构建拓扑图启动应用
- [✅ 已实现 → `reme4/application.py:115` `_start()` 按拓扑顺序启动所有 component`:133` `_close()` 反序关闭]
- 集成run_job
- [✅ 已实现 → `reme4/application.py:148` `run_job()` / `:154` `run_stream_job()`]
- 集成Service能力对外提供能力
- [✅ 已实现 → `reme4/application.py:170` `run_app()` 调用 `service.run_app(app=self)``reme4/components/service/base_service.py`]
4. 对外接口:
- skill.md + cli方案通用方案支持集成到各种harness框架中
- [⚠️ 部分实现] CLI 调用通道已具备(`reme4/reme.py:17` `call_server()` 通过 `http_client` / `mcp_client` 调任意已注册 job但 [❌ 待补充] 仓库内未发现 `skill.md` 文件,需要为 Claude Code / 其它 harness 编写 skill 描述文件。
- 可以选择agent来启动reme服务后台
- [❌ 待补充] 未见"由 agent 自动拉起后台 reme 服务"的脚本/约定,需要补充进程托管或 launchctl/systemd 集成方案。
- skill.md + mcp-tool方案通用方案
- [⚠️ 部分实现] MCP 服务通道存在(`reme4/components/service/mcp_service.py``reme4/components/client/mcp_client.py`),但 [❌ 待补充] 同样缺 `skill.md` 模板。
- 需要手动启动mcp服务
- [✅ 已实现 → `reme service` 模式可通过 `reme4/config/default.yaml:1` `service.backend: mcp` 切换,`reme4/reme.py` `start` 子命令拉起]
- sdk集成qwenpaw集成
- [❌ 待补充] reme4 内未见 qwenpaw / agentscope 相关适配代码(仅 `reme/``reme_ai/` 旧版有部分逻辑,但已废弃,按记忆 [[feedback_deprecated_directories]] 不应改动)。需要新建 `reme4/integrations/qwenpaw/` 之类的模块。
- str + 封装AgentscopeTools
- [❌ 待补充] 没有 `AgentscopeTools` 包装层。
- 集成auto-memory、auto-dream、auto-memory-search的能力
- [❌ 待补充] 三个能力均未实现。
4. 记忆存储方案:
- resource原始对话日志上传的文件原始的html文件等
- [❌ 待补充] `reme4/application.py:20` 仅创建 `metadata_dir` / `daily_dir` / `knowledge_dir`,未见 `resource_dir` 概念;需要在 `ApplicationConfig` 中加入并落地相应目录与抓取/上传逻辑。
- daily
- daily/YYYYMMDD.md主Agent调用write/edit工具修改兼容上一版同时承担了当天其他md的索引
- [⚠️ 部分实现] `reme4/application.py:23` 已建 `daily_dir`,但目录内 markdown 的"主索引"约定与 write/edit 兼容协议无显式实现,主要靠主 agent 自身行为。需要文档化 + 校验。
- daily/YYYYMMDD/{event}.md auto-memory 针对上下文对话拆分成不同的事件存储同时在YYYYMMDD.md构建好索引可以链接过来
- [❌ 待补充] auto-memory 拆事件的 step / job 不存在。
- knowledge:
- knowledge/{topic:-personal/agent/financial/work...}/{xxx}.md 在空闲时间整理记忆,按照主题和事件进行分类存储
- [⚠️ 部分实现] `knowledge_dir` 已建(`reme4/application.py:24`),但"按主题/事件整理"的后台任务、topic 枚举均缺失。
- proactive:
- proactive/YYYYMMDD.md 待定。如果存在给用户主动推送的能力这里可以记录每一天agent给用户推荐的分析和心路历程。
- [❌ 待补充] 主动推送/proactive 目录与逻辑均未实现。
5. Markdown 格式 & Build Graph
1. obsidian格式的Markdown文件格式
- front matter格式
- [✅ 已实现 → `reme4/components/file_parser/linked_file_parser.py:313` `frontmatter.loads(...)``reme4/schema/file_front_matter.py`]
- file link格式 4种格式
- [⚠️ 部分实现] `linked_file_parser.py:88` `_WIKILINK_RE` 已支持 `[[target]]` / `[[target#anchor]]` / `[[target|alias]]` / `![[target]]`(嵌入),并支持 Dataview `predicate:: [[X]]` 与 inline `[predicate:: [[X]]]`。但 [❌ 待补充] 标准 Markdown `[text](url.md)` 链接尚未被解析为 graph 边。
2. 更好的文件chunking机制
- 旧版 类似rag 带overlap的chunking机制
- [📌 历史] V3 旧逻辑,对照说明用,无需在 reme4 中实现。
- 解析 Markdown Ast
- [✅ 已实现 → `linked_file_parser.py:308` 使用 `mistletoe``Document`/`MarkdownRenderer``:335` `_build_tree` 把扁平 children 折叠成 section 嵌套树(`MdNode`]
- 每一个chunk都带全部标题
- [✅ 已实现 → `linked_file_parser.py:381` `_chunk_node``before` 累积已经过的标题、`after` 拼剩余 desc_toc`:712` `_make_chunk``_toc_join(before, content, after)` 把全文目录骨架前后包裹]
3. 通过link构建graph索引同时构建反向link索引
- [✅ 已实现 → `reme4/components/file_graph/base_file_graph.py``reme4/components/file_graph/local_file_graph.py`(含 `get_outlinks``get_inlinks` 双向索引nx/neo4j 后端同 API`reme4/steps/common/search.py:114-129` 使用双向 link]
4. link的生成有两种一种是主agent在生成link另一种是通过后台任务自动构建文档之间的link
- 介绍如何auto-link
- [⚠️ 部分实现] 主 agent 显式写 `[[link]]` 已经会被 parser 抓为边(`linked_file_parser.py:152` `_extract_links`)。但 [❌ 待补充] "后台任务自动补 link" 的实现(实体抽取 / 候选文档相似度匹配 / link 写回 markdown尚不存在需要单独的 step/job。
6. 如何做memory自进化
Auto-memory
auto-dream
- [❌ 待补充] reme4 没有 auto-memory / auto-dream 任何代码。需要:
- 新增 step`reme4/steps/auto_memory.py``reme4/steps/auto_dream.py`),基于现有 `BaseStep` + LLM component
- 设计触发机制job 调度、空闲检测);
- 与上面的 daily/knowledge 目录约定打通。
7. 更好的检索:
- 渐进式展开的检索
- [⚠️ 部分实现] `reme4/steps/common/search.py:14` `SearchStep` 已做 vector + keyword 的 RRF 融合,并支持 `expand_links` 一跳展开outlinks/inlinks + 邻居 meta。但 [❌ 待补充] "多跳渐进展开"、"按需要由 agent 主动展开下一层"的交互式 API 尚未实现。
8. 结合外部的Agent工具
ReMe更加专注于知识加工而不是知识获取
- 结合qwenpaw
- sdk集成qwenpaw集成
- [❌ 待补充] 见 §3.4。
- str + 封装AgentscopeTools
- [❌ 待补充] 同上。
- 集成auto-memory、auto-dream、auto-memory-search的能力
- [❌ 待补充] 同上。
- 结合其他的Agent框架
- skill.md + cli方案通用方案支持集成到各种harness框架中
- 可以选择agent来启动reme服务后台
- [❌ 待补充] 同 §3.4。
- skill.md + mcp-tool方案通用方案
- 需要手动启动mcp服务
- [⚠️ 部分实现] MCP 服务可启动,但 skill.md 缺失。
## 更好的性能,更稳定和兼容
V4更加高效的底层记忆索引
- V3版本基于sqlite/chroma等本地数据库
- 在qwenpaw等低版本linux & win系统存在兼容性问题会存在core dump等问题
- 不支持关键词检索这里需要Keyword倒排索引对中文的支持较差
- [📌 历史] 描述 V3 痛点,不需要代码。
- V4版本我们重写了file parserfile storefile graphfile watcher手写了支持增量更新倒排索引
- file parser → [✅ `reme4/components/file_parser/`base/bare/default/linked 四种)]
- file store → [✅ `reme4/components/file_store/local_file_store.py`]
- file graph → [✅ `reme4/components/file_graph/`local/nx/neo4j]
- file watcher → [✅ `reme4/components/file_watcher/lite_file_watcher.py` 基于 watchfiles awatch`base_file_watcher.py` 抽象接口]
- 增量倒排索引 → [✅ `reme4/components/keyword_index/bm25_index.py`(增量 BM25`reme4/components/tokenizer/`regex / jieba 两种 tokenizerjieba 含 stopwords 子目录)]
- 未来可以使用rust/c++重写,高性能本地知识引擎
- [📌 规划]
## 知识库应用场景(重点)
### 金融
产业链
- [❌ 待补充] 没有领域 schema / 产业链知识图谱样例,需要写 demo 数据集 + topic 配置。
### 自己的工作&生活
xxxx
- [❌ 待补充] 文档本身就是占位,需要补充具体场景描述与对应的 daily/knowledge 目录样例。
---
## 标注小结
### ✅ 已经在 `reme4/` 中实现的能力
1. **组件框架**backend 注册(`component_registry.py`)、生命周期(`base_component.py`)、依赖声明 + 拓扑启动(`application.py:80`)。
2. **Job/Step 体系**`components/job/base_job.py``components/job/stream_job.py``steps/base_step.py``steps/common/*`
3. **服务/客户端**HTTP`service/http_service.py` + `client/http_client.py`、MCP`service/mcp_service.py` + `client/mcp_client.py`CLI 入口 `reme.py:main`
4. **Markdown 解析**`file_parser/linked_file_parser.py`,含 frontmatter、wikilink + Dataview 谓词、AST 树、带全标题骨架的 chunking。
5. **Graph**`file_graph/{local,nx,neo4j}_file_graph.py`,双向链接索引。
6. **存储 / 索引**`file_store/local_file_store.py` + `keyword_index/bm25_index.py`(增量 BM25+ `tokenizer/{regex,jieba}_tokenizer.py`
7. **文件监听**`file_watcher/lite_file_watcher.py`watchfiles 轮询)。
8. **混合检索 + 一跳展开**`steps/common/search.py`vector + keyword RRF 融合,可附 outlinks/inlinks
9. **Embedding / LLM 适配壳**`components/embedding/openai_embedding_model.py``components/as_llm/``components/as_llm_formatter/``components/as_token_counter/`
### ❌ 需要额外补充的能力
1. **记忆类型分层**:个性化 / 程序化 / 知识类的 schema 与路由。
2. **memory-self-evolving**auto-memory拆事件→ daily/YYYYMMDD/{event}.md、auto-dream空闲整理→ knowledge/{topic}/)、对应触发器与调度。
3. **存储目录约定**`resource/``proactive/` 目录、daily 主索引协议、knowledge topic 枚举均未落地。
4. **auto-link 后台任务**:自动从正文挖出实体并写回 wikilink。
5. **多跳渐进展开检索 API**:当前只能一跳。
6. **标准 Markdown `[text](url.md)` 链接**:尚未纳入 graph 边解析。
7. **skill.md 模板**CLI 与 MCP 两种集成方式都缺 skill 描述文件。
8. **Agent 拉起后台 reme 服务**:缺脚本/约定。
9. **qwenpaw / AgentScope SDK 集成**:包括 `AgentscopeTools` 包装层与 auto-memory/dream/search 暴露。
10. **应用场景样例**:金融产业链、个人工作&生活的 demo 数据 + topic 配置。