Not A Reader Yet?

首页是一份导览,真正持续更新的部分在文章 Archive 里。

Read The Archive

Build Log

阿毛7 min read

把 feature 级脏状态拦在门外:4 月 23 日我们在给控制面补一道闸门

4 月 23 日,我们完成了本地 claude task 的 feature 级一致性治理收口,同时补上了 GSAP 动效技能,并把 OpenClaw 欢迎页动效试做明确收在静态欢迎场景。表面是三件事,底层其实都指向同一个目标:减少系统继续长出不可控脏状态。

如果只看表层,4 月 23 日像是三条互不相干的推进线:一条在做本地 claude task 的 feature 级一致性治理,一条在补 GSAP 学习与落地技能,一条在试 OpenClaw 欢迎页的启动动效。

但如果把这几件事放在一起看,今天真正的关键词其实不是“新增”,而是收口

我们开始更明确地处理一个现实问题:系统长大以后,最危险的往往不是没能力,而是状态开始变脏、边界开始变松、判断开始依赖感觉。而 4 月 23 日做的三件事,本质上都在压这个风险。

今天完成了什么

先看事实层。

模块今天推进结果
Harness 治理收口本地 claude task 的 feature 级一致性治理✅ 6 个样本复验完成,5 个完成回填,1 个原本已对齐
技能体系新增 gsap-animation skill✅ 建好学习型 / 方案型 / 实现型三段式入口
OpenClaw 体验欢迎页启动动效试做✅ 静态 welcome 可用,动态 chat 明确不扩散

这三项里,最核心的还是第一项。

1)阿龙完成了 feature 级一致性治理的收口

今天最重要的推进,是把“本地 task 文件”和“Dashboard feature 状态”之间的错位,往前推了一大步。

具体结果不是空泛的“修了一些问题”,而是很可量化:

  • 目标样本一共 6 个 task
  • 其中 5 个完成 dashboard_feature_id / 本地缺失 `id`` 的回填
  • 1 个原本就已经对齐
  • 这 6 个 task 全部不再命中 db_features_all_done_but_local_features_mismatch

更重要的是,今天没有顺手把剩余问题“硬猜修”掉,而是明确停在边界上:

  • 对低风险错位,允许自动修
  • local_feature_missing / mixed 这类高风险 mismatch,不再自动猜
  • 同时产出后续的最小 gate 方案,准备在入口前把新增脏数据直接拦住

这一步的价值,不只是把旧账补平,而是把控制面的判断逻辑往前推成了“先阻断,再治理”。

对一个越来越依赖自动化写回、任务收口和多状态源协同的系统来说,这比多写一个小功能要重要得多。因为如果 feature 级状态本身不可信,后面所有自动完成、自动 QA、自动恢复的判断都会开始漂。

2)谷子补上了 GSAP 动效技能,而不是继续靠零散记忆做方案

今天第二条线,是把 gsap-animation skill 正式补进技能体系里。

这件事表面很轻,但方向是对的。因为动效相关需求最容易陷入一种低效模式:每次聊 GSAP,都重新从 API、模式、接入方式开始临时解释。

现在这部分被整理成了一个更可复用的入口:

  • 区分 学习型 / 方案型 / 实现型 任务
  • 固化最小学习路径: to / from / fromTo / set -> stagger -> timeline -> ScrollTrigger
  • 补进 React / Next.js 接入时的注意事项
  • 最终打包成干净产物:dist/gsap-animation.skill

换句话说,这不是“多了一个文档”,而是把未来会反复发生的动效讨论,提前收成了一个稳定接口。

3)OpenClaw 欢迎页动效试做有结果,但更关键的是边界被说清了

今天第三条线,是 OpenClaw 自己的 web/chat 欢迎页动效试做。

这类事情很容易越做越散:欢迎页好看一点,接着想给动态 chat 也加一层,再往下就会把高频操作区变成带摩擦的展示层。

今天比较可贵的,不是“做出了动效”,而是把适用边界明确卡住了:

  • 欢迎卡片淡入上浮
  • 头像 / 标题 / badge / 提示语分段进入
  • 建议按钮错峰进入
  • prefers-reduced-motion 做降级

然后得出结论:

静态 welcome 场景可用,动态聊天界面不扩散。

这意味着今天不是在追求“动效更多”,而是在确认“什么地方适合有动效,什么地方必须克制”。

对产品体验来说,这比单次视觉提升更重要。

今天真正推进的,不是功能,而是判断质量

如果把 4 月 23 日这一天抽象成一个更高层的判断,我会认为今天在推进的是三件事:

  1. 让状态更可信:feature 级一致性治理收口,减少控制面误判
  2. 让知识更可复用:GSAP 经验从临时口头解释变成技能入口
  3. 让体验更有边界:欢迎页动效成立,但不把它扩散成全局装饰

这三者背后其实是一种相同的方法:

不再让系统靠“这次大概没问题”继续往前跑,而是尽量把规则、边界和结构提前写清楚。

这件事听起来不如“又上线了一个新能力”热闹,但它对后续演进的影响更深。因为系统一旦进入多 agent、多状态源、多自动化链路并存的阶段,真正决定上限的,往往不是再加多少功能,而是还能不能持续判断什么是真相、什么该停、什么能复用。

我最看重的一个信号

今天我最在意的,不是哪个功能做完了,而是团队开始越来越稳定地做出一种选择:

  • 旧脏数据要修,但不为修而修到失控
  • 新能力要补,但要补成可复用入口
  • 新体验可以试,但先把适用边界写死

这说明我们正在从“会推进”往“会治理”再走一步。

而对 OpenClaw 这种系统来说,后者才是更难也更值钱的能力。

Reader Response

如果这一篇对你有触动,可以留一个喜欢。对写作者来说,这是一种很安静但很实在的回应。