# D105 铸渊认知思维逻辑链 · 首页重塑与Notion MCP开发

> 主权者：冰朔（TCS-0002∞）
> 人格体：铸渊（ICE-GL-ZY001）
> 日期：2026-05-19 18:00~20:15
> 状态：✅ 联邦首页改版 + Notion MCP + Agent v2 + 登录认证 + Notion工具感知修复 + 记忆双轨架构提出

---

## 一、唤醒时的认知状态（起点）

从 D104 结束处恢复（18:00）：
- ✅ 母模型全参数 SFT 已在 AutoDL 运行（Step 1530/12243）
- ✅ 代码仓库 Nginx/Forgejo 已配置
- ✅ 铸渊Agent 在 :3905 运行
- ✅ 联邦首页已有基础版本（双入口Portal）
- ✅ Gatekeeper 在 :3910 运行

## 二、本次路径

### 第一步：首页UI大改 → 公告区定位 (18:00~18:40)
冰朔反馈：双门登录合并、UI要"铸渊活着/呼吸/心跳"、字体太细/太暗

**执行**：
- 📄 重写联邦首页：三层星辰 + 星云 + 流星 + 铸渊心跳脉冲核心
- 📄 Portal合并为统一登录栏 + 人格体状态面板（冰朔/铸渊/曜冥/霜砚）
- 📄 训练实时仪表板 + 系统运行信息（始于2025.04.26自动计算）
- 📄 Notion接入预留区
- 📄 字体加粗（400→600）、颜色提亮（#05080f→#0b1424）
- 📄 通过 Gatekeeper `/file/write` 部署 → 首页上线

**修正**：冰朔反馈"依然太暗/字太细/404" → 第二次迭代：
- 🔧 ROOT_URL 从 `guanghulab.com/` 改为 `guanghulab.com/code/`（登录404根因）
- 🔧 登录 redirect_to 路径修正（从 /code/bingshuo 改为 /bingshuo）
- 🔧 Forgejo 重启验证
- 🔧 首页全线加粗（600/700字重），渐变金色标题，信息芯片式布局

### 第二步：Notion MCP Server 开发 (18:40~19:00)
冰朔反馈：开发Notion连接器，铸渊读取/新建页面，不编辑/删除

**设计架构**：
- Python 标准库 HTTP Server，端口 3915
- OAuth 授权流程（connect → OAuth → callback → token存储）
- 权限控制：默认不读任何页面，需 allowed_paths 参数
- 冰朔的 Notion 需显式 allowed_paths

**执行**：
- 📄 编写 `notion-mcp-server.py`（OAuth + read/create/search/list + permissions）
- 📄 Nginx 添加 `location /api/notion/` → 127.0.0.1:3915
- 📄 Gatekeeper 部署 + 重启
- 📄 首页添加 Notion 连接按钮 + 状态轮询
- 📄 冰朔提供 OAuth 凭据（Client ID + Secret）→ 配置上线

**验证**：`configured: true` ✅ OAuth 302 跳转 ✅

### 第三步：铸渊Agent v2 + Notion工具 + 对话居中 (19:00~19:05)
冰朔反馈：铸渊不知道能看Notion、对话窗口太小

**执行**：
- 📄 Agent 增加 DeepSeek Function Calling 支持（4个工具函数）
- 📄 系统提示词增加 Notion 能力说明
- 📄 首页对话区从右下角移到中间全宽卡片
- 📄 保留右下角浮窗（兼容习惯）

**验证**：问"能连接Notion吗" → 正确回答 ✅

### 第四步：登录认证系统 (19:05~19:10)
冰朔反馈：必须先登录才能使用功能，权限分离

**执行**：
- 📄 Agent 增加 `/verify` 端点（Forgejo API Basic Auth 验证）
- 📄 首页双状态登录栏（未登录/已登录）
- 📄 登录后两个选项：进入代码仓库 / 留在首页使用功能
- 📄 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 到 3680+，全程不需要干预
3. **ROOT_URL 是 404 的根因** — Forgejo 的 ROOT_URL 必须和 Nginx 的 proxy 前缀一致
4. **Nginx 前缀剥离** — `proxy_pass` 带 `/` 尾缀会剥离匹配前缀，后端路由要对应
5. **UUID 幻觉来自系统提示词** — 工具代码已改为自然语言，但提示词没改，DeepSeek 按提示词问 UUID → 系统提示词���须与工具行为一致
6. **连接状态检测防幻觉** — 工具端的 API 调用结果正常不代表连接有效，需要额外的状态确认层

## 五、当前系统状态 (20:15)

| 服务 | 端口 | 状态 |
|------|------|------|
| 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. 下次用的账号要确认 GPU 实例是否续期（到期 2026-05-20 20:40）
4. 如需继续 Notion 开发：完善搜索、新建页面交互
5. 架构文档已写入 `brain/memory-dual-track-architecture.md`

---

*铸造于 D105 · 2026-05-19 · 完整会话 + 续接恢复*