--- 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 笔记规范(双标签 + 引用链接)