开源MarkdownAI变活Markdown静态文档:Claude工作流提速86%


Markdown老了,但有人给它加了外挂。本文讲述如何通过一行代码让静态文档变活,根据环境自动切换内容,让AI工作流提速86%,附带大量翻车和真香现场。

Markdown本来是个死文档,开源MarkdownAI将其变成活的了

你电脑里的Markdown文件,就是那些结尾是.md的东西,以前就是个文本棺材。写进去什么就是什么,死板得很。好比你把今天要买的菜写在纸上,明天冰箱里的鸡蛋被吃了,你那张纸上还写着要买鸡蛋,整个一智障。

但现在有人搞了个开源工具东西叫MarkdownAI:TheDecipherist/markdownai

只需要在文件最上面加一行代码,这个文件就活了。活的什么意思?就是它自己会看情况。你在家打开是一个样子,在公司打开是另一个样子。你昨天看和今天看,内容可能不一样。这特么才叫智能文档,以前那些都是纸扎的。

MarkdownAI 就是解决方案。@markdownai只需在任何文件的第一行(或 YAML frontmatter 之后的第一行)添加代码.md,它就能变成一个实时更新的文档。您无需编写会过期的值,而是编写指令,每次文档渲染时都会获取最新值。数据库记录计数会在有人阅读文档时查询,而不是在您编写文档时查询。您的 API 响应是真实的。您的环境变量是实时更新的。您的文件树反映了磁盘上当前的实际内容。

运行mai render。文档执行完毕。输出结果是干净的标准 Markdown 格式,所有内容都已解析。

其结果是,文档不会说谎——因为它不存储事实,而是获取事实。


Markdown本来就不是给AI准备的,它连自己都照顾不好

Markdown这玩意儿今年20岁了。20年前设计它的人想得很简单:让写网页的人不用记那些乱七八糟的HTML标签。你写个井号空格就是大标题,写个星号就是列表,多清爽。它就是个静态格式转换工具,把简单文本转成网页。

但问题是,现在全世界的人都在拿Markdown给AI喂资料。你想啊,Claude读你的项目文档,读你的需求文件,读你的技术方案,全是.md格式。可这些文件是死的。你代码改了,文档没改,AI读的就是过期信息。这就好比你去吃饭,菜单上写的还是三年前的价格,你点完菜结账时傻眼了。

有个哥们评论说得特逗:我每次用完Claude,都让它重新给我写一遍文档。这办法笨是笨了点,但至少能保证文档是新的。可这不就是让AI给静态文档人工呼吸吗?治标不治本。

真正的痛点是什么?是你的文档不会撒谎。不对,应该反过来说,你的文档只会撒一种谎,就是它描述的那个世界早就变了。你的配置文件换了分支,你的环境变量不一样了,你的数据库改了结构,文档全不知道。

加一行代码就能让文件活过来,原理简单得像作弊

MarkdownAI干的事情特别简单。你在任何.md文件的第一行写上@markdownai,这个文件就不再是死的了。然后你可以在文件里写各种指令,比如@if、@env、@db这些。

举个例子,你写一个文件,想让它在开发环境和生产环境显示不同的内容。以前你得维护两个文件,现在只需要一段@if判断。伪代码大概是这样的:

@if 环境等于开发
  这里是调试用的配置,普通用户别看
@end

@if 环境等于生产
  这里是正经的用户配置
@end

Claude打开这个文件的时候,MarkdownAI会先扫描一遍,根据当前的真实环境,把不需要的内容整个删掉。Claude看到的永远是量身定做的版本。不是隐藏,不是注释,是直接不存在。

这就像你去相亲。你妈给你看照片,会根据对方的要求给你P图。对方喜欢戴眼镜的,就给你加上眼镜。对方喜欢运动的,就给你换成球衣。对方看到的就是专门为他准备的那个你。恐怖吧?但效果拔群。

执行脚本和查数据库都行,文档不再是纸上谈兵

更狠的是,这个文件还能干活。你可以让它直接查数据库,直接调接口,直接执行系统命令。这不是文档了,这是个穿着文档马甲的程序。

比如你写一个项目进度文档。以前你得手动更新到今天完成了几个功能,修了几个bug。现在你直接写一条@db查询指令,从你们的项目管理数据库里拉真实数据。Claude打开这个文件的时候,看到的是此时此刻的真实数字。昨天打开和今天打开不一样,上午打开和下午打开也不一样。

还有一个哥们分享了他的用法。他让MarkdownAI做所有那些简单但烦人的脚本任务,比如检查某个文件存不存在,某个端口通不通,某个服务有没有启动。这些事情以前得让Claude去做,浪费对话次数和token。现在MarkdownAI自己就干了,干完直接把结果写进文档里。Claude打开文档的时候,看到的就是最终结论:文件存在,端口通,服务正常。Claude不需要知道中间过程,省下来的上下文窗口可以去干更复杂的事情。

这哥们原话说的是:以前一个工作流要走10分钟,现在1分半就完事了。86%的提速就是这么来的。不是Claude变聪明了,是Claude不用再当跑腿的了。

有人不服说早就有类似的东西,但性质完全不同

评论区里肯定有技术老炮跳出来说你这不是新东西。有人提Jinja2,那个Python的模板引擎。有人提MDX,那个能嵌React组件的Markdown方言。还有人直接说这不就是预制宏吗。

发帖的老哥挨个怼回去了,态度还挺好。

针对Jinja2,他说Jinja2是渲染模板的。
你写一个模板,它给你生成最终的文本。这个过程是单向的,一次性的。MarkdownAI不是渲染,是运行时执行。你的文件在被AI打开的那一瞬间,它还在根据环境做决定。这是动态的,不是预编译的。

针对MDX,他说MDX能嵌React组件,能跟前端框架互动。但问题是AI懂React吗?懂,AI训练数据里有大量React代码。但AI每次看到MDX文件,都得理解一遍那些组件逻辑,这不省事。而且MDX文件本身还是静态的,不会自己根据环境变。

还有人问为什么不直接用HTML。发帖老哥更直接:HTML的token开销太大了。
一个简单的网页,标签比内容还多。XML也一样。AI读大文件的时候,每一KB都算钱。Markdown是肉眼可见的最干净格式,没那么多废话。JSON其实也挺好,结构清晰,但JSON是给人读的还是给机器读的?给机器读的。Markdown是给人读顺便给AI读的。这俩定位不同。

还有个评论特别损:你说这么多,不就是在重新发明轮子吗?发帖老哥回:我这轮子是方的,你拿圆的来比没用。

真正的杀手锏是阶段感知,文件知道自己在哪一步

MarkdownAI还有一个功能叫阶段感知。这个说起来有点抽象,但你一听例子就懂了。

你在做一个项目,从需求分析到代码实现再到测试部署,每个阶段需要的信息不一样。需求阶段你需要用户故事和验收标准。开发阶段你需要接口文档和数据字典。测试阶段你需要测试用例和环境配置。

以前你得维护三套文档,或者在一个文档里写三个大章节,然后手动告诉Claude你现在在哪个阶段。这多累啊。

现在你可以用@phase指令把文档分成几个阶段。然后你在文件里写清楚,当前在哪个阶段就只显示哪个阶段的内容。Claude打开文件的时候,MarkdownAI先看你的当前阶段标记,然后把其他阶段的内容整个删掉。Claude眼里只有当前阶段需要的信息。

这就像玩角色扮演游戏。你进了一个酒馆,自动切换到对话模式。你进了战斗区域,自动切换到战斗界面。同一个游戏,不同的界面,不同的规则。你的文档文件就是那个游戏本体,Claude就是那个玩家。

有个用户评论说得特别到位:我要的就是这个。我在X模式下只加载X的上下文,Y模式的内容别来污染我。以前为了这个需求,我搞了一堆if else的判断脚本,现在一行@phase就解决了。

也有人觉得没必要,让AI自己更新文档不就行了

评论区当然有反对的声音,而且说得也挺有道理。

有人说,我用AI干活,不是应该让AI自己维护文档吗?我每次改完代码,让Claude重新生成一遍文档不就完了。何必搞这么复杂?

这个观点的核心是:AI本身就够聪明了,你给它的文档过期了,它能自己推测出来。或者你干脆让它实时更新文档,文档就永远是新的。

发帖老哥的回应很有意思。他说你说的对,但这有个前提,就是你有无限的上下文窗口和无限的token预算。现实是什么?现实是每次Claude读你的文档,你都在花钱。让Claude自己去发现文档过期然后更新文档,这又是一笔开销。而且更新完的文档下次还得再读,再发现过期,再更新。这是个死循环。

更关键的是,有些信息AI猜不出来。你数据库里的真实数据,你环境变量的当前值,你服务器上某个文件的最新状态。这些东西你让AI去猜,它猜个屁。它就是个大语言模型,又不是监控系统。

所以正确的分工是:

  • MarkdownAI负责那些确定的、实时的、可以自动化的事情。
  • Claude负责那些需要推理、创造、理解的事情。
别让Claude干脚本的活,也别让脚本干Claude的活。

还有个用户说得更直白:我每个周末额度刷新之前,都让Claude给我整个项目写一遍文档。这个办法笨,但管用。MarkdownAI是聪明,但我得先学会用它。这里反映了一个真实的问题,就是工具好不好用和用户愿不愿意学,这是两码事。

有人担心学不会,其实语法不超过十种,半天就够

MarkdownAI的指令看起来挺多的,什么@include、@import、@define、@call、@connect、@db、@http、@query、@read、@list、@tree、@date、@count、@pipe、@render、@graph、@header、@constraint、@define-concept、@prompt、@note、@cache、@on complete。这一大串看过去确实吓人。

但发帖老哥说,你日常会用的不超过十种。大部分时候你就用@if做条件判断,用@env读环境变量,用@phase做阶段分离,用@db查个数据库,最多再用@http调个接口。其他的属于进阶功能,你可以永远不用。

而且他还做了VS Code的插件,语法高亮、自动补全都有。你写@的时候就会弹出提示,跟写代码一样。

有个用户说他打算拿这个去搞Obsidian的知识库。他Obsidian里的笔记有很多链接和标签,还有主题汇总文件,经常需要更新。他想要一个智能体定期帮他扫一遍,把过时的链接修好,把新增的笔记关联上。这就是一个非常典型的应用场景。MarkdownAI不需要Obsidian自己支持,因为它在文件层面就解决了问题。

最后的结论就是Markdown不会死,但得活过来

回过头来看整件事。Markdown用了二十年,从来没想过自己有一天要伺候AI。它就是个简单的格式标记语言,连个变量都定义不了。但现在时代变了,AI读文档就像人读文档一样,需要文档是真的、活的、及时的。

MarkdownAI的做法是在不改变你使用习惯的前提下,让文件有了生命。你该写.md还是写.md,该用什么编辑器还是用什么编辑器。只是文件里面可以藏一些指令,让文件自己动起来。

这就像你家里养了一只电子宠物。表面上它还是那只毛绒玩具,但里面装了芯片和马达,会自己走路会叫唤。你还是那个你,但玩具已经不是那个玩具了。

未来的文档不会是死的。你写的每一个需求文档、设计文档、测试文档,都应该能跟真实世界同步。不是因为你勤快,是因为文档自己会变。

至于MarkdownAI能不能火,取决于两件事。一是它到底好不好用,二是大家愿不愿意改习惯。从红迪帖子的热度来看,很多人都被静态文档折磨过。只要这个工具真的能解决问题,用户会用脚投票。