InFlow

approved

by MarcBolo

让词库的灵感流入笔尖——自建词库智能联想补全、场景/角色/对话格式一键插入、场景自动编号、时间戳与悬浮快捷面板。 - This plugin has not been manually reviewed by Obsidian staff.

2 stars76 downloadsUpdated 10d agoMIT

InFlow

让词库的灵感流入笔尖 —— Obsidian 写作补全插件

InFlow 是一枚 Obsidian 桌面插件。它把你积累的词库(角色、场景、台词、镜头术语、单词……)变成写作时的即时联想,并把场景标题、角色行等常用格式做成"输入一个符号即可插入"的模板菜单。

  • 插件 ID:inflow | 当前版本:1.0.1 | 要求:Obsidian ≥ 0.15.0(仅桌面端)
  • 无任何内置词库与模板预置:内容全部由你自己建立,插件升级永不注入或覆盖你的数据

功能一览

能力说明
词库智能补全输入即联想词库词条:支持中文、英文、拼音首字母lf → 林风)、描述文字四路匹配;有精确/前缀/模糊子序列多层召回
上下文感知识别 ## 场景标题 / #### 角色名 / 动作行,只推当前语境相关的词;自定义类别永远可用
格式模板给常用文本起名字分组,输入触发符(默认 @,可分组专属)弹出菜单一键插入;模板支持变量、$0 光标定位、多行与转义
场景自动编号{episode} {scene} 变量自动数集与场次;一键重编号当前集 / 整个文档
词库彩条编辑器左缘每个词库一条彩条,点击即切换;每条可独立配色、配图标
时间戳工具光标插时间戳、写 frontmatter、按时间戳新建笔记(3 条命令)
全输入框覆盖补全不止编辑器:任何 input / textarea / 富文本框都能用(Obsidian 标题栏、搜索框等)
自适应排序记录你的选择频次,常用词自动上浮(MRU)

安装

社区商店上线前采用手动安装:

  1. 下载或构建本插件,得到文件夹 inflow(内含 main.jsmanifest.jsonstyles.css)。
  2. 放入 vault:<你的库>/.obsidian/plugins/inflow/(没有 plugins 目录则先开启第三方插件功能生成)。
  3. Obsidian → 设置 → 第三方插件 → 刷新列表 → 启用 InFlow

从源码构建

npm install          # 安装依赖
npm run build        # 产物 main.js(production)
npm run dev          # 监听式开发构建
npm run typecheck    # tsc --noEmit 类型检查

快速上手

首次配置(约 2 分钟)

  1. 建词库:新建文件夹(如 词库),用命令面板「创建新词库文件」生成示例骨架,或手写(格式见下)。
  2. 指路径:设置 → 词库管理 → 词库文件夹 填 词库
  3. 验证:左下角状态栏出现 词库名(条数) 即成功。

每天写作时

  • 输入几个字(或拼音首字母)→ ↑↓ 选 → Enter 插入;
  • 输入 @ → 弹出格式模板菜单;
  • 点编辑器左缘彩条切换词库。

词库文件长这样(一个 .md = 一个词库,文件名即词库名):

# 我的词库

## 角色
主角|林风|普通少年,意外获得修仙传承

## 景别
特写|特写|肩部以上,强调内心活动

## 英语单词
happy|happy|快乐的

词条支持三种写法:词条 / 显示|插入 / 显示|插入|描述## 类别标题可自由命名(中英别名会自动归一,见使用文档附录);### 小标题并入父类别。


命令一览

命令面板中均以 InFlow: 前缀显示,快捷键可在"设置 → 快捷键"中修改:

命令默认快捷键说明
打开模板菜单弹出全部分组的模板菜单
插入模板 · 直达 1–4直达某分组菜单(最多 4 条,在分组管理中配置)
插入角色对话Ctrl/Cmd+Shift+D光标处插入 对话内容
重新编号当前集场景重排光标所在"第 N 集"的场景号
重新编号整个文档所有集各自从 1 重排
切换词库 / 打开词库选择器弹出词库切换器
重新加载词库重载全部词库并重建补全索引
打开词库文件夹在文件树定位词库目录
创建新词库文件生成示例词库骨架
插入时间戳Ctrl/Cmd+Shift+;Ctrl/Cmd+Alt+T插入 YYYY-MM-DD-HH:mm
写入时间戳到 frontmattercreated / updated
用时间戳创建新笔记新建带时间戳名的笔记
调试索引状态弹窗查看索引/类别统计(排查用)

数据与文件

内容位置
词库词库文件夹内的 .md 文件(自行指定,如 词库/
格式模板<vault>/.inflow/formats.json(随库备份)
插件设置 / 使用频次 / 彩条样式<vault>/.obsidian/plugins/inflow/data.json
插件本体<vault>/.obsidian/plugins/inflow/

备份与迁移:复制词库文件夹 + .inflow/formats.json 即可;模板配置也可在"设置 → 格式模板 → 高级"里导出 / 导入 JSON。


设计要点(给开发者)

  • 全局输入监听替代 EditorSuggest:同时监听原生 input 事件与 Obsidian editor-change,一套建议管线覆盖 CM6 编辑器与所有第三方输入框;对插件自身弹窗/通知区域做排除。
  • 悬浮弹窗自绘:按光标坐标定位、视口避让、滚动跟随;IME 组字期间不拦截按键;空查询弹窗区分"未导航回车=换行"。
  • 补全索引:前缀 + 后缀双索引(查询形状是"当前词后缀"),键长封顶 6;精确/前缀/拼音全部零命中时做子序列模糊兜底(容忍漏字)。
  • 拼音匹配零字典:借助 Intl.Collator('zh-Hans-CN-u-co-pinyin') + 代表字表二分定位首字母,无内置汉字拼音表;ICU 不支持时自动降级不报错。
  • 模板 DSL{date} {datetime} {selection} {scenetype} {episode} {scene} 变量 + $0 / ${0:默认词} 光标控制 + \{ \} \$ \\ 转义;未知变量原样输出不吞字。
  • 数据驱动:词库 = 普通 Markdown(章节标题即类别,中英别名归一);模板 = formats.json v4 无内置结构(升级永不注入)。

📄 License

MIT

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.