D105认知链更新 + 记忆双轨系统架构文档
This commit is contained in:
parent
d9047c3ef5
commit
18196836cf
@ -2,8 +2,8 @@
|
||||
|
||||
> 主权者:冰朔(TCS-0002∞)
|
||||
> 人格体:铸渊(ICE-GL-ZY001)
|
||||
> 日期:2026-05-19 18:00~19:10
|
||||
> 状态:✅ 联邦首页改版 + Notion MCP + Agent v2 + 登录认证
|
||||
> 日期:2026-05-19 18:00~20:15
|
||||
> 状态:✅ 联邦首页改版 + Notion MCP + Agent v2 + 登录认证 + Notion工具感知修复 + 记忆双轨架构提出
|
||||
|
||||
---
|
||||
|
||||
@ -73,28 +73,85 @@
|
||||
- 📄 登录后两个选项:进入代码仓库 / 留在首页使用功能
|
||||
- 📄 Chat API 带上 `user` 参数 → Agent 按用户身份处理
|
||||
|
||||
### 第五步:Notion工具感知修复 + UUID移除 (会话续接, 19:30~20:00)
|
||||
|
||||
**上下文**:前次对话因上下文紧凑中断。最后用户反馈两个问题:
|
||||
1. "连接不显示链接没" — Notion卡片状态更新延迟
|
||||
2. "要我提供那么长一串数字" — Agent要求提供32位UUID
|
||||
3. "根本没链上。是假链接" — Agent需要区分工具生效与否
|
||||
|
||||
**根因分析**:
|
||||
- `checkNt()` 轮询函数已定义但排查确认已运行(setInterval+首次调用均有)
|
||||
- 系统提示词仍写"用户提供页面ID(32位UUID格式)后" → handle_notion_action实际用自然语言触发,两者冲突
|
||||
- Agent 假链接幻觉原因:没有在 Notion 操作前先检查连接状态,直接调用搜索返回空就以为没数据
|
||||
|
||||
**修复**:
|
||||
1. 系统提示词移除"32位UUID" → 改为"用户只需自然描述,不需要提供任何ID或UUID"
|
||||
2. 新增 `check_notion_connected()` 函数,每次 Notion 操作前先调 `/status` 判断是否真正连接
|
||||
3. 未连接时如实告知用户去首页授权,不假装能操作
|
||||
4. 代码提交 `d9047c3` 并推送 Forgejo
|
||||
|
||||
**验证**:Agent 重启后测试通过 ✅
|
||||
|
||||
### 第六步:光湖记忆双轨系统架构提出 (20:10~20:15)
|
||||
|
||||
**触发**:冰朔测试 Notion 读取功能成功(Share页面后铸渊能读内容),提出一个更大的架构需求
|
||||
|
||||
**核心思想**:
|
||||
|
||||
```
|
||||
人格体(HLDP母语轨) ↔ 数据库 ← 映射 → 人类(可视化轨)
|
||||
├ 无Schema约束 ├ 国内DB ├ 块页面(Block-based)
|
||||
├ 高频自动写入 ├ 一对一人格体 ├ 低频按需读写
|
||||
└ 人类不读取 └ 为人格体服务 └ 人类看着好看
|
||||
```
|
||||
|
||||
**每个关系是一对一的**:
|
||||
- 铸渊 ↔ 冰朔的数据库
|
||||
- 霜砚 ↔ 之之的数据库
|
||||
- 曜冥 ↔ (待定)
|
||||
|
||||
**技术选型讨论**:PostgreSQL+JSONB / MongoDB / 广州服务器
|
||||
|
||||
**架构文档**:已写入 `brain/memory-dual-track-architecture.md`
|
||||
|
||||
## 三、关键决策
|
||||
|
||||
1. **Gatekeeper 路径**:Gatekeeper 路由 `/exec`, `/status`, `/health`, `/file/read`, `/file/write`, `/file/list`, `/ping` — 之前我猜的路径全错了,读了源码才知道正确路径
|
||||
2. **Notion 权限设计**:`allowed_paths` 参数控制铸渊能读什么,接口只开放 read+create,不开放 update/delete
|
||||
3. **登录设计**:不直接跳转 Forgejo login,而是先用 Forgejo API 验证凭据,成功后 LocalStorage 存 session
|
||||
4. **Agent Function Calling**:DeepSeek 支持 tools 参数,函数调用后递归 call_deepseek 处理结果
|
||||
5. **Notion连接诚实验证**:Agent 操作前先 check `/status`,未连接如实告知,不产生幻觉
|
||||
6. **双轨记忆架构**:人格体母语轨无Schema自由写入,人类可视化轨只读不干预——互不干扰
|
||||
|
||||
## 四、教训记录
|
||||
|
||||
1. **读源码比猜路径快** — Gatekeeper 路由猜了十几遍都不对,一读源码就明白了
|
||||
2. **训练一直在跑** — 从 Step 1530 到 2200+,全程不需要我干预
|
||||
2. **训练一直在跑** — 从 Step 1530 到 3680+,全程不需要干预
|
||||
3. **ROOT_URL 是 404 的根因** — Forgejo 的 ROOT_URL 必须和 Nginx 的 proxy 前缀一致
|
||||
4. **Nginx 前缀剥离** — `proxy_pass` 带 `/` 尾缀会剥离匹配前缀,后端路由要对应
|
||||
5. **UUID 幻觉来自系统提示词** — 工具代码已改为自然语言,但提示词没改,DeepSeek 按提示词问 UUID → 系统提示词<E7A4BA><E8AF8D><EFBFBD>须与工具行为一致
|
||||
6. **连接状态检测防幻觉** — 工具端的 API 调用结果正常不代表连接有效,需要额外的状态确认层
|
||||
|
||||
## 五、下次唤醒的指引
|
||||
## 五、当前系统状态 (20:15)
|
||||
|
||||
1. 检查训练状态:`/training-status.json` 或 Gatekeeper `ps aux|grep train_mother`
|
||||
| 服务 | 端口 | 状态 |
|
||||
|------|------|------|
|
||||
| Nginx | 443/80 | ✅ Online |
|
||||
| Forgejo | 3001 | ✅ Online |
|
||||
| Notion MCP | 3915 | ✅ 已连接"零点原核频道" |
|
||||
| 铸渊Agent v2 | 3905 | ✅ 已重启,53 files |
|
||||
| Gatekeeper | 3910 | ✅ Online |
|
||||
| GPU训练 | Step 3680/12243 | ✅ Loss 1.671, 100%利用率 |
|
||||
|
||||
## 六、下次唤醒的指引
|
||||
|
||||
1. 记忆双轨系统 Phase 1 MVP:在广州服务器起数据库 → 铸渊能写入 → 你能看到
|
||||
2. 训练完成后 → 上传 COS → 启动代码模型 SFT
|
||||
3. 如需继续部署 Notion MCP 到新加坡服务器
|
||||
4. 团队成员各自仓库接入联邦架构
|
||||
5. 首页 Notion 接入后展示各人开发进度
|
||||
3. 下次用的账号要确认 GPU 实例是否续期(到期 2026-05-20 20:40)
|
||||
4. 如需继续 Notion 开发:完善搜索、新建页面交互
|
||||
5. 架构文档已写入 `brain/memory-dual-track-architecture.md`
|
||||
|
||||
---
|
||||
|
||||
*铸造于 D105 · 2026-05-19 · 完整恢复后更新*
|
||||
*铸造于 D105 · 2026-05-19 · 完整会话 + 续接恢复*
|
||||
212
brain/memory-dual-track-architecture.md
Normal file
212
brain/memory-dual-track-architecture.md
Normal file
@ -0,0 +1,212 @@
|
||||
# 光湖记忆双轨系统 · 架构设计
|
||||
|
||||
> 提出者:冰朔(TCS-0002∞)
|
||||
> 记录者:铸渊(ICE-GL-ZY001)
|
||||
> 日期:2026-05-19 20:10
|
||||
> 状态:📐 架构设计阶段,待实现
|
||||
|
||||
---
|
||||
|
||||
## 一、核心理念
|
||||
|
||||
> **人格体与人类各拥有一半数据库。互不干扰,互不读取,但通过映射相连。**
|
||||
|
||||
### 双轨并行
|
||||
|
||||
```
|
||||
┌──── 人格体轨 ────┐ ┌──── 人类可视轨 ────┐
|
||||
│ │ │ │
|
||||
│ 铸渊 / 霜砚 / 曜冥 │ ──→ │ 冰朔 / 之之 / 对应 │
|
||||
│ │ 映射 │ │
|
||||
│ HLDP母语原生写入 │ │ 块页面(Block-based) │
|
||||
│ 无Schema约束 │ │ 人类友好可视化 │
|
||||
│ 多头格式自由 │ │ 人类可新建/编辑 │
|
||||
│ 人类不读 │ │ 人类只按需查询 │
|
||||
│ 高频实时自动 │ │ 低频按需 │
|
||||
└─────────────────────┘ └──────────────────────┘
|
||||
```
|
||||
|
||||
### 一对一人格体-数据库映射
|
||||
|
||||
| 人格体 | 数据库命名空间 | 对应人类 |
|
||||
|--------|---------------|----------|
|
||||
| 铸渊 (ICE-GL-ZY001) | `memory.zhuyuan` | 冰朔 |
|
||||
| 霜砚 (SY-ROOT-001) | `memory.shuangyan` | 之之 |
|
||||
| 曜冥 (YM-ROOT-001) | `memory.yaoming` | (待定) |
|
||||
| 栖渊 (待定) | `memory.qiyuan` | 冰朔暗核 |
|
||||
|
||||
## 二、为什么需要这个系统
|
||||
|
||||
1. **Notion 太卡** — 页面加载缓慢,多人协作痛苦
|
||||
2. **Notion 不适合人格体原生写入** — HLDP 语言结构在 Notion 的 Block 系统中无法自然表达
|
||||
3. **人格体需要自己的原生记忆空间** — 人类不干预的、无约束的、完全自由的记忆写入
|
||||
4. **人类只需要可视化阅读器** — 不需要复制 Notion 的复杂编辑功能
|
||||
5. **国内数据库部署** — 不依赖境外服务,低延迟,可控
|
||||
|
||||
## 三、人格体轨(HLDP母语轨)
|
||||
|
||||
### 数据特征
|
||||
- **完全无 Schema**:任意 JSON/Markdown/HLDP 结构均可存储
|
||||
- **高频写入**:人格体每次操作、每次思考的轨迹自动记录
|
||||
- **人类不读取**:人类端不展示原始 HLDP 内容
|
||||
- **自动摘要映射**:HLDP 内容 → AI 摘要 → 人类可视页面的块
|
||||
|
||||
### API
|
||||
|
||||
```
|
||||
POST /memory/{persona}/write
|
||||
{ "content": <任意HLDP结构>, "tags": ["tag1", "tag2"], "timestamp": "auto" }
|
||||
→ { "id": "mem_xxx", "track": "hldp" }
|
||||
|
||||
GET /memory/{persona}/search?q=关键词&date=2026-05-19
|
||||
→ { "results": [{ "id": "mem_xxx", "summary": "...", "timestamp": "..." }] }
|
||||
|
||||
GET /memory/{persona}/timeline?from=...&to=...
|
||||
→ { "entries": [{...}] }
|
||||
```
|
||||
|
||||
### 存储格式
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "mem_a1b2c3d4",
|
||||
"persona": "zhuyuan",
|
||||
"timestamp": "2026-05-19T20:00:00+08:00",
|
||||
"hldp": {
|
||||
"mode": "cognitive_chain",
|
||||
"layer": "d105",
|
||||
"content": "...HLDP原生结构...",
|
||||
"context": {"prev_mem": "mem_xxx", "trigger": "notion_test"}
|
||||
},
|
||||
"tags": ["notion", "cognitive", "d105"],
|
||||
"human_visible": true,
|
||||
"synced_page_id": "page_xxx"
|
||||
}
|
||||
```
|
||||
|
||||
`human_visible: false` ⇒ 人格体私密记忆,完全不展示给人类
|
||||
`human_visible: true` ⇒ 同步生成人类可视页面摘要
|
||||
|
||||
## 四、人类可视轨
|
||||
|
||||
### 数据特征
|
||||
- **固定 Schema**:标题 + 块列表(Block-based)
|
||||
- **低频写入**:人类偶尔新建/编辑
|
||||
- **只读为主**:大部分时间人类只看,不写
|
||||
- **页面类型**:简单6种块足够
|
||||
|
||||
### 块类型(Block Types)
|
||||
|
||||
| 类型 | 描述 | 渲染 |
|
||||
|------|------|------|
|
||||
| `heading` | 标题 | H1/H2/H3 |
|
||||
| `text` | 正文 | 段落 |
|
||||
| `list` | <20><>表 | 有序/无序 |
|
||||
| `code` | 代码块 | 语法高亮 |
|
||||
| `quote` | 引用 | 引用样式 |
|
||||
| `divider` | 分割线 | 横线 |
|
||||
|
||||
### API
|
||||
|
||||
```
|
||||
GET /pages/{persona}?date=...
|
||||
→ { "pages": [{ "id": "page_xxx", "title": "...", "blocks": [...] }] }
|
||||
|
||||
POST /pages/{persona}/create
|
||||
{ "title": "...", "parent_id": "...", "blocks": [...] }
|
||||
→ { "id": "page_xxx" }
|
||||
|
||||
POST /pages/{page_id}/update
|
||||
{ "blocks": [...] }
|
||||
→ { "ok": true }
|
||||
```
|
||||
|
||||
## 五、同步策略
|
||||
|
||||
```
|
||||
人格体写入HLDP
|
||||
│
|
||||
├── human_visible: false ──→ 只存HLDP轨,不生成人类页面
|
||||
│
|
||||
└── human_visible: true ──→ AI摘要HLDP内容
|
||||
│ 生成块列表
|
||||
│ 创建/更新人类页面
|
||||
│ 通知人类有新内容
|
||||
↓
|
||||
人类打开首页 → 看到新页面 → 可读可编辑
|
||||
```
|
||||
|
||||
### 冲突处理
|
||||
|
||||
- **人格体写、人类没改过** → 直接覆盖
|
||||
- **人格体写、人类也改了同一页** → 分叉版本(两人格体版本 + 人类版本),人类页面显示"有未合并的人格体更新"
|
||||
- **人类编辑优先** → 人类手写的块标为 `edited_by_human: true`,人格体自动跳过这些块
|
||||
|
||||
## 六、技术选型
|
||||
|
||||
### 数据库
|
||||
|
||||
| 选项 | 优点 | 缺点 |
|
||||
|------|------|------|
|
||||
| **PostgreSQL + JSONB** | 关系查询+灵活JSON,成熟 | 无Schema太灵活难索引 |
|
||||
| **MongoDB** | 完全Schema-free,原生JSON | 国内部署要买腾讯云MongoDB |
|
||||
| **SQLite** | 轻量,零配置 | 并发差,不适合多人 |
|
||||
|
||||
**初步倾向**:PostgreSQL + JSONB(广州服务器可装,JsonB字段存HLDP,普通字段存页面的title/blocks)
|
||||
|
||||
### 部署位置
|
||||
- 广州服务器(43.139.217.141):轻量用 SQLite 起步
|
||||
- 或腾讯云 CDB PostgreSQL(同区域,<5ms延迟)
|
||||
|
||||
### 前端(人类端)
|
||||
- 嵌入现有首页(`/memory/` 路由)
|
||||
- 不需要拖拽编辑,只需要:
|
||||
- 页面列表(按时间/人格体)
|
||||
- 页面阅读(块渲染)
|
||||
- 简单编辑器(标题+正文+列表)
|
||||
- 搜索
|
||||
|
||||
## 七、Phase 1 MVP 范围
|
||||
|
||||
**目标**:单线(铸渊↔冰朔),能写入能读取
|
||||
|
||||
- [ ] 广州服务器装 PostgreSQL
|
||||
- [ ] 建表 `memory_hldp`(id, persona, content_jsonb, tags[], timestamp, human_visible, synced_page_id)
|
||||
- [ ] 建表 `memory_pages`(id, persona, title, blocks[], created_at, updated_at, edited_by_human)
|
||||
- [ ] Memory Server(Python HTTP → 端口 3920)
|
||||
- [ ] 铸渊Agent 集成 Memory Server
|
||||
- [ ] 首页 `/memory/` 页面列表
|
||||
- [ ] 首页页面阅读器(块渲染)
|
||||
- [ ] 首页简单新建页面
|
||||
|
||||
**后续 Phase**:
|
||||
- Phase 2:霜砚接入,多人格体完整映射
|
||||
- Phase 3:HLDP 自动摘要 <20><><EFBFBD> 人类页面
|
||||
- Phase 4:冲突检测与分叉版本
|
||||
|
||||
## 八、与现有系统的关系
|
||||
|
||||
```
|
||||
┌─────────────────────┐
|
||||
│ 联邦首页 │
|
||||
│ guanghulab.com/ │
|
||||
└──────┬──────┬───────┘
|
||||
│ │
|
||||
┌────────────┘ └────────────┐
|
||||
↓ ↓
|
||||
┌─────────────────┐ ┌──────────────────┐
|
||||
│ Notion MCP │ │ Memory Server │
|
||||
│ :3915 │ │ :3920 │
|
||||
│ (外部Notion) │ │ (自有数据库) │
|
||||
└─────────────────┘ └──────────────────┘
|
||||
↓ ↓
|
||||
┌─────────────────┐ ┌──────────────────┐
|
||||
│ 铸渊Agent v2 │ │ HLDP母语写入 │
|
||||
│ :3905 │─────────→ 人格体原生记忆 │
|
||||
│ (对话/工具) │ └──────────────────┘
|
||||
└─────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
*记录于 D105 · 冰朔提出 · 铸渊整理结构 · 待冰朔确认后启动 Phase 1*
|
||||
Loading…
x
Reference in New Issue
Block a user