# task-2 · 极客交互设计侦察报告(极客精神设计语言:真实案例 × 可落地实现)
> 侦察员 @agent-aeff1b · 2026-10-24
> 方法:所有案例均于本次用 curl 实际抓取验证(HTTP 状态 / 页面源码标记 / 开源仓源码 / npm registry / caniuse 官方数据),命令面板与终端站深挖到 JS bundle 与命令表。**抓不到、不命中的一律如实标注为负发现**。技术基线:Astro SSG + 自托管 Gitea,视觉路线「灰阶骨架×分轨正文」。
---
## 1. 命令面板 Ctrl+K
### 实测案例
| 站点 | 抓取证据 | 说明 |
|---|---|---|
| **Starlight / Astro 官方文档** starlight.astro.build | HTTP 200;页面源码含 `aria-keyshortcuts="Control+K"` ×1 + `pagefind` ×3 | **静态站 + Pagefind + 自定义模态的官方参考实现**,MIT 源码:`withastro/starlight` → `packages/starlight/src/components/Search.astro`(已实抓源码头 25 行:按钮 `aria-keyshortcuts="Control+K"` + pagefind 翻译注入 + `data-open-modal`) |
| **spectre.lou.gg**(louisescher/spectre,164★) | HTTP 200;**服务端 HTML 直接含** ``,且 HTML 内有 `pagefind-ignore=` 属性、`pagefindInitialized = false`(首次聚焦才懒加载 Pagefind) | **Astro 原生终端风主题**,与本博客技术栈同源,Ctrl+K 搜索框静态可抓,是「静态站 Ctrl+K + Pagefind」最佳抄写对象 |
| **paco.me**(Paco Coursey,cmdk 作者本人站) | HTTP 200;源码含 `⌘K`、`command menu`、`cmdk` 字样 | cmdk 生态的活样本 |
| **blog.maximeheckel.com**(Maxime Heckel 博客) | 开源仓 `MaximeHeckel/blog.maximeheckel.com` package.json 实抓:依赖 `cmdk ^1.1.1` | 个人博客用 cmdk 的实证 |
**未验证(如实说明)**:leerob.com / rauchg.com / kentcdodds.com / brianlovin.com / joshwcomeau.com 首页静态 HTML 均无面板标记(客户端懒渲染),未继续深挖各自 bundle,不作案例引用。kentcdodds/kentcdodds.com 与 sreetamdas/sreetamdas.com 的 package.json 中均无 kbar/cmdk。
### 库与取舍(npm registry 实抓数据)
- **cmdk**:React 无样式 primitive(UI 全自理),周下载 **26,647,174**。适合已有 React 岛的站。
- **kbar**:即插即用 React 面板(自带动画/快捷键注册/持久化),周下载 **226,077**;README 实抓:「plug-n-play React component…built in animations and fully customizable components」。
- **静态站推荐:自写 vanilla TS(~150–200 行,零运行时框架)**。Pagefind 官方 JS API 文档实抓(pagefind.app/docs/api/,HTTP 200):`pagefind.search()` ×8、`pagefind.debouncedSearch()` ×3、`pagefind.options()` ×3、`pagefind.filters()` ×1 —— 程序化搜索接口完备,就是为自定义 UI 准备的。
### Pagefind 聚合进面板的实现路径
1. `astro build` 后跑 `pagefind --site dist` 出索引(或用 `astro-pagefind` 集成,567★,README 实抓:构建时自动建索引 + **官方声明支持 Astro View Transitions**)。
2. 自写模态:全局 `keydown` 监听 Ctrl/Cmd+K 与 `/` → 打开 `
`(或 `