146 lines
6.0 KiB
Markdown
146 lines
6.0 KiB
Markdown
|
|
---
|
|||
|
|
name: nerd-brain-memory-system
|
|||
|
|
description: 搭建和维护 nerd-Brain (呆脑子) 本地 AI 记忆系统 - 基于 Obsidian + Python + 张三(Qwen 3.6) 的轻量级长效记忆方案
|
|||
|
|
version: 2.0
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# nerd-Brain 记忆系统搭建指南
|
|||
|
|
|
|||
|
|
## 系统架构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
┌─────────────┐ ┌──────────────┐ ┌───────────────────────┐
|
|||
|
|
│ anchor_ │────▶│ Obsidian │────▶│ 张三 (Qwen 3.6-35B) │
|
|||
|
|
│ writer.py │ │ Vault (MD) │ │ A100:8083/v1 │
|
|||
|
|
└─────────────┘ └──────────────┘ └───────────────────────┘
|
|||
|
|
│ │ │
|
|||
|
|
▼ ▼ │
|
|||
|
|
┌─────────────┐ ┌──────────────┐ │
|
|||
|
|
│ anchor_ │ │ anchor_ │ │
|
|||
|
|
│ search.py │ │ decay.py │ │
|
|||
|
|
│ (多维检索) │ │ (遗忘+返场) │ │
|
|||
|
|
└─────────────┘ └──────────────┘ │
|
|||
|
|
│
|
|||
|
|
┌─────┴────────┐
|
|||
|
|
│ 百炼 (备用) │
|
|||
|
|
│ coding.dash │
|
|||
|
|
│ scope.aliyun │
|
|||
|
|
│ .com/v1 │
|
|||
|
|
└──────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**核心原则**:
|
|||
|
|
- 拒绝 Docker/向量数据库/外部服务
|
|||
|
|
- 纯 Python 脚本 + Obsidian Markdown + YAML Frontmatter
|
|||
|
|
- **张三 (Qwen 3.6-35B-A3B)** 作为主模型,百炼作为备用
|
|||
|
|
|
|||
|
|
## 核心脚本
|
|||
|
|
|
|||
|
|
### 1. anchor_writer.py - 记忆写入
|
|||
|
|
- 调用 LLM 生成摘要、情感坐标 (valence/arousal)、关键词
|
|||
|
|
- 输出标准 Markdown 文件到 Obsidian Vault
|
|||
|
|
- **Provider 优先级**:优先使用 `zhangsan`,降级到 `bailian`
|
|||
|
|
- **Prompt 规范**:
|
|||
|
|
- 标签限制:EXACTLY 2 tags,格式 `#Category/ProjectName`
|
|||
|
|
- 引用规范:提到 GitHub 或外部素材时,必须附带链接
|
|||
|
|
- 摘要限制:max 50 words
|
|||
|
|
|
|||
|
|
### 2. anchor_search.py - 多维检索
|
|||
|
|
- 关键词 + 情感 + 时间 + 重要性加权搜索
|
|||
|
|
- 支持无 Frontmatter 的纯 Markdown 文件
|
|||
|
|
- 返回按相关性排序的结果
|
|||
|
|
|
|||
|
|
### 3. anchor_decay.py - 遗忘与返场
|
|||
|
|
- 改进版艾宾浩斯遗忘曲线
|
|||
|
|
- 参数:`DECAY_LAMBDA=0.05`, `THRESHOLD=0.3`, `RESURRECTION_CHANCE=0.1`
|
|||
|
|
- **两阶段逻辑**:
|
|||
|
|
1. **活跃文件扫描**:得分低于阈值时,10% 概率触发"防归档"复活(状态改为 `resurrected`)
|
|||
|
|
2. **归档文件扫描**:扫描 `Archive/` 目录,10% 概率将文件拉回**原路径**(归档时记录 `original_path`)
|
|||
|
|
|
|||
|
|
### 4. anchor_vault_sync.py - 索引生成
|
|||
|
|
- 扫描 Vault 目录,生成 `anchor_vault_index.json`
|
|||
|
|
- 供检索引擎快速查询
|
|||
|
|
|
|||
|
|
## 配置说明
|
|||
|
|
|
|||
|
|
### Hermes config.yaml Provider 配置
|
|||
|
|
```yaml
|
|||
|
|
custom_providers:
|
|||
|
|
- name: zhangsan
|
|||
|
|
base_url: http://101.36.73.102:8083/v1
|
|||
|
|
api_key: sk-omnicoder-local-2026
|
|||
|
|
api_mode: chat_completions
|
|||
|
|
model: Qwen3.6-35B-A3B
|
|||
|
|
- name: bailian
|
|||
|
|
base_url: https://coding.dashscope.aliyuncs.com/v1
|
|||
|
|
api_key: sk-sp-...
|
|||
|
|
api_mode: chat_completions
|
|||
|
|
model: qwen3.5-plus
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 脚本常量配置
|
|||
|
|
- `VAULT_DIR`: Obsidian 笔记库路径 (`/Users/fyah/Documents/如梦初醒/memory/test/Anchor-Memory`)
|
|||
|
|
- `ARCHIVE_DIR`: 归档目录路径 (`VAULT_DIR/Archive`)
|
|||
|
|
- `RESURRECTION_CHANCE`: 返场概率(默认 0.1)
|
|||
|
|
- `DECAY_LAMBDA`: 遗忘速率(默认 0.05)
|
|||
|
|
- `THRESHOLD`: 归档阈值(默认 0.3)
|
|||
|
|
|
|||
|
|
## Obsidian 笔记规范
|
|||
|
|
|
|||
|
|
1. **标签**:严格限制 2 个,格式 `#Category/ProjectName`
|
|||
|
|
- 示例:`#memory/nerd-brain`, `#llm/local-deploy`, `#project/nerd-brain`, `#tool/git-workflow`
|
|||
|
|
- 类别:llm, memory, project, tool, idea
|
|||
|
|
2. **引用**:外部资源/GitHub 项目必须附带链接
|
|||
|
|
- 格式:`Ombre-Brain(https://github.com/P0luz/Ombre-Brain)`
|
|||
|
|
3. **结构**:按项目文件夹组织,每周汇总
|
|||
|
|
- 禁止"一分钟一篇"的碎片笔记
|
|||
|
|
- 仅记录:进度、关键事项、报错、核心想法
|
|||
|
|
|
|||
|
|
## Git 工作流
|
|||
|
|
|
|||
|
|
- **仓库地址**:`http://101.36.73.102:3112/fyah/mao1.git`
|
|||
|
|
- **推送策略**:每次改动完成后**立即** `git push`,不积攒
|
|||
|
|
- **权限账号**:`fyah`(已配置 remote URL)
|
|||
|
|
- **执行流程**:
|
|||
|
|
1. 完成代码/笔记修改
|
|||
|
|
2. 本地验证通过
|
|||
|
|
3. `git add -A && git commit -m "feat: <简短描述>"`
|
|||
|
|
4. `git push -u origin main`
|
|||
|
|
- **故障处理**:推送失败超过 2 次,停止并通知用户
|
|||
|
|
|
|||
|
|
## 常见问题
|
|||
|
|
|
|||
|
|
### Git 推送权限问题
|
|||
|
|
- 症状:`pre-receive hook declined`
|
|||
|
|
- 解决:确认仓库写入权限,使用 `git remote set-url origin http://user:pass@repo.git`
|
|||
|
|
|
|||
|
|
### API 连接失败
|
|||
|
|
- 症状:429 限流或超时
|
|||
|
|
- 解决:检查 API Key 有效性,确认张三端点 `http://101.36.73.102:8083/v1`
|
|||
|
|
|
|||
|
|
### JSON 解析错误
|
|||
|
|
- 症状:脚本报错 `JSONDecodeError`
|
|||
|
|
- 解决:Prompt 中强调 `Output ONLY a valid JSON object. No markdown, no explanation.`
|
|||
|
|
|
|||
|
|
### 复活后文件位置错误
|
|||
|
|
- 症状:复活文件全堆在根目录
|
|||
|
|
- 解决:归档时必须记录 `metadata["original_path"]`,复活时使用该路径恢复
|
|||
|
|
|
|||
|
|
## 备份与回滚
|
|||
|
|
- 原始脚本备份:`~/.hermes/anchor_memory_backup/`
|
|||
|
|
- 回滚命令:`cp ~/.hermes/anchor_memory_backup/*.py ~/.hermes/`
|
|||
|
|
|
|||
|
|
## 依赖
|
|||
|
|
```bash
|
|||
|
|
pip install requests pyyaml
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 状态跟踪
|
|||
|
|
- ✅ 记忆写入(含情感标签)
|
|||
|
|
- ✅ 多维检索引擎
|
|||
|
|
- ✅ 遗忘曲线 + 自动归档
|
|||
|
|
- ✅ 归档后随机返场(10% 概率,两阶段扫描)
|
|||
|
|
- ✅ 张三 (Qwen 3.6-35B-A3B) 本地模型接入
|
|||
|
|
- ✅ Git 工作流自动化
|
|||
|
|
- ✅ Obsidian 笔记规范(双标签 + 引用链接)
|