A file block never reaches a model as bytes: dsh projects every one to `fileHandleText` at request assembly, and the token meter prices that handle in place of the block's structural JSON price. An attachment therefore costs a fixed ~60 tokens whatever its size, so the card now shows that price beside the size — computed from the three facts a log carries (name, byte size, digest prefix) and priced with the meter's own text arm, now shared with the fold's message price instead of restated there. The handle also names the stored copy's read path, which only the live environment resolves and no log holds, so the row prices the pathless arm and reads as a lower bound (`≥`) rather than an `≈`. The fold keeps the meter's fixed structural price for the same block, exactly as the harness does: one figure answers the request, the other the surface.
572 lines
26 KiB
TypeScript
572 lines
26 KiB
TypeScript
/** The Chinese (Simplified) dictionary — the key-set source of truth every other locale must carry in full. */
|
||
export const DICT_ZH = {
|
||
'tab.context': '上下文',
|
||
'tab.fleet': '编队',
|
||
'sidebar.guideDescription': '查看上下文的构成、统计、演变。',
|
||
'cat.system': '系统提示词',
|
||
'cat.tools': '工具定义',
|
||
'cat.user': '用户消息',
|
||
'cat.inject': '注入内容',
|
||
'cat.skill': '技能注入',
|
||
'cat.assistant': '助手消息',
|
||
'cat.tool': '工具结果',
|
||
'overview.title': '当前上下文',
|
||
'overview.estimate': 'tokens(估算)',
|
||
'overview.free': '剩余窗口',
|
||
'overview.used': '上下文已用',
|
||
'overview.ofUsed': '占已用上下文',
|
||
'overview.ofWindow': '占窗口',
|
||
'overview.reserveHeadroom': '压缩预留空间',
|
||
'overview.reserveOutput': '模型最大输出预留',
|
||
'overview.reserveHeadroomTip': '自动压缩预计在窗口的 {p}% 处触发',
|
||
'overview.reserveHeadroomBuffer': '在输出预留之前留出的缓冲',
|
||
'overview.reserveOutputTip': '模型最大输出 token 数',
|
||
'overview.reserveTrigger': '自动压缩触发线',
|
||
'overview.reserveTriggerTip': '已用量到达此线时触发压缩',
|
||
'stats.title': '上下文统计',
|
||
'stats.session': '当前会话',
|
||
'stats.turns': '轮次',
|
||
'stats.steps': '步数',
|
||
'stats.answers': '模型回复',
|
||
'stats.skills': '技能加载',
|
||
'stats.skillsJump': '在上下文浏览器中展开技能注入',
|
||
'stats.answersJump': '在上下文浏览器中筛选回答',
|
||
'stats.humanInputs': '用户输入',
|
||
'stats.humanInputsTip': '当前会话中的用户消息与问题回答次数。',
|
||
'stats.io': '输入输出',
|
||
'stats.events': '上下文事件',
|
||
'stats.toolCalls': '工具调用',
|
||
'stats.toolsMore': '其他 +{n}',
|
||
'stats.cacheHit': '缓存命中',
|
||
'stats.cacheHitTip': '整个会话累计的缓存读取占计费输入的比例。',
|
||
'stats.cost': '费用',
|
||
'stats.costTip': '估算的费用,含当前智能体及所有层级的子智能体,仅供参考。',
|
||
'stats.costTipDeepseek': 'DeepSeek 高峰时段(北京时间工作日 9:00–12:00、14:00–18:00)按挂牌价计费,其余时段半价。',
|
||
'stats.costTipCny': '人民币按 1 元 = 0.15 美元换算。',
|
||
'stats.currentAgent': '当前 Agent',
|
||
'stats.teamSubs': '子 Agent × {n}',
|
||
'stats.billedTip': 'Token 用量为计费合计:未缓存输入、缓存读取、缓存写入与输出。',
|
||
'stats.subCostTip': '全部层级的子 Agent 会话各自累计费用(同口径估算)的合计,不含当前 Agent 自身。',
|
||
'stats.costPriceHead': '每百万 Token 价格:',
|
||
'stats.costPriceBy': '按 {p} · {m} 在 models.dev 的刊登价格如上。',
|
||
'stats.costHit': '缓存输入',
|
||
'stats.costMiss': '未缓存输入',
|
||
'stats.costWrite': '缓存写入',
|
||
'stats.costOut': '输出',
|
||
'stats.costUnavailable': '模型价格暂不可用(自动重试中),费用暂无法估算。',
|
||
'timing.title': '耗时统计',
|
||
'timing.total': '活跃时长',
|
||
'timing.ttft': '模型等待',
|
||
'timing.gen': '模型生成',
|
||
'timing.reasoning': '模型思考',
|
||
'timing.text': '模型回复',
|
||
'timing.toolArgs': '工具参数',
|
||
'timing.tools': '工具执行',
|
||
'timing.other': '其他开销',
|
||
'timing.callTimes': '{n}次',
|
||
'timing.toolTimes': '{n}次',
|
||
'timing.blockTimes': '{n}次',
|
||
'timing.empty': '暂无耗时数据 · 对话开始后这里会显示时长分布',
|
||
'timing.tps': '输出速度 {tps} tok/s',
|
||
'timing.tpsTip': '输出速度(TPS):累计解码输出 tokens ÷ 累计解码时长,与 DeepSeek Harness 会话统计同口径。',
|
||
'timing.strip': '耗时时间轴:各段按发生次序紧凑铺排,宽度为耗时占比,刻度为零、四分位与全程',
|
||
'tokens.title': 'Token 统计',
|
||
'tokens.total': '总用量',
|
||
'tokens.output': '输出',
|
||
'tokens.outputNote': '含思考',
|
||
'plugin.title': '插件信息',
|
||
'plugin.hint': 'The best DSH context plugin ⭐',
|
||
'plugin.name': '插件',
|
||
'plugin.github': 'GitHub',
|
||
'plugin.settings': '插件设置',
|
||
'plugin.settingsOpen': '打开插件设置',
|
||
'trend.title': '上下文趋势',
|
||
'gran.step': '步骤',
|
||
'gran.turn': '轮次',
|
||
'settings.group.entry': '入口与可见性',
|
||
'settings.group.view': '视图默认值',
|
||
'settings.group.prompt': '系统提示词',
|
||
'settings.placement': '入口位置',
|
||
'placement.tab': '标签页',
|
||
'placement.sidebar': '侧边栏',
|
||
'placement.all': '全部',
|
||
'settings.insightsEntry': '上下文洞察入口',
|
||
'settings.fleetTab': '编队标签页',
|
||
'showHide.show': '显示',
|
||
'showHide.hide': '隐藏',
|
||
'settings.gran': '趋势图 · 粒度',
|
||
'settings.mode': '趋势图 · 展示方式',
|
||
'settings.durationCurve': '趋势图 · 耗时曲线',
|
||
'settings.deltaBase': '上下文浏览器 · 对比基线',
|
||
'settings.toolSort': '工具定义 · 排序',
|
||
'settings.fileSort': '文件活动 · 排序',
|
||
'settings.readOnly': '当前环境的设置为只读',
|
||
'settings.promptPrefix': '前缀',
|
||
'settings.promptSuffix': '后缀',
|
||
'settings.promptHint': '拼接在所有会话系统提示词的最前/最后,对所有代理(含子代理)生效;修改从下一轮对话开始应用',
|
||
'settings.promptPlaceholder': '留空则不启用',
|
||
'gran.total': '全量',
|
||
'gran.delta': '增量',
|
||
'gran.modeHint': '全量:累计构成;增量:相对上一条请求的变化量',
|
||
'trend.adaptive': '自适应',
|
||
'trend.adaptiveHint': '按当前可视范围内的柱子重新缩放高度,滚动时随之变化',
|
||
'trend.duration': '耗时',
|
||
'trend.durationTip': '在柱子上叠加每步的活跃耗时曲线(步骤开始至结束,含模型与工具调用,不含等待你决策或回答的时间),按图中右侧的四分位坐标轴读数;轮次粒度下为一轮各步耗时之和',
|
||
'trend.dna': 'DNA 模式',
|
||
'trend.dnaTip': '把每根柱子画成该次请求的上下文指纹:按模型读取顺序逐条铺色,配合增量模式逐条展示每次请求的增减;悬停查看条目,点击让上下文浏览器定位到该条目,同一条目在所有柱子中亮出其存续变化',
|
||
'trend.dnaItem': '{label}:{n}',
|
||
'trend.empty': '发起一轮对话后,这里会展示每次模型请求的上下文构成',
|
||
'detail.step': '第 {t} 轮 · 第 {s} 步 (共 {n} 步)',
|
||
'detail.turn': '第 {t} 轮 · 共 {n} 步',
|
||
'detail.lastStep': '末步',
|
||
'detail.estTotal': '估算合计 ≈ {n}',
|
||
'detail.actual': '实际 {n}',
|
||
'detail.output': '输出 {n}',
|
||
'detail.cache': '缓存 {n}%',
|
||
'brief.turn': '本轮',
|
||
'brief.input': '输入',
|
||
'brief.reply': '回复',
|
||
'brief.more': '+{n}',
|
||
'brief.noInputs': '(无新增)',
|
||
'brief.locate': '在上下文浏览器中查看',
|
||
'jump.title': '在上下文视图中查看此轮',
|
||
'brief.turnTip': '这一轮开场时用户发送的消息;回合内的每一步都会回显同一条',
|
||
'brief.inputTip': '上一步回复之后、本次请求发出前新进入上下文的内容——通常是上一步所调工具的结果;每轮的第一步无新增',
|
||
'brief.replyTip': '这一步模型返回的内容(文本回复或工具调用);此步发起的调用,其结果会出现在下一柱的「输入」行',
|
||
'events.title': '上下文事件',
|
||
'events.empty': '暂无上下文事件(压缩、注入、模型切换会出现在这里)',
|
||
// Locale-neutral position stamps, matching the browser rows' own `browser.stepAt`.
|
||
'events.at': 'T{t} S{s}',
|
||
'events.range': 'T{t} S{a}→{b}',
|
||
'events.rangeTo': 'T{a} S{as} → T{b} S{bs}',
|
||
'kind.inject': '注入',
|
||
'kind.compaction': '压缩',
|
||
'kind.prune': '剪枝',
|
||
'kind.model': '切换',
|
||
'kind.mode': '模式',
|
||
'files.title': '文件活动',
|
||
'files.scopeLatest': '截至最新 · 跟随趋势图的选择',
|
||
'files.kind.all': '全部',
|
||
'files.kind.read': '读取',
|
||
'files.kind.write': '写入',
|
||
'files.kind.search': '搜索',
|
||
'files.kind.image': '图片',
|
||
'files.chipTip': '{files} 个文件 · {ops} 次操作',
|
||
'files.search': '按路径过滤…',
|
||
'files.sort.count': '按次数',
|
||
'files.sort.latest': '按最新',
|
||
'files.sort.path': '按路径',
|
||
'files.sortTip': '文件排序:按操作次数(选中分类时按该分类的次数)、最近操作时间或路径',
|
||
'files.files': '{n} 个文件',
|
||
'files.deltaTip': '按 edit/write 调用参数估算的累计行数变化:+ 新增 / − 删除',
|
||
'files.empty': '该范围内没有文件读取、写入或搜索操作',
|
||
'files.noMatch': '没有匹配当前过滤条件的文件',
|
||
'files.locate': '在上下文浏览器中查看此次操作',
|
||
'files.hits': '{n} 处命中',
|
||
'files.readTip': '读取第 {a}–{b} 行',
|
||
'files.open': '在系统中打开',
|
||
'files.preview': '在侧边栏预览',
|
||
'files.readEst': '按调用参数 limit 估算的读取行数',
|
||
'files.errs': '{n} 次失败',
|
||
'files.form.image': '图片',
|
||
'files.form.dir': '目录',
|
||
'files.form.text': '文件',
|
||
'files.glyph.root': '工作区根',
|
||
'files.glyph.tests': '测试',
|
||
'files.glyph.docs': '文档目录',
|
||
'files.glyph.deps': '依赖',
|
||
'files.glyph.build': '构建产物',
|
||
'files.glyph.scripts': '脚本',
|
||
'files.glyph.config': '配置',
|
||
'files.glyph.assets': '静态资源',
|
||
'files.glyph.hidden': '元数据目录',
|
||
'files.glyph.lock': '锁文件',
|
||
'files.glyph.docker': 'Docker',
|
||
'files.glyph.ignore': '忽略规则',
|
||
'files.glyph.license': '许可证',
|
||
'files.glyph.python': 'Python',
|
||
'files.glyph.notebook': 'Notebook',
|
||
'files.glyph.shell': 'Shell',
|
||
'files.glyph.style': '样式',
|
||
'files.glyph.database': '数据库',
|
||
'files.glyph.data': '数据清单',
|
||
'files.glyph.markdown': '标记文档',
|
||
'files.glyph.log': '日志',
|
||
'files.glyph.sheet': '表格',
|
||
'files.glyph.document': '文档',
|
||
'files.glyph.archive': '压缩包',
|
||
'files.glyph.font': '字体',
|
||
'files.glyph.media': '媒体',
|
||
'files.glyph.lang.ts': 'TypeScript',
|
||
'files.glyph.lang.js': 'JavaScript',
|
||
'files.glyph.lang.go': 'Go',
|
||
'files.glyph.lang.rust': 'Rust',
|
||
'files.glyph.lang.java': 'Java',
|
||
'files.glyph.lang.kotlin': 'Kotlin',
|
||
'files.glyph.lang.ruby': 'Ruby',
|
||
'files.glyph.lang.php': 'PHP',
|
||
'files.glyph.lang.c': 'C',
|
||
'files.glyph.lang.cpp': 'C++',
|
||
'files.glyph.lang.csharp': 'C#',
|
||
'files.glyph.lang.scala': 'Scala',
|
||
'files.glyph.lang.lua': 'Lua',
|
||
'files.glyph.lang.dart': 'Dart',
|
||
'files.glyph.lang.swift': 'Swift',
|
||
'files.glyph.lang.vue': 'Vue',
|
||
'files.glyph.lang.svelte': 'Svelte',
|
||
'files.glyph.lang.html': 'HTML',
|
||
'agents.title': 'Agent 网络',
|
||
'agents.sub': '当前 Agent 与子 Agent 的实时上下文 · 点击节点跳转会话',
|
||
'agents.subSelect': '当前 Agent 与子 Agent 的实时上下文 · 点击节点高亮联动',
|
||
'agents.chip.count': '{n} 个 Agent',
|
||
'agents.chip.running': '{n} 个运行中',
|
||
'agents.chip.tokens': '上下文合计 {n}',
|
||
'agents.more': '另有 {n} 个未显示',
|
||
'agents.solo': '还没有子 Agent — 当 Agent 通过 subagent 工具委派任务时,协作网络会在这里展开',
|
||
'agents.self': '当前',
|
||
'agents.running': '运行中',
|
||
'agents.legend.free': '空闲窗口',
|
||
'agents.oneshot': '一次性',
|
||
'agents.continuable': '多轮',
|
||
'agents.steps': '{n} 步',
|
||
'agents.billed': '累计计费 {n}',
|
||
'fleet.teamChip': '团队 · {m} 成员 · {n} 任务',
|
||
'fleet.unpin': '取消固定',
|
||
'fleet.open': '打开会话',
|
||
'fleet.membership': '团队身份',
|
||
'fleet.role.lead': '主导',
|
||
'fleet.role.teammate': '成员',
|
||
'fleet.phase.provisioning': '准备中',
|
||
'fleet.phase.failed': '失败',
|
||
'fleet.memberInactive': '未运行',
|
||
'fleet.config': '配置',
|
||
'fleet.prompt': '委派提示词',
|
||
'fleet.expand': '展开',
|
||
'fleet.collapse': '收起',
|
||
'fleet.detailLoading': '正在读取会话记录…',
|
||
'fleet.messages': '通讯',
|
||
'fleet.kind.relay': '私信',
|
||
'fleet.kind.mailbox': '邮箱',
|
||
'fleet.kind.settled': '回报',
|
||
'fleet.task.pending': '待处理',
|
||
'fleet.task.in_progress': '进行中',
|
||
'fleet.task.completed': '已完成',
|
||
'fleet.taskReady': '可开始',
|
||
'fleet.taskBlocked': '被依赖阻塞',
|
||
'fleet.taskUnowned': '未分配',
|
||
'fleet.taskScopes': '写入范围',
|
||
'fleet.members.title': '团队成员',
|
||
'fleet.members.reply': '最新回报',
|
||
'fleet.members.tasks': '{n} 项进行中任务',
|
||
'fleet.members.noTasks': '无进行中任务',
|
||
'fleet.members.tasksTip': '在共享任务中只看该成员',
|
||
'fleet.board.title': '编队成员',
|
||
'fleet.board.others': '其他 Agent',
|
||
'fleet.board.noTeam': '未启用智能体团队模式',
|
||
'fleet.board.solo': '还没有可列出的成员 — 通过 subagent 工具委派任务后,它们会在这里列出',
|
||
'fleet.summary.done': '{n} 已完成',
|
||
'fleet.summary.cost': '预估合计 {n}',
|
||
'fleet.summary.tasks': '任务进度',
|
||
'fleet.summary.subs': '子智能体进度',
|
||
'fleet.tasks.title': '任务',
|
||
'fleet.tasks.sub': '团队任务与子 Agent 委派',
|
||
'fleet.tasks.search': '搜索任务…',
|
||
'fleet.tasks.filter': '筛选任务',
|
||
'fleet.tasks.ownerTip': '高亮该成员',
|
||
'fleet.tasks.depTip': '依赖 {id} · 点击聚焦其前置链',
|
||
'fleet.tasks.focusTip': '在共享任务中定位',
|
||
'fleet.tasks.dependsOn': '依赖',
|
||
'fleet.tasks.noMatch': '没有匹配的任务',
|
||
'fleet.tasks.reply': '最终回报',
|
||
'fleet.tasks.desc': '任务描述',
|
||
'fleet.tasks.agent': '智能体',
|
||
'fleet.tasks.progress': '已完成 {done}/{total}',
|
||
'fleet.tasks.active': '{n} 进行中',
|
||
'fleet.tasks.noTeam': '暂无任务 — 团队任务与子 Agent 委派会在这里出现',
|
||
'fleet.taskCol.pending': '待处理',
|
||
'fleet.taskCol.in_progress': '进行中',
|
||
'fleet.taskCol.completed': '已完成',
|
||
'fleet.team.empty': '暂无任务,可以通过对话创建',
|
||
'fleet.team.failureShort': '持久记录无效',
|
||
'fleet.settled.finished': '完成了任务,等待新指令',
|
||
'fleet.settled.finishedFinal': '已完成(一次性,无法追问)',
|
||
'fleet.settled.stopped': '被中断,未完成',
|
||
'fleet.settled.outOfRoom': '上下文耗尽,未完成',
|
||
'fleet.settled.declined': '拒绝了任务',
|
||
'fleet.settled.failed': '执行失败',
|
||
'fleet.list.search': '搜索名称…',
|
||
'fleet.list.filter': '状态过滤',
|
||
'fleet.list.sort': '排序',
|
||
'fleet.list.empty': '没有匹配的 Agent',
|
||
'fleet.filter.all': '全部',
|
||
'fleet.filter.running': '运行中',
|
||
'fleet.filter.done': '已完成',
|
||
'fleet.filter.idle': '空闲',
|
||
'fleet.sort.spawn': '派生顺序',
|
||
'fleet.sort.tokens': '上下文用量',
|
||
'fleet.sort.duration': '运行时长',
|
||
'fleet.sort.steps': '步数',
|
||
'fleet.sort.recent': '最近活跃',
|
||
'fleet.comms.title': '通讯记录',
|
||
'fleet.comms.sub': '跨 Agent 消息 · 按需扫描各会话日志',
|
||
'fleet.comms.scan': '扫描 {n} 个会话的通讯',
|
||
'fleet.comms.scanning': '扫描中 {done}/{total}…',
|
||
'fleet.comms.rows': '{n} 条消息',
|
||
'fleet.comms.stale': '有新动态',
|
||
'fleet.comms.rescan': '重新扫描',
|
||
'fleet.comms.filter': '按 Agent 过滤',
|
||
'fleet.comms.all': '全部 Agent',
|
||
'fleet.comms.noMatch': '该 Agent 没有通讯记录',
|
||
'fleet.comms.empty': '没有发现跨 Agent 消息',
|
||
'fleet.comms.truncated': '仅展示摘录(已达路由上限)',
|
||
'loading': '正在读取会话日志…',
|
||
'detail.loading': '正在加载历史数据…',
|
||
'detail.loadFailed': '历史数据加载失败,点击重试',
|
||
'error': '上下文数据读取失败:',
|
||
'error.retry': '重试',
|
||
'gate.title': '请更新 DeepSeek Harness 版本',
|
||
'gate.body': 'dsh-context 插件支持 DeepSeek Harness v{minimum} 或更新版本。',
|
||
'gate.current': '当前版本',
|
||
'gate.minimum': '最低要求',
|
||
'gate.orNewer': '及更新的版本',
|
||
'gate.ok': '知道了',
|
||
'footer': 'Token 数量统计:「估算」与 DeepSeek Harness 内置 tokenMeter 相同的固定密度启发式(约 4 字符 ≈ 1 token);「实际」为供应商上报用量。',
|
||
'tip.step': '第 {t} 轮 · 第 {s} 步 (共 {n} 步)',
|
||
'tip.turn': '第 {t} 轮 · 共 {n} 步',
|
||
'tip.turn1': '第 {t} 轮 · 共 1 步',
|
||
'tip.total': '合计 ≈ {n}',
|
||
'tip.cat': '{cat} ≈ {n}',
|
||
'tip.delta': 'Δ {n}',
|
||
'tip.duration': '耗时 {n}',
|
||
'ev.compaction': '压缩上下文(摘要替换 {n} 条消息)',
|
||
'ev.prune': '剪枝工具输出',
|
||
'ev.skill': 'Skill 注入({name})',
|
||
'ev.model': '模型切换:{a} → {b}',
|
||
'ev.mode.plan.on': '进入计划模式',
|
||
'ev.mode.plan.off': '退出计划模式',
|
||
'form.instructions': '指令注入',
|
||
'form.catalog': '目录更新',
|
||
'form.snapshot': '状态快照',
|
||
'form.notice': '通知',
|
||
'form.relay': '代理转发',
|
||
'form.recall': '历史召回',
|
||
'form.context': '上下文注入',
|
||
'node.toolResult': '工具结果',
|
||
'node.calls': '调用 ',
|
||
'node.empty': '(空回复)',
|
||
'node.nonText': '(非文本消息)',
|
||
'node.snapshot': '快照: ',
|
||
'node.skillTag': '技能 · {name}',
|
||
'cmd.label': '上下文',
|
||
'cmd.section': '上下文',
|
||
'cmd.desc': '查看当前上下文构成,浏览各步骤组成',
|
||
'cmd.close': '关闭',
|
||
'browser.title': '上下文浏览器',
|
||
'browser.live': '当前(下一次请求)',
|
||
'browser.liveNow': '当前 · 下一次请求',
|
||
'browser.items': '{n} 项',
|
||
'browser.stepAt': 'T{t} S{s}',
|
||
'browser.stepAtTip': '首次随第 {t} 轮 · 第 {s} 步的请求进入上下文',
|
||
'browser.stepPendingTip': '预计随第 {t} 轮 · 第 {s} 步的请求进入上下文(尚未发送)',
|
||
'browser.missingLive': '… 另有 {n} 条更早的消息也在上下文中(超出展示窗口)',
|
||
'browser.approx': '该步骤涉及的部分已移除消息超出保留范围,以下为近似构成',
|
||
'browser.base.step': '比前步',
|
||
'browser.base.turn': '比前轮',
|
||
'browser.base.tip': '变动对比的基线:比前步=与上一步对比;比前轮=与上一轮最后一步对比(首轮无基线,全部计为变动)',
|
||
'browser.dna': 'DNA 模式',
|
||
'browser.dnaTip': '按模型读取上下文的次序逐条展示每一项:系统提示词、工具定义,然后是按时间排列的消息;悬停查看条目,点击定位到下方列表',
|
||
'browser.noHeader': '此数据来自旧版插件:仅提供 token 估算,无实际内容',
|
||
'browser.noEpoch': '该步骤的头部内容(系统提示词 / 工具定义)不在保留范围内',
|
||
'browser.headerMetaOnly': '此环境不支持按需读取头部内容,仅显示 token 估算',
|
||
'browser.noSystem': '该请求头部未包含系统提示词',
|
||
'browser.noContent': '完整内容不在当前加载的消息窗口内(在聊天页加载更早历史后可查看)',
|
||
'browser.search.user': '按消息内容过滤…',
|
||
'browser.search.inject': '按注入内容过滤…',
|
||
'browser.search.skill': '按技能过滤…',
|
||
'browser.search.assistant': '按回复、调用或思考过滤…',
|
||
'browser.search.tool': '按工具或参数过滤…',
|
||
'browser.kind.think': '思考',
|
||
'browser.kind.tool': '工具',
|
||
'browser.kind.answer': '回答',
|
||
'browser.kindTip': '按内容种类过滤回复:思考、工具调用、回答文本',
|
||
'browser.rowNoMatch': '没有匹配当前过滤条件的行',
|
||
'browser.loading': '正在从更早的会话历史加载完整内容…',
|
||
'browser.notInLog': '会话日志中未找到该条目的完整内容(可能已被压缩或清理)',
|
||
'browser.loadFailed': '内容加载失败,点击重试',
|
||
'tool.desc': '描述',
|
||
'tool.params': '参数',
|
||
'tool.paramsEmpty': '(无参数)',
|
||
'tool.plugin': '该工具的注册插件(仅供参考)',
|
||
'tool.unknown': '未知插件',
|
||
'tool.unknownTitle': '因早于上下文插件加载或原插件已卸载,无法查询该工具的提供者',
|
||
'tool.jsonToggle': '查看原始 JSON',
|
||
'tool.jsonHide': '收起',
|
||
'tool.search': '按名称、描述或参数过滤…',
|
||
'tool.sort.size': '按大小',
|
||
'tool.sort.count': '按次数',
|
||
'tool.sort.name': '按名称',
|
||
'tool.sortTip': '工具排序:按当前步骤中的调用次数(默认)、token 大小或名称',
|
||
'tool.hitsTip': '当前展示步骤的上下文中,该工具被调用并返回结果的次数',
|
||
'tool.noMatch': '没有匹配当前过滤条件的工具',
|
||
'rich.raw': '原文',
|
||
'rich.md': 'Markdown',
|
||
'rich.toMd': '按 Markdown 渲染查看',
|
||
'rich.toRaw': '查看原始文本',
|
||
'rich.copy': '复制原文',
|
||
'rich.copied': '已复制',
|
||
'rich.md.copy': '复制',
|
||
'rich.md.copied': '已复制',
|
||
'rich.md.footnotes': '脚注',
|
||
'rich.find': '在文本中查找',
|
||
'rich.findPlaceholder': '查找…',
|
||
'rich.findPrev': '上一个匹配',
|
||
'rich.findNext': '下一个匹配',
|
||
'rich.findClose': '关闭查找',
|
||
'block.thinking': '思考',
|
||
'block.answer': '回答',
|
||
'block.content': '内容',
|
||
'block.result': '结果',
|
||
'block.summary': '摘要',
|
||
// The zh measure word never inflects, so the singular/plural forms are identical.
|
||
'block.line': '{n} 行',
|
||
'block.lines': '{n} 行',
|
||
'call.ok': '正常',
|
||
'call.fail': '失败',
|
||
'call.exit': 'exit {n}',
|
||
'node.failed': '工具执行失败',
|
||
'attach.title': '附件',
|
||
'attach.other': '其他内容',
|
||
'attach.image': '图片',
|
||
'attach.file': '文件',
|
||
'attach.hint': '点击预览',
|
||
'attach.loading': '…',
|
||
'attach.unavailable': '预览不可用',
|
||
'attach.type': '类型',
|
||
'attach.size': '大小',
|
||
'attach.raw': '原图',
|
||
'attach.sent': '发送',
|
||
'attach.token': 'Token',
|
||
'attach.imageTokensTip': '按 DeepSeek 官方图片尺寸换算(单图上限 384 tokens)估算的 token 消耗',
|
||
'attach.fileTokensTip': '这是一个下限:模型收到的是一个句柄(文件名、大小、摘要前缀,以及副本的读取路径),不会收到文件内容,所以开销几乎不随文件大小变化',
|
||
'ov.title': '上下文洞察',
|
||
'ov.unavailable': '会话列表暂不可用',
|
||
'ov.range.label': '统计范围',
|
||
'ov.range.today': '今天',
|
||
'ov.range.7d': '近 7 天',
|
||
'ov.range.30d': '近 30 天',
|
||
'ov.range.all': '全部',
|
||
'ov.date.label': '日期范围',
|
||
'ov.date.open': '选择自定义日期范围',
|
||
'ov.date.from': '开始日期',
|
||
'ov.date.to': '结束日期',
|
||
'ov.date.pick': '选择日期',
|
||
'ov.date.prev': '上个月',
|
||
'ov.date.next': '下个月',
|
||
'ov.date.hint': '点击选择开始日期',
|
||
'ov.date.hintEnd': '再点一下选择结束日期',
|
||
'ov.date.clear': '清除',
|
||
'ov.date.wd.0': '日',
|
||
'ov.date.wd.1': '一',
|
||
'ov.date.wd.2': '二',
|
||
'ov.date.wd.3': '三',
|
||
'ov.date.wd.4': '四',
|
||
'ov.date.wd.5': '五',
|
||
'ov.date.wd.6': '六',
|
||
'ov.kpi.sessions': '活跃会话',
|
||
'ov.kpi.ofTotal': '共 {n} 个',
|
||
'ov.kpi.tokens': '累计消耗',
|
||
'ov.kpi.sessionsSub': '含 {n} 个会话',
|
||
'ov.kpi.pricedSub': '已计价 {n}/{total} 个会话',
|
||
'ov.kpi.toolSub': '工具执行 {dur}',
|
||
'ov.kpi.wallSub': '模型调用 {n}',
|
||
'ov.stats.empty': '统计范围内暂无 Token 用量',
|
||
'ov.usage.title': '近 7 天用量',
|
||
'ov.usage.tokens': 'Token',
|
||
'ov.usage.cost': '费用(仅含支持计价映射的模型)',
|
||
'ov.usage.costTip': '费用',
|
||
'ov.usage.empty': '近 7 天暂无用量 — 会话产生模型请求后,这里会显示每日 Token 与费用',
|
||
'balance.title': 'DeepSeek 余额',
|
||
'balance.tip.granted': '赠送余额',
|
||
'balance.tip.toppedUp': '充值余额',
|
||
'update.label': '新版本',
|
||
'update.tip': '新版本 {version} 已发布,点击查看更新说明',
|
||
'ov.heat.title': '活跃度',
|
||
'ov.heat.sub': '按日期筛选',
|
||
'ov.heat.empty': '暂无活跃数据 — 会话产生模型请求后,这里会显示每日用量',
|
||
'ov.heat.sessions': '{n} 个活跃会话',
|
||
'ov.heat.less': '少',
|
||
'ov.heat.more': '多',
|
||
'ov.heat.metric': '指标',
|
||
'ov.heat.metric.sessions': '会话',
|
||
'ov.heat.metric.steps': '步数',
|
||
'ov.heat.steps': '{n} 步',
|
||
'ov.heat.wd.1': '星期一',
|
||
'ov.heat.wd.3': '星期三',
|
||
'ov.heat.wd.5': '星期五',
|
||
'ov.heat.mon.01': '1月',
|
||
'ov.heat.mon.02': '2月',
|
||
'ov.heat.mon.03': '3月',
|
||
'ov.heat.mon.04': '4月',
|
||
'ov.heat.mon.05': '5月',
|
||
'ov.heat.mon.06': '6月',
|
||
'ov.heat.mon.07': '7月',
|
||
'ov.heat.mon.08': '8月',
|
||
'ov.heat.mon.09': '9月',
|
||
'ov.heat.mon.10': '10月',
|
||
'ov.heat.mon.11': '11月',
|
||
'ov.heat.mon.12': '12月',
|
||
'ov.skills.empty': '统计范围内暂无技能加载 — 加载技能后,这里会按名称列出次数与最近加载',
|
||
'ov.skills.noMatch': '没有匹配当前筛选的技能',
|
||
'ov.skills.search': '搜索技能…',
|
||
'ov.skills.more': '另有 {n} 个技能',
|
||
'ov.skills.loads': '{n} 次加载',
|
||
'ov.skills.summary': '{skills} 个技能 · {loads} 次加载',
|
||
'ov.skills.sortLabel': '技能排序',
|
||
'ov.skills.sort.loads': '次数',
|
||
'ov.skills.sort.recent': '最近',
|
||
'ov.skills.sessions': '{n} 个会话',
|
||
'ov.skills.clickFilter': '点击筛选加载过它的会话',
|
||
'ov.skills.clickRelease': '再次点击取消筛选',
|
||
'ov.skills.src.project': '项目',
|
||
'ov.skills.src.user': '用户',
|
||
'ov.skills.src.bundled': '内置',
|
||
'ov.skills.k.source': '来源',
|
||
'ov.skills.k.usage': '用量',
|
||
'ov.skills.k.last': '最近',
|
||
'ov.skills.k.path': '路径',
|
||
'ov.skills.copyPath': '点击复制路径',
|
||
'ov.skills.copied': '已复制',
|
||
'ov.list.title': '会话',
|
||
'ov.list.search': '搜索标题 / 目录 / 最后消息…',
|
||
'ov.list.sortLabel': '排序',
|
||
'ov.list.sort.recent': '最近更新',
|
||
'ov.list.sort.tokens': 'Token 总用量',
|
||
'ov.list.sort.context': '当前 Context',
|
||
'ov.list.empty': '还没有会话 — 发起一轮对话后,这里会列出每个会话的上下文画像',
|
||
'ov.list.noMatch': '没有匹配当前筛选条件的会话',
|
||
'ov.list.noData': '暂无上下文数据 — 该会话产生模型请求后才会统计',
|
||
'ov.list.dayFilter': '{day} 当日活跃',
|
||
'ov.list.dayClear': '清除日期筛选',
|
||
'ov.list.skillClear': '清除技能筛选',
|
||
'ov.list.pager': '会话分页',
|
||
'ov.list.page': '第 {n} / {total} 页',
|
||
'ov.list.prev': '上一页',
|
||
'ov.list.next': '下一页',
|
||
'ov.group.label': '分组',
|
||
'ov.group.ungrouped': '未分组',
|
||
'ov.running': '运行中',
|
||
'ov.current': '当前',
|
||
'ov.card.turns': '{n} 轮 {s} 步',
|
||
'ov.card.teamUsage': 'Token 总用量',
|
||
'ov.card.teamCost': '总预估费用',
|
||
'ov.card.lastUser': '最后消息',
|
||
'ov.time.now': '刚刚',
|
||
'ov.time.m': '{n} 分钟前',
|
||
'ov.time.h': '{n} 小时前',
|
||
'ov.time.d': '{n} 天前',
|
||
} satisfies Record<string, string>
|
||
|
||
/** The key union every locale of this plugin must carry in full. */
|
||
export type DictKey = keyof typeof DICT_ZH
|
||
|