iwe

iwe-orgApache-2.0活跃维护

把 Markdown 笔记组织成知识图谱,通过 LSP 接入编辑器,并提供 CLI 和 MCP 记忆接口供 AI Agent 使用。

Markdown knowledge graph — LSP for your editor, CLI + MCP memory for your AI agents

iwe-v0.32.0发布于 2026-11-07 12:37 UTC1,821star +2 / 7 天94fork同步于 2026-11-10 17:48 UTC

怎么上手

由 README 提炼,执行前请确认
brew install iwe-org/iwe/iwe
iwe init
硬件要求按 README 说明

README 未说明硬件要求;CLI 与 Mac 应用本身不含 AI 模型,需自备 Claude/Codex 等 Agent

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

把项目里的 Markdown 笔记变成你和 AI Agent 共享的知识图谱与记忆

把 Markdown 笔记组织成知识图谱,通过 LSP 接入编辑器,并提供 CLI 和 MCP 记忆接口供 AI Agent 使用。

核心能力

  • 笔记间互相链接,一篇可归属多个主题
  • Agent 写入的记忆就是可读可改的普通 Markdown
  • 为 Neovim、Helix、VS Code、Zed 提供链接补全、反向链接与安全重命名
  • 通过 iwec MCP 服务器让 Claude、Codex、Gemini、Cursor 读写笔记
  • CLI 支持列出笔记与按内容做词法搜索

容易踩的坑

CLI 和 Mac 应用都不内置 AI 模型,AI 功能要自己接 Claude/Codex 等 Agent;接 Agent 需把 iwec MCP 服务器的工作目录设为笔记文件夹;Mac 应用目前仅提供 Mac 版下载

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本iwe-v0.32.0
  1. iwe-v0.32.0v0.32.0最新正式版2026-11-07 · 2026-11-07 12:37 UTC

    HTML in your notes now survives: comments, <details> blocks, <div>s and other raw HTML are kept as written by normalize, formatting in the editor and the write tools instead of being dropped. Queries gain two new block predicates — $comment to find blocks by the HTML comments attached to them, and $html to select (and edit or delete) HTML blocks.

    iwe

    Added

    • $comment block predicate matches blocks by their HTML comments (a comment line after the block, or an inline comment in its text); a string matches the whole comment text and {} matches any commented block
    • $html block predicate selects HTML blocks; their text is the HTML source, and $replaceText, $replace and $delete work on them

    Changed

    • $text and $matches block predicates ignore HTML comments in the block text

    Fixed

    • HTML comment lines (<!-- note -->) after a paragraph, heading, list item or quote are kept by normalize and other commands (previously dropped)
    • HTML blocks such as <div>, <details> and <script> are kept as written by normalize and other commands (previously dropped)
    • Text written as \<tag> stays escaped instead of turning into a real HTML tag
    • Raw HTML in djot documents is kept as raw HTML (previously turned into a code block or plain text)

    iwes

    Fixed

    • HTML comment lines (<!-- note -->) after a paragraph, heading, list item or quote are kept when a document is formatted or changed by a code action (previously dropped)
    • HTML blocks such as <div>, <details> and <script> are kept as written when a document is formatted or changed by a code action (previously dropped)
    • Text written as \<tag> stays escaped when a document is formatted instead of turning into a real HTML tag

    iwec

    Added

    • $comment block predicate in iwe_query filters matches blocks by their HTML comments (a comment line right after the block, or an inline comment in its text)
    • $html block predicate in iwe_query selects HTML blocks; their text is the HTML source

    Changed

    • iwe_query $text and $matches block predicates ignore HTML comments in the block text

    Fixed

    • HTML comment lines (<!-- note -->) are kept when write tools rewrite a document (previously dropped)
    • HTML blocks such as <div>, <details> and <script> are kept as written when write tools rewrite a document (previously dropped)

    liwe

    Added

    • Comment variants on DocumentBlock, DocumentInline, Inline, Node and GraphNode for HTML comments (comment lines were previously dropped and inline comments read as plain text)
    • Reference.comments field holds the comments written after a block reference
    • BlockOp::Comment query operator and BlockPredicate::comment builder for the $comment block predicate
    • Html variants on DocumentBlock (holding HtmlBlock), Node, GraphNode and Block for HTML blocks, kept as their exact source (previously dropped); GraphNode::Comment and GraphNode::Html share the TextLeaf struct
    • BlockType::Html and BlockPredicate::html builder for the $html block predicate

    Changed

    • Inline HTML is read as Inline::RawInline("html", ...) (previously Inline::Str), and the Markdown writer writes html raw inlines as they are (previously as code spans)
    • Djot raw blocks with the html format are read as Node::Html (previously code blocks), and the djot writer writes raw inlines as `...`{=format} (previously the bare content)
  2. iwe-v0.31.0v0.31.02026-11-05 · 2026-11-05 13:44 UTC
    查看更新说明

    This release is about keeping your notes exactly as you wrote them. Wiki embeds like ![[image.png]], email autolinks, and links with spaces in the path now stay intact when documents are normalized or rewritten. inline no longer copies the inlined note's frontmatter into the host. $section updates hit the section once, and --strict --dry-run previews now report schema violations the same way a real run does.

    Thanks to @robfeldmann for reporting these issues (#428, #429, #430, #431, #432).

    iwe

    Fixed

    • Wiki embeds (![[image.png]], ![[image.png|300]]) are kept as written when a document is re-rendered by normalize, rename and other commands (previously rewritten as Markdown images)
    • Link and image destinations containing spaces are written as <path with spaces> so they stay valid Markdown
    • update --delete, --insert-after and other block operators treat a $section as one target, so expect: 1 passes and inserted content lands once below the section (previously applied to every block in the section when it was not the first block under its parent)
    • Email autolinks (<[email protected]>) are kept as written by normalize and other commands (previously rewritten as a broken relative link [[email protected]]([email protected]))
    • inline keeps the host document's frontmatter and drops the inlined document's frontmatter (previously the inlined frontmatter was pasted into the body as a --- block and a later inline took it over as the host's frontmatter)
    • update --strict --dry-run and delete --strict --dry-run report schema violations and exit 2 like the real run (previously the preview skipped schema validation and reported success)
    • update -c --dry-run reports '<key>' unchanged when the new content matches the document (previously reported Would update)

    iwes

    Fixed

    • Wiki embeds (![[image.png]]) are kept as written when a document is formatted or updated by a code action (previously rewritten as Markdown images)
    • Link destinations containing spaces, such as links created by extract with a title-based key, are written as <path with spaces> so they stay valid Markdown
    • Email autolinks (<[email protected]>) are kept as written when a document is formatted (previously rewritten as a broken relative link)
    • Inline section code action no longer pastes the inlined document's frontmatter into the body as a --- block

    iwec

    Fixed

    • Usage and error messages on Windows now show the command as iwec (was iwec.exe)
    • iwe_query update block operators treat a $section as one target, so expect: 1 passes and inserted content lands once below the section (previously applied to every block in the section when it was not the first block under its parent)
    • iwe_inline no longer pastes the inlined document's frontmatter into the body as a --- block, so the host keeps its own frontmatter
    • dry_run previews of iwe_query, iwe_delete, iwe_rename, iwe_extract, iwe_inline and iwe_attach reject schema violations like the real call (previously the preview skipped schema validation and reported success)

    liwe

    Changed

    • Inline::Image now carries a LinkType and document::Image has a new link_type field, so wiki embeds round-trip as ![[...]]

    Fixed

    • Markdown writer wraps link and image destinations containing spaces or unbalanced parentheses in <...>
    • Block update operators treat a $section as one whole-tree target when it follows unselected sibling blocks (previously each block in the section was a separate target)
    • Email autolinks are read as mailto: links and written back as <[email protected]> (previously read as a relative link to a document)
    • Section inline operation drops the inlined document's frontmatter instead of writing it into the host body
  3. iwe-v0.30.0v0.30.02026-11-03 · 2026-11-03 02:37 UTC
    查看更新说明

    The MCP server can now tell agents what each workspace is for. Pass --instructions (or --instructions-file) to iwec so an agent connected to several knowledge bases knows which one to use. --workspace lets one server point at any directory, not just the one it was started from.

    iwec

    Added

    • --instructions <TEXT> and --instructions-file <PATH> flags to add workspace-specific instructions, so an agent connected to several servers knows what each workspace is for
    • --workspace flag to serve a workspace other than the current directory
  4. iwe-v0.29.3v0.29.32026-10-29 · 2026-10-29 01:26 UTC
    查看更新说明

    tree now shows every top-level document, including documents that have no heading, which it used to leave out. It is also much faster on workspaces with many nested documents. The fix covers the CLI and the MCP iwe_tree tool.

    iwe

    Fixed

    • tree without filters now lists documents that have no heading, matching tree --roots, and is much faster on workspaces with many nested documents

    iwec

    Fixed

    • iwe_tree and the iwe://tree resource now list documents that have no heading, and are much faster on workspaces with many nested documents

    liwe

    Added

    • Graph::root_keys returns the sorted keys of documents that no other document includes
  5. iwe-v0.29.2v0.29.22026-10-28 · 2026-10-28 21:54 UTC
    查看更新说明

    IWE now runs on any Linux distribution: the npm and Homebrew Linux binaries are static builds, so older systems such as Ubuntu 22.04 and Debian 12, as well as Alpine, no longer fail with a missing glibc. This release also makes the MCP server faster under concurrent reads and fixes cases where the MCP and LSP servers could show stale or missing notes after outside changes.

    iwe

    Added

    • Static Linux builds (x86_64-unknown-linux-musl, aarch64-unknown-linux-musl) attached to each GitHub release alongside the glibc builds

    Fixed

    • Linux binaries installed with npm or Homebrew now run on any distribution, including older ones and Alpine (previously they required glibc 2.39 or newer)

    iwes

    Fixed

    • A note deleted and recreated outside the editor could disappear from the server until it was changed again
    • A note closed in the editor could briefly show outdated content

    iwec

    Changed

    • Read tools no longer wait for each other; only writes run exclusively

    Fixed

    • Changes picked up by the file watcher could briefly replace a newer write to the same document, or drop a document that was deleted and recreated
    • A failed file write no longer leaves the server's graph showing changes that never reached disk

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    IWE: a Markdown knowledge base you and your AI agent work on together

    English · 简体中文 · 한국어

    Your notes are your agent’s memory. IWE is where you work on them together.

    iwe.md · Download for Mac · Docs · Reddit

    Crates.io License Documentation

    Too many AI conversations start from zero. You explain your project, your decisions, your reasoning — then find yourself explaining it all again next session. Your own notes live somewhere else, out of the agent's reach.

    Or worse, the agent “remembers” something in its own internal memory, but you can't easily see what it saved or correct what it got wrong. And that memory doesn't travel with you to the other agents you work with.

    IWE gives you and your AI agents one shared place to work, right inside your project: a folder of connected Markdown documents — specs, plans, decisions, and more. Keep your own ideas there, ask your agent to save what you learn together, and return to that context as your work grows. You can read, edit, and organize those documents yourself — and they stay yours.

    Choose how you work

    There are four ways to work with IWE. Mix and match them to fit your day:

    ToolHow you'll use it
    iWe for MacWrite and browse in a native app, and connect your existing Claude/Codex agent.
    Your own editorStay in Neovim, Helix, VS Code, or Zed, with note navigation, backlinks, and autocomplete.
    CLISearch and manage your notes from the terminal or scripts.
    Claude/CodexLet your agent read, write, and organize memory while you work through conversation.

    All four work with the same Markdown documents. Draft a spec in your editor, develop it with Claude/Codex, browse it in the iWe app, or search it from the CLI. Use any combination you like; each tool also works independently.

    Bring your own AI. Neither the IWE CLI nor the iWe Mac app includes an AI model. Both work on their own as tools for your notes. When you want AI help, use your existing Claude/Codex agent — in terminal or directly in the Mac app.

    Plans · Charts · Technical documents · Releases — click a screenshot to see the iWe app in action on iwe.md.

    Why IWE

    • Shared context. Your agent can use the same notes you write for yourself. Notes link to each other, and one note can belong to several topics, so you can follow an idea wherever it connects.
    • Memory you can read. Decisions and lessons saved by your agent are ordinary notes you can browse, correct, or delete.
    • Your notes stay yours. Everything is Markdown in a folder on your machine. Back it up, sync it, or keep it in git. You don't need an IWE cloud account to keep your notes; connecting an AI agent involves that agent's own setup and account requirements.

    See it working on iwe.md →

    iWe for Mac

    If you'd like a dedicated space for your notes, use the native Mac app. Open a folder of notes and you get a fast, keyboard-friendly space to write and browse. You can also connect your existing Claude/Codex agent to work alongside you.

    • Works with your Claude/Codex agent. Connect the agent you already use, ask questions about your notes, and have it draft or reorganize them. Watch its edits appear in the document as it works.
    • Room to experiment. Each agent run is one undo step — try an idea, and roll it back if you don't like it.
    • Follow your ideas. Jump between related notes, search in a few keystrokes, and view Mermaid diagrams right in your documents. Your editor and other tools can keep working on the same files.

    See iWe for Mac on iwe.md →

    Open a notes folder and start with a note about something you're working on. Once Claude/Codex is connected, try asking it to summarize that note or help you develop an idea.

    Your Own Editor

    Keep writing in Neovim, Helix, VS Code, or Zed. IWE adds link autocomplete, backlinks, search, and safe renaming across your notes.

    Follow the guide for your editor, open your notes folder, and try linking two notes with autocomplete. You can use IWE for your own writing without connecting an AI agent.

    CLI

    Prefer the terminal? Use IWE to search, create, and reorganize notes, or work it into your scripts. The CLI has no AI built in: these commands work on their own. Your existing Claude/Codex agent can use IWE's tools too.

    Install with Homebrew, or choose another option from the installation guide:

    brew install iwe-org/iwe/iwe
    

    Then run these commands inside your notes folder:

    iwe init
    iwe find
    iwe find --lexical "project decisions"
    

    iwe find lists your notes; --lexical searches their content. Explore more in the CLI reference and workflow examples.

    Claude/Codex

    You can use IWE entirely through your agent. Ask Claude/Codex to save decisions, look up past work, and organize what you've learned. The agent works with your notes through IWE, and you can open those files yourself whenever you want.

    IWE isn't tied to one AI. The same notes work with Claude Code, Claude Desktop, Codex, Gemini, Cursor, and any tool that supports the Model Context Protocol.

    Give Claude/Codex a memory — for Claude Code, install the plugin, then run /iwe:init in any project you want remembered. For Codex, follow the agent connection steps below.

    /plugin marketplace add iwe-org/skills
    /plugin install iwe@iwe-org
    /iwe:init
    

    Then ask it to save a decision from your current work, and open the note it creates in your project.

    Connect another agent — with Homebrew installed, install IWE:

    brew install iwe-org/iwe/iwe
    

    Run iwe init in your notes folder, then follow the agent connection guide to add the iwec MCP server with that folder as its working directory. For other installation options, see the installation guide.

    Once connected, ask your agent: “Explore my IWE notes and summarize what's here.”

    Or let the agent set itself up — paste this into any agent that can run commands:

    Set up IWE for my notes: install it (brew install iwe-org/iwe/iwe,
    npm install -g @iwe-org/iwe, or cargo install iwe iwes iwec), run `iwe init`
    in my notes directory, then add the `iwec` MCP server with its working
    directory set to that folder.
    Docs: https://iwe.md/docs/agentic/
    

    Learn More

    Ready-made workspaces: dev-workspace — project memory for a coding agent · marketing-workspace — campaign memory for a marketing agent.

    Get Involved

    Trying IWE with your own notes? Tell us what felt useful and where you got stuck. Questions, rough edges, and examples of how you use it are all welcome in Discussions.

    IWE is open source. You can also report a bug or help improve the documentation.

    Community: Twitter/X · Reddit · Discussions

    Building on IWE? The CLI and MCP server are the supported ways to integrate today. Tell us what you depend on so we know what not to break.

    License

    Apache License 2.0