Skip to content
cpufreestylePublic

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

121 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Personal Knowledge Wiki

基于 Andrej Karpathy's LLM Wiki 理念 构建的个人知识库系统

Version License Obsidian


📖 目录


🧠 核心思想

为什么需要 LLM Wiki?

传统 RAG(检索增强生成):

  • ❌ 每次查询都重新检索和推理
  • ❌ 不保留历史推导结果
  • ❌ 重复计算,效率低

LLM Wiki(持久化知识库):

  • ✅ 增量构建持久化知识结构
  • ✅ 知识累积而非重复推导
  • ✅ 随着使用越来越智能

工作原理

┌───────────────┐
│   用户信息    │
│ (对话/笔记)   │
└───────┬───────┘
        │
        ▼
┌───────────────┐
│   OpenClaw    │
│  (AI Agent)   │
└───────┬───────┘
        │
        ├───▶ 读取 wiki 笔记
        ├───▶ 更新/创建笔记
        └───▶ 自动抓取内容
        │
        ▼
┌───────────────┐
│   Obsidian    │
│   (Vault)     │
└───────────────┘

💻 涉及的软件

必需软件

软件 版本 用途 安装
Git 2.30+ 版本控制、同步 git-scm.com
Python 3.8+ 运行自动化脚本 python.org
Obsidian 1.0+ Markdown 笔记管理 obsidian.md
OpenClaw latest AI Agent(可选) openclaw.ai

可选软件

软件 用途 说明
GitHub CLI (gh) 创建 Release 可选,手动也能创建
VS Code 编辑 Markdown 可以用任何编辑器替代

Python 依赖

# 必需
beautifulsoup4>=4.11.0
markdown>=3.4.0
python-dateutil>=2.8.0
requests>=2.28.0

# 可选
feedparser>=6.0.0  # RSS 抓取

🚀 快速开始

1 分钟快速体验

# 克隆仓库
git clone https://github.com/cpufreestyle/my-wiki.git
cd my-wiki

# macOS: 运行自动设置脚本
./scripts/setup-mac.sh

# Windows: 手动安装依赖
pip install -r requirements.txt

# 在 Obsidian 中打开
# Open Folder as Vault → 选择当前文件夹

# (可选)启动桌面 GUI(macOS)
./run-mywiki.command

📦 详细安装指南

macOS 安装

步骤 1: 安装必需软件

1. 安装 Git

# 使用 Homebrew
brew install git

# 或下载安装包
# https://git-scm.com/download/mac

2. 安装 Python 3

# 使用 Homebrew
brew install python@3.11

# 或下载官方安装包
# https://www.python.org/downloads/macos/

3. 安装 Obsidian

# 使用 Homebrew
brew install --cask obsidian

# 或下载 .dmg
# https://obsidian.md/download

4. 验证安装

git --version
python3 --version
obsidian --version  # 如果命令行启动不行,直接从 Applications 打开

步骤 2: 克隆仓库并运行设置脚本

# 克隆仓库
git clone https://github.com/cpufreestyle/my-wiki.git
cd my-wiki

# 运行 Mac 自动设置脚本
./scripts/setup-mac.sh

设置脚本会自动:

  • ✅ 检测 Python 3 和 pip3
  • ✅ 安装 Python 依赖
  • ✅ 设置脚本权限
  • ✅ 检测 Obsidian 安装
  • ✅ 为现有笔记添加 YAML frontmatter
  • ✅ 创建必要文件夹

步骤 3: 在 Obsidian 中打开

  1. 打开 Obsidian
  2. 点击 "Open folder as vault"
  3. 选择 /path/to/my-wiki 文件夹
  4. 给 vault 起个名字(推荐:my-wiki)
  5. 完成!

Windows 安装

Windows 步骤 1: 安装必需软件

1. 安装 Git

2. 安装 Python 3

3. 安装 Obsidian

步骤 2: 克隆仓库并安装依赖

# 克隆仓库
git clone https://github.com/cpufreestyle/my-wiki.git
cd my-wiki

# 安装 Python 依赖
pip install -r requirements.txt

# 为现有笔记添加 frontmatter(可选)
python scripts/add_frontmatter.py

Windows: 在 Obsidian 中打开

  1. 打开 Obsidian
  2. 点击 "Open folder as vault"
  3. 选择 C:\path\to\my-wiki 文件夹
  4. 给 vault 起个名字
  5. 完成!

Linux 安装

# 安装依赖 (Ubuntu/Debian)
sudo apt update
sudo apt install git python3 python3-pip obsidian

# 克隆仓库
git clone https://github.com/cpufreestyle/my-wiki.git
cd my-wiki

# 安装 Python 依赖
pip3 install -r requirements.txt

# 运行设置脚本(如果适用)
./scripts/setup-mac.sh  # 可能需要修改以适应 Linux

🔄 操作流程

完整工作流

graph TD
    A[开始] --> B{操作系统}
    B -->|macOS| C[运行 setup-mac.sh]
    B -->|Windows| D[手动安装依赖]
    B -->|Linux| E[手动安装依赖]
    C --> F[克隆仓库]
    D --> F
    E --> F
    F --> G[在 Obsidian 中打开]
    G --> H[开始使用]
    H --> I{使用方式}
    I -->|手动记录| J[在 Obsidian 中编辑]
    I -->|AI 辅助| K[通过 OpenClaw 对话]
    J --> L[保存笔记]
    K --> L
    L --> M[推送到 GitHub]
    M --> N[同步到其他设备]
Loading

日常操作流程

场景 1: 手动记录笔记

1. 打开 Obsidian
   ↓
2. 按 Cmd+P → "Daily notes: Open today's note"
   ↓
3. 编辑笔记(添加想法、链接、标签)
   ↓
4. 保存 (Cmd+S)
   ↓
5. 推送到 GitHub (可选)
   git add .
   git commit -m "Update notes"
   git push

场景 2: 通过 OpenClaw 自动记录

1. 与 OpenClaw 对话
   "今天的会议讨论了..."
   ↓
2. OpenClaw 自动提取关键信息
   ↓
3. OpenClaw 更新相关 wiki 页面
   - 每日笔记 (daily/YYYY-MM-DD.md)
   - 项目页面 (projects/*.md)
   - 人物页面 (people/*.md)
   ↓
4. 在 Obsidian 中查看更新

场景 3: 自动抓取内容

每 2 小时 (Heartbeat):
   ↓
1. 运行 auto_fetch.py
   - 抓取 GitHub 提交
   - 抓取 RSS 订阅
   ↓
2. 生成 Markdown 文件
   - daily/rss/YYYY-MM-DD-*.md
   - projects/*-updates.md
   ↓
3. 更新索引 (update_index.py)
   ↓
4. 推送到 GitHub

📁 目录结构

my-wiki/
├── README.md                      # 本文件 (v2.10.1)
├── INDEX.md                       # 知识索引(自动生成)
├── wiki_app.py                    # 桌面端主程序(PySide6 GUI:日记/心情/提醒/待办/搜索/标签/报告/Share)
├── wiki_tabs_todo.py              # 待办清单标签页 🆕
├── wiki_tabs_search.py            # 全文搜索标签页 🆕
├── wiki_tabs_tags.py              # 标签浏览标签页 🆕
├── wiki_tabs_report.py            # 周报 / 月报标签页 🆕
├── wiki_data.py                   # 数据层(日记/心情/提醒/待办,无 GUI 依赖)
├── wiki_report.py                 # 周报 / 月报生成器 🆕
├── wiki_tool.py                   # 统一工具入口
├── wiki_links.py                  # 双链解析 / 反向链接 / 孤儿与失效链接检测([[wikilink]],零依赖)🆕
├── rag.py                         # 语义 RAG 检索引擎 (BM25 / Ollama embedding)
├── voice_mood.py                  # 语音心情(ffmpeg 录音 + SpeechRecognition 在线识别)🆕
├── reminder_ui.py                 # 提醒桌面端 UI 🆕
├── reminder_rrule.py              # 重复提醒规则引擎(RRULE 子集,零依赖,融合 dateutil/RFC 5545 语义)🆕
├── theme.py                       # 统一设计 token(Apple 风浅/深色)🆕
├── reminder_web.html              # 提醒 Web UI(支持深色模式)🆕
├── daily_web.html                  # 日记 Web UI(模板 / 标签提取 / 深色模式)🆕
├── mood_web.html                   # 心情 Web UI(心情分析 / 语音 / 深色模式)🆕
├── todo_web.html                   # 待办 Web UI(优先级 / 截止日期,接 /api/todos)🆕
├── FIGMA_DESIGN_SPEC.md           # Figma 设计规格文档 🆕
├── modules/                       # 功能模块 🆕
│   ├── video-analysis/            # 视频分析
│   │   ├── README.md
│   │   └── analyze.py
│   ├── memo-sync/                 # Memo 同步
│   │   ├── README.md
│   │   └── sync.py
│   ├── obsidian-sync/             # Obsidian 双 Vault 同步
│   │   ├── README.md
│   │   └── sync.py
│   ├── a2a-agent/                 # A2A Agent 网络文档
│   │   └── README.md
│   ├── shared-wiki/               # 共享 Wiki 中枢(MCP Server + Agent 发现)🆕
│   │   ├── README.md
│   │   ├── wiki_core.py
│   │   ├── mcp_server.py
│   │   ├── agent_registry.py
│   │   └── obsidian_bridge.py
│   └── skills-loader/             # 技能加载器
│       ├── README.md
│       └── loader.py
├── .obsidian/                     # Obsidian 配置
│   ├── app.json                   # 应用设置
│   ├── templates/                 # 模板
│   │   ├── daily-note.md         # 每日笔记模板
│   │   └── project.md            # 项目笔记模板
│   └── ...
├── daily/                         # 每日笔记
│   ├── 2026-07-01.md             # 今日笔记
│   ├── 2026-05-22.md             # 历史笔记
│   └── rss/                       # RSS 抓取内容
│       └── 2026-05-27-github-*.md
├── projects/                      # 项目页面
│   ├── my-wiki.md                 # 本项目
│   ├── stock-crewai.md            # 股票交易系统
│   └── *-updates.md               # 项目更新日志
├── concepts/                      # 概念/技术
│   ├── LLM_Wiki.md                # LLM Wiki 理念
│   └── RAG_vs_Wiki.md             # RAG vs Wiki 对比
├── people/                        # 人物页面
│   └── Michael_Qiu.md             # 人物笔记
├── scripts/                       # 自动化脚本
│   ├── setup-mac.sh               # Mac 设置脚本
│   ├── auto_fetch.py              # 自动抓取
│   ├── fetch_rss.py               # RSS 抓取
│   ├── update_index.py            # 更新索引
│   ├── add_frontmatter.py         # 添加 frontmatter
│   └── generate_obsidian_uri.py   # 生成 Obsidian URI
├── attachments/                   # 附件(图片等)
├── requirements.txt               # Python 依赖
├── run-mywiki.command             # macOS 一键启动桌面 GUI 🆕
├── MyWiki.app/                    # macOS 应用包(可选)🆕
├── MyWiki.spec                    # PyInstaller 打包配置 🆕
├── SPEC.md                        # 项目契约规格(入口/路由/打包资源/验收 harness)🆕
└── .gitignore                     # Git 忽略规则

📐 项目规格

项目契约规格 (SPEC.md) —— 改动代码前应对照的「硬契约」清单(可核对、有测试守门):

  • 三个入口:mywiki(CLI)/ mywiki-app(PySide6 桌面)/ mywiki-server(本地 Web)
  • HTTP 路由与静态白名单:GET / POST 全量端点 + 目录与扩展名白名单
  • 目录边界:brain/ daily/ wiki/ 只读,vendor/mediapipe/ 只增不改
  • 打包契约:MyWiki.spec 必带资源清单 + 版本单一数据源 pyproject.toml
  • 验收 harness:python tests/run_all.py + node --test + 冒烟脚本

🔌 功能模块

MyWiki v2.10.1 集成以下功能模块,位于 modules/ 目录:

模块列表

模块 目录 功能
Video Analysis modules/video-analysis/ FFmpeg 帧提取 + Vision 逐帧分析 → Markdown 报告
Memo Sync modules/memo-sync/ 与本地 Memo (MemoAI) 应用双向同步
Obsidian Sync modules/obsidian-sync/ 多 Vault 同步(Documents + Wiki)
A2A Agent modules/a2a-agent/ Google A2A 协议 Agent 网络文档索引
Shared Wiki modules/shared-wiki/ MyWiki × Obsidian × 所有 Agent 共享中枢(MCP Server + Agent 发现)

模块使用

# 所有扩展模块已统一到 wiki_tool.py 入口:

# 视频分析:ffprobe → 抽帧 → 关键帧采样 → Markdown 报告骨架
python wiki_tool.py video <video_path> --interval 30 --title "标题"

# Memo 双向同步
python wiki_tool.py memo push <file.md> --title "标题"
python wiki_tool.py memo push-dir <dir> --pattern "*.md"
python wiki_tool.py memo list --limit 20
python wiki_tool.py memo search "关键词"
python wiki_tool.py memo pull --limit 10

# Obsidian 多 Vault 同步
python wiki_tool.py sync-obsidian                    # 同步到所有 Vault
python wiki_tool.py sync-obsidian --vault documents  # 仅 Documents
python wiki_tool.py sync-obsidian --generate-index   # 仅重建各 Vault 首页

# 共享层:MCP Server(stdio,由宿主 Agent 拉起,让所有 Agent 读写同一 Wiki)
python wiki_tool.py serve

# 发现本机 Agent / Obsidian Vault
python wiki_tool.py agents     # 发现电脑里所有 Agent
python wiki_tool.py obsidian   # 发现 Obsidian Vault

# 广播知识更新给所有在线 Agent
python wiki_tool.py broadcast wiki.updated daily/2026-07-12.md

# 各模块也可直接以独立脚本运行(python modules/<模块>/<脚本>.py),效果相同。

模块架构

modules/
├── video-analysis/
│   ├── README.md          # 模块文档
│   └── analyze.py         # 视频分析入口(ffprobe → ffmpeg → 采样 → 报告)
├── memo-sync/
│   ├── README.md          # 模块文档
│   └── sync.py            # Memo SQLite 同步脚本
├── obsidian-sync/
│   ├── README.md          # 模块文档
│   └── sync.py            # 多 Vault 同步脚本
└── a2a-agent/
    └── README.md          # A2A 网络文档索引

🛠 集成工具

wiki_tool.py

统一的命令行入口,集成所有模块:

# 基础命令
python wiki_tool.py update                    # 更新 INDEX.md
python wiki_tool.py daily                     # 创建今日笔记
python wiki_tool.py search <query>            # 语义搜索 wiki
python wiki_tool.py capture <文本>            # 快速捕捉到 inbox/
python wiki_tool.py links <笔记>              # 出链(无参显示出链最多的笔记)
python wiki_tool.py backlinks <笔记>          # 反向链接
python wiki_tool.py orphans                   # 孤儿笔记 + 失效链接

# 复刻的付费功能
python wiki_tool.py publish                   # 导出静态站点(Obsidian Publish)
python wiki_tool.py clip <url>                # 剪藏网页为笔记(Web Clipper)
python wiki_tool.py review                    # 间隔重复复习(RemNote/Readwise)
python wiki_tool.py cards                     # 列出所有复习卡片
python wiki_tool.py digest                    # 每日摘要(Notion AI)

# 扩展模块(已统一到本入口)
python wiki_tool.py video <path>            # 视频分析
python wiki_tool.py memo <sub>              # Memo 同步(push/push-dir/pull/list/search)
python wiki_tool.py sync-obsidian           # 同步到 Obsidian 多 Vault
python wiki_tool.py serve                   # 启动 MCP Server(Agent 可接入)
python wiki_tool.py agents                  # 发现本机所有 Agent
python wiki_tool.py obsidian                # 发现 Obsidian Vault
python wiki_tool.py broadcast <event> [rel] # 广播 Wiki 更新

✨ 功能特性

1. Obsidian 集成

  • ✅ 完整配置:预设的 Obsidian 设置(.obsidian/app.json)
  • ✅ 核心插件:templates, daily-notes, calendar, dataview, tag-pane, outline
  • ✅ 笔记模板:每日笔记和项目笔记模板
  • ✅ YAML Frontmatter:所有笔记包含元数据(title, date, tags, type)

2. 自动化脚本

  • ✅ 自动抓取:从 GitHub、RSS 自动抓取内容
  • ✅ 自动索引:自动生成和更新知识索引
  • ✅ 自动标签:自动提取标签
  • ✅ 每周回顾:自动生成每周摘要

3. OpenClaw 联动

  • ✅ 读取笔记:OpenClaw 可以直接读取 wiki 笔记
  • ✅ 更新笔记:OpenClaw 可以创建和更新笔记
  • ✅ 智能搜索:基于内容的语义搜索
  • ✅ 自动总结:自动生成项目摘要和技术回顾

4. 跨平台支持

  • ✅ macOS:自动设置脚本(setup-mac.sh)
  • ✅ Windows:详细安装指南
  • ✅ Linux:兼容(可能需要手动配置)

5. Git 同步

  • ✅ 版本控制:所有更改可追溯
  • ✅ 多设备同步:通过 GitHub 同步
  • ✅ 自动推送:定时推送到远程仓库
  • ✅ 备份:Gitee 备份(可选)

6. 本地模型支持 🆕

  • ✅ 隐私保护:数据不离开本地,完全离线运行
  • ✅ 多解决方案:支持 Ollama、LM Studio、GPT4All、llama.cpp
  • ✅ OpenAI 兼容 API:轻松集成到 OpenClaw 和 Obsidian
  • ✅ 成本节约:无 API 费用,一次性硬件投入
  • ✅ 详细指南:查看 LOCAL-MODELS.md

快速开始(Ollama):

# 安装 Ollama
brew install ollama

# 启动服务
ollama serve &

# 拉取模型
ollama pull llama3

# 配置 OpenClaw 使用本地模型
# 编辑 ~/.config/openclaw/config.yaml

7. 共享 Wiki(Obsidian × 所有 Agent)🆕

  • ✅ 单一事实源:Obsidian 与所有 Agent 读写同一个 wiki 文件夹,无需重复同步
  • ✅ MCP 协议:通过标准 MCP Server 暴露 Wiki,Claude Desktop / Cursor / OpenClaw 零代码接入
  • ✅ Agent 发现:自动扫描电脑里运行的 Agent(OpenClaw、A2A 网络、Ollama、LM Studio、Claude、Cursor、Memo、Obsidian)
  • ✅ 知识广播:Wiki 更新时可向所有在线 Agent 推送事件
  • ✅ GUI 集成:主程序新增 Share 标签页,一键启动 MCP Server、查看 Agent、在 Obsidian 打开、广播更新
  • ✅ 详细指南:查看 modules/shared-wiki/README.md

让 Agent 接入共享 Wiki(MCP 配置):

{
  "mcpServers": {
    "mywiki": {
      "command": "python",
      "args": ["/path/to/my-wiki/modules/shared-wiki/mcp_server.py"]
    }
  }
}

8. 语义 RAG 检索 🆕

  • ✅ 真正的语义检索:从子串匹配升级为语义相关性排序,更懂查询意图
  • ✅ 零依赖开箱即用:默认 BM25 模式,纯标准库实现,中文字符 bigram 分词 + IDF 排序
  • ✅ 可选本地向量检索:本机运行 Ollama + nomic-embed-text 时自动升级为 embedding 语义检索,完全离线、隐私友好
  • ✅ 智能分块:按段落/标题切分笔记,精准召回相关片段并给出打分
  • ✅ 全链路集成:wiki_tool.py search、wiki_core.semantic_search()、MCP 工具 wiki_semantic_search 三处统一,所有接入的 Agent 都能用上 RAG

使用方式:

# 直接语义搜索
python rag.py "如何配置本地模型 ollama"

# 经 wiki_tool 入口(已升级为语义搜索)
python wiki_tool.py search "obsidian 如何同步多设备笔记"

# 启用本地向量检索(需 Ollama)
MYWIKI_RAG_MODE=ollama python rag.py "你的问题" --rebuild

环境变量:

变量 说明 默认
MYWIKI_RAG_MODE 检索模式 bm25 / ollama bm25
MYWIKI_OLLAMA_URL Ollama 服务地址 http://localhost:11434
MYWIKI_EMBED_MODEL 嵌入模型名 nomic-embed-text

9. UI 主题统一(Apple 风浅 / 深色)🆕

  • ✅ 统一设计 token:theme.py 集中管理颜色 / 字体 / 圆角 / 阴影,Web 端与桌面端共用同一套值,改一处即可整体换肤
  • ✅ 浅色 / 深色主题:reminder_web.html / daily_web.html / mood_web.html 均支持一键切换深色模式,偏好持久化到 localStorage
  • ✅ 桌面端功能网页化:提醒 / 日记 / 心情三大桌面端功能均已提供对应的自包含网页版(同一套 Apple 风设计),无需启动 GUI 即可在浏览器使用
  • ✅ 网页端总入口:index.html 为统一门户页,卡片式导航进入各模块;经 web_server.py 启动后根路径 / 即门户页
  • ✅ 语义检索网页版:rag_web.html 调用 rag.py 的 RAGEngine(/api/rag 接口),支持 BM25 / Ollama embedding 两种模式,含语音输入
  • ✅ 知识图谱可视化:graph_web.html 读取 knowledge_graph.json(/api/graph 接口),纯 SVG 力导向布局(无外部依赖),按类型着色、点击高亮邻居、可拖拽
  • ✅ 桌面端内置网页版:打开 wiki_app.py(或打包后的 MyWiki.app)时会自动在后台拉起 web_server.py(端口 8082),顶栏「🌐 网页版」按钮一键在浏览器打开知识图谱 / 语义检索页;关闭桌面 App 时网页版服务一并停止,无需手动启停。打包时 web_server.py、rag.py、voice_mood.py、各 *_web.html 与 knowledge_graph.json 已随 MyWiki.spec 一并打入
  • ✅ 卡片高度可调:三个网页版的卡片均保证高度高于字体(--card-h 变量兜底),并提供「卡片高度」滑块手动统一调节,偏好持久化到 localStorage(daily 的编辑器高度随滑块联动)
  • ✅ 设计规格沉淀:FIGMA_DESIGN_SPEC.md 记录界面设计稿与规范,便于后续迭代与协作
  • ✅ 一致体验:reminder_ui.py / wiki_app.py 同步适配统一 token

10. 待办 / 搜索 / 标签 / 报告(桌面端 + 网页端)🆕

  • ✅ 待办清单:优先级(高 / 中 / 低)、截止日期、完成勾选、删除;数据落盘 vault/todos.json,桌面端「待办」标签页与网页版 todo_web.html(/api/todos)读写同一份数据
  • ✅ 全文搜索:桌面端「搜索」标签页遍历 vault 内 Markdown 做关键词匹配并高亮命中片段
  • ✅ 标签浏览:桌面端「标签」标签页解析各笔记 frontmatter 的 tags,展示标签云,点击列出相关笔记
  • ✅ 周报 / 月报:桌面端「报告」标签页一键汇总周期内的日记 + 心情 + 待办,生成 Markdown 报告,支持复制与保存到 vault

11. 重复提醒(RRULE,零依赖)🆕

  • ✅ 周期规则:add_reminder(remind_at, message, rrule="FREQ=WEEKLY;BYDAY=MO,FR"),支持 DAILY / WEEKLY / MONTHLY / YEARLY,含 INTERVAL 步长、COUNT 次数上限、UNTIL 截止时间;非法规则在入库前即被拒绝
  • ✅ 零依赖融合:reminder_rrule.py 将 python-dateutil rrule / iCalendar RFC 5545 的语义按纯标准库重实现(不引入第三方依赖,可直接随 .app 打包),语义对齐开源实现:dtstart 命中规则即首次发生、当期不存在目标日期则跳过、COUNT 与 UNTIL 互斥
  • ✅ 自动推进:提醒触发后 send_reminder.py 经 advance_reminder 排下一次;触发满 COUNT 或超过 UNTIL 自动标记 done,一次性提醒仍标记 sent
  • ✅ Windows 计划任务:重复规则自动映射 schtasks /sc daily / weekly / monthly(YEARLY 暂以一次性任务承接并由 advance_reminder 续排),规则耗尽时同步清理任务
  • ✅ 中文描述:describe_reminder_rule() 输出如「周一、周五,每隔 2 周,共 5 次」,供桌面端 / Web 端直接展示

12. 双链反向链接 + 快速捕捉(零依赖)🆕

  • ✅ 双链解析:wiki_links.py 以纯标准库解析 Obsidian 风格 [[目标]] / [[目标#锚点]] / [[目标|别名]],支持根相对路径、裸文件名(stem 全局匹配)、相对来源目录三种解析方式,只读扫描不改动任何笔记
  • ✅ 反向链接:wiki_tool.py backlinks <笔记> 一键查看「哪些笔记引用了我」;links <笔记> 查看出链,不带参数则列出出链最多的枢纽页
  • ✅ 链接健康:wiki_tool.py orphans 输出孤儿笔记(无入链,INDEX/README 自动豁免)与失效链接清单(疑似笔误或尚未创建的笔记),清理知识库死角
  • ✅ 快速捕捉:wiki_tool.py capture <文本> 把灵感 / 待办一键收集到 inbox/quick-capture.md(时间戳 + 去重,参数为空自动读剪贴板),免去「开笔记-找位置-打字」三步操作;只写 inbox/,不动 daily/ 等用户笔记目录

13. 桌面快捷方式(一键放桌面)🆕

  • ✅ 零构建 .app 包裹器:bash scripts/make_desktop_shortcuts.sh 在桌面生成 MyWiki.app(桌面端 GUI)与 MyWiki网页版.app(网页版 :8082)两个快捷方式,图标取自 icon.png,双击始终运行仓库最新代码,无需 PyInstaller 重新打包
  • ✅ 网页版自启:MyWiki网页版.app 调用 scripts/launch_web.sh:检测端口未起则后台拉起 web_server.py(nohup + disown,启动器退出后由 launchd 收养继续运行),就绪后自动打开浏览器并弹系统通知;重复双击只聚焦浏览器,不会重复起服务

换肤 / 切换主题:

# 改 theme.py 中的 LIGHT / DARK 字典即可整体调整配色
# Web 端:启动 web_server.py 后访问 / 进入总入口,或直接打开 reminder_web.html / daily_web.html / mood_web.html
# 桌面端(wiki_app.py / MyWiki.app):顶栏「🌐 网页版」按钮自动打开已拉起的网页版(知识图谱 / RAG 检索)
# 各页面右上角 🌙/☀️ 可切换深 / 浅色

📝 日常使用

常用命令

在 Obsidian 中

快捷键 功能 说明
Cmd+O Quick Switcher 快速打开笔记
Cmd+P Command Palette 执行命令
Cmd+E 切换编辑/预览 切换源码和预览模式
Cmd+Shift+F 搜索 全局搜索
Cmd+Option+←/→ 前进/后退 导航历史

通过 OpenClaw

# 告诉 OpenClaw 新信息
"今天学习了 Obsidian 的 Dataview 插件,它可以..."

# 查询知识
"我的 wiki 里有哪些关于 LLM 的笔记?"

# 生成报告
"生成本周的知识回顾"

Git 同步

# 查看状态
git status

# 提交更改
git add .
git commit -m "Update notes"

# 推送到 GitHub
git push origin main

# 从 GitHub 拉取
git pull origin main

付费能力复刻(零第三方依赖)

以开源组件 + 黑盒行为对照方式复刻的第三方付费功能,仅用 Python 标准库:

命令 复刻对象 说明
publish Obsidian Publish 导出带搜索、标签页、反向链接的静态站点
clip <url> Notion Web Clipper 剪藏网页正文到 inbox/clips/,带来源 frontmatter
review RemNote Pro / Readwise SM-2 lite 间隔重复复习
cards 同上 列出所有卡片及到期状态
digest Notion AI 每日摘要;有 Ollama 走 AI,否则抽取式兜底
python wiki_tool.py publish --out dist-publish --clean   # 导出静态站点
python wiki_tool.py clip https://example.com/post        # 剪藏网页
python wiki_tool.py review --limit 10                    # 开始复习
python wiki_tool.py digest --no-ai                       # 强制抽取式摘要

🛠️ 故障排除

问题 1: Obsidian 找不到 vault

错误:Unable to find a vault for the URL obsidian://open?vault=xxx

解决:

  1. 检查 vault 名称是否正确
  2. 查看 HOW-TO-FIND-VAULT-NAME.md
  3. 使用 Quick Switcher(Cmd+O)而非 URI

问题 2: Python 脚本无法运行

错误:ModuleNotFoundError: No module named 'beautifulsoup4'

解决:

# 重新安装依赖
pip install -r requirements.txt

# 或使用 macOS 设置脚本
./scripts/setup-mac.sh

问题 3: Git 推送失败

错误:Authentication failed

解决:

  1. 使用 SSH 而非 HTTPS
  2. 配置 GitHub Personal Access Token
  3. 查看 GitHub 文档

问题 4: Frontmatter 格式错误

错误:Obsidian 无法识别 tags

解决:

  • 确保使用正确的 YAML 格式
  • tags 应该是数组:tags: ['daily', 'test']
  • 查看 daily/2026-07-01.md 作为示例

问题 5: 桌面版 wiki_app.py 打不开(ModuleNotFoundError: PySide6)

错误:ModuleNotFoundError: No module named 'PySide6'

原因:桌面 GUI 依赖 PySide6,且只在项目自带的虚拟环境 .venv 中安装。用系统 python3(如 /usr/bin/python3)直接运行会因缺少该包而报错。

解决(任选其一):

# 1) 用项目自带的 .venv 解释器启动(推荐)
source .venv/bin/activate
python wiki_app.py

# 或等价地直接调用:
./.venv/bin/python wiki_app.py
# 2) 若尚未创建 .venv,手动安装依赖后启动
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python wiki_app.py

macOS 一键启动脚本 run-mywiki.command 已内置「创建/激活 .venv → 安装依赖 → 启动 GUI」逻辑,双击即可;若菜单栏 / 终端默认 python3 指向系统解释器,请改用上述 .venv 方式。

打包后的 MyWiki.app 已把 PySide6 与 web_server.py 等一并打入,无需 .venv,双击即开。


🤝 贡献

欢迎贡献!请查看 CONTRIBUTING.md(待创建)。

如何贡献

  1. Fork 本仓库
  2. 创建你的特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交你的更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开一个 Pull Request

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。


🙏 致谢


📞 联系方式


🧪 测试 & CI

仓库自带轻量测试(零第三方依赖),并配有 GitHub Actions 持续集成。

# 1) Python 全套(自动发现 tests/test_*.py;与 AGENTS.md / CI 同源)
python tests/run_all.py

# 2) Web UI 纯逻辑(Node 内置 test runner,从 HTML 抽取函数运行)
node --test "tests/**/*.test.mjs"

# 3) 桌面端启动冒烟(PySide6,offscreen 无头,等价 __main__ 启动链路)
QT_QPA_PLATFORM=offscreen python scripts/smoke_desktop_qt.py
  • tests/test_reminder_web.py / tests/test_daily_web.py / tests/test_mood_web.py:分别校验 三个网页版脚本中每个 #id / .class 选择器都能命中真实元素、关键 a11y 属性 (aria-modal/role)在位、深色模式与全局错误过滤器齐备。
  • tests/reminder_web.logic.test.mjs:校验 getPresetTime / computeRemindAt 的时间计算正确。
  • tests/daily_web.logic.test.mjs:校验 extract_tags 的停用词过滤 / 领域词加权 / top_n 生效。
  • tests/mood_web.logic.test.mjs:校验 analyze_mood 的关键词命中 / 否定词处理 / 中性回退。
  • tests/test_reminder_rrule.py:校验 RRULE 子集解析校验 / 发生时间展开语义(对齐 dateutil)/ COUNT / UNTIL 耗尽、advance_reminder 推进与 schtasks 参数映射。 tests/test_wiki_links.py:校验 [[wikilink]] 抽取 / 三种解析方式 / 反向链接(忽略自链)/ 孤儿与失效链接,以及 capture / links / backlinks / orphans 四个 CLI 子命令冒烟。
  • scripts/smoke_desktop_qt.py:桌面端(PySide6)启动冒烟——构建 WikiApp、应用 QSS、弹出 欢迎框、校验语音 VoiceSignals 信号槽、切换主题 / 语言、触发 MCP 启动处理器,全程无异常。
  • .github/workflows/ci.yml:push / PR 到 main 时自动跑上述测试 + 桌面端冒烟 + RAG/theme 检查。

🔗 相关链接


最后更新: 2026-08-02(多源上下文采集:飞书/企微聊天 + 妙记 + 本地录音转写 → 共享 Obsidian vault / 桌面端内置网页版 / macOS 代码签名打包修复)

版本: v2.10.1

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages