@oeyoews 为什么这样说,感觉MWS挺好的啊,但就是不知道啥时候可以正式投入使用

机杼
-
你使用太微多长时间了 -
你使用太微多长时间了想起以前在社区还做过一个问卷调查,里面有个问题就是你使用太微多长时间了,并伴随着一个问题,你还在使用太微吗。
大多数人使用太微时间不到一年,长得有一年多。但很多后面都没有使用太微而转向了其他软件。
我自己大概是2022年左右接触到太微的,2021年其实就在知乎上刷到了林一二的文章,但当时没有电脑用不了。2022年在家上网课,要整理PPT的笔记,便开始接触笔记软件。在这之前,我的笔记都是纸质的,那种厚厚的笔记本一写就是一个学期。
从notion到tiddlymemo(当时用的是钓鱼插件),再之后是supermemo和TiddlyWiki。该说是奇怪还是意外呢,在这个过程中我没有遇到obsidian和anki,尽管也看到了类似的文章,但没有去尝试。最后也是唯一的胜出者,TiddlyWiki。
一晃三年过去了,这三年中做的事情基本上都是跟TiddlyWiki相关的,除了玩游戏就是在做跟TiddlyWiki相关的。刚开始研究筛选器和宏,后面开始写一些文档放在太微中文社区教程中,再后来看别人的插件,修改别人的插件来改进。后面也开始自己写插件,先简单后复杂。中间还录制了一些太微教程的视频,还有当时的B站每周直播,中间也尝试写一个完整的系列教程,但总是写不下来,TiddlyWiki实在是太复杂了。折腾的过程中也遇到了很多问题,有时候一个问题就能卡一下午,或者一个晚上。笔记库也是几经变化,之前我的笔记库也有意外丢失的情况,是真的丢失了,根本找不回的那种。但这些并没有阻挡我使用TiddlyWiki。
我现在仍旧使用TiddlyWiki。之前是用TiddlyWiki管理一切,任务管理,时间管理,书籍管理,笔记管理,分了好几个wiki,但后来又发现在TiddlyWiki中管理一切并不方便。又逐渐迁移到其他软件中。而现在呢,又觉得TiddlyWiki好像可以管理一切,之前遇到的一些问题似乎可以以另一种形式解决。但我没有直接行动。我想等MWS插件基本开发完毕后再尝试。因为MWS插件带来的改变太多了。
目前我使用TiddlyWiki还算合适,几乎没有遇到太多的阻碍。其实遇到的阻碍很多跟TiddlyWiki无关,反而是我自己没有思考清楚。是用标签还是用字段管理内容,怎么处理层级性,怎么处理自己偶尔产生的想法,链接又如何管理。这些当我想明白后,其实不管是用TiddlyWiki还是Obsidian,我觉得自己都不会遇到问题。但TiddlyWiki实在是太强大了,免费又开源,目前是真的找不到替代。
当然TiddlyWiki的问题也很多,不然就不会需要5.4.0这种不兼容式更新了。但总体来说TiddlyWiki是变得更好了。
不过软件毕竟是工具,使用TiddlyWiki并不一定要排斥其他的,我偶尔也会使用Obsidian或者思源笔记。目前我看电子书就是用思源笔记。扬长避短才能为我所用。
TiddlyWiki已经20年了,完全有理由相信TiddlyWiki可以再用20年。现在AI发展迅速,AI笔记软件也层出不穷,但TiddlyWiki仍旧值得尝试和学习。不过也许未来TiddlyWiki也会结合AI,还是拭目以待吧。
2025年5月5日
-
制作一些有用的太微示例来宣传我以前把thoughts memo翻译过来的文章做成了TiddlyWiki的形式。但后面叶哥自己搞了一个网站,我也就没再维护下去了。里面的tidme插件也好久没更新了。
以前还维护过一个开发者文档,里面的内容都是由AI翻译的。但估计也很少有人看。
以前还做过太微之书/太微漫游的教程,现在也停了。之前是没有时间,现在是没有动力。不知道该怎么和别人说起TiddlyWiki这个东西,只好搁置。
-
制作一些有用的太微示例来宣传@XLBilly 原来大家都觉得TiddlyWiki加载网站很慢吗?我自己是直接用太记的模板,里面有林一二的一些优化,我个人感觉加载速度并不算慢。把TiddlyWiki核心和一些比较大的插件都放在外面懒加载了。具体的技术细节我不清楚,但我感觉用github部署出来的网站访问速度不太慢,可能比tiddlyhost还要快一些。当然是开了科学上网的访问速度。
如果是单文件html,这个好像确实会比较慢,因为正常使用TiddlyWiki,包含了一些较大的插件的话,就会达到15m。
TiddlyWiki的命令行功能我没用过,一直都是用太记启动。太记真是挺方便的。
多用户编辑的话,目前只有等MWS插件完善后再考虑了。不过MWS插件是真的不错,非常期待完善后的功能。如果太记也把这个结合进去的话,那相信加载速度会很方便。
目前要做多用户编辑,也完全是可以的。通过Git来提交到相应的仓库中。图片用图床的,一般不太大的图片,放在github上也是可以的。
在太记中部署也是非常简单的,真的很简单,只要有github账号并申请一个token就好。一键推送。
notion确实更简单,但notion发布成网站的功能好像是付费的。加上notion的商业性和可能存在的政治因素,比如之前有新闻报道notion不再为俄罗斯用户提供访问了,让人觉得比较担忧。
notion的block功能,在TiddlyWiki中是可以实现的,但就是要自己写。TiddlyWiki和其他笔记软件不一样的是,其他笔记软件能实现的,TiddlyWiki多少也能实现,但TiddlyWiki能实现的,其他笔记大多不能实现。比如自定义展示模板,目前我还没看到有像TiddlyWiki这么自由的软件。
-
制作一些有用的太微示例来宣传目前最常见的还是做游戏wiki,但绝大多数游戏wiki制作团队都不会采用TiddlyWiki这种形式,而是会采取更普遍使用的形式。TiddlyWiki这种的通常是由个人维护的。不过也挺好的,百花齐放嘛。上面的示例是龙与地下城的,但我没玩过这个游戏也就没看下去了。
其实可以做的有很多。比如饥荒中的模组wiki,就完全可以用TiddlyWiki部署。但一个问题是国内访问受限,github部署出来的网站访问还是挺玄学的。
也许TiddlyWiki推广开来了,就更容易实现吧。
-
制作一些有用的太微示例来宣传@XLBilly tiddlyhost好多都没更新了,而且更多的是模板。且绝大多数都是英文的。note-wiki的这个我确实是第一次见。圣经的我倒知道。林一二的网址是https://wiki.onetwo.ren/,我自己也有一个数字花园。
但缺少那种中文网站,特别是具有实际价值的中文网站。这方面notion好很多。我以前还看过一个德勒兹的中文网站,是用notion搭建的。
总体来说是偏少的,个人用的或数字花园那非常多了。我以前还保存过一个文件,里面有上千个TiddlyWiki实例来着。
TiddlyWiki本身足够强大,但确实没有流传开来。也许等mws插件完善后,就能够吸引到更多的新用户来使用吧。
-
制作一些有用的太微示例来宣传@XLBilly 不是说这种具体的筛选器语法示例。而是可以用来对外部宣传或使用的。比如我知道有人用Obsidian做了一个法律库文件。以前QQ群里还有位用户用TiddlyWiki做国际标准文件。当然不是说一定要做这种标准类文件。
如果有一个网站,是由太微构建的,用户进去就可以查看某一个菜是怎么做的,数据源就来自上面的仓库中。那是不是很方便,或者说很吸引人。因为背后肯定存在字段方面的处理,展示处理。而且这可以是一个公开的项目,可以由多人维护。
这有点类似于网络上常见的用notion搭建自己的娱乐库,包括看过的动画,玩过的游戏,看过的电影和电视剧之类的。这种分享通常是美观,很容易吸引用户的。
不过总体来说还是宣传层面的,因为吸引过来的用户可能会被TiddlyWiki高学习成本或复杂难度给吓跑。
-
制作一些有用的太微示例来宣传比如这个如何做饭的示例就挺好的,不过问题就是如何保持同步更新,这就比较麻烦了。
-
5.4.0版本要来了@linonetwo 哈哈,感觉从你加入后,TiddlyWiki开发速度变快了好多。不过这次要是能够顺带把社区插件库一并搞起来就更好了。很多旧的功能还是做成官方插件去维护。避免一次大更新,直接用不了了。
-
5.4.0版本要来了好消息是,可以进行一些不向后兼容的更新,以消除TiddlyWiki长久以来无法推进pr的问题。
主要的更新应该是所见即所得编辑器插件和AST,估计以后直接在TiddlyWiki里写markdown会很方便。
还提供了一些新的配色表内容,杰里米打算完全放弃旧的,更换新的。
来自上面的网站,确实不错,感觉配色风格像莫兰迪还是什么来着。
这次更新可以多去提一些意见。我提了一个多余的p标签问题,应该还要追加一个官方插件仓库的问题。趁着大版本更新,应该要多更新点内容。
当然也有些问题,比如所见即所得编辑里可以快速编辑字段吗?渲染和编辑是怎么处理的呢?因为我经常使用级联的模板来展示内容。
总之TiddlyWiki越来越强大了,这下真的是下一代,面向未来的软件了。
-
如何在procedure中传递筛选器变量@oeyoews 感觉这个没那么智能,可能给的材料和示例不够多。要是可以把你们写的插件库也放进去让他读取或许会好一些。
-
如何在procedure中传递筛选器变量离谱,刚发出去就找到了答案。
\procedure test(filter) <$list filter="[tag[吉尔·德勒兹-copy]] +[filter<filter>]" > !!! <$link><<currentTiddler>></$link> </$list> \end <$transclude $variable="test" filter="[chapter[0前言]]"/> --- <$list filter="[tag[吉尔·德勒兹-copy]chapter[0前言]]"> !!! <$link><<currentTiddler>></$link> </$list>
用到了
filter
筛选器。如果需要引用文本变量,比如
[chapter{!!chapter}]
,需要通过let
微件转化。不然无法实现。<$let a={{!!chapter}}> <$transclude $variable="test" filter="[chapter<a>]"/> </$let>
筛选器是真强大,但也是真不会用,我还找了
function
的定义方式,getvariable
等等。想不到别的词,就这种功能,浪费了得有三个多小时,我也挺佩服我的毅力的,只是真不想遭受这种罪了。 -
如何在procedure中传递筛选器变量\procedure test(filter) <$list filter="[tag[吉尔·德勒兹-copy]] :filter[<filter>]" > !!! <$link><<currentTiddler>></$link> </$list> \end <$transclude $variable="test" filter="[chapter[0前言]]"/> --- <$list filter="[tag[吉尔·德勒兹-copy]chapter[0前言]]"> !!! <$link><<currentTiddler>></$link> </$list>
搞了很久,把论坛都快翻遍了也没找到答案。理论上来说,只会有三个内容。
但确实不知道如何传递。
-
【TW前瞻】MultiWikiServer 锐意开发中的官方多维基服务器,未来可期我大概明白怎么用了,简单概括如下
- 一个bags必须要有一个recipe,不然这个bags无法形成域名,也就无法编辑
- 一个recipe可以有多个bags,但至少有一个,不然无法构建
- recipe中的bags有优先级。同样的标题条目,优先级高的被recipe使用,低的无效。
-
- 这样带来的一个好处是,你可以自己做一个定制化的wiki模板,然后维护这个模板
-
- 接着你在你的其他生产环境中使用这个模板,但有些功能你当前的生产环境你不需要,所以你可以直接修改你当前生产环境的内容,不会影响到你的bags条目
-
- 另一个更常见的好处是,当你更新你的模板时,其他使用该模板的recipe会直接更新,这样就不需要一直调整了
目前存在的问题
- 文档上说会跟用
.tid
展示内容不冲突,但没有具体说明如何处理 -
- 因为显示可以与git相结合
- 目前recipe和bag没有删除选项,可能是还没有做
- 目前插件也作为bags提供,这个方案有点不那么好。因为插件太多了,会有很多个bags。如果把CPL收录的插件提供过去,那有好几百个。上百个bags显示的就很糟糕了。
- 怎么与筛选器结合,这一点还没有说。目前来看,bags与筛选器无关,出现重名的条目,就按优秀级来处理。
可以期待实现的
- 个人知识库管理会更加高效
- 举例来说,我可以只在一个book-info的bags中更新书籍信息,而其他的什么都不管,当我需要查询书籍的信息时,我可以在book-info中查找,也可以直接在我的主知识库中查找。
- 以及上述实现的模板功能。我可以有一个template,里面包含了大量我自定义的功能,但没有打包成插件。而且这里可以是一个生产环境,我可以直接在这里测试。但有个可以预见的问题是,测试条目也会随之附带到main中,所以需要通过筛选器来结合处理。
- 减轻性能。虽然我不知道具体是怎么处理的,但可以预见的好处是,性能会得到极大的改善。当然这个可能需要测试。
- 多用户处理
-
- 比如论坛上很多个不同的wiki,估计就可以使用这种方式来处理展示了,但背后又涉及到git方面的内容,估计还是不行
-
- 可能需要服务器,这个有点麻烦。因为文档中举了一个老师的例子,老师可以把他的教学资料放在一个bags中,而学生可以每个人都有一个自己的bags,可以提交作业。然后老师查看且修改。理论上都没有问题,最大的问题在于,是老师去部署这个服务器还是学校,学校真的会这样做吗?
-
-
- 这个肯定是学校部署的,老师估计是类似跟用学习通一样。算了,这方面还是不过多讨论了。
-
感觉等技术成熟了,太记应该可以把这个放进去,从而构建更强大的TiddlyWiki。
-
【TW前瞻】MultiWikiServer 锐意开发中的官方多维基服务器,未来可期刚启动成功了,但没搞明白是怎么用的。
-
筛选器的上限确实,我把list想得太抽象了。
后来我发现,即使我要判断,但因为我的节点丸和根目录是放在一起的,所以实际上我只要判断节点丸就可以了。并不需要判断那么多根目录。因为节点丸也足矣构成上下文内容。
-
筛选器的上限目前还不算卡,用起来的时候也影响不大。
我把上面根目录的筛选器改成了用list微件的形式。
<$list filter="[tag[wikis]]" variable="root-name"> <$transclude $variable="context-root" tiddler=<<showTiddler>> name=<<root-name>> tid-name=<<root-name>> use-true="true" limit="15" /> </$list>
感觉能增加点筛选使用效率。
但要做条件判断就不好处理了。因为孤立条目只能是无硬式链接条目,但有些有反向嵌入的也应该要排查出来。
我尝试了一下,目前还是解决不了,就先放着了。
-
筛选器的上限总结来说,就是TiddlyWiki的底层机制是怎样的。怎么处理复杂的渲染,刷新,状态管理。能承受的上限是什么。
我最近折腾的小东西,感觉很吃渲染,虽然没有明显的卡顿,但能感觉到是卡了一下的。当然我写的wikitext肯定也不够好。
没有往英文论坛那边发,是感觉这个东西还没说清楚。可能下次有机会我演示一下就好了。
-
筛选器的上限最近我做了一些小东西,其中一个工具是,在条目页面上有一个按钮,点开后会显示一个弹窗,弹窗里有一些关于这个条目的内容。
其中一个是上下文的内容,包括两个方面,一个方面是此条目所属的根目录,并构建一个面包屑。一个方面是关于此条目下面的子条目,链接和嵌入等内容。如下图所示。
此条目的根目录在WENAI,包含一个链接,一个标签,一个嵌入内容。
因为之前使用TiddlyWiki是好几个wiki,所以现在我的根目录有好几个,并不只有一个。
ok,现在问题来了,如果我建立一个条目,这个条目不存在那几个根目录之下,且没有链接,也没有标签,也没有嵌入。那么这个条件判断应该怎样写呢?
我知道其实这个问题并没有太大的实际用处,因为正常来说,一个什么上下文信息都不包含的条目没有查看的必要。
但因为旁边我还有其他功能,比如可以快速修改标签或字段的功能,所以我才会想着当打开一个条目,没有任何上下文时,展示出一段文字。(当然更好的做法是直接切换到其他页面去,但同样我也不知道怎么做。)
如果我要解决这个问题,也同样是从上述两方面入手。
面包屑我是使用in-Tag-tree-of,包装的宏代码里有下面这个初始判断。即判断当前条目是否属于某个给定的根目录。
<$list filter="[[$tiddler$]!prefix[$:/]in-tagtree-of:inclusive[$name$]]">
但因为我有好几个根目录,所以这个list判断应该要写好几个,且需要嵌套,因为可能需要一些循环方式,在TiddlyWiki里写循环就是用list,可惜在这一步我就不会了。
第二个方面则是关于此条目的内容,这里我是用自己之前修改kookma的宏,所构建的节点丸。
$:/plugins/mabuqian/gumo-customisation/node-explorer-colorful
\import $:/plugins/mabuqian/gumo-customisation/node-explorer \define subtiddler-pattern() $(currentTiddler)$ \define type-class() badge p-1 badge-$(type)$ <$list filter="[all[current]get[node-explorer]!match[hide]] [all[current]!has[node-explorer]] :and[!is[system]]" variable=null> <$list filter=<<mainFilter>> variable="currentRecord"> <$let type={{{ [all[current]links[]match<currentRecord>then[info text-white]] [all[current]backlinks[]match<currentRecord>then[danger text-white]] [all[current]tagging[]match<currentRecord>then[warning text-dark]] [all[current]tags[]match<currentRecord>then[success text-white]] [<currentRecord>prefix<subtiddler-pattern>then[primary text-white]] :else[<currentRecord>search:text<currentTiddler>then[secondary text-white]else[dark text-white]] }}} > <$link to=<<currentRecord>> class=<<type-class>> /> </$let> </$list> </$list>
可以从代码中看到,里面做了很多的判断条件。
那如何判断一个条目,没有标签也没有链接也没有其他类似的项目呢?难道又把上面的代码都改一遍?
更何况,这不是一个页面按钮,而是经常会用的按钮。换言之,我会经常在新建条目时,点开这个按钮。
所以每当这个条目什么上下文都没有,但上面的筛选器都要跑一遍的时候,我已经能想象到筛选器炸了或者卡了的状况了。
当然我对TiddlyWiki的底层机制不了解,所以也可能存在着更好的方式和解决办法。但一时我也没有想到。
-
如何在一个GitHub仓库里构建多个TiddlyWiki在线网址我记得TiddlyWiki的官网好像就是这样做的,文档和开发者文档都是放在一个仓库里,然后构建了好几个网站,想知道这个是怎么处理的。