所有文章
StrayMark 编年史:这个框架如何随着一次次决策逐步成形。
2026
一百万条断言无法裁决的事
2026-07-10
Bun 的 Rust 重写在单一模型家族上跑了 AI 对抗式审查,由 1,386,826 条测试断言裁决。StrayMark 的审计则跨模型家族做多样化 —— 因为目标是一次没有测试能裁决的判断。25 个审计周期的真实 Sentinel 数据展示了它抓到哪些绿色测试漏掉的东西,以及作为趣闻,七个模型家族到底怎么表现 —— 包括一个不得不因为悄悄变瞎而被降级的家族。
审计以为自己是谁
2026-07-08
StrayMark 的审计只有在独立的模型家族各自趋同到一个 finding 时才值钱 —— 一致就是那个信号。一连串 release 把这条保证加固,以对抗三种伪造它的方式。最新的一种最锋利:一个 router CLI 注入了它自己的产品名,于是一个审计器在报告上署名 "qwen-code",哪怕 operator 早已切换了后端模型。
作者本就知道的事
2026-06-28
dry run 证明了:是信号覆盖率 —— 而非 granularity —— 让 57% 的路由停留在低置信的猜测上。修复几乎免费:创建一个工作单元的人本就知道它是设计、实现、审计还是机械劳动。于是 Baton 彻底停用了标题扫描,把一个声明的动词变成唯一权威信号,并把它毕业到框架。
这次 dry run 本会花掉多少
2026-06-26
Baton 的第二阶段终于看了钱 —— 但它什么都没路由。它对 StrayMark 已经在 Sentinel 里记录的 762 个工作单元做了分类,并打印出一套 routing 策略相对全 frontier 本会花掉多少。头条是一个 ~93% 的上限。而诚实的读法推翻了这个实验自己的假设:granularity 从来不是那根杠杆。信号覆盖率才是。
spec path 只证明了它存在
2026-06-25
第四个实验从一个经济问题开始 —— 当订阅补贴结束时,全程全 frontier 就不再负担得起 —— 而它立刻撞上了一个结构性问题。一个跑在被遗忘的 intent 之上的更便宜的 router,只会更快地把 drift 自动化。所以 Baton 的第一步完全不碰模型。它去读那份 StrayMark 一直以来只证明了存在的 plan。
开放格式留给生产者的那部分
2026-06-17
Google 发布了 Open Knowledge Format —— markdown、YAML frontmatter、一张由链接构成的图、一个维护它们的智能体。StrayMark 独立地抵达了同样的基本构件。趋同是真实的;分歧同样真实 —— OKF 为 AI 构建认知,StrayMark 为 AI 与人类工程师一起构建认知。
债务究竟在哪里
2026-06-16
操作员每天真正的问题不是"把文档给我看",而是"我们现在在哪里?"。Loom 长出了第二个表面 —— 把架构当作一栋可以走进去的建筑,既有 2D 也有 3D —— 而它的技术债 overlay 却是空的。不是因为没有债务。是因为它不知道该把债务画在哪里。
这张图还画不出来的东西
2026-06-14
Loom 的首个 release 在不到一秒内就把文档图谱实时渲染进了浏览器。它同时也画出了 330 条通向虚空的 edge。看得见的那个 feature 是简单的部分 —— 让引用真正解析到位才是真正的工作,而它教会了我们:dangling edge 何时是 bug,何时是信号。
第二个读者提出的要求
2026-06-12
在 Loom 能画出任何东西之前,StrayMark 的文档模型必须先停止做 CLI 的私产。那次零用户可见变更的重构,是之后一切可视化工作的前提 —— 也是框架一直以来向 adopter 反复宣讲的一个小教训。
bash 脚本口中的"in sync"
2026-06-04
Follow-ups 成为 StrayMark 的第二个一等公民实体 —— 一天之内,两次外部迁移对这个设计做了压力测试。参考 adopter 已弃用的 bash 脚本一直在报告"in sync",而 29 个条目对它完全不可见。
feature flag 编译掉的东西
2026-05-31
第二个 adopter,在另一种语言和另一套 stack 上,验证了「声明了表层但未连线」这个反模式 —— 而我们有意推迟的 CLI helper 终于发布了。
二进制藏不住的东西
2026-05-23
一次 polish Charter 浮现了十个潜伏 gap,以及一个终于得到命名的反模式
Pattern 1 与 Pattern 2 —— 链演化
2026-05-16
二十七小时后,手工纪律被命名为两个模式:Pattern 1 —— pre-declare SpecKit refresh;Pattern 2 —— post-close audit-driven Batch N.4。正典文档、遥测 schema、CLI helper 随之落地,再过一小时,一个把两者向上重新吸收的元模式出现了。
智能体发现了一件没人要求它发现的事
2026-05-16
为一个已在悄然运转的设计属性命名
打开这个框架
2026-05-15
七十二小时内的两个动作:补上 i18n 覆盖度最后的 5%(治理文档在 EN + ES + zh-CN 上达到 20/20/20)以及在 README 中加入 CLA 徽章。分开看都很小;放在一起,正是框架不再只对自己讲话、开始向任何想读的人讲话的那一刻。
AGENTS.md 作为通用标准
2026-05-15
项目的第一份 AIDEC 与把它落地的开放标准之间相隔四个月。AGENTS.md 放在仓库根目录,被十五个不同厂商的 CLI 读取,替代了 CLAUDE.md / GEMINI.md / .cursorrules 以及十几个其他文件的扩散。
模式之前的手工纪律
2026-05-14
Sentinel 在一个已经一个月没有刷新的 plan 上连续跑了七个 Charter,靠手工执行 CHARTER-18,心里清楚任何一步走错都会埋掉前六个 Charter 的工作。五个小时之内,把这套手工纪律写进了上游治理 —— 当时还没给这个模式起名字。
audit-prompt 是异常值
2026-05-13
几十个文件里有一个反着活 —— 一个以英语为正典的框架里,唯一以西班牙语为正典的文件,存在了六个星期,没人发现。一次维护性修复,记录下博客一再遇到的一件事:异常值反过来教你什么是规范。
TDE 与横向债务
2026-05-12
Sentinel 关闭了十三个 Charter,里面至少有七处可辨认的横向债务,TDE 却一个都没有创建。文档类型存在,但触发它的操作准则不存在。fw-4.13.0 如何补上这个缺口——以及那一串 PR 怎样顺带把关于 stacked PR 的一课写进了项目规范。
validate 与作为形式层的 schema
2026-05-11
464 行 bash 被一个 flag 替换。从"我检查这看起来像一份文档"变成"我检查这是否满足正典 schema,在你要求的模式下,附带具体的运行结果"。这就是 CLI 路线图 Phase 2 与 validate 的形式化。
更名为 StrayMark
2026-05-09
第四次改名与前三次不同——它不是在寻找概念,而是源于一次商标冲突调查。八天、一份 ADR、四十三分钟内的五个 PR。这是项目第一次有纪律的品牌迁移,也展示了把 "in scope / out of scope" 应用到自己的过去意味着什么。
对智能体不可见的 Charter
2026-05-09
Issue #113 —— 拥有一个制品与智能体能够看见它之间的差距
Charter 作为一等实体与外部审计周期
2026-05-06
从 Sentinel 中的手工仪式到正式 CLI 命令
为一个论题设计的六个 Plan(以及更名为 Charter 的那天)
2026-04-30
首次系统性实验,以及 Plan 变为 Charter 的那一天
探索框架
2026-04-27
到 2026 年 4 月,框架已经有了约 50 个治理之下的 Markdown 文件,它们已经变得不透明。straymark explore —— 一个把整个仓库渲染成可导航界面的终端 UI(TUI)—— 在它意外暴露 Post 8 异常值的三周前诞生。新工具会在无意之间制造出可见性。
四个月里的四个名字
2026-04-05
寻找概念,而非寻找名字