跳到主要内容

用 Impeccable 优化个人 Wiki 的实践记录

本文目录

最近整理这个 Wiki,我借助 Impeccable 做了一轮前端优化。最初想改的是配色、Logo 和博客展示,真正影响日常使用的问题却陆续出现在搜索失败、字体下载、键盘操作和移动端布局里。

这次最有用的经验是:先告诉 AI 这个网站用来做什么,再把设计意见变成可以复现、可以验收的任务。 对我的运维笔记本来说,找得到笔记、读得清楚,比首页多几个漂亮组件更重要。

Impeccable 能帮忙做什么​

Impeccable 是面向 AI 编码助手的一套设计技能,提供设计指导、专项命令和确定性检测工具。它可以参与新页面设计,也可以针对已有界面检查和修改。具体改动仍由编码助手在项目里完成。

我更看重它提供的工作方式。原来一句“帮我优化一下”,可以拆成检查阅读体验、调整排版、处理异常状态、适配小屏幕等明确任务。每次讨论的范围更小,也更容易判断改动是否有效。

官方把产品背景与视觉规范分开保存:PRODUCT.md 记录受众、用途和约束,DESIGN.md 记录配色、字体、组件等设计决策。这个区分很实用:网站用于个人查阅,是长期目标;具体选择哪种绿色、标题用什么字体,则可以继续调整。官方介绍

安装与常用入口​

按官方安装说明,可以在项目目录运行:

npx impeccable install

根据安装提示选择正在使用的编码工具和安装范围,安装后重新加载工具。不同安装渠道的版本和命令入口可能不同,以实际安装内容为准。

下面采用这次使用环境中的 $impeccable 写法。这些是发给编码助手的提示,不在终端里执行。官方文档也使用 /impeccable 展示命令。

不必先记住全部命令,我在维护已有站点时主要关注这些:

当前问题适合的命令我会补充的任务范围
页面重点不清楚,查找路径别扭critique从个人查笔记的过程评价首页
想检查可访问性、性能和响应式audit列出问题、位置、影响与复现步骤
正文、标题、代码的字体关系混乱typeset分别检查中文、英文和命令
加载失败、长内容或连续操作出错harden重点检查搜索与重试
小屏幕或横屏时内容放不下adapt保证核心入口可见、可操作
图标、文字和间距不齐layout修正导航栏的局部对齐
页面资源过重optimize检查字体和搜索索引的加载方式
准备交付polish检查已修改路径的一致性与遗漏

命令提供分工,具体目标仍需要自己讲清楚。命令说明

先确定这个 Wiki 应该保留什么​

这次改版一开始也走过弯路。把笔记分成“操作教程、故障排查、命令速查”,看起来很整齐,但我平时首先想到的是 Linux、Nginx、Kubernetes 或数据库。换成文章类型分类,反而多了一步判断。

于是目录继续沿用原来的技术主题。首页保留诗词,Logo 最后定为折页 J;正文与控件则优先保持清楚、稳定。配色从“亮色水墨、暗色科技”的描述,逐渐收敛到青瓷浅色与深墨柔翠,同时去掉影响阅读的模糊和发光效果。

如果重新开始,我会先给出这样的约束:

$impeccable critique 首页和笔记阅读页

这是我自己查阅运维笔记的网站,主要任务是找笔记和读技术内容。
保留现有技术分类、首页诗词和折页 J 标记。
首页可以有个人风格,正文、表格、命令和搜索要清楚。
先指出影响查找和阅读的问题,给出具体页面位置与原因。

这段约束比“更高级一点”“减少 AI 味”更有用。它让后续修改有了取舍依据:装饰可以减少,常用入口和已有内容不能随意重组。

三个最值得记录的修复​

搜索要覆盖失败和重复操作​

统一搜索后,导航建议和完整结果页共用本地索引,笔记与博客都能被检索。审计又推动了几个更细的处理:加载失败要结束等待并允许重试,清空按钮要容易点击,方向键与回车要能完成选择。

但第一轮验证结束后,仍然发现了一个容易遗漏的问题:

  1. 输入 nginx,等建议出现。
  2. 按 Escape 关闭,再按向下方向键打开。
  3. 第一条结果短暂选中,随后选中状态消失。
  4. 按回车,进入全部结果页,而不是刚才选中的笔记。

原因是浮层重新打开时重复触发查询,异步更新了结果数组,组件又随之清空选中项。最后的处理是保留最近一次成功结果;相同查询重新打开时复用结果,显式重试仍会重新查询。

已有的 10 项搜索测试当时全部通过,覆盖的是索引读取、并发隔离、失败恢复和超时,并没有覆盖这一串界面操作。 这提醒我,测试通过之后,还要按用户的实际顺序走一遍。

浮层高度要把底部操作算进去​

另一个问题发生在较矮的视口里。结果列表已经设置了最大高度,但整个浮层还有状态说明和底部操作区。几部分加起来,“查看全部结果”仍然被挤出了屏幕。

修复时限制的是整个浮层的可用高度:状态说明与操作区保留空间,结果列表允许收缩,并在内部滚动。这样在 390×300 的模拟视口里,底部入口仍然完整可见。

这个问题适合交给 adapt,但提示词最好带上验收条件:

$impeccable adapt 顶部搜索浮层

在 390×300、390×360 和桌面矮视口中检查。
结果列表可以滚动,底部“查看全部结果”必须始终可见、可点击。
保留现有配色,并验证方向键选择与回车跳转。

这些检查证明了模拟视口中的布局与键盘行为。手机软键盘弹起、真机触摸滚动和不同浏览器的表现,还需要对应设备验证。

按钮扩大后的图标对齐​

移动端菜单按钮扩大到 44×44px 后,三条横线看起来比旁边的 Logo 高了一截。测量才发现,按钮盒子已经居中,内部的 30×30px 图标仍贴着左上角,垂直中心相差约 7px。

最后只需要让按钮内部也居中:

@media (max-width: 996px) {
.navbar__toggle {
display: flex;
align-items: center;
justify-content: center;
min-width: 44px;
min-height: 44px;
}
}

这类问题在静态规则扫描中未必会被指出。看清实际页面,再检查元素尺寸和计算样式,比凭感觉加一个偏移量更可靠。

阅读体验也包括字体和加载成本​

中英文混排最后采用了不同分工:英文正文和数字使用 Source Sans 3,中文正文使用 Noto Sans SC,诗词与部分展示标题使用 Noto Serif SC,代码使用 JetBrains Mono。字体托管在站内,继续保留系统字体回退。

我没有把正文统一换成仿宋。这个站点里有很多命令、路径、表格和中英文混排,正文优先保持易扫读;书卷感主要留给首页与诗词。这个选择服务于我的阅读习惯,不是对某种字体下结论。

字体本地化之后,还要检查实际下载量。优化时一次首页冷缓存采样中,字体资源下载量约从 2.45 MB 降到 0.60 MB:首页常见字符使用较小分片,未覆盖的字符仍回退到完整字库,避免新增文章后丢字。字体文件独立缓存,也不再把小分片内嵌进关键 CSS。

搜索索引则从约 5.95 MB 的 JSON 压缩到约 1.54 MB,在 Worker 中下载、解压和检索。这些数字记录的是当时页面内容与构建产物的资源体积;首页诗词、最新文章和缓存状态变化后,请求量也会变化,不能直接换算成固定的加载速度提升。

相关实现已提交到这次 Wiki 审计修复,字体来源与维护方式记录在仓库字体说明。

我会继续使用的工作顺序​

下一次优化已有页面,我会从一次小范围审查开始:

$impeccable audit 搜索和阅读页

请先列出问题与复现步骤,按影响排序,暂不修改代码。
重点检查明暗主题、小屏幕、键盘操作和失败恢复。
区分已经复现的问题与需要进一步确认的风险。

确认清单后,再按问题选择 harden、adapt、typeset 或 optimize。修改完成时,用 polish 检查整条使用路径,并要求交付时说明改了什么、怎么验证、还没覆盖哪些环境。

每次只处理明确的一组问题,保留可回退的提交。涉及配色和 Logo 时先比较方向,方向确定后再收敛细节;涉及搜索、布局和性能时,用复现步骤与检查结果验收。这样既能保留个人偏好,也能避免在“再改得好看一点”里反复打转。

用下来,我愿意继续把 Impeccable 放在这个 Wiki 的维护流程里。它让设计讨论更具体,也促使我把注意力从截图移到真实使用过程。页面是否顺手,最后仍要靠自己输入一次关键词、打开一篇笔记、读完一段命令来判断。