Xubin Ren ab9f49970d
feat(desktop): polish desktop shell and shared WebUI surfaces (#4195)
* feat(desktop): add native host scaffold

* feat(webui): track turns and usage in gateway

* feat(webui): polish desktop chat experience

* feat(apps): add ArcGIS and Joplin logos

* feat(desktop): polish shell and shared surfaces

* fix(webui): avoid preview chips for glob references

* test: align CI expectations for token fallback

* feat(webui): preview prompt rail entries

* feat(webui): add prompt navigator drawer

* style(webui): refine prompt navigator placement

* style(webui): align prompt navigator with header actions

* style(webui): simplify prompt navigator header

* refactor(webui): clean thread resource refresh

* feat(desktop): add native reply notifications

* fix(webui): preserve desktop restart and replay state

* fix(desktop): harden gateway proxy startup

* fix(web): fall back when readability is unavailable

* fix(desktop): hide window instead of closing on macos

* fix(webui): unify desktop header actions

* fix(webui): simplify prompt history rows

* fix(desktop): log notification delivery failures

* chore(desktop): clean source package artifacts

* fix(cron): support one-time relative reminders

* fix(webui): reveal scroll button in place

* Revert "fix(cron): support one-time relative reminders"

This reverts commit 4c4661da120a3c7283e0768412bae48604e7390b.

* refactor(webui): extract token usage heatmap

* docs(desktop): clarify contributor guides

---------

Co-authored-by: chengyongru <2755839590@qq.com>
2026-06-06 19:49:33 +08:00

867 lines
32 KiB
JSON
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.

{
"app": {
"brand": "nanobot",
"loading": {
"connecting": "正在连接 nanobot…",
"boot": "正在加载 nanobot…"
},
"error": {
"title": "无法连接到 nanobot",
"gatewayHint": "请确认 gateway 已启动(`nanobot gateway`),并且当前页面与 gateway 运行在同一台机器上。"
},
"auth": {
"title": "需要验证",
"hint": "请输入 gateway 配置中的 tokenIssueSecret。",
"placeholder": "密码",
"submit": "连接",
"invalid": "密码无效,请重试。"
},
"account": {
"section": "账户",
"logoutHint": "断开此浏览器与 gateway 的连接。",
"logout": "退出登录"
},
"system": {
"section": "系统",
"restartHint": "重启 nanobot 以应用运行时更改。",
"restart": "重启 nanobot",
"restarting": "正在重启...",
"restartEngine": "重启引擎",
"restartingEngine": "正在重启引擎..."
},
"restart": {
"completed": "重启已完成,用时 {{seconds}} 秒。"
},
"documentTitle": {
"base": "nanobot",
"chat": "{{title}} · nanobot"
},
"meta": {
"description": "nanobot Web UI —— 与你的 nanobot 工作区对话。"
}
},
"sidebar": {
"navigation": "侧边栏导航",
"collapse": "收起侧边栏",
"newChat": "新建对话",
"searchAria": "搜索",
"searchPlaceholder": "搜索",
"searchResults": "搜索结果",
"noSearchResults": "没有匹配的会话。",
"recent": "最近对话",
"settings": "设置",
"language": {
"label": "语言",
"ariaLabel": "切换语言"
},
"apps": "应用",
"skills": {
"title": "技能"
}
},
"settings": {
"backToChat": "返回聊天",
"sidebar": {
"title": "设置",
"ariaLabel": "设置分区"
},
"nav": {
"general": "通用",
"byok": "BYOK",
"overview": "概览",
"appearance": "外观",
"models": "模型",
"providers": "提供商",
"image": "图片",
"browser": "网页",
"cliApps": "CLI 应用",
"mcp": "MCP",
"runtime": "系统",
"advanced": "安全",
"apps": "应用",
"skills": "技能"
},
"sections": {
"interface": "界面",
"ai": "AI",
"system": "系统",
"status": "状态",
"localPreferences": "本地偏好",
"presets": "预设",
"imageGeneration": "图片生成",
"imageDefaults": "默认值",
"webSearch": "网页搜索",
"webBehavior": "行为",
"cliApps": "CLI 应用",
"mcp": "MCP 服务",
"identity": "身份",
"webuiSafety": "WebUI 安全",
"capabilities": "能力",
"apps": "应用",
"nativeHost": "原生宿主",
"hostSafety": "应用安全"
},
"models": {
"selectModel": "选择模型",
"addConfiguration": "添加配置",
"newConfiguration": "新建模型配置",
"newConfigurationHelp": "把提供商和模型保存成一键选项。",
"configurationName": "配置名称",
"configurationNameHelp": "重命名这个已保存的模型配置。",
"configurationNamePlaceholder": "快速写作",
"searchModels": "搜索或输入模型 ID",
"useCustomModel": "使用",
"loadingModels": "正在加载模型...",
"searchCatalog": "搜索提供商目录来选择模型。",
"modelsAvailable": "可用",
"noModelResults": "没有匹配的模型。",
"loadFailed": "模型列表不可用。",
"unsupportedModelList": "手动输入模型 ID。",
"providerNotConfigured": "加载模型前请先配置此提供商。",
"autoProviderCustomOnly": "自动提供商模式使用自定义模型 ID。"
},
"rows": {
"theme": "主题",
"language": "语言",
"provider": "提供商",
"model": "模型",
"restart": "重启 nanobot",
"configPath": "配置路径",
"activePreset": "当前预设",
"gateway": "网关",
"restartState": "重启状态",
"pendingChanges": "待应用更改",
"currentModel": "当前配置",
"selectedPreset": "选中的预设",
"presetModel": "预设模型",
"density": "密度",
"activityMode": "活动详情",
"codeWrap": "代码换行",
"brandLogos": "品牌 Logo",
"maxResults": "最大结果数",
"timeout": "超时",
"jinaReader": "Jina 阅读器",
"imageGeneration": "图片生成",
"imageProvider": "图片提供商",
"imageProviderStatus": "提供商状态",
"imageProviderBase": "提供商地址",
"imageModel": "图片模型",
"defaultAspectRatio": "默认比例",
"defaultImageSize": "默认尺寸",
"maxImagesPerTurn": "每轮最大图片数",
"imageSaveDir": "保存目录",
"botName": "Bot 名称",
"botIcon": "Bot 图标",
"timezone": "时区",
"workspacePath": "默认工作区",
"localServiceAccess": "本机服务",
"webuiDefaultAccess": "默认权限",
"cliAppsCatalog": "目录",
"cliAppsFilter": "筛选",
"engine": "引擎",
"logs": "日志",
"diagnostics": "诊断",
"contextWindow": "上下文窗口"
},
"help": {
"theme": "在浅色和深色外观之间切换。",
"language": "选择 WebUI 使用的语言。",
"provider": "选择处理新模型请求的提供商。",
"model": "设置 nanobot 默认使用的模型名称。",
"configPath": "当前网关正在使用的配置文件。",
"currentModel": "用于新的回复。",
"selectedModelProvider": "由选中的模型决定。",
"selectedModelValue": "由选中的模型决定。",
"selectedPreset": "命名预设在这里只读;请在 config.json 中编辑。",
"presetModel": "切回 Default 后可在 WebUI 中编辑模型和提供商。",
"density": "只保存在此浏览器中。",
"activityMode": "选择默认显示多少 agent 活动细节。",
"codeWrap": "让长代码行在小屏幕上也易读。",
"brandLogos": "在设置中显示第三方提供商和 CLI 图标。",
"maxResults": "每次 web_search 调用返回的结果数。",
"timeout": "搜索提供商请求超时前的秒数。",
"jinaReader": "可用时为 web_fetch 使用 Jina Reader。",
"imageGeneration": "配置图片提供商后,在聊天中开放 generate_image。",
"imageProvider": "选择 generate_image 使用的注册提供商。",
"imageProviderStatus": "图片生成会复用「提供商」里的凭据。",
"imageModel": "发送给所选图片提供商的模型名称。",
"defaultAspectRatio": "当提示词没有指定比例时使用。",
"defaultImageSize": "发送给支持此选项的提供商的尺寸提示。",
"maxImagesPerTurn": "单次 generate_image 请求可生成的图片上限。",
"botName": "显示在 nanobot 使用展示名称的地方。",
"botIcon": "显示在 Bot 名称旁的短 emoji 或文字。",
"timezone": "用于日程和需要时间感知的回复。",
"cliAppsCatalog": "只安装 nanobot 可本地运行的应用 CLI 适配器;不会改动原生应用。",
"cliAppsFilter": "按应用、类别或能力搜索。",
"localServiceAccess": "允许完全访问权限下的 shell 命令访问 localhost 服务。",
"webuiDefaultAccess": "用于没有单独项目权限的 Web 聊天。",
"securityManagedControls": "网页抓取始终保护本机、内网和元数据服务。核心渠道安全仍由 config.json 管理。",
"logs": "打开原生引擎日志文件夹。",
"diagnostics": "导出一份用于支持排查的小型运行报告。",
"localServiceAccessNative": "允许完全访问权限下的 shell 命令访问这台 Mac 上的服务。",
"webuiDefaultAccessNative": "用于没有单独项目权限的原生聊天。",
"contextWindow": "选择此模型配置的默认上下文预算。"
},
"timezone": {
"select": "选择时区",
"search": "搜索时区",
"empty": "没有匹配的时区。"
},
"cliApps": {
"allCategories": "全部分类",
"availableCount": "{{count}} 个应用",
"installedCount": "已安装 {{count}} 个 CLI",
"summary": "CLI 已安装 {{installed}} / {{total}}",
"filterAll": "全部",
"filterInstalled": "已装 CLI",
"filterNotInstalled": "未装 CLI",
"searchPlaceholder": "搜索 CLI",
"loading": "正在加载 CLI 应用...",
"empty": "没有匹配的 CLI 应用。",
"statusInstalled": "CLI 已安装",
"statusMissing": "缺失",
"statusAvailable": "可用",
"statusUnsupported": "暂不支持",
"statusNotInstalled": "CLI 未安装",
"requires": "依赖",
"test": "测试 CLI",
"update": "更新 CLI",
"uninstall": "卸载 CLI",
"install": "安装 CLI",
"readyTitle": "@{{name}} 已就绪",
"readyStatus": "就绪",
"readyTry": "试试 @{{name}}",
"readyCopied": "已复制",
"readyPrompt": "用 @{{name}} 看看这个 CLI 能做什么。",
"openChat": "回到对话",
"unsupported": "暂不支持",
"unavailable": "不可用",
"noDescription": "暂无描述。"
},
"mcp": {
"allCategories": "全部分类",
"summary": "已启用 {{installed}} / {{total}} 个预设",
"filterAll": "全部",
"filterInstalled": "已启用",
"filterNotInstalled": "未启用",
"searchPlaceholder": "搜索 MCP 预设",
"moreOptions": "更多 MCP 选项",
"moreOptionsSubtitle": "添加自定义服务,或导入 mcp.json。",
"customTitle": "自定义 MCP",
"customSubtitle": "添加任意 stdio、HTTP 或 SSE MCP 服务。",
"customAction": "自定义",
"importAction": "导入",
"serverName": "服务名",
"serverUrl": "URL",
"transport": "传输方式",
"command": "命令",
"args": "Args JSON",
"headers": "Headers JSON",
"env": "Env JSON",
"timeout": "工具超时",
"advancedOptions": "高级选项",
"hideAdvanced": "收起高级",
"saveCustom": "保存 MCP",
"configImport": "导入 mcp.json",
"importConfig": "导入",
"restartRequired": "重启 nanobot 以连接更新后的 MCP 工具。",
"toolsFound": "{{count}} 个工具",
"loading": "正在加载 MCP 预设...",
"empty": "没有匹配的 MCP 预设。",
"openDocs": "打开文档",
"test": "测试",
"remove": "移除",
"enable": "启用",
"enabled": "已启用",
"setup": "连接",
"configure": "连接",
"connectTitle": "连接 {{name}}",
"connectHint": "填入你账户里的 key。",
"saveAndEnable": "保存并启用",
"updateSetup": "更新配置",
"configured": "已配置",
"keepExisting": "留空则保留当前值",
"statusConfigured": "已配置",
"statusMissingCredentials": "需要 key",
"statusMissingDependency": "缺少依赖",
"statusComingSoon": "暂不支持",
"statusNotInstalled": "未启用",
"toolScope": "工具",
"allTools": "全部",
"noTools": "不暴露",
"testForTools": "运行测试后,可以查看并选择单个工具。"
},
"values": {
"light": "浅色",
"dark": "深色",
"notAvailable": "不可用",
"enabled": "已启用",
"disabled": "已禁用",
"restartPending": "等待重启",
"ready": "就绪",
"privateEngine": "私有引擎",
"unixSocket": "Unix socket",
"defaultWorkspace": "默认工作区",
"comfortable": "舒适",
"compact": "紧凑",
"auto": "自动",
"expanded": "展开",
"on": "开启",
"off": "关闭",
"defaultPermission": "默认权限",
"fullAccess": "完全访问权限",
"configured": "已配置",
"notConfigured": "未配置",
"pending": "等待中",
"restartingEngine": "正在重启"
},
"status": {
"loading": "正在加载设置...",
"loadError": "无法加载设置",
"unsaved": "有未保存的更改。",
"upToDate": "已是最新。",
"savedRestart": "已保存。重启 nanobot 后生效。",
"restartAfterSaving": "保存更改后,在合适时重启。",
"savedRestartApply": "已保存。准备好后重启。",
"imageProviderRestart": "图片提供商更改已保存。准备好后重启。",
"hostRestartAfterSaving": "保存后 nanobot 会重启引擎。",
"hostRestartPending": "已保存。准备好后会重启引擎。",
"hostApiUnavailable": "宿主操作仅在原生应用中可用。",
"logsOpened": "已打开日志文件夹。",
"logsOpenFailed": "无法打开日志文件夹。",
"diagnosticsExported": "诊断已导出到 {{path}}。",
"diagnosticsExportFailed": "无法导出诊断。"
},
"actions": {
"save": "保存",
"saving": "正在保存",
"edit": "编辑",
"cancel": "取消",
"open": "打开",
"export": "导出",
"opening": "正在打开...",
"exporting": "正在导出..."
},
"byok": {
"description": "自带服务商密钥。Nanobot 会从当前 config 读取这些值,只有已配置的服务商才能在通用设置里选择。",
"configured": "已配置",
"notConfigured": "未配置",
"configuredSection": "已配置",
"notConfiguredSection": "未配置",
"showMore": "再显示 {{count}} 个",
"showLess": "收起",
"apiKey": "API key",
"apiBase": "API base",
"apiKeyPlaceholder": "输入 API key",
"apiKeyConfiguredPlaceholder": "留空则保留当前 key",
"configuredKeyHint": "已配置的 key",
"apiBasePlaceholder": "使用服务商默认地址",
"apiKeyRequired": "需要 API key 才能配置此服务商。",
"showApiKey": "显示 API key",
"hideApiKey": "隐藏 API key",
"noConfiguredProviders": "没有已配置的服务商",
"configureFirst": "请先在 BYOK 里配置服务商。",
"openByok": "打开 BYOK",
"tabs": {
"ariaLabel": "BYOK 凭证类型",
"llm": "LLM",
"webSearch": "网页搜索"
},
"webSearch": {
"provider": "搜索服务商",
"providerHelp": "选择网页搜索工具使用的后端。",
"selectProvider": "选择服务商",
"credentials": "凭证",
"noCredentialRequired": "无需 key",
"noCredentialHelp": "DuckDuckGo 不需要保存 API key。",
"apiKeyHelp": "保存到 config 后只显示掩码提示。",
"baseUrl": "Base URL",
"baseUrlHelp": "SearXNG 需要你自己的实例地址。",
"baseUrlPlaceholder": "https://search.example.com",
"apiKeyRequired": "这个搜索服务商需要 API key。",
"baseUrlRequired": "SearXNG 需要 Base URL。",
"missingCredential": "填写所需凭证后才能保存。",
"saveHint": "改动会应用到新的网页搜索请求。"
}
},
"overview": {
"model": "当前模型",
"providers": "提供商",
"configuredCount": "已配置 {{count}} 个",
"totalProviders": "共 {{count}} 个可用",
"webSearch": "网页搜索",
"imageGeneration": "图片生成",
"workspace": "工作区"
},
"usage": {
"title": "Token 活动",
"shortTitle": "Token Usage",
"subtitle": "最近 12 个月由提供商上报的 token 用量。",
"empty": "新的模型回复产生后,这里会显示 token 活动。",
"totalTokens": "累计 Token 数",
"peakTokens": "峰值 Token 数",
"thirtyDayTokens": "30 天 Token 数",
"currentStreak": "当前连续天数",
"longestStreak": "最长连续天数",
"daysValue": "{{count}} 天",
"last30": "30 天",
"activeDays": "活跃天数",
"requests": "请求数",
"estimated": "估算",
"includesEstimates": "包含估算",
"cellTitle": "{{date}}{{tokens}} tokens{{requests}} 次请求",
"sources": {
"user": "对话",
"api": "API",
"cron": "自动任务",
"dream": "记忆整理",
"system": "系统"
}
},
"providers": {
"searchPlaceholder": "搜索提供商",
"noMatches": "没有匹配的提供商。",
"saveProvider": "保存提供商"
},
"legal": {
"thirdPartyBrands": "产品名称、Logo 和品牌归各自所有者所有;此处仅用于识别,不代表背书或合作。"
},
"image": {
"selectProvider": "选择提供商",
"selectAspect": "选择比例",
"selectSize": "选择尺寸",
"configureProvider": "配置提供商",
"missingCredential": "启用图片生成前请先配置此提供商。"
},
"apps": {
"description": "添加 nanobot 可在聊天中使用的 App CLI 和 MCP 服务。",
"cliLabel": "CLI",
"mcpLabel": "MCP",
"filterAll": "全部",
"filterCli": "CLI 应用",
"filterMcp": "MCP 服务",
"enabledSummary": "已启用 {{count}} 个",
"caption": "{{cli}} 个 CLI · {{mcp}} 个 MCP",
"searchPlaceholder": "搜索应用",
"featured": "精选",
"loading": "正在加载应用...",
"empty": "没有匹配的应用。"
},
"oauth": {
"authentication": "OAuth 认证",
"signIn": "登录",
"signingIn": "登录中...",
"signInAgain": "重新登录",
"signOut": "退出登录",
"signedInAs": "已登录为 {{account}}",
"signInHelp": "从这台设备登录;不会在配置中保存 API key。",
"signInRequired": "需要登录",
"signInBeforeSaving": "将此 OAuth 提供商设为当前模型提供商前,请先登录。",
"signedIn": "已登录",
"notSignedIn": "未登录"
},
"skills": {
"description": "查看此 agent 在对话中可以加载的指令技能。",
"caption": "{{available}} 个可用 · 共 {{total}} 个",
"featured": "Agent 技能",
"empty": "暂无可用技能。",
"sourceWorkspace": "自定义",
"sourceBuiltin": "内置",
"statusAvailable": "可用",
"statusUnavailable": "不可用",
"unavailableReason": "缺少:{{reason}}",
"openDetails": "查看 {{name}} 详情",
"loadingDetail": "正在加载技能详情...",
"loadFailed": "无法加载技能详情。",
"descriptionTitle": "完整描述",
"source": "来源",
"status": "状态",
"requirements": "需求",
"noRequirements": "没有显式需求。",
"commands": "命令",
"environment": "环境变量",
"missingCommands": "缺 CLI",
"missingEnvironment": "缺 ENV",
"unavailableReasonLabel": "不可用原因",
"rawInstructions": "原始 SKILL.md",
"rawInstructionsEmpty": "没有原始说明。",
"detailDescription": "{{name}} 的详情。"
}
},
"chat": {
"fallbackTitle": "对话 {{id}}",
"loading": "加载中…",
"noSessions": "还没有会话。",
"showMore": "再显示 {{count}} 个",
"collapsed": "已折叠 {{count}} 个对话",
"showLess": "收起",
"actions": "“{{title}}” 的会话操作",
"newInProject": "在 {{project}} 中开始新对话",
"activity": {
"running": "Agent 正在运行",
"complete": "Agent 已完成"
},
"pin": "置顶",
"unpin": "取消置顶",
"rename": "重命名",
"renameTitle": "重命名对话",
"renameDescription": "为这个对话设置一个仅用于 WebUI 侧边栏的名称。",
"renamePlaceholder": "对话名称",
"renameProjectTitle": "重命名项目",
"renameProjectDescription": "为这个项目设置一个仅用于 WebUI 侧边栏的名称。",
"renameProjectPlaceholder": "项目名称",
"renameSave": "保存",
"archive": "归档",
"unarchive": "取消归档",
"showArchived": "显示归档",
"hideArchived": "隐藏归档",
"delete": "删除",
"newChat": "新建对话",
"groups": {
"pinned": "置顶",
"all": "对话",
"projects": "项目",
"today": "今天",
"yesterday": "昨天",
"earlier": "更早",
"archived": "已归档"
}
},
"deleteConfirm": {
"title": "删除这个对话?",
"description": "此操作无法撤销。",
"cancel": "取消",
"confirm": "删除"
},
"connection": {
"idle": "空闲",
"connecting": "连接中…",
"open": "已连接",
"reconnecting": "重连中…",
"closed": "已断开",
"error": "连接出错"
},
"thread": {
"loadingConversation": "正在加载对话…",
"empty": {
"greetings": {
"workOn": "我们要一起做点什么?",
"start": "今天从哪里开始?",
"build": "今天一起构建什么?",
"tackle": "我们要一起解决什么?"
},
"quickActions": {
"plan": {
"title": "创建项目计划",
"prompt": "帮我为接下来要做的事情写一份简洁的项目计划。"
},
"analyze": {
"title": "分析这些数据",
"prompt": "帮我分析这些数据,并指出最重要的模式。"
},
"brainstorm": {
"title": "头脑风暴想法",
"prompt": "围绕这个问题头脑风暴几个实用方案,并说明取舍。"
},
"code": {
"title": "编写代码",
"prompt": "帮我为这个任务写代码,先从最小可用改动开始。"
},
"summarize": {
"title": "总结这份文档",
"prompt": "帮我总结这份文档,并列出关键要点。"
},
"more": {
"title": "更多",
"prompt": "展示几个你在这个工作区里可以帮我的实用方式。"
}
},
"imageQuickActions": {
"icon": {
"title": "设计应用图标",
"prompt": "生成一个干净的 1:1 nanobot 应用图标:友好的机器人,简洁矢量风格,蓝白柔和配色,不要文字。"
},
"sticker": {
"title": "制作贴纸",
"prompt": "生成一张可爱的贴纸风小机器人助手图片,背景像透明贴纸,表情活泼有趣。"
},
"poster": {
"title": "创建海报",
"prompt": "生成一张个人 AI 助手的精致海报概念图,现代构图,视觉层级清晰,适合落地页展示。"
},
"product": {
"title": "产品样机",
"prompt": "生成一张对话式 AI Web 应用的干净产品样机图,极简界面,高级光影,真实设备边框。"
},
"portrait": {
"title": "风格化头像",
"prompt": "生成一个友好的 AI 伙伴风格化头像,柔和光线,细节丰富但亲切,现代插画风格。"
},
"edit": {
"title": "编辑图片",
"prompt": "帮我编辑一张图片。先让我上传或指定要编辑的图片,然后生成编辑后的结果。"
}
}
},
"header": {
"toggleSidebar": "切换侧边栏",
"newChat": "从顶部新建对话",
"toggleTheme": "从顶部切换主题",
"settings": "打开设置",
"sessionInfo": "会话详情"
},
"sessionInfo": {
"title": "会话",
"untitled": "未命名对话",
"automations": "自动任务",
"count": "{{count}}",
"loading": "正在加载自动任务...",
"loadFailed": "无法加载自动任务。",
"empty": "这个会话暂时没有自动任务。",
"disabled": "已关闭",
"schedule": {
"at": "{{time}}",
"every": "每 {{duration}}",
"cron": "Cron {{expr}}",
"cronWithTz": "Cron {{expr}} · {{tz}}",
"unknown": "自定义计划"
},
"next": {
"label": "下次 {{time}}",
"disabled": "已暂停",
"none": "没有下次运行"
}
},
"composer": {
"placeholderThread": "输入消息…",
"placeholderHero": "问任何问题...",
"placeholderOpening": "正在打开新对话…",
"placeholderStreaming": "模型正在回复…",
"inputAria": "消息输入框",
"sendHint": "Enter 发送 · Shift+Enter 换行",
"runRuntimeTitle": "运行中 · {{elapsed}}",
"goalStateStrip": "目标 · {{label}}",
"goalStateFallback": "目标",
"goalStateExpandAria": "查看完整目标",
"goalStateSheetTitle": "目标",
"send": "发送消息",
"stop": "停止响应",
"modelNotConfigured": "模型未配置",
"configureModel": "配置模型",
"queued": {
"label": "待引导提示",
"guide": "引导",
"delete": "删除引导",
"edit": "编辑引导",
"drag": "拖动排序"
},
"attachImage": "添加图片",
"imageMode": {
"label": "图片生成",
"toggle": "切换图片生成模式",
"placeholder": "描述或编辑图片…",
"aspectAria": "图片画幅",
"aspectLabel": "图片画幅",
"aspect": {
"auto": "自动",
"1_1": "方形 1:1",
"3_4": "竖版 3:4",
"9_16": "故事版 9:16",
"4_3": "横版 4:3",
"16_9": "宽屏 16:9"
}
},
"tools": {
"search": "搜索",
"reason": "推理",
"deepResearch": "深度研究",
"voice": "语音输入"
},
"slash": {
"ariaLabel": "斜杠命令",
"label": "命令",
"navigateHint": "↑↓ 选择",
"selectHint": "Enter/Tab 填入",
"closeHint": "Esc 关闭",
"badges": {
"current": "当前",
"recent": "最近"
},
"details": {
"goalActive": "目标正在运行",
"goalReady": "开始一个持续目标",
"history": "查看最近消息",
"stopRunning": "正在运行"
},
"commands": {
"new": {
"title": "新建对话",
"description": "停止当前任务,并开始一个新的对话。"
},
"stop": {
"title": "停止当前任务",
"description": "取消这个对话中正在运行的 agent 回合。"
},
"restart": {
"title": "重启 nanobot",
"description": "原地重启 bot 进程。"
},
"status": {
"title": "查看状态",
"description": "显示运行时、服务商和通道状态。"
},
"model": {
"title": "模型",
"description": "查看或切换当前模型预设。"
},
"history": {
"title": "查看对话历史",
"description": "打印最近 N 条已持久化的对话消息。"
},
"dream": {
"title": "运行 Dream",
"description": "手动触发记忆整理。"
},
"dream_log": {
"title": "查看 Dream 日志",
"description": "查看上一次 Dream 整理改变了什么。"
},
"dream_restore": {
"title": "恢复记忆",
"description": "将记忆恢复到之前的 Dream 快照。"
},
"goal": {
"title": "长期目标",
"description": "让助手把当前请求当作需要多步骤持续推进的目标。"
},
"help": {
"title": "查看帮助",
"description": "列出可用的斜杠命令。"
},
"pairing": {
"title": "配对",
"description": "管理配对请求。"
}
}
},
"mentions": {
"ariaLabel": "应用",
"label": "应用",
"cliGroup": "CLI 应用",
"mcpGroup": "MCP 服务",
"cliBadge": "CLI",
"mcpBadge": "MCP",
"cliDescription": "使用 @{{name}} 调用本地 CLI",
"mcpDescription": "使用 @{{name}} 调用 MCP 服务"
},
"encoding": "处理中…",
"remove": "移除附件",
"normalizedSizeHint": "{{orig}} → {{current}}(已自动压缩)",
"imageRejected": {
"unsupported_type": "不支持的文件类型",
"too_many_images": "每条消息最多 {{max}} 张图片",
"magic_mismatch": "文件看起来不像真实的图片",
"decode_failed": "无法解码这张图片",
"too_large": "图片太大,请换一张小一点的",
"io": "无法读取该文件"
},
"goalStateCloseAria": "关闭目标",
"workspace": {
"accessAria": "工作区访问权限",
"projectAria": "选择项目",
"projectPlaceholder": "选择项目",
"default": "默认权限",
"full": "完全访问权限"
}
},
"scrollToBottom": "滚动到底部",
"loadEarlier": "加载更早消息",
"promptNavigator": {
"open": "打开输入导航",
"title": "输入列表",
"search": "搜索输入",
"noResults": "没有匹配的输入。",
"jumpTo": "跳转到输入:{{label}}"
}
},
"message": {
"streaming": "流式输出中",
"assistantTyping": "助手正在输入",
"toolSingle": "正在使用工具",
"toolMany": "已使用 {{count}} 个工具",
"toolSummary": "{{count}} 个工具",
"toolSummaryMany": "{{count}} 个工具",
"reasoningTools": "推理 · {{count}} 个工具",
"reasoningToolsSingular": "推理 · 1 个工具",
"reasoning": "思考过程",
"reasoningStreaming": "正在思考…",
"reasoningSummary": "推理",
"agentActivitySummary": "{{reasoning}} 步 · {{tools}} 次工具调用",
"agentActivityToolsOnly": "{{tools}} 次工具调用",
"agentActivityLiveSummary": "进行中… · {{reasoning}} 步 · {{tools}} 次工具调用",
"agentActivityLiveToolsOnly": "进行中… · {{tools}} 次工具调用",
"activityThinkingFor": "思考中 {{duration}}",
"activityThought": "已思考",
"activityThoughtFor": "思考了 {{duration}}",
"cliActivityRunningOne": "正在使用 @{{name}}",
"cliActivityRanOne": "已使用 @{{name}}",
"cliActivityFailedOne": "使用 @{{name}} 失败",
"cliActivityRunningMany": "正在使用 {{count}} 个 CLI 应用",
"cliActivityRanMany": "已使用 {{count}} 个 CLI 应用",
"cliActivityFailedMany": "{{count}} 个 CLI 应用失败",
"cliRunRunning": "正在使用",
"cliRunRan": "已使用",
"cliRunFailed": "失败",
"imageAttachment": "图片附件",
"automationSourceFallback": "自动化",
"automationTriggered": "自动触发",
"copyReply": "复制回复",
"copiedReply": "已复制回复",
"turnLatencyTitle": "本轮耗时(端到端)"
},
"lightbox": {
"title": "图片预览",
"open": "查看图片",
"prev": "上一张",
"next": "下一张",
"close": "关闭预览"
},
"filePreview": {
"aria": "文件预览",
"close": "关闭文件预览",
"loading": "正在加载预览...",
"failed": "无法预览这个文件。",
"routeMissing": "文件预览需要最新的 gateway。请重启 nanobot gateway 后再试。",
"resize": "调整文件预览宽度",
"truncated": "文件较大,当前只显示前半部分预览。"
},
"code": {
"fallbackLanguage": "代码",
"copyAria": "复制代码",
"copy": "复制",
"copied": "已复制"
},
"common": {
"dismiss": "关闭"
},
"errors": {
"messageTooBig": {
"title": "消息过大",
"body": "服务端因超过大小限制拒收了上一条消息。可移除部分图片或使用更小的图片后重试。"
},
"workspaceScopeRejected": {
"title": "工作区未更改",
"body": "网关拒绝了请求的项目或访问权限Nanobot 已继续使用之前的工作区。"
}
},
"workspace": {
"dialog": {
"defaultProject": "默认工作区",
"manual": "粘贴路径",
"manualPlaceholder": "/Users/name/project",
"usePath": "使用路径",
"absolutePathRequired": "请输入这台机器上的绝对文件夹路径。"
}
}
}