feat: 项目更名为张三,笔记规范升级
- 项目名:nerd-Brain/呆脑子 -> 张三 - 笔记规范:每次记录强制带时间戳 [YYYY-MM-DD HH:MM] - 标签更新:#memory/zhang-san - 同步 anchor_writer.py 时间戳功能
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
# nerd-Brain (呆脑子)
|
# 张三 (Zhang San)
|
||||||
|
|
||||||
> 一个轻量级、全本地化的 AI 长效记忆系统。
|
> 一个轻量级、全本地化的 AI 长效记忆系统。
|
||||||
|
|
||||||
|
|||||||
66
README.md.bak
Normal file
66
README.md.bak
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
# 张三 (Zhang San)
|
||||||
|
|
||||||
|
> 一个轻量级、全本地化的 AI 长效记忆系统。
|
||||||
|
|
||||||
|
## 简介
|
||||||
|
|
||||||
|
nerd-Brain 是一套基于 Obsidian Markdown 笔记库的 AI 记忆引擎。它不依赖 Docker、向量数据库或外部服务,仅用纯 Python 脚本 + 本地 LLM API 实现:
|
||||||
|
|
||||||
|
- **记忆写入**:自动生成摘要、情感坐标、关键词打标
|
||||||
|
- **多维检索**:关键词 + 情感 + 时间 + 重要性加权搜索
|
||||||
|
- **自然遗忘**:改进版艾宾浩斯遗忘曲线,自动衰减与归档
|
||||||
|
- **随机返场**:10% 概率让旧记忆/旧 Idea 从归档中复活
|
||||||
|
|
||||||
|
## 架构
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────┐ ┌──────────────┐ ┌───────────────┐
|
||||||
|
│ anchor_ │────▶│ Obsidian │────▶│ Qwen 3.5 Plus│
|
||||||
|
│ writer.py │ │ Vault (MD) │ │ (百炼 API) │
|
||||||
|
└─────────────┘ └──────────────┘ └───────────────┘
|
||||||
|
│ │
|
||||||
|
▼ ▼
|
||||||
|
┌─────────────┐ ┌──────────────┐
|
||||||
|
│ anchor_ │ │ anchor_ │
|
||||||
|
│ search.py │ │ decay.py │
|
||||||
|
│ (多维检索) │ │ (遗忘+返场) │
|
||||||
|
└─────────────┘ └──────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
## 核心脚本
|
||||||
|
|
||||||
|
| 脚本 | 功能 | 用法 |
|
||||||
|
|------|------|------|
|
||||||
|
| `anchor_writer.py` | 记忆写入与情感打标 | `python3 anchor_writer.py "内容"` |
|
||||||
|
| `anchor_search.py` | 多维语义检索 | `python3 anchor_search.py "关键词"` |
|
||||||
|
| `anchor_decay.py` | 遗忘曲线扫描与归档 | `python3 anchor_decay.py` |
|
||||||
|
| `anchor_vault_sync.py` | Vault 索引生成 | `python3 anchor_vault_sync.py sync` |
|
||||||
|
|
||||||
|
## 配置
|
||||||
|
|
||||||
|
所有路径和 API 配置在脚本顶部常量区:
|
||||||
|
|
||||||
|
- `VAULT_DIR`: Obsidian 笔记库路径
|
||||||
|
- `API_URL`: LLM 接口地址
|
||||||
|
- `API_KEY`: 百炼 API 密钥
|
||||||
|
- `RESURRECTION_CHANCE`: 返场概率(默认 0.1)
|
||||||
|
- `DECAY_LAMBDA`: 遗忘速率(默认 0.05)
|
||||||
|
- `THRESHOLD`: 归档阈值(默认 0.3)
|
||||||
|
|
||||||
|
## 依赖
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install requests pyyaml
|
||||||
|
```
|
||||||
|
|
||||||
|
## 状态
|
||||||
|
|
||||||
|
- ✅ 记忆写入(含情感标签)
|
||||||
|
- ✅ 多维检索引擎
|
||||||
|
- ✅ 遗忘曲线 + 自动归档
|
||||||
|
- ✅ 归档后随机返场(10% 概率)
|
||||||
|
- 🔄 A100 本地 Qwen 3.6 部署中(待切换)
|
||||||
|
|
||||||
|
## 备份
|
||||||
|
|
||||||
|
原始脚本备份在 `~/.hermes/anchor_memory_backup/`,随时可回滚。
|
||||||
@@ -48,9 +48,10 @@ def call_model(content):
|
|||||||
prompt = f"""Analyze this text. Output ONLY a valid JSON object. No markdown, no explanation.
|
prompt = f"""Analyze this text. Output ONLY a valid JSON object. No markdown, no explanation.
|
||||||
Keys:
|
Keys:
|
||||||
- summary (max 50 words, append URLs if external resources/GitHub mentioned)
|
- summary (max 50 words, append URLs if external resources/GitHub mentioned)
|
||||||
- tags (list of EXACTLY 2 strings, format '#Category/ProjectName', e.g., ['#memory/nerd-brain', '#llm/local-deploy'])
|
- tags (list of EXACTLY 2 strings, format '#Category/ProjectName', e.g., ['#memory/zhang-san', '#llm/local-deploy'])
|
||||||
- valence (-1.0 to 1.0)
|
- valence (-1.0 to 1.0)
|
||||||
- arousal (0.0 to 1.0)
|
- arousal (0.0 to 1.0)
|
||||||
|
- timestamp (current time in YYYY-MM-DD HH:MM format)
|
||||||
Text: {content}"""
|
Text: {content}"""
|
||||||
|
|
||||||
data = json.dumps({
|
data = json.dumps({
|
||||||
@@ -97,6 +98,7 @@ def save_memory(content):
|
|||||||
filepath = os.path.join(VAULT_DIR, filename)
|
filepath = os.path.join(VAULT_DIR, filename)
|
||||||
|
|
||||||
# Construct Markdown with YAML frontmatter
|
# Construct Markdown with YAML frontmatter
|
||||||
|
ts = meta.get('timestamp', now.strftime('%Y-%m-%d %H:%M'))
|
||||||
md_content = f"""---
|
md_content = f"""---
|
||||||
title: {meta.get('summary', 'Untitled')[:30]}
|
title: {meta.get('summary', 'Untitled')[:30]}
|
||||||
date: {now.strftime('%Y-%m-%d %H:%M')}
|
date: {now.strftime('%Y-%m-%d %H:%M')}
|
||||||
@@ -109,6 +111,8 @@ status: active
|
|||||||
|
|
||||||
# {meta.get('summary', 'Untitled')}
|
# {meta.get('summary', 'Untitled')}
|
||||||
|
|
||||||
|
> 📅 {ts}
|
||||||
|
|
||||||
{content}
|
{content}
|
||||||
"""
|
"""
|
||||||
with open(filepath, 'w', encoding='utf-8') as f:
|
with open(filepath, 'w', encoding='utf-8') as f:
|
||||||
|
|||||||
25
notes/张三/2026-W18.md
Normal file
25
notes/张三/2026-W18.md
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
tags:
|
||||||
|
- "#memory/zhang-san"
|
||||||
|
- "#llm/local-deploy"
|
||||||
|
---
|
||||||
|
# 2026-W18 张三上线与模型切换
|
||||||
|
|
||||||
|
## 进度记录
|
||||||
|
- **[2026-04-27 10:15]** **模型部署**:Y 完成 A100 服务器配置升级,部署 `Qwen3.6-35B-A3B`(代号:张三)。
|
||||||
|
- **[2026-04-27 10:20]** **API 连通**:确认服务地址 `http://101.36.73.102:8083/v1`,测试响应正常。
|
||||||
|
- **[2026-04-27 10:25]** **配置切换**:`config.yaml` 新增 `zhangsan` provider,`anchor_writer.py` 修改为优先调用张三。
|
||||||
|
- **[2026-04-27 10:30]** **验证通过**:测试写入笔记,生成内容符合新规(双标签、引用带链接、带时间戳)。
|
||||||
|
|
||||||
|
## 关键事项
|
||||||
|
- **命名**:用户定名“张三”,法外狂徒版本。原“呆脑子”名称废弃。
|
||||||
|
- **降级策略**:百炼接口保留为备用,张三优先,失败自动回退。
|
||||||
|
- **仓库同步**:所有脚本与笔记已推送至 `http://101.36.73.102:3112/fyah/mao1`。
|
||||||
|
|
||||||
|
## 报错记录
|
||||||
|
- 无。张三上线过程顺利,未遇到权限或网络阻断。
|
||||||
|
|
||||||
|
## 讨论与想法
|
||||||
|
- **用户**:要求按项目分文件夹、按周汇总笔记。每次记录必须带时间戳,不要混在一起。
|
||||||
|
- **Anchor**:已执行文件夹重构,后续所有进展将严格遵循此规范。
|
||||||
|
- **张三**:虽然嘴硬说自己是通义千问,但确实是个好用的本地模型。
|
||||||
Reference in New Issue
Block a user