Files
ycode/docs/reference/ygent-model-composer-parity.md
T

59 lines
8.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 模型编辑、模型选择与上下文状态
## 对标依据
2026-10-09 通过 WorkBuddy 5.7.6 的真实渲染页 CDP、DOM、计算样式和安装包资源确认,未使用 computer-use。原始会话及采集资源只保存在用户私有目录。
- 模型入口高 32px,图标 16px、箭头 14px;弹层宽 280px、最大高 368px、圆角 16px、内边距 8px。列表按渠道分组,组标题高 28px,模型行基准高 32px;选中标记、悬停、滚动和键盘操作共用一个列表。
- 上下文入口位于模型入口左侧,点击区域 32px,圆环 16px、线宽 2px。用量面板宽 280px、内边距 16px、圆角 16px,包含百分比、token 用量、占用条与分类图例。
- WorkBuddy 的付费、Max 等专有功能没有对应的 Ygent 功能,不能添加无效入口。模型图标采用随包本地 SVG(Lobe Icons 1.95.1,保留 MIT 许可),按 canonicalId 模型归属匹配;未识别元数据时仅按已知模型名前缀回退,未知模型显示通用图形。模型按钮及列表共用组件,客户端不访问图标 CDN。
## 已实现
模型编辑恢复输入上下文、输出上限的选项按钮。输入提供 32K/64K/128K/256K,输出提供 8K/16K/32K/64K;精确模型上限作为独立选项,超出模型上限的预设不可选。默认不展示数字输入框,点击“自定义”后才能输入;保留元数据默认值、逐字段覆盖与恢复自动能力。
补充:两组均提供 128K/256K/1M,token 档位使用十进制 K=1000、M=1000000。模型声明在 1000000–1050000 的窗口归入 1M 显示档,但选中与保存采用模型的精确上限(例如 1050000),悬停显示准确 token 数。128000 对应 128K,不再因按 1024 换算而被误判超限。已有精确数字不重算。
自动输出预算直接使用元数据声明的输出上限(例如 gpt-6-luna 为 128000),不再统一限制为 8192 或上下文的一半;保留每字段手动覆盖,仅元数据未声明输出上限时兜底 8192。配置允许输出上限等于上下文上限,实际请求仍校验输入加输出预留是否超限。
对话模型菜单改为单层渠道分组列表,选择真实模型后关闭;支持方向键、Enter、Escape、外部点击关闭和焦点返回。当前模型的原生思考选项及预算仍可设置,配置入口打开模型设置。新建任务和对话复用同一模型组件。
对话输入区增加上下文圆环、悬停说明及点击详情。切换会话会清空旧显示,生成期间及面板打开时每两秒刷新;查询不启动、不切换、不重启 Agent。
## 用量语义与边界
- OMP 总量:读取已绑定当前会话的 `get_state.data.contextUsage`,标注“内核当前上下文估计”。读取最长等待两秒,操作冲突或失败使用本会话持久化快照。
- 直连:读取实际 SSE 的最近请求输入计数,标注“最近请求的输入用量”。支持 Chat Completions、Responses、Anthropic Messages、Gemini;Anthropic 包含缓存读取与写入输入。
- 不把各轮 token 累加作为上下文占用,不把输出或账单总量当成输入。没有真实计数/窗口时显示“—”,不能用运行时兜底窗口伪装模型实际上限。
- OMP 分类:随包观测扩展读取主 Agent 的实际 `context` 输入与 `before_provider_request` 最终工具声明,通过 OMP 分词器本地计数;不是分类 RPC,也不按内核总量分摊比例。分类与内核当前总量是独立快照,可能不相等。
- 分类包含系统提示词(扣除已识别的技能目录)、工具及子智能体的声明/调用/返回、对话正文、MCP 声明/调用/返回、技能目录及按需读取的正文。只计算当前主 Agent 实际输入中可见的内容,不推断子 Agent 的私有上下文。停用技能或连接器后,仍在输入历史中的调用和返回继续计入原分类。
- 面板显示各类估计 tokens 及其占请求时上下文窗口的比例;悬停可查看精确估计数、快照时间、模型和请求身份。无法识别名称的工具声明列入“未归类”,仅非零时显示;供应商协议封装及未公开的隐藏输入不伪装成已分类内容。
- 精度按真实计数路径标注“模型分词器”、`o200k_base` 或“UTF-8字节估算”。后两者及本地分类都不能当作上游账单实测值;没有请求快照、直连尚无可靠分类来源时继续显示“— / 暂无分类统计”,不以零补齐缺失数据。
- 分类每次实际准备模型请求时替换,不累加;按宿主会话/请求/原生会话文件校验后持久化。取消保留已准备输入,拒绝取消后的迟到帧;重载和总量刷新保留同一分类快照。旧历史不反推分类,更新后的 OMP 进程产生新请求后才会有新统计。
- 快照按会话持久化;直连数值是最近请求观察值,不代表用户编辑历史后已经重新计算;新请求开始清除旧的直连观察值。
## 验收
2026-10-09:后端 `cargo test --lib --quiet` 69 项通过、1 项忽略,包含各协议输入计数、覆盖而非累加、缓存计数、会话隔离和 OMP 字段解析。`npm run build`、`npm run models:check`、`npm run check:chat` 通过。
原生验收使用隔离数据库与真实 Tauri IPC,脚本 `scripts/model-context-native-check.mjs`;上游仅使用本机受控 SSE 服务,不操作用户正常会话,不替换前端 IPC。Windows WebView2 视口 1335×916、DPR 1:编辑器选项/精确上限/自定义/恢复自动、模型列表位置和方向键焦点、上下文面板/Escape、两轮输入 1250→2750 替换而非累加、跨会话隔离及重载恢复均通过;六档字号下两种面板均宽 280px,无横向截断。模型选择使用真实按钮激活验收,未将 CDP 的 Enter 默认行为计为已通过。
截图和 DOM 证据位于用户私有目录 `C:/Users/Administrator/.ygent/imports/model-composer-20261009/native`。OMP 实际返回的窗口可能是内核可用窗口,不能强制等于模型元数据最大窗口;以实际 `contextUsage.contextWindow` 为准。本次只实测 Windows,未声称 Mac/Linux 通过。
### OMP 输入分类验收(2026-10-10)
隔离数据库、真实 Tauri IPC / WebView2、OMP 18.6.3;模型上游为本机受控 SSE,技能通过真实安装及按需读取接入,MCP 通过真实 stdio 握手、工具发现及独立宿主授权调用。未替换 IPC、未注入前端分类数据,不把受控上游当成真实供应商计费验收。Windows 视口 1335×916、DPR 1;其他平台未实测。
八项场景通过:无请求时分类未知;技能与 MCP 调用后五类均有真实输入计数;刷新总量不覆盖分类;六档字号下 280px 面板无横向溢出、Escape 关闭并返回焦点;未启动的第二会话查询不创建内核会话文件且不串分类;下一请求替换而非累加并保留历史技能/MCP 输入;运行及取消保留已准备输入;真实 WebView 重载恢复同一快照且不产生新模型请求。DOM、计算字号/行高、边界及滚动尺寸与截图同时采集。
本次分词路径为 UTF-8 字节估算:首次内核总量 8,935,独立分类合计 9,383;停用扩展后的新请求分类合计 8,857,取消回合 8,878,重载后保持不变。分类没有缩放为内核总量,也没有把旧快照累加到新快照。
后端 `cargo test --lib --quiet --manifest-path src-tauri/Cargo.toml`:119 项通过、1 项忽略,覆盖分类和校验、溢出、会话隔离、旧请求/取消身份拒绝;`npm run build` 与 `npm run check:chat` 通过。构建仍有已有的大 chunk 和 `knowledge::context` 未使用警告,未扩展本轮范围处理。
证据:用户私有目录 `C:/Users/Administrator/.ygent/imports/context-categories-native-C7mOTZ`,含 `result.json`、真实上游请求、六档 DOM/计算样式及第 1/6 档截图。隔离进程与本机服务已关闭;临时验收脚本不留在仓库。
## 本地图标验收
2026-10-09:14 个品牌 SVG 在真实桌面 WebView2 中均完成解码,模型按钮与列表图标为 16×16px,资源均为本地/内联资源。未知归属回退和 GPT 模型名回退已验证;类型检查、构建及 diff 检查通过。截图与 DOM 位于私有目录 `C:/Users/Administrator/.ygent/imports/model-icons-20261009`。