DESIGN.md · diff

git:20260922.f8b3ea6 to git:20260922.d654af0

2 added, 0 removed. Audit A to A.

---
name: OMK Studio
description: Studio 当前实现的设计基线与已确认改进方向;目标配色在正文单列,尚未接入运行时。
colors:
primary: "#5145cd"
primary-hover: "#4235b5"
text: "#192236"
text-secondary: "#657085"
navigation-hover-text: "#293348"
canvas: "#f7f8fb"
surface: "#ffffff"
border: "#e2e6ee"
navigation-selected: "#eef0f6"
navigation-hover: "#f4f6fa"
typography:
body:
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", sans-serif'
measure-page-title:
fontSize: "18px"
lineHeight: "26px"
reader-body:
fontSize: "14px"
lineHeight: "1.8"
page-description:
fontSize: "12px"
lineHeight: "20px"
session-title:
fontSize: "14px"
fontWeight: 500
rounded:
control: "6px"
container: "8px"
spacing:
compact: "8px"
small: "12px"
regular: "16px"
content-inline: "20px"
section: "24px"
components:
navigation-item:
textColor: "{colors.text-secondary}"
rounded: "{rounded.control}"
padding: "7px 10px"
navigation-item-hover:
textColor: "{colors.navigation-hover-text}"
backgroundColor: "{colors.navigation-hover}"
navigation-item-selected:
textColor: "{colors.text}"
backgroundColor: "{colors.navigation-selected}"
table-container:
backgroundColor: "{colors.surface}"
rounded: "{rounded.container}"
---
# OMK Studio 设计基线
## Overview
**设计主旨:让知识与证据清楚可读、可核对。**
Studio 是知识工作的全屏操作界面,服务于真实工作观测、知识维护与受控测量。内容、来源和结论之间的关系优先于装饰;界面不能以视觉上的“成功”替代领域中尚未成立的判断。产品定位以 [PRODUCT.md](./PRODUCT.md) 为准。
本文件只覆盖 Studio,不定义官网、文档站或第三方插件的视觉。正文以中文维护;英文节名用于兼容 DESIGN.md 的工具格式。执行边界与验收要求以根 [AGENTS.md](./AGENTS.md) 和 [Studio 领域规则](./src/studio/AGENTS.md) 为准,本文件不扩大它们的授权。
### 基线的使用方式
- **已确认约束与方向**:品牌、导航归属、全屏布局、表格可达性和证据语义,后续设计必须遵守;目标配色在 Colors 单列,不代表源码已经采用。
- **当前可复用基础**:frontmatter 提取自现有主题与 CSS,作为本版相应角色的默认值;它不是已经接入运行时的 token 文件,也不表示所有页面已经统一。
- **待收敛项**:以“待收敛”标注的差异仅用于识别现状,不作为新页面的默认模板。重设计提案和代表页构图单独讨论,验证后再更新本文件。
提取依据是 [StudioTheme](./src/studio/web/components/layout/theme.tsx)、[studio.css](./src/studio/web/app/studio.css) 与 [StudioShell](./src/studio/web/components/layout/shell.tsx)。本版是源码基线,不声称完成所有页面的计算样式、对比度或响应式验收。
设计改进由 [Issue #1060](https://github.com/lizhiyao/oh-my-knowledge/issues/1060) 跟踪。当前阶段交付规范与设计方案;本文件合并不表示视觉改造已经实现,也不关闭该 Issue。静态稿采用合成数据,不能代替真实组件、交互和可访问性验收。
+ 代表页面与组件状态的可编辑原型、目标规范提案、稿件入口与现有能力的映射,以及对比度与布局边界的取证脚本,都在 [design/studio/](./design/studio/README.md)。该目录是评审资产:不接入构建、不进 npm 包、不代表任何页面已按目标规范实现;本文件仍是当前实现基线的唯一正文,目标规范要经评审后才回写到这里。
+
## Colors
### 品牌与基础表面
| Token | 角色与适用范围 |
|---|---|
| `primary` | 现有主题主色、普通链接及通用键盘焦点线索 |
| `primary-hover` | 正文、弹层中普通链接的悬停色;不替代具备专属状态的组件规则 |
| `text` | 主文字和当前导航文字 |
| `text-secondary` | 辅助说明、默认导航文字与品牌文字 |
| `canvas`/`surface` | 应用背景与侧栏、表格等内容表面 |
| `border` | 结构分隔线与内容容器边界 |
| `navigation-hover-text`/`navigation-hover` | 非当前一级导航的悬停文字与背景 |
| `navigation-selected` | 当前一级导航的背景块 |
品牌名称为 **OMK Studio**。品牌链接的 hover、focus、active 状态保持文字颜色稳定,键盘焦点通过轮廓提示。
项目文档与 Issue 中,配色统一称为“Studio 品牌紫”,通过色值和用途描述,不以外部参考品牌命名。
一级导航、分区导航与侧栏使用墨色层级;正文链接使用品牌色层级。当前导航不参与非当前项的悬停加深。一级导航用背景块标识当前位置,不能复制分区导航的下边框样式。
### 已确认的目标配色
以下是后续视觉改进的方向,区别于 frontmatter 中记录的当前实现值。应用到组件时须同步更新主题、相关样式与本文件,不让当前基线和实现各自漂移。
| 角色 | 目标色值 | 使用边界 |
|---|---|---|
| 主按钮、正文链接 | `#7753FF` | Studio 品牌紫;主按钮采用纯色,不将导航正文一并染紫 |
| 选中背景 | `#F2EEFF` | 浅紫底配深墨色文字,保留清晰的当前项标识 |
| 导航与主文字 | `#192236` | 延续墨色层级,不因配色更新改变信息优先级 |
主紫与白色按 sRGB 相对亮度计算的对比度约为 4.70:1;该数值只说明此配色组合,不代表生成图片或全部组件已经通过无障碍验收。浅紫不作为普通字号白字按钮的底色。
悬停 `#6745EB`、按下 `#5A3CDB` 为交互配色提案,需在真实组件中验证后再纳入默认值。字体、间距、圆角、页面密度与多栏结构继续通过代表页收敛,不从生成图片反推精确 token。
### 状态与证据
现有 CSS 已集中定义 `--tone-success-*`、`--tone-warning-*`、`--tone-error-*`、`--tone-neutral-*`,受管生命周期分类使用 `--managed-tone-*`。语义 tone 与生命周期分类是不同维度,不因共享颜色而合并业务含义。
运行完成、证据完整、结论成立分别表达;候选的保留不等于内容已验证。来源缺失、不可读和不确定性必须明确呈现。状态的具体含义来自领域投影,展示层不重算或改写。
**待收敛:** 候选列表、运行中条目与品牌主题尚有不同的选中色;小字号状态文字的对比度需在实际表面上验证。因此本版不将所有现存状态色扩充为通用配色规范,也不声明其已通过无障碍验收。
## Typography
复用现有系统字体栈,保持中文优先。等宽字体用于代码、技术身份和原始记录,不把整段知识正文改为等宽排版。数字比较区使用等宽数字对齐,长标识仍需完整查看入口。
frontmatter 中的字号按**实际角色**命名:`measure-page-title` 是评测页标题,`reader-body` 是对话正文,`page-description` 是评测页说明,`session-title` 是对话列表标题。它们不是统一全站的 display/headline 阶梯;缺乏明确来源的字重或字号不补默认值。
**待收敛:** Observe、Measure、候选页的标题尺度尚不统一;时间轴存在更小字号;对话文本目前有直接显示 Markdown 标记的路径。后续需要通过长中文标题、代码与长回复设计稿验证阅读层级。本版不把 22–24px 页标题、15px 长文等试稿建议写为已生效规范。
## Layout
### 已确认的空间边界
- 应用占满视口,页面根节点和外壳不承担横向、纵向滚动。导航、页面操作及关键摘要固定可达。
- 左侧栏是品牌、一级导航、工作区列表和设置入口的唯一载体;工作区内容通过外壳槽位加入,不另建一套全局导航。
- 先使用紧凑布局、分页、标签页与按需详情;确有长内容时才在表格、正文、时间轴、证据面板或抽屉内滚动,并约束高度、最小尺寸与滚动传播。
- 不能用 `overflow: hidden` 隐藏无法访问的内容。表格表头和单元格不自动换行;状态、数量和操作列保留空间,长文本用省略加完整提示/详情,或内部横向滚动。
- 普通双行列表优先采用约 56px 行高。独立挂载的报告不强制使用应用外壳;仅挂载 `/measure` 的预览宿主保留无导航的紧凑页头。
### 当前布局参数
这些是现有实现的上下文,不代表新的统一断点体系。
| 范围 | 当前实现 |
|---|---|
| 应用高度 | `100dvh`;弹性内容区域设置最小尺寸约束 |
| 侧栏 | 常规宽度 260px;窗口不超过 1100px 时为 220px |
| 窄窗口侧栏 | 窗口不超过 760px 时切为 280px 宽覆盖侧栏,由移动页头按钮控制 |
| 内容内边距 | 常规为 12px 20px;窗口不超过 700px 时为 8px 12px |
| 无导航预览页头/移动页头 | 高度 52px |
| 对话阅读列 | 宽窗口通过内边距把正文约束在约 860px 范围内 |
frontmatter 的间距值来自已有常用间距,不要求所有现存尺寸立即归入同一比例。
**待收敛:** 当前 700px、760px 等响应式边界分属于不同区域,不能仅凭本文件机械替换;多栏审核在中等宽度和较矮窗口下的分配方式,应在代表页中验证后统一。
## Elevation & Depth
现有主界面主要通过背景、细边界与间距区分区域。桌面侧栏与普通表格容器自身没有专属阴影,不把所有内容都提升成悬浮卡片;Ant Design 控件和浮层仍遵循所用组件主题。
现有自定义阴影主要用于覆盖层或浮动入口:窄窗口侧栏使用 `0 0 24px rgba(25,34,54,.18)`,展开侧栏按钮使用 `0 1px 6px rgba(25,34,54,.12)`。它们是特定角色的当前值,不是任意卡片可复用的通用层级。
当前覆盖侧栏使用 `transform .2s ease` 过渡。本版不推定全局动效时长、缓动或减少动态效果支持已经统一;新增动效规则需另行验证。
## Shapes
控件基准圆角来自主题,导航项沿用 `rounded.control`;表格、证据等容器常见圆角为 `rounded.container`。结构边界通常为细线,而不是粗描边。
品牌标记当前为 32px 圆形,属于品牌元素。时间轴圆点和紧凑节点表达各自的图形角色,不作为普通按钮或卡片的形状规范。
## Components
### 外壳、品牌与导航
复用 `StudioShell`。一级导航包含观测、评测、知识和 Agent;工作区列表与底部设置属于同一侧栏。用 `aria-current` 表达当前位置,并保留可见状态。导航项的默认、悬停与当前状态对应 frontmatter 中的三个 `navigation-item` 角色。
品牌文字在交互时保持稳定;其它可点表面应具有颜色或背景反馈。不能只增加不可见的语义属性,却让可点击项与静态文字完全一样。
### 按钮、输入框与弹层
现有基础控件来自 Ant Design,统一经过 `StudioTheme`。本版只记录实际主题覆盖的主色、文字色、背景、字体与圆角,不凭经验补写 Ant Design 的尺寸、派生悬停色、禁用态或阴影。
自定义链接与按钮的通用键盘焦点为品牌色轮廓(2px,外偏移 3px);侧栏部分自定义控件使用内偏移(-2px)。已有组件专属焦点样式按其作用范围保留,不能用一条全局覆盖规则替代所有控件状态。
### 列表与表格
表格容器复用 `table-container` 的表面与圆角,用 `border` 分隔。不要把空白表格、列宽或每页条数当作品牌视觉;它们取决于数据和任务。
普通双行列表区分标题与辅助信息。省略显示必须有完整内容提示或详情路径,操作列不得自动换行。横向滚动发生在表格内部,不传播为整个应用的横向溢出。
### 对话、候选与证据
知识正文、原始记录、派生解释与结果应保持可区分的身份。阅读排版可以改进,但不能覆盖原始证据,也不能因为视觉简化而删除来源、时间、修订或关联身份的访问路径。
候选审核要区分维护选择与验证效果;在确认向模型发送内容前保留来源范围预览。错误与证据不完整是可见状态,不包装成普通空白。
**待收敛:** 各页标题区、主要操作、空状态与阅读排版尚未成为统一组件规范。先用对话阅读、评测列表和候选审核三类代表页验证,再确认具体结构;本版不宣称重设计已落地。
## Do's and Don'ts
### 应当
- 复用已有外壳、主题和相应角色的基础值;修改规范时同时说明适用范围与源码依据。
- 保持用户可见文案中文优先,技术标识保留原语法;LLM judge 统一称为“评委”。
- 保留来源和不确定性,分别表达运行、证据、结论和维护状态。
- 改造页面时核对正常桌面与较矮窗口,以及 Observe、Measure、Knowledge、报告和异常页面的布局边界;四条泳道完整可见,表格操作可达。
- 将参考案例和待验证设计参数留在提案中,代表页验证后再提升为正式规范。
### 避免
- 把当前散落的所有硬编码色值、字号和页面特例都提升为全站规范。
- 用来源缺失替代“无问题”,用运行完成或候选保留替代效果已验证。
- 在外壳之外新增一级导航,靠整页滚动或裁切处理布局不足。
- 把官网大标题、装饰和宽留白直接套到密集的审核与证据界面。
- 将本版源码提取误报为像素级复刻、完整无障碍通过或所有页面已统一;把工具面板预览当成真实 Studio 验收。