Skip to content

About

Local-first Markdown workbench with evidence-backed actions, source subscriptions, and an Obsidian companion.

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Wiki Workbench Companion

Wiki Workbench Companion 是一个只读的 Obsidian 桌面插件。它直接读取当前资料库的 Markdown 项目页和日报,展示项目进展与行动候选项,并提供原文行号入口。无需账号、网络或独立服务器;插件不会修改笔记。

插件目前处于公开测试准备阶段,尚未发布到 Obsidian 社区目录。构建、手动安装和已知限制见插件说明。目前仅支持桌面版;项目识别依赖 projects/ 目录或 type: project,行动候选项来自项目页的后续事项章节。

独立工作台

同一仓库还包含独立运行的 Wiki Workbench。它面向已经用 Markdown 管理项目和知识的人,直接读取现有资料库,从项目页和周报提取带日期的进展与计划,提供原文入口供核对;你可以手动采纳后续事项到今日日报,并记录实际进展。默认只读,资料不会上传。

目前界面为中文,适合个人资料库;它不是多用户在线服务。阅读器支持常见 Markdown 的嵌套列表、任务清单、表格、代码块与图片。复杂 Obsidian 插件语法仍可能无法完整显示。

核心流程

  1. 汇总已有记录:扫描现有 Markdown 文件,展示项目进展、后续事项和记录日期。没有日期的内容会标为“日期未记录”。
  2. 审阅后续事项:行动审阅页列出项目页的候选事项、最近周报计划和人工提出的来源行动,显示可核对的原文入口。旧周报会提醒复核。未采纳事项可暂缓或忽略;选择按资料库保存在本机。
  3. 显式采纳并追踪:启用日报写入后,先预览任务、来源和写入位置,再确认采纳。周报事项没有项目链接时,先手动选择关联项目。已有计划需要明确确认覆盖;工作台从日报识别已采纳和已勾选完成的事项。已采纳事项可记录完成、延期或失效,附带时间和处理依据;当天的完成可在再次确认后同步勾选日报。随手记录的进展只写入当日日报。
  4. 每周回顾:汇总过去七天未完成的日报计划、反复延期的已采纳事项和最新周报计划。每项可记录继续、改期或失效,并保留原文入口;回顾决定不会自动改写历史日报。

开发优先级和验收标准见 路线图。

外部 AI 日报

独立工作台侧栏的「AI 行业日报」可从 AIHOT 按需获取最新一期及最近 30 期的日报索引,逐期阅读摘要,并打开 AIHOT 详情页或原始信源。点击「订阅每日更新」后,工作台开启期间会在北京时间每天 08:05 后检查新一期;关闭工作台后不会在后台运行,也不会写入 Wiki。订阅开关按资料库保存在本机。

这项功能通过 AIHOT 的匿名只读 /api/v1/dailies 接口获取数据,不需要账号或 API Key,也不会向 AIHOT 发送 Wiki 内容。请求从本地服务发出,只缓存当前运行期间实际读取的内容,并使用 ETag 避免重复下载;无法连接时会显示上次成功获取的内容。AIHOT 内容保留署名、站内阅读和原文入口,不打包或公开再分发日报数据。AIHOT 的公开使用规则允许个人非商业、公益非商业和组织内部使用;对外商业使用须先取得书面授权。

X 开发者动态

独立工作台侧栏的「开发者动态」预置六位技术作者,覆盖 AI 工程、Web、开发工具和软件工程。你可以取消订阅、重新加入,或用 @账号、X 主页链接添加其他公开账号。清单按资料库保存在本机,不会替你在 X 上关注作者。

选择作者后,点击「在 X 阅读动态」会直接打开其 X 主页。「尝试站内预览」是可选功能,使用 X 官方嵌入时间线;X 的嵌入服务可能限流,失败时会提示回到主页入口。第三方脚本只在点击预览后运行于隔离页;工作台不抓取、存储或再分发帖子,也不向 X 发送 Wiki 内容。这里不提供跨账号聚合、离线摘要或后台通知;这些能力需要另接 按量计费的 X API。

来源收件箱

独立工作台侧栏的「来源收件箱」把已订阅的 AIHOT 最新日报、公开 RSS/Atom 订阅源和手动添加的链接放在一起。可以粘贴订阅源地址,也可以导入 OPML 文件中的 xmlUrl 订阅源;OPML 只在浏览器本机解析,不会上传文件。收件箱按原始链接去重,显示来源、发布日期(若订阅源提供)、获取失败状态和原文入口。AIHOT 条目显示的是日报日期,不冒充原始文章的发布时间。

打开原文核对后,可把条目关联到一个已识别的 Wiki 项目,或标记为暂不处理。也可填写具体任务,把来源转成待审阅的行动建议;启用日报写入后仍需再次确认才会采纳。关联、订阅与审阅记录按资料库保存在本机,不修改项目笔记。RSS/Atom 遵循 RSS 2.0 与 Atom 的常见文章字段;OPML 导入使用 OPML 2.0 的 xmlUrl 属性。

「当前资料库」页可导出 JSON 备份,包含来源订阅、行动审阅、每周回顾决定和已采纳行动的结果记录。导入前会展示来源资料库和记录数量,确认后替换当前资料库的工作台状态。首次升级会把该浏览器里已有的订阅和审阅选择迁入本机状态。备份不包含 Wiki 正文;迁移到新设备时仍需单独复制 Markdown 资料库。

RSS/Atom 由本地服务按需读取,最多保存 30 个订阅源,每个源最多读取 1 MB、展示前 30 条。只接受公开网站地址,解析到本机或内网的地址会被拒绝;发生故障时展示错误,并在本次服务运行期间保留已成功读取的内容。外部标题和摘要按纯文本显示,重要信息仍需到原站核对。

五分钟试用

需要 Node.js 20 或更新版本。

git clone https://github.com/ryanxie113/wiki-workbench.git
cd wiki-workbench
npm ci
npm start

打开 http://127.0.0.1:4173。默认展示 examples/demo-vault/ 中的虚构内容。此时工作台只读。

首页和“当前资料库”页会显示正在读取的完整路径、示例状态、扫描页数与写入范围。在“当前资料库”页可点击“选择文件夹”打开系统目录选择器,或直接输入绝对路径;预检会显示识别到的 Markdown 数量、项目示例、正文范围和日报写入范围,确认后才切换。macOS 使用系统目录窗口,Windows 使用系统文件夹窗口,Linux 需要安装 zenity;选择器不可用时仍可输入路径。界面选择不会修改 Wiki 文件。

如果用默认命令 npm start 启动,确认后的连接设置保存在本机用户配置目录,重启会恢复。若启动时显式传入 --vault 或设置 WIKI_WORKBENCH_VAULT,启动参数始终优先;界面切换只对当前运行的服务生效。想启用当日日报写入,可在接入向导勾选并通过模板检查;未勾选时连接保持只读。

读取自己的 Markdown 文件夹:

npm start -- --vault /absolute/path/to/notes

任何 .md 文件都能搜索和阅读,不要求 YAML frontmatter 或根索引。projects/ 内的页面自动进入项目视图;也可以用 type: project 标记。项目摘要从 Goal、Progress、Next steps 等标题提取,并始终提供原文入口。

阅读器支持 [[页面]]、[[页面#章节|显示文字]]、[[#本页章节]],以及普通 Markdown 的相对链接。[[./页面]] 和 [[../页面]] 按当前文件位置解析;[页面](/notes/page.md) 与 ![图片](/assets/image.png) 从资料库根目录解析,普通 Markdown 页面链接可省略 .md。目录外路径不会打开。

如果项目页或周报使用其他命名,使用 --project-format 指定 JSON 配置。示例配置支持 Mission、Milestones、To deliver、sprint-review.md 和 Next week:

npm start -- --vault /absolute/path/to/notes --project-format examples/project-format.en.json

项目格式示例中的五个数组分别指定项目目标标题、进展标题、后续事项标题、周报文件名片段和周报计划标题。目标与周报计划要求标题完全匹配;进展、后续事项及周报文件名允许包含配置词,匹配时不区分大小写。各数组单独替换默认值;需要兼容多种写法时,把它们都列入数组。带日期的项目章节仍优先作为进展,较新的周报记录可覆盖项目进展摘要,所有摘要保留原文来源。

适配结构化 Wiki

如果资料库用 wiki/ 保存正文、daily/ 保存日报、根目录 index.md 保存索引,可以这样启动:

npm start -- --vault /absolute/path/to/vault --content-dir wiki --daily-dir daily --index index.md --time-zone Asia/Shanghai

--content-dir 限定主要扫描目录,同时仍读取日报目录与根索引。可重复使用 --exclude relative/path 排除目录。缺少索引时不显示“未入索引”提示。

项目页若不在 projects/,且没有 type: project,可重复使用 --project-dir 指定资料库内的项目目录。例如 --project-dir docs/initiatives 会识别该目录及子目录中的 Markdown 项目页,不需要修改原文。

行动审阅从项目页的后续事项章节、最近周报“下周计划”的编号/项目符号列表,以及人工核对的外部来源生成候选项。旧周报中已采纳的计划继续显示,方便从关联项目页回看结果。日报中的计划与候选项需保持相同文本及项目链接,才能自动关联采纳和勾选完成状态;同文重复或多个项目无法可靠区分时会提示人工核对。未采纳事项的暂缓、忽略按资料库保存在本机用户配置目录的 wiki-workbench/workspace/。已采纳事项的完成、延期、失效结果保存在 wiki-workbench/outcomes/,包含来源、日报采纳位置、记录时间和处理依据,不会自动跨设备同步。选择“完成并勾选日报”时,仅在日报写入已启用、事项来自当天且文本与项目链接仍一致时更新当日日报;历史日报不会被改动。当天记录完成但日报未勾选,或日报已勾选而本机仍记为延期/失效时,行动页和项目页会标出冲突,可重新读取并按日报校准。旧日报未勾选、任务后来完成不算冲突。日报里已打钩的完成状态优先于本机结果记录。

只有在确认日报模板适合自己时才启用写入:

npm start -- --vault /absolute/path/to/vault --content-dir wiki --write-daily

写入功能需要资料库内已有 daily/_template.md。默认识别“今日计划”下的 P1/P2/P3 清单和“时间线”表格。启动时会检查模板,格式不匹配就拒绝创建日报。

其他格式可通过 --daily-format 指定 JSON 配置,例如 英文配置 对应 英文模板:

npm start -- --vault /absolute/path/to/vault --write-daily --daily-format examples/daily-format.en.json

将示例模板复制到所选资料库的 daily/_template.md 后再启用该配置。可设置 planHeading、timelineHeading 和三个 priorityLabels;模板可使用 {{date}}、{{week}}、{{weekday}} 占位符。时间线必须是“时间、内容、项目”三列表格。--daily-dir 可更改目录,--time-zone 使用 IANA 时区名称。运行 npm start -- --help 查看所有参数。

文件与隐私边界

  • 服务只监听 127.0.0.1,不会把资料传到远端。不要直接暴露到公网。
  • 默认不修改 Wiki 文件。--write-daily 只允许修改指定日报目录中的当日文件;其他 Markdown、原始资料和索引保持只读。已采纳事项的结果记录写在本机用户配置目录;选择同步完成时才会勾选当日日报中的对应计划。
  • 扫描跳过隐藏目录、node_modules、符号链接、超过 3 MB 的 Markdown 文件,以及 --exclude 指定的路径。API 读取会检查文件真实路径是否仍在资料库内。
  • 本地 PNG、JPEG、GIF、WebP、AVIF 图片可在原文中显示,单文件上限 10 MB。远端图片只提供手动打开的链接;SVG 不以内嵌图片提供。
  • 页面上的日期来自文档记录,不代表项目今天仍在推进。打开原文核对后再采纳任务。

开发

npm run bench 会在临时目录生成 600 篇虚构笔记,测量首次扫描、连续刷新、100 次搜索、单篇原文读取与渲染,以及文件增删改后的刷新,并核对刷新结果;结束后自动清理。使用 npm run bench -- --pages 5000 可复现更大资料库的测试。结果仅用于比较同一机器上的版本,不代表真实资料库的绝对耗时。

项目列表每次显示 60 项,可按名称或路径筛选后继续加载;日报记录表单也通过搜索选择关联项目,避免大资料库一次生成数千个页面节点。

npm test
npm run check:obsidian
npm run build:obsidian
npm run bench
npm run dev

测试仅使用 examples/demo-vault/ 和临时生成的虚构文件,不依赖任何私人 Wiki。贡献方式见 CONTRIBUTING.md,安全报告方式见 SECURITY.md。

本仓库的源码与样例库应与任何私人资料库分开管理。公开远程仓库时,只推送本目录的独立 Git 历史,不要导入私人资料库或其提交历史。

许可证

代码采用 MIT 许可证。package.json 保留 private: true,只表示暂不向 npm 发布包,不影响源码仓库的开源许可。

About

Local-first Markdown workbench with evidence-backed actions, source subscriptions, and an Obsidian companion.

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages