Dashboard 设计原则
Dashboard 是 PowerContext 中供个人使用和演示的内容查看器,默认关闭,与 Server 共用访问模式:本地可免认证访问,启用认证时要求静态 token。这份文档供开发和评审人员判断页面该展示什么、如何组织阅读,以及一次改动是否保留了用户需要的行为。接口能力以 openapi/powercontext.yaml 和服务实现为依据。
Dashboard 帮助用户完成什么
用户进入 Dashboard 时,可能想确认某项约定,查找解决过类似问题的经验,或继续一项中断的工作。页面需要让用户确定正在查看哪个范围,找到相关记录,并在需要时核对原始材料。
1.0 的核心是阅读已有内容。现有页面同时列出修订历史、比较两个修订,并通过接口已有的条件替换把某一份已保存修订写成新的当前版本。每条原子记忆可以查看和比较自己的修订,但只读。恢复原子记忆走它自己的恢复流程,确认前会预览所有受影响的记忆。记忆、经验、技能和交接可以分别存在:只有记忆的范围也应当能够正常使用;没有内容的范围仍有明确的入口和页面结构。生成、审核和保存由现有工具与接口完成,阅读这些结果不应要求用户先配置生成能力。
页面的业务主题来自范围名称、摘要和保存的内容。支付服务、客户访谈或个人研究可以使用同一套界面,不需要为每种业务另造导航。新增区块时,应先说明它帮助用户完成哪项工作,以及现有数据能否支持它表达的含义。
内容和范围的含义
各类内容回答的问题
| 内容 | 用户从中了解什么 |
|---|---|
| 记忆 | 已保存的约定、偏好、事实和决定 |
| 经验 | 某种情况下发生了什么,得到什么认识,以及适用条件和依据 |
| 技能 | 可以复用的做法、步骤和检查要求 |
| 交接 | 一次工作记录中的目标、进展和下一步 |
| 用量 | 参考内容的估算变化,以及 PowerContext 自身的模型调用用量 |
经验需要保留当时的情境,技能需要保留使用条件,交接表达的是保存时的状态。即使几份内容互有关联,阅读时仍需区分它们能支持什么判断。记录中关于修复完成的说法,需要通过相应依据核对。
首页和目录可以缩短摘要,详情保留完整正文。展示层负责呈现已有信息,不根据拆句或改写补出新的结论。来源引用帮助用户核对内容;有可读原文时提供入口,只有引用信息时如实保留引用。
范围决定正在看什么
范围(Scope)是内容归属和阅读选择的单位。未指定范围的入口使用服务端已配置的默认范围。用户在下拉栏选择另一范围,只改变这次浏览的位置,不改变默认保存位置或工具绑定。
名称相近的范围要能区分。选择器显示范围自身名称和已有的祖先关系,父子关系以服务端记录为准。父级内容不会自动进入子级目录;准备上下文时对其他范围的显式引用,也不等于父子归属。
内容目录和用量均读取当前范围,切换范围时一同更新。父范围的用量不自动包含子范围。例如,一个空子范围可以没有记忆,而父范围仍有记忆;这不构成数据缺失,也不能用父范围的内容填满子范围页面。
数据能支持怎样的判断
没有记录、没有可比较数据、服务未报告数值和读取失败,需要分别表达。只有接口明确返回零时才能显示零。无法读取某个范围或记录时,应说明失败并提供可用的恢复入口,不能静默换成另一份内容。
用量中的参考内容估算只覆盖可比较的记录。减少比例用于说明文本规模的变化,不代表信息完整性、内容质量或账单节省;估算结果为增加时也应如实展示。模型输入、输出和向量用量分别列出,缺报数值保留为未报告。
首页摘要、每日图表和明细表采用同一统计口径。周期和每日归属来自服务端,界面不补造历史数据。
页面如何组织阅读
首页提供概览和入口
首页依次展示用量、记忆与经验及技能、交接。用量提供整体使用情况的入口;记忆和可复用内容供用户查阅;交接保留进入具体工作记录的路径。
每个区块有明确的标题和查看入口,摘要只承担预览作用。宽屏将记忆与经验及技能并排呈现,窄屏按同一阅读顺序排列。某类内容尚未生成时,空状态留在它所属的区块中。
用户也可以从目录、收藏链接或精确引用直接打开记录。
目录用于查找,详情用于阅读
目录帮助用户辨认并选择条目。长列表通过分页控制一次需要浏览的内容,搜索帮助缩小查找范围。搜索的范围和结果上限需要与接口一致;当前一页的筛选不能表现为整个内容库的搜索。
记忆采用目录与正文的阅读方式。经验、技能和交接从目录进入详情,详情承载完整内容和关联材料。条目较多时,摘要可以截短,但用户始终有路径读到全文。
用户打开一条记录后,应能返回所属目录。更换搜索条件从第一页开始;切换范围清除上一范围的记录选择和分页位置,详情返回对应目录。单纯切换语言或主题则保留范围、周期和正在阅读的记录。
记忆搜索默认遵循部署能力,也允许用户选择检索模式。展示实际模式、每条结果的命中通道与检索得分,帮助用户核对召回依据;得分不解释为相似度百分比。
原始材料支持就地核对
原始材料列在记录正文之后,读者可以从经验、技能或交接直接打开对应材料。材料使用 Tabler 原生大尺寸弹窗阅读,小屏全屏显示;多份材料通过选单切换。关闭后回到原记录的阅读位置,键盘用户也能完成同样的过程。
材料正文可能很长。阅读区域根据视口分配空间,标题和关闭操作保持可达,正文在该区域内滚动。打开一份材料不应把整页推长到用户找不到原来的位置。某份材料读取失败时,已经打开的记录仍可阅读。
范围、权限与读取结果
未显式选择范围时,页面使用默认 Scope;本次读取确定范围后,默认绑定的切换只影响后续请求。查看其他范围不会修改默认绑定。选择默认 Scope 需要 server.observe,读取范围内容仍需相应内容权限;Observer 权限本身不授予内容访问。
有 Scope 读取权限时,可以浏览该范围的目录与用量。只有单项 Artifact 读取权限时,只能打开获准记录的精确版本及其引用,页面不显示 Scope 标题、相邻记录或范围用量。有效 grant 不因缺少 owner relation 而失效;owner 自身的权限仍须有真实 relation。撤销的权限不会因页面重试而恢复,详见 Artifact ownership。
精确链接的正文和引用始终对应请求的 Revision。当前版本与生命周期状态单独显示,历史正文不能被标为当前正文。同一响应中的正文、状态和授权结果须保持一致;后续请求按新的权限和内容状态重新判断。
Home 的记忆、交接、经验和技能可以独立阅读。一类内容缺失或读取失败时,其余可读分区仍显示;用量不可用时,页面保留已授权的范围信息和可读正文。读取失败应显示错误,不能伪装成空列表或零用量。正文和范围元数据只有在相应授权与必要审计完成后才可显示。
搜索或浏览没有返回记录,不代表其精确历史版本不存在。已有精确引用仍按当前权限读取;重建搜索或浏览数据不能改写历史正文、引用和版本身份。页面读取不补建 owner,也不修复失效的默认绑定;需要恢复时使用相应的维护操作。
范围选择器支持分页与检索,当前范围不因其他范围未加载而失去可读性。Review 先展示候选目录,正文随选择打开;历史和证据正文由读者显式打开。
打开记录时保留所选版本的原文,并展示分页的修订历史。版本比较展示选中的两个版本;比较失败不会替换已打开的正文。历史、比较和回滚操作遵循当前权限。回滚会创建新版本并记录来源、原因和操作者;当前版本并发变化时,用户需要先检查新的当前版本再重试。
布局与交互如何保持一致
内容变化不改变页面的组织方式
有内容、无内容和搜索无结果时,页面保留相同的标题层级、主要分区和阅读顺序。记忆目录不会因为暂时为空就变成另一种整页视图,用量也不会因为没有记录就丢掉统计区域。
稳定布局需要保留必要的阅读空间,但不要求所有状态像素级等高。预留高度应考虑摘要容量、分页容量和可用视口;长正文可以自然增高。末页条目变少时,分页操作保持容易找到的位置。内容不足一屏时,正文起点也不应向下漂移。
根据阅读空间选择分栏和滚动
页面容器、两侧留白和栅格间距沿用 Tabler 的默认规则。分栏的前提是两侧都有足够的阅读宽度;空间不足时按顺序堆叠,不通过缩小正文字号维持分屏。
小屏上的记忆在条目内展开,打开另一条时收起上一条;桌面使用目录与正文分栏。搜索结果沿用同样的阅读方式,上一页、页码和下一页保持可见,没有可翻阅的页面时禁用对应操作。
列表通常随页面滚动,一页中的条目应直接可见。局部滚动用于需要保持上下文的长正文、材料面板或宽表格。是否增加滚动区域,要看它能否帮助用户保留阅读位置;不能仅为了让卡片看起来整齐而嵌套滚动条。
文案和视觉共同表达层级
标题说明页面或区块的内容,按钮说明执行的操作。业务正文保持原文,界面文案使用直接、具体的表达。用户已经能从导航和内容判断的信息,不需要再用说明文字重复。
字体、字重、按钮和表单状态优先采用 Tabler 的默认选择。记忆、经验和技能条目使用常规字重,避免每条内容都争夺注意力。同一层级的卡片使用一致的边界和间距,箭头用于有方向含义的操作。
中英文和明暗主题适用于全部 Dashboard 页面,包括登录与独立材料页。翻译可以自然换行,但不应打乱导航顺序、按钮分组或主栏比例。主题切换保留相同的信息层级和可读性;业务内容不随界面语言改写。完整 Logo 使用现有品牌资源,favicon 只使用图形部分。
启用与访问
通过 POWERCONTEXT_SERVER_DASHBOARD_ENABLED=true 启用 Dashboard。本地 ACCESS_MODE=disabled 时直接访问,无需 token;ACCESS_MODE=enforced 时要求 AUTH_TOKEN,使用内置静态 Bearer 身份,所有 token 持有者共享同一权限。注入认证或授权 Provider 的团队部署必须关闭它。页面遵循服务的访问模式和当前权限,不提供成员或角色管理。个人启用步骤见安装和运行。
可见行为验收
| 场景 | 验收关注点 |
|---|---|
| 首次使用、仅有一种内容、搜索无结果 | 状态准确,主要布局与入口仍可辨认 |
| 默认范围、同名范围、空子范围和显式引用 | 阅读与统计边界明确,切换不改写默认值 |
| 长列表、末页、长材料和小视口 | 条目可遍历,全文可读,操作可达,阅读位置合理 |
| 切换语言、主题或返回历史页面 | 范围、记录身份和信息层级保持一致 |
| 缺报用量、不可比较数据、部分读取失败 | 用户不会把未知理解成零,也不会把失败理解成空内容 |
| 凭据失效、网络中断和服务恢复 | 错误明确,重新登录或重试后可以继续读取 |
附录:页面接口
接口字段与限制以 HTTP API 规格为准。
页面与接口
| 页面能力 | 接口 | 需要保留的边界 |
|---|---|---|
| 范围选择 | GET /v1/scopes、GET /v1/scopes/default、GET /v1/scopes/{scope_id} | 默认值、显式选择、父子关系和可读范围分别处理 |
| 记忆目录与正文 | POST /v1/atomic-memory/list、POST /v1/memory/search、Atomic Memory 精确版本与状态读取 | 保留独立制品身份、生命周期筛选、搜索模式与命中依据;最多 50 条匹配结果 |
| 交接目录与正文 | GET /v1/scopes/{scope_id}/artifacts/handoff 及精确版本读取 | 保留游标;列表顺序不解释为时间顺序 |
| 经验目录与正文 | GET /v1/scopes/{scope_id}/artifacts/experience、POST /v1/experience/get、POST /v1/scopes/{scope_id}/artifacts/experience/search | Dashboard 提供分页浏览与 Family 相关性搜索;搜索只覆盖 approved 且 active 的当前版本,最多返回 200 条,达到上限时提示缩小查询 |
| 技能目录与正文 | POST /v1/skill/library、POST /v1/skill/get | 库检索最多 200 项,达到上限时提示缩小查询;保留来源身份 |
| 原始材料 | GET /v1/scopes/{scope_id}/sources/{source_type}/{source_id} | 验证材料与记录的关联;当前可读取正文的来源类型为 content |
| 用量 | POST /v1/stats | 以 exact 读取当前范围,使用服务端周期与统计口径 |
首页显示当前范围的记忆、交接、经验、技能和用量摘要。目录显示可读条目及翻页入口,不推算未经报告的总数。记录和材料引用保留完整身份。

