Contributors25 downloadsManage pasted images, edit Markdown mind maps, and track progress with an AI assistant using local Markdown memory.
一个小型 Obsidian 插件,整合图片管理、文件后缀配色、可编辑的 Markdown 思维导图与日志式 AI 助手,支持中文和 English。
note-companion 文件夹完整复制到笔记库的 .obsidian/plugins/ 下。自行构建时使用 dist/note-companion。90-附件/Ai助手/配置.md 中填写接口地址、密钥和模型名称。安装目录内包含 main.js、manifest.json、styles.css 三个文件。源码使用普通 JavaScript,构建时打包为单一入口,兼容 Obsidian 插件加载方式。
插件设置顶部提供“语言 / Language”,可选择中文或 English,保存后立即更新设置、助手、思维导图、命令和提示。界面切换保留草稿与导图状态。助手回复及新生成进展使用所选语言。笔记正文、导图节点文字、现有记忆和文件路径由用户维护。
90-附件/图片,可在插件设置中更改。测试.canvas 或 测试.md 时,生成 测试-01.png、测试-02.jpg。命名去除目标文件最后的扩展名,各图片格式共用递增序号,至少两位数字。.trash,可从中恢复。撤销正文修改可以恢复链接,超过清理延迟后需先从 .trash 恢复图片文件。md=#61afef、pdf=#e06c75。作用于文件名文字。插件对原始图片文件粘贴生效。混合文件粘贴、未知图片格式、文本形式的远程图片链接由 Obsidian 自身处理。启用图片自动管理时,在助手笔记中手动粘贴的受支持图片也会保存到图片目录,助手目录自身只生成 Markdown。
右侧面板上方展示最近保存的进展,下方直接聊天。点击“更新进展”,或直接问“最近做了什么”“接下来做什么”“还有哪些待办”。打开面板读取本地内容,发送消息或更新进展时调用配置的 API。
助手面板和插件设置默认收起功能说明,点击各自的“帮助”按钮展开。空白进展和空白对话区域自动隐藏,处理中的状态、错误和内容截取提示按需显示。
默认目录结构如下,目录可以在设置中更改。
90-附件/Ai助手/
├── 配置.md
├── 记忆.md
├── 项目进展.md
└── 日志/
└── YYYY-MM-DD.md
配置.md 使用 Markdown 的 YAML frontmatter,示例配置如下。
---
baseUrl: "https://你的接口地址/v1"
apiKey: "你的密钥"
model: "你的模型名称"
---
支持兼容 OpenAI Chat Completions 的接口,也支持以完整 /chat/completions 路径填写地址。可连接本地 HTTP 模型服务。密钥按约定明文存储,随文件夹同步和备份。
助手每次读取长期记忆、上次进展和最近 3 天有记录的日志,再读取配置范围内的笔记。笔记范围可选整个笔记库、当前笔记、指定文件夹。默认笔记内容上限为 40000 字符,优先当前笔记、名称匹配和最近更新的笔记。面板和日志显示实际读取篇数,截断时会标明。较大的笔记库需要选择项目文件夹以获得更完整的项目上下文。
助手会自动记录对话,追加明确表达的长期偏好,更新进展摘要。可直接编辑或删除这些 Markdown 文件。较长的记忆读取最近 10000 字符,最近日志读取最多 14000 字符。
AI 获得的能力限于返回文字和结构化摘要。代码将写入限制在助手目录内的固定 Markdown 文件。业务笔记仅供读取,由你自行修改和勾选任务。笔记库中所有名为 配置.md 的文档均排除在笔记上下文之外,以便切换目录后原配置也继续受到保护。当前接口密钥会从其他上下文和返回内容中替换为隐藏标记。
本地存储记忆与日志,配置范围内的笔记内容在提问时发送给你配置的 API 服务。API 请求采用非流式模式,最多等待 90 秒。额度和兼容性由接口服务决定。
打开 Markdown 笔记,点击右上角、AI 助手旁边的分支图标。导图以笔记文件名为根节点,按标题、嵌套列表、任务和普通段落组织内容,在独立标签页显示。
滚轮缩放、按住右键拖动平移,左键选择节点,点击节点右侧的小圆按钮折叠或展开。双击节点,或选中后点击工具栏的“编辑”,即可修改内容,点击“保存到原文”后更新 Markdown 的对应位置。任务节点还可手动勾选完成。根节点对应笔记文件名,保存时会重命名该笔记。键盘 F2 编辑,Tab 新增子节点,Enter 新增同级节点,空格折叠或展开。
图片管理设置中的“隐藏图片名称”默认开启,隐藏 Canvas 图片上方的文件名标签和导图图片名称。关闭后立即恢复显示。
工具栏提供“子节点”“同级节点”和“图片”。选中节点后可添加分支,或选择、粘贴、拖入图片文件作为子节点,保存到源 Markdown。导图显示 Wiki、Markdown 和 HTML 图片引用的缩略图。新图片以源笔记名称递增命名,并使用设置中的图片目录。部分导入失败时保留已保存图片,写回冲突时提示实际路径。
工具栏提供刷新、适应窗口、缩放、全部展开、折叠和返回原文。修改笔记后点击刷新,可读取打开的编辑器中尚未保存的内容。保存编辑时会核对原文是否变化,存在新修改则保留编辑框内容并提示刷新。标题级别、列表缩进、编号和其他段落均按原格式保留。导图标签页会记录源笔记路径,方便重启后恢复。
导图在本地生成,用户在节点编辑框中主动保存时写回源笔记。YAML frontmatter 和围栏代码块不参与导图,长节点显示四行摘要,鼠标悬停可查看完整文字。单张导图最多显示 1500 个节点,超出时会提示。
需要 Node.js 18 或更新版本,无需安装 npm 依赖。
npm run build
该命令进行所有运行文件的语法检查、边界和服务测试,再生成 dist/note-companion 安装目录。测试使用 Obsidian API 模拟环境,覆盖图片粘贴、引用保护、清理目录边界、AI 写入边界、接口配置排除与错误处理。
自动化测试使用模拟的 Obsidian API,并通过浏览器验证思维导图的编辑和中英切换。真实 API 服务需要使用者配置后验证。隐藏与配色使用 Obsidian 文件列表的 DOM 选择器,主题或未来版本调整结构后可能需要更新。
本项目采用 MIT 许可证。
原版仅监听 Markdown 的 editor-paste,漏掉 Canvas 原生粘贴。0.1.1 接入画布的剪贴板事件,保存图片后创建文件节点,避免卡片引用旧的 Pasted image 名称。Canvas 的节点创建使用经过运行时能力检查的内部方法,版本不兼容时提示使用 Markdown 粘贴再拖入画布。
原版清理时读取 Canvas 磁盘内容,忽略尚未保存的节点。回归测试复现了这种情况下误删图片的风险,修复后同时核对实时画布与磁盘内容,删除前再次检查打开的画布。测试还覆盖多图粘贴部分失败时保留已保存文件的行为。
图片名称改为使用粘贴目标笔记或画布的文件名。例如 YX-01无线充电/测试.canvas 中粘贴的图片保存为 90-附件/图片/测试-01.png。同一目标名称的图片在保存目录内按现存最大序号递增。
助手入口移到右上角标签栏,点击可展开或收起助手。入口随窗口布局调整位置。
补充了实际保存事件和文件删除事件的回归测试,验证删除 Markdown 图片引用、Canvas 图片卡片、整篇笔记或画布时清理独占附件。删除文件后仍暂留的旧编辑器会被排除在引用检查之外,共享图片继续保留,清理目标为笔记库 .trash。