npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@iflow-mcp/2233admin-obsidian-llm-wiki

v0.1.0

Published

Let your AI agent read, search, and build on your Obsidian notes. MCP server + WebSocket + filesystem fallback. Karpathy LLM Wiki implementation.

Readme

Obsidian LLM Wiki

CI License: MIT Node Python

English | 中文 | 日本語

让你的 AI 助手读、搜、建立在你的 Obsidian 笔记上。

灵感来自 Karpathy 的 LLM Wiki -- 但你现在就能装上用。

  .obsidian/vault/          MCP stdio           Claude Code
  +-----------------+      +----------+        +-----------+
  | notes/          | <--> | connector| <----> |  agent    |
  | daily/          |      |    .js   |        |           |
  | projects/       |  WS  +----------+        +-----------+
  | [[wikilinks]]   | <-->  Obsidian             Cursor
  +-----------------+       Plugin               Windsurf
你说:   "上个月我写过什么关于分布式一致性的东西吗?"
Claude: *搜索你的库,读 3 篇笔记,用 [[反向链接]] 合成一个答案*

Vault Bridge 把你的 Obsidian 库变成一个 MCP 服务器,任何 AI 智能体(Claude Code、Cursor、Windsurf)都能连上去。读、写、搜、编译知识 -- 笔记是真实数据源。


快速开始

git clone https://github.com/2233admin/obsidian-llm-wiki.git
cd obsidian-llm-wiki && npm install && npm run build
node setup.js

setup.js 会自动找到你的 Obsidian 库、装插件、配置 Claude Code 的 MCP -- 一条命令搞定。然后问 Claude:

"搜搜我的笔记,找找有没有关于 React Server Components 的东西"

就这样。

1. 装插件

main.jsmanifest.jsonstyles.css 复制到你的库的 .obsidian/plugins/llm-wiki/ 里,然后在 Obsidian 的设置 > 社区插件 里启用它。

2. 连接你的智能体

加到 ~/.claude/settings.json(或 .cursor/mcp.json):

{
  "mcpServers": {
    "llm-wiki": {
      "command": "node",
      "args": ["/path/to/obsidian-llm-wiki/connector.js", "/path/to/your/vault"]
    }
  }
}

3. 验证

node demo.js

智能体能干什么?

| 功能 | 例子 | |-----------|---------| | 读任意笔记 | "读我的 notes/architecture-decisions.md" | | 全文搜索 | "找找所有提过'auth middleware'的笔记" | | 按标签搜 | "把所有标了 #project-x 的笔记给我列出来" | | 按 frontmatter 查 | "列出 status 是'in-progress'的笔记" | | 顺着图走 | "什么笔记链接到了 [[API Design]]?" | | 新建笔记 | "给这个 PR 写个总结放我的库里" | | 编辑笔记 | "把今天的站会笔记加到我的日志里" | | 编译知识 | "吃掉这篇论文,更新我的知识 wiki" | | 体检 | "找找我的库里有没有孤儿笔记和坏链接" |

所有写操作默认都是模拟的 -- 你的智能体必须明确选择才能改东西。你的笔记很安全。


思考工具 -- 你的笔记库会反过来想

别的工具把你的笔记当数据库查。Vault Bridge 把它当第二大脑 -- 一个会反驳、会发现规律、会帮你找到自己都没注意到的联系的大脑。

| 命令 | 干什么 | |------|--------| | /vault-challenge | 笔记库跟你对线 -- 用你自己写过的话反驳你现在的决定。"你三月试过这个,因为 X 失败了..." | | /vault-emerge | 从过去 30 天的笔记里浮现你没命名的模式。你一直在做但自己没意识到的事。 | | /vault-connect | 找跨领域的结构性桥梁。"你的交易回撤恢复策略和你还技术债的方式是同一个模式。" | | /vault-graduate | 把散落在各处的提及晋升成独立概念页。一个想法出现 3 次以上,它值得有自己的笔记。 | | /vault-ingest | 吃进一个 URL 或论文,改写 5-15 个现有页面来整合它。不是"加一条笔记" -- 知识通过整合增长,不是堆积。 | | /vault-save | 把对话里值得留的东西存到库里对的地方。并行智能体,一个文件夹一个。 | | /vault-world | 渐进式上下文加载 -- 用 1-2K token 启动你的笔记库状态。 |

这些是 setup.js 安装的 Claude Code 技能。它们适用于任何库结构 -- 你的 _CLAUDE.md 文件告诉它们东西在哪。


为什么选 Vault Bridge?

| | Vault Bridge | obsidian-claude-code-mcp | obsidian-local-rest-api | |--|-------------|------------------------|------------------------| | 协议 | MCP + WebSocket | MCP + WebSocket | REST (HTTPS) | | Obsidian 不开也能用 | 能(文件系统 fallback) | 不能 | 不能 | | 搜索 | 全文 + 标签 + frontmatter + 正则 | 基础 | 内容搜索 | | 知识编译 | 内置(吃进 -> 编译 -> wiki) | 不支持 | 不支持 | | 图查询 | 链接图 + 反向链接 + 孤儿检测 | 不支持 | 不支持 | | 写安全 | 模拟优先 | 无防护 | 无防护 | | 库体检 | 有(坏链、孤儿、缺 frontmatter) | 没有 | 没有 | | 批量操作 | 支持 | 不支持 | 不支持 | | 实时事件 | WebSocket 文件变化推送 | 没有 | 没有 | | 思考工具 | 7 个技能(challenge、emerge、connect、graduate、ingest、save、world) | 没有 | 没有 | | 认证 | Token + 时序安全对比 | Token | API key + HTTPS |


知识编译工作流

这是 Karpathy LLM Wiki 的想法,真实了:

原始源(论文、文章、笔记)
    |
    v  [vault.init] 给一个话题搭好框架
    |
    v  把源文件丢进 raw/
    |
    v  [kb_meta.py diff] 发现新源
    |
    v  LLM 提出概念、总结、关系
    |
    v  [kb_meta.py update-hash] 标记已编译
    |
    v  [kb_meta.py update-index] 重建 wiki 索引
    |
    v  [kb_meta.py check-links] 验证完整性
    |
已编译的 wiki,带上 [[wiki链接]]、frontmatter、覆盖标签

你的智能体负责提取。kb_meta.py 处理记账工作(diff、hash、索引) -- 零依赖,纯 Python。


怎么工作的

AI 智能体  <--MCP stdio-->  connector.js  <--WebSocket-->  Obsidian 插件
                               |
                          (Obsidian 关闭时用文件系统 fallback)
  • 插件在 Obsidian 里跑一个 WebSocket 服务器(JSON-RPC 2.0,仅本地)
  • connector.js 是个 MCP 服务器,代理到 WebSocket,或者 Obsidian 关闭时直接读库
  • 通过 ~/.obsidian-ws-port 自动发现 -- 不需要手动配端口

API 参考

20 个工具可通过 MCP 用。都用 JSON-RPC 2.0。

| 方法 | 参数 | 描述 | |--------|--------|-------------| | vault.read | path | 读一篇笔记的内容 | | vault.list | path? | 列出文件和文件夹 | | vault.stat | path | 文件/文件夹元数据(大小、日期) | | vault.exists | path | 检查路径存不存在 | | vault.getMetadata | path | 解析过的 frontmatter、链接、标签、标题 |

| 方法 | 参数 | 描述 | |--------|--------|-------------| | vault.create | path, content?, dryRun? | 新建笔记 | | vault.modify | path, content, dryRun? | 覆盖一篇笔记 | | vault.append | path, content, dryRun? | 追加到笔记 | | vault.delete | path, force?, dryRun? | 删笔记或文件夹 | | vault.rename | from, to, dryRun? | 移动/重命名文件 | | vault.mkdir | path, dryRun? | 新建目录 |

| 方法 | 参数 | 描述 | |--------|--------|-------------| | vault.search | query, regex?, caseSensitive?, maxResults?, glob? | 全文搜索 | | vault.searchByTag | tag | 找有某标签的笔记 | | vault.searchByFrontmatter | key, value?, op? | 按 frontmatter 字段查 | | vault.graph | type? | 链接图(节点、边、孤儿) | | vault.backlinks | path | 找链接到一篇笔记的笔记 |

| 方法 | 参数 | 描述 | |--------|--------|-------------| | vault.batch | operations, dryRun? | 一次调用多个操作 | | vault.lint | requiredFrontmatter? | 库体检 | | vault.init | topic | 搭好知识库结构框架 |


安全

  • 仅本地 -- WebSocket 绑到 127.0.0.1,不暴露到网络
  • Token 认证 -- 时序安全对比、5s 认证超时、自动生成 256 比特 token
  • 模拟优先 -- 写操作默认不执行,除非你传 dryRun: false
  • 路径遍历被挡 -- .. 段被拒、.obsidian/ 写操作被保护
  • 连接限制 -- 最多 20 个客户端、10MB 有效负载上限、ReDoS 安全的正则
  • 文件系统 fallback -- Obsidian 关闭时也是同样的安全模型

Python 伴侣(可选)

| 文件 | 用途 | 依赖 | |------|---------|-------------| | kb_meta.py | 确定性知识库操作:diff、hash、索引、体检、活力检查 | 只用 stdlib | | vault_bridge.py | 异步 Python WebSocket 客户端 | websockets | | mcp_server.py | Python MCP 服务器(connector.js 的替代品) | mcp, websockets |


License

MIT