Kun 轨迹视图 Harness 对齐重构:密集台账、时间线交互与记录级检查器全解析
人工智能AI Agent自主智能体桌面应用MCP Clients【免费下载链接】KunLocal-first AI agent workspace for coding, writing, design, research, and automation — one runtime for desktop GUI and TUI.项目地址https://gitcode.com/gh_mirrors/de/Kun点击查看免费下载导读Kun 的会话轨迹视图Conversation Trajectory原本以卡片式仪表盘呈现模型请求、工具调用、耗时与用量数据虽然信息完整但信息密度与交互语义与 DeepSeek Harness 的ui-trajectory实现存在明显差距。本篇技术指南围绕 openspec/changes/match-deepseek-harness-trajectory-ui/proposal.md 展开完整讲解 Kun 如何将轨迹视图重构为与 Harness 冻结版本commit0a53fb55bea101816fa226bb964ae2bed71c343b逐像素对齐的密集台账式界面包括几何规格、七种记录类型的投影模型、时间线交互、折叠/搜索/虚拟化、记录级检查器、浮动 Composer 集成、schema v2 数据契约与存储预算并给出对应的源码实现路径。读完本文你将掌握该视图的完整架构、每个交互细节的设计意图以及如何在仓库源码中定位与验证这些行为。背景为什么要把轨迹视图对齐到 HarnessKun 原有的轨迹视图是一个卡片式仪表盘48px 的组合标题/筛选工具栏、摘要指标区、88px 时间线、44/62px 的卡片行以及一个通用的 JSON 检查器。它暴露了所需数据但与 DeepSeek Harness 的密集台账dense ledger、时序总览、检视工作流和 Composer 集成方式有本质差异——用户无法用同样的信息密度和交互语义去扫描、操作请求/工具的时间顺序。本次变更的核心目标是移植port而非链接将 Harnesspackages/client/ui-trajectory在 MIT 许可下移植为 Kun 自有模块保留 Kun 的标题栏入口、语义主题令牌、存储与捕获策略、路由路径以及 Chat/Composer 状态仅替换渲染器组件层级与交互模型。设计文档 design.md 明确了边界Goal匹配冻结 Harness 的几何、层级、响应式行为、键盘/ARIA 语义与交互模型Non-Goal不复制 Harness 的全局导航、Chat/Trajectory 页签、Cordis 插槽运行时或设计令牌包不运行时链接 Harness checkout不在自定义主题中使用 Harness 的固定颜色。Kun 不导入也不运行时链接 Harness 代码库移植层使用 Kun 自己的轨迹 schema、Session 记录、Markdown/附件渲染器、持久化规则、无障碍约定与语义主题令牌。界面几何逐像素对齐的 Harness 布局桌面宽度的标准几何在桌面宽度下轨迹视图严格遵循以下几何规格对应 spec.md 中的 Frozen Harness geometry 需求部件规格工具栏32px含已加载窗口内的增量搜索时序总览50px支持序列/录制时长两种投影模式台账表头/记录行30px密集双列 Event/ContentEvent 列122px表格容器收窄至 620px 时折叠为仅图标的 50px停靠检查器clamp(320px, 38%, 440px)可拉伸至 720px同时保证台账至少保留 280px响应式断点中心区域宽度≤ 760px时检查器变为右侧浮层宽度不超过 420px表格容器≤ 620px时Event 列的类型标签折叠为纯图标轨迹初始打开时不选中任何记录台账以全宽呈现选中台账行、请求边界或时间线区间后才打开检查器。这些精确尺寸通过 CSS Modules 实现并带有一层小型的语义令牌桥Harness 别名 → Kun 变量因此几何完全对齐颜色仍使用 Kun 主题令牌。spec 明确要求在一个 CSS 像素内复现冻结 Harness 的工具栏、时间线、台账、请求边界、检查器与响应式几何同时保留 Kun 语义主题颜色。两个容易被忽略的关键细节显式退出 Electron 可拖拽区域整个轨迹表面显式 opt out 于 Electron 的 draggable window region。因为外围 Workbench shell 是可拖拽的若没有no-drag边界Chromium 会把台账点击和滚轮手势当作标题栏交互吞掉。Composer 常驻但不参与交互轨迹模式下 Composer 仍然挂载视觉隐藏、惰性化、移出指针命中测试台账与检查器因此可独占完整交互面仅保留底部 16px 净空切回 Chat 时恢复的是同一个 Composer 实例草稿与模型选择不丢失。台账投影模型七种记录类型与请求边界从 v1/v2 页面归一化为统一渲染模型渲染器把 schema v1/v2 页面归一化为七种单元格System、User、Context、Compacted、Assistant、Tool、Subtool再加上请求边界记录。投影的核心规则见 design.md 的 Use a dense renderer model 决策请求记录不渲染重复行而是对匹配的 Assistant 行编号并做装饰或作为纯分隔符锚点Assistant 的 reasoning/text 与 Tool 的 call/result 在渲染前折叠System/Subtool 只能来自真实的 Prompt Manifest 或嵌套运行时证据绝不合成虚假记录。源码中的投影实现查询服务 trajectory-query-service.ts 的projectRequests与projectItems实现了全部投影逻辑projectRequests为每条ModelRequestTraceRecord生成llm_request记录附带attempt尝试序号、attemptReason、roundId、step、promptFingerprint与前序指纹previousPromptFingerprint、systemBlobId/toolsBlobId/configBlobId等明细引用projectItems把 Session 的user_message按messageSource区分为context或user把compaction投影为compacted把工具调用tool_call与其tool_result合并为tool记录并从结果中的childRuns提取真实subtool记录projectSubtools仅当childId与toolName均可确认时才投影assistant_text/assistant_reasoning按请求归组合并为一个assistant记录状态取组内最差者failed running cancelled completed。契约层 trajectory.ts 用 Zod 定义了TrajectoryRecordSchema按kind判别联合llm_request记录含requestId、attempt、provider、model、endpointFormat、usage、manifestId、optionsAvailable、promptFingerprint等tool/subtool记录含callId、parentRequestId、parentCallId、argumentsItemId、resultItemId、isError、schemaAvailable、attachmentIds消息记录含itemId/itemIds、sourceType、sourceAvailable、thinkingPreview、attachmentIds。spec 场景明确要求一个模型步骤同时发出 reasoning/text 与多个工具时台账渲染一个 Assistant后接合并的工具生命周期并把请求编号边界关联到该步骤。时间线交互序列、时长、缩放与同步选择50px 时序总览支持spec Harness timeline interaction 需求序列sequence与录制时长recorded-duration两种投影可切换TTFT/解码分段首个模型内容记录 TTFT 边界Assistant 时间条以较浅色段标识 TTFT区间选择拖拽一个包含式区间inclusive interval后区间外的记录在台账中视觉弱化但不移除滚轮缩放wheel zoom、右键平移/清除right-button pan/clear、边缘平移edge pan、延迟工具提示delayed tooltips、轮次边界标记与台账双向同步选择点击时间条上的某个 span会清除已有区间选择、把对应台账记录滚动到可视区并打开其检查器反过来在台账选择记录也会同步时间线。打开视图时会清除上次访问遗留的过期区间stale range。范围选择使用着色内部、实心强调边缘与外部遮罩。折叠、搜索与虚拟化台账区提供与 Harness 一致的交互原语独立的整表 Turn 折叠与 Assistant 调用折叠separate whole-ledger Turn folding and Assistant-call folding互不干扰本地增量搜索在当前已加载窗口内进行增量搜索工具栏中的搜索框filterall|llm|tool|error与有界的q参数保持兼容但 UI 层搜索的是已加载页尾部跟随tail following新记录到达时保持跟随滚动当用户正在检查较旧记录时暂停跟随稳定历史前置锚点向前翻页prepend 旧页面时语义选择、行 key、检查器与可见滚动锚点保持不变spec Folding, search, and virtualization 场景虚拟化超过 100 条逻辑记录后启用虚拟化采用 Harness 虚拟行高复用 Kun 已有的tanstack/react-virtual能力。记录级检查器从通用 JSON 到类型化检视旧版检查器把归一化 wire 记录整体 dump 成 JSON。新版改为记录类型驱动的标签页检查器Summary 视图呈现状态、层级、用量、耗时与有界预览而非原始 JSON记录类型检查器标签页SystemPrompt / Tools / DiffRequestllm_requestSummary / Options / Usage / TimingMarkdownUser/Context/Assistant/CompactedSummary / Preview / Raw / SourceTool / SubtoolSummary / Payload / Result / Schema / Timing各标签页只渲染属于该 Tool/Request 关系的数据spec Inspect tool 场景。新增的呈现器包括富 Markdown、JSON/Schema 树、图片、Source 溯源、Timing 与用量、Options以及Prompt Diff利用promptFingerprint与前序指纹previousPromptFingerprint对比两次请求的提示变化。Raw 与 Source 的边界spec Inspect message Raw and Source 场景也是 tasks 4.x 的跟进项规定Raw呈现有序内容块TrajectoryRawBlockSchematype/content 可携带 itemId/attachmentId/callId/toolName剥离 Session-item 信封Source仅当真实生产者溯源TrajectoryMessageSourceDetailSchema的 label/value可用时渲染两个区块都不得暴露 Provider 元数据、凭据字段或内联二进制载荷Source 标签页的可用性由真实溯源推导sourceAvailableRaw 内容块允许拆分以保持 legacy-safe 与敏感数据处理。内容按需获取lazy fetch section并按 record/section 缓存避免重复的大读取。浮动 Composer 集成轨迹模式下 Chat 与 Composer 保持挂载Composer 浮在整高台账之上台账与检查器滚动容器预留测量高度 16px作为底部净空。实现要点design.md Preserve reference interaction invariantsComposer 通过ResizeObserver发布其测量高度文本、附件或控件增长时高度会变化台账与检查器两个滚动容器都使用该高度计算底部 padding保证末行永远可滚动到新 Composer 边缘之上spec Floating composer integration 场景。数据契约schema v2 升级与 v1 兼容契约与投影契约层 trajectory.ts 定义了TRAJECTORY_SCHEMA_VERSION 2。v2 在 v1 基础上新增提示指纹promptFingerprint/previousPromptFingerprint由 Manifest 中非 message 类 blob 的kind:blobId串接而成见 query-serviceprojectRequests父级关系parentRequestId/parentCallId明细可用性detailStateavailable | not_captured | truncated | evicted | legacy与sourceAvailable附件引用attachmentIds请求选项optionsAvailable与configBlobId记录级精确引用manifestId、systemBlobId、toolsBlobId、argumentsItemId、resultItemId。TrajectoryPageSchema包含records、nextCursor不透明游标、summary、warnings与historyIncomplete。detail section 的合法值为overview | input | output | usage | timing | raw | arguments | result | system-prompt | tools | diff | options | rendered | source | schema。v2 完全由查询服务在现有 journals/manifests 之上派生不迁移存储文件旧 schema-v1 的 model-request JSONL 无需急切的破坏性迁移即可继续读取渲染器也能把旧 v1 HTTP page 归一化为 v2 渲染模型并将缺失的 parity 字段标记为不可用而不中断会话spec Compatible trajectory API 场景。HTTP APIregister-thread-routes.ts 中注册的认证路由未认证返回 401GET /v1/threads/{threadId}/trajectory GET /v1/threads/{threadId}/trajectory/summary GET /v1/threads/{threadId}/trajectory/{recordId}/detail?sectionoverview页面路由接受limit与不透明cursorquery-service 中用 base64url 编码{v, startedAt, id}beforeCursor按startedAt字典序 id做严格弱序分页filterall|llm|tool|error与有界q参数保持兼容GET /v1/threads/{threadId}/model-requests继续可用以保持兼容线程 PATCH 字段仍是内容捕获开关路由测试见 trajectory.test.ts覆盖 401、分页、filter 与 detail section 校验及 404 语义。存储与捕获策略两层数据生命周期元数据lifecycle facts始终记录模型/工具状态、用量、耗时、重试、错误与规范化 Session 输出完整 Prompt 细节由线程级modelRequestCaptureEnabled开关控制只影响完整提示细节与有界的内存 wire 诊断Settings 继续控制后续创建会话的默认值。当完整内容捕获关闭时System Prompt 原文、工具 schema 与请求选项显示为not captured。轨迹持久化只存紧凑的生命周期事实与引用从不持久化普通流增量、原始 HTTP 头/帧、凭据、附件字节、图片/Base64 主体、完整工具输出或另一份助手输出副本。可选提示细节Manifest 内容寻址 BlobdataDir/observability/trajectory/ records/base64url-thread-id.jsonl manifests/base64url-thread-id/base64url-request-id.json blobs/sha256.br实现见 trajectory-content-store.tsBlob 先经敏感值脱敏redactModelTraceValues、redactBrowserUseDebugContent再哈希Brotli 压缩按 SHA-256 去重目录/文件以 0700 私密权限写入applyPosixMode大 Blob 保留有界头/尾并携带显式截断元数据。默认明细预算预算项默认值全局明细上限512 MiB单会话明细上限64 MiB行内明细预览16 KiB可搜索列表预览2 KiB单个源 Blob 上限8 MiB超出后保留有界头/尾源码中对应常量TRAJECTORY_MAX_TOTAL_DETAIL_BYTES 512 MiB、TRAJECTORY_MAX_THREAD_DETAIL_BYTES 64 MiB、TRAJECTORY_INLINE_PREVIEW_BYTES 16 KiB、TRAJECTORY_SEARCH_PREVIEW_BYTES 2 KiB、TRAJECTORY_MAX_BLOB_BYTES 8 MiB、TRAJECTORY_BLOB_HEAD_BYTES 512 KiB、TRAJECTORY_BLOB_TAIL_BYTES 64 KiB。预算清理只驱逐旧明细生命周期元数据保留到会话删除。删除会话时移除其 manifests 与遗留 trace 文件随后 mark-and-sweep 移除无引用的 Blob。失败与恢复行为每个具体的 Provider 尝试attempt有独立 request ID 与尝试序号同一逻辑模型步骤的多次尝试共享 round ID 与 Step 号首个模型内容记录 TTFT 边界流增量不作为 trace 行持久化重启后持久化的 pending attempt 若无匹配的活跃请求被投影为interruptedManifest 缺失或被预算驱逐不会隐藏生命周期元数据查询与捕获失败从不重试、重写或阻塞 Provider 请求spec 明确query and capture failures never retry, rewrite, or block the Provider request。主题、可访问性与验证角色颜色与主题令牌角色颜色在时间线与台账中遵循同一语义模型System/Compacted 中性、User 蓝色、Context 绿色、Assistant 紫色TTFT 段更浅、Tool/Subtool 琥珀色、失败红色。这些颜色映射到 Kun 主题令牌而非固定亮色值每个自定义主题不要求与 Harness 字面颜色一致。键盘/ARIA/减少动效reduced-motion语义与全语言all-locale文案也纳入移植范围tasks 2.5。测试与截图证据spec Visual and behavioral evidence 要求同时具备引用派生的单元测试矩阵projection、layout、timeline、virtualization、inspector、interaction移植自冻结 Harness commit确定性 Electron 截图覆盖 wide/narrow、light/dark、empty/loading/running/error/history/long-list/inspector 状态默认亮色主题下固定 parity fixture 与冻结参考的掩码像素差 ≤ 1%每个固定几何断言相差 ≤ 1 像素其他主题使用结构断言因为颜色无法字面相等见 design.md Risks。tasks.md 的验证门槛还包括聚焦测试、typecheck、Kun 构建、生产构建、变更文件 ESLint、文件行数700 行限制参考单体内超限时拆分为纯模型/手势/行/呈现器/样式模块、OpenSpec 与 diff 检查。归属与许可轨迹布局、时序交互、密集台账信息架构、检查器行为与参考派生测试矩阵改编自 DeepSeek Harnesspackages/client/ui-trajectory冻结于 commit0a53fb55bea101816fa226bb964ae2bed71c343b。该源码为 MIT 许可Copyright (c) 2026 DeepSeek声明保留在 THIRD_PARTY_NOTICES.md。Kun 不导入也不运行时链接 Harness checkoutHarness 的全局导航、页面页签、Cordis 插槽与无关应用 shell 均不包含在移植范围内。延伸阅读变更提案proposal.md设计决策design.md需求规格spec.md实施清单tasks.md轨迹功能总览docs/conversation-trajectory.md数据契约kun/src/contracts/trajectory.ts查询投影kun/src/services/trajectory-query-service.ts明细解析kun/src/services/trajectory-query-detail.ts存储实现与预算kun/src/services/trajectory-content-store.ts查询服务测试kun/src/services/trajectory-query-service.test.tsAPI 路由与测试kun/src/server/routes/register-thread-routes.ts、kun/src/server/routes/trajectory.ts、kun/src/server/routes/trajectory.test.ts赞分享人工智能AI Agent自主智能体桌面应用MCP Clients【免费下载链接】KunLocal-first AI agent workspace for coding, writing, design, research, and automation — one runtime for desktop GUI and TUI.项目地址https://gitcode.com/gh_mirrors/de/Kun点击查看免费下载相关推荐DeepSeek Harness 轨迹检视台账Turn 感知事件台账与局部记录检查器的设计实现DeepSeek Harness 轨迹检视台账Turn 感知事件台账与局部记录检查器的设计实现 DeepSeek HarnessEverything is人工智能AI AgentAgent 框架DeepSeekKun 会话轨迹视图Conversation Trajectory View深入指南从时间线 Ledger 到紧凑存储与查询 APIKun 会话轨迹视图Conversation Trajectory View深入指南从时间线 Ledger 到紧凑存储与查询 API Kun 在会话co人工智能AI Agent自主智能体桌面应用MCP ClientsKun 会话轨迹Conversation Trajectory全解析从 UI 交互、捕获策略到持久化与查询 APIKun 会话轨迹Conversation Trajectory全解析从 UI 交互、捕获策略到持久化与查询 API Kun 为每个会话thread提供人工智能AI Agent自主智能体桌面应用MCP Clients创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考