跳转至

Blog

Versu: Agents and Utility AI

这是对交互式故事角色 AI 引擎 Versu 工作原理的简要介绍,主要是 代理/角色(Agents)基于效用的决策系统(Utility-Based Decision-Making) 部分。

内容从小组讨论会的会议材料修改而来,材料被 LLM 润色过(修改了分段和措辞,为了“更快更方便阅读”),与以往的博客语气会不太一样。

Versu 没有公开过具体实现,我所有的分析均来自 Richard Evans 和 Emily Short 的论文以及 Emily Short 博客上的零散文章,可能有不少错误。

Hello, Saya Lang

extern fn puts(s: *u8) -> i64;

pub fn main() -> i64 {
    puts(c"Hello, Saya!");
    0
}

我真正意义上的第一个编译型玩具语言,编译到 QBE IL

语法和关键字与 Rust 差不太多,基于表达式。编译器内部结构参考了 Hare 语言的编译器 harec,一些数据结构设计参考了 rustc

Saya 是圣诞节项目,想当做某种礼物送给自己,后来拖延成了跨年项目,再最后,要变成新年项目了……

总之,向您送出诚挚的圣诞祝福。

仓库:github.com/13m0n4de/saya

Functional Pipeline Programming in Python

用 Python 写了个小工具,根据手机号段信息生成 hashcat 掩码。

仓库:github.com/13m0n4de/purrify

平平无奇?看看这个:

purrify.py
87
88
89
90
91
92
93
94
95
96
_ = sys.stdin > (
    pipe
    | foreach(parse_csv_line)
    | where(X.__len__() > min_length)
    | where(X[type_idx] == "MOBILE")
    | where(in_cities, geo_indices=geo_indices, cities=cities)
    | foreach(lambda x: (x[prefix_idx], int(x[length_idx])))
    | foreach(as_args(purrify))
    | foreach_do(print)
)

Markdown to PDF with Pandoc and Typst

仓库:github.com/13m0n4de/pandoc-typst-catppuccin

自从团队使用 Obsidian 协作组织文档库以来,需要将 Markdown 转换为 PDF 的情况越来越多。Obsidian 的默认导出不好用,自定义功能太少,被逼无奈使用 Better Export PDF 了一段时间,边距、大纲书签以及页眉页脚等自定义功能不错,但它总是没法跟随我的暗色主题,自定义 CSS 又太过麻烦。

于是,我们写了个新插件。 可惜,我们还是继续凑合用着。

直到我们需要批量导出多个 Markdown。

Obsidian 没有给我编写自动化脚本的发挥空间(也许宏可以,但……太恶心了,而且没办法集成到 CI 里)。

能花 6 小时写自动化脚本(然后失败),就绝不花 6 分钟动手完成它。

Refactor My Quiz App

花了几天把 NekoQuiz 完全重构,从 Axum + Yew 到 Axum + Leptos,从 CSR 到 SSR with hydration。

其实在这次重构之前,就已经很少有使用它的机会了,这也许是最后一次大更新。(尽管我不愿意这么想,这样的想法会成为项目被“遗弃”的第一步)

不过至少,现在是个适合总结的时候。

CVE Roulette #1: pngcheck

这是 CVE Roulette 系列的第一篇文章。抽到了 CVE-2020-27818,研究着研究着就顺手把 pngcheck 的历史漏洞都看了个遍 :)

Ricing My Arch Linux

花了点时间从 i3 迁移到 Hyprland,终于把凌乱的 Dotfiles 整理好了。

这次除了整理配置文件,还将整体配色方案从 Nord 切换到了 Catppuccin Macchiato,并且统一了包括网站在内的所有主题。

Dotfiles 仓库:github.com/13m0n4de/dotfiles