673 lines
41 KiB
TypeScript
673 lines
41 KiB
TypeScript
|
|
import type { Messages } from '../types';
|
|||
|
|
|
|||
|
|
export const zhCNAiMessages: Messages = {
|
|||
|
|
// AI Settings
|
|||
|
|
'ai.agentSettings': 'Agent 设置',
|
|||
|
|
'ai.chat.preparing': '准备中…',
|
|||
|
|
'ai.chat.compactingContext': '正在压缩较早的上下文…',
|
|||
|
|
'ai.chat.compactingStep': '正在为下一步整理上下文…',
|
|||
|
|
'ai.chat.compactionRetry': '请求过大,正在压缩上下文并重试…',
|
|||
|
|
'ai.chat.compactionBanner': '上下文已压缩:{before}K → {after}K tokens',
|
|||
|
|
'ai.chat.contextUsage': '上下文使用:{used} / {max} tokens',
|
|||
|
|
'ai.chat.activity.title': 'Agent 活动',
|
|||
|
|
'ai.chat.activity.plan': '计划',
|
|||
|
|
'ai.chat.activity.webSearch': '网页搜索',
|
|||
|
|
'ai.chat.activity.fileChanges': '文件变更',
|
|||
|
|
'ai.chat.activity.status.running': '进行中',
|
|||
|
|
'ai.chat.activity.status.completed': '已完成',
|
|||
|
|
'ai.chat.activity.status.failed': '失败',
|
|||
|
|
'ai.chat.activity.file.add': '新增',
|
|||
|
|
'ai.chat.activity.file.update': '修改',
|
|||
|
|
'ai.chat.activity.file.delete': '删除',
|
|||
|
|
'ai.chat.activity.usage': 'Token',
|
|||
|
|
'ai.chat.activity.usage.input': '输入',
|
|||
|
|
'ai.chat.activity.usage.output': '输出',
|
|||
|
|
'ai.chat.activity.usage.cached': '缓存',
|
|||
|
|
'ai.chat.activity.usage.reasoning': '推理',
|
|||
|
|
'ai.title': 'AI',
|
|||
|
|
'ai.description': '配置 AI 提供商、Agent 和安全设置',
|
|||
|
|
'ai.providers': '提供商',
|
|||
|
|
'ai.agents': 'Agent',
|
|||
|
|
'ai.providers.empty': '尚未配置提供商。添加一个提供商以开始使用。',
|
|||
|
|
'ai.providers.add': '添加提供商',
|
|||
|
|
'ai.providers.active': '活跃',
|
|||
|
|
'ai.providers.apiKeyConfigured': 'API Key 已配置',
|
|||
|
|
'ai.providers.noApiKey': '未设置 API Key',
|
|||
|
|
'ai.providers.configure': '配置',
|
|||
|
|
'ai.providers.remove': '移除',
|
|||
|
|
'ai.providers.name': '显示名称',
|
|||
|
|
'ai.providers.name.placeholder': '例如 我的提供商',
|
|||
|
|
'ai.providers.style': '协议风格',
|
|||
|
|
'ai.providers.style.anthropic': 'Anthropic 兼容',
|
|||
|
|
'ai.providers.style.openai': 'OpenAI 兼容',
|
|||
|
|
'ai.providers.style.google': 'Google 兼容',
|
|||
|
|
'ai.providers.style.inherited': '默认',
|
|||
|
|
'ai.providers.style.help': '决定请求使用哪种 API 格式。当第三方端点的协议与其提供商类型不一致时,可手动覆盖。',
|
|||
|
|
'ai.providers.openaiApi': 'OpenAI 请求格式',
|
|||
|
|
'ai.providers.openaiApi.chat': 'Chat Completions',
|
|||
|
|
'ai.providers.openaiApi.responses': 'Responses',
|
|||
|
|
'ai.providers.openaiApi.help': '默认 Chat Completions,兼容大多数 OpenAI 兼容接口。部分中转站在 Responses(/v1/responses)上缓存命中率更高。',
|
|||
|
|
'ai.providers.icon.change': '修改图标',
|
|||
|
|
'ai.providers.icon.upload': '上传图片',
|
|||
|
|
'ai.providers.icon.reset': '恢复默认',
|
|||
|
|
'ai.providers.icon.close': '收起',
|
|||
|
|
'ai.providers.icon.uploadedNote': '自定义图标(64×64 WebP)',
|
|||
|
|
'ai.providers.icon.errorType': '请选择图片文件。',
|
|||
|
|
'ai.providers.apiKey': 'API Key',
|
|||
|
|
'ai.providers.apiKey.placeholder': '输入 API Key',
|
|||
|
|
'ai.providers.apiKey.decrypting': '解密中...',
|
|||
|
|
'ai.providers.baseUrl': 'Base URL',
|
|||
|
|
'ai.providers.baseUrl.anthropicHelp': 'Anthropic 兼容:可填不带或带 /v1 的主机(例如 https://gateway.example 或 https://gateway.example/v1)。检测与聊天都会请求 /v1/models、/v1/messages。',
|
|||
|
|
'ai.providers.baseUrl.ollamaHelp': '本地 Ollama:http://localhost:11434/v1(无需 API Key)。Ollama Cloud:https://ollama.com/v1,并填写 Cloud API Key。',
|
|||
|
|
'ai.providers.skipTLSVerify': '跳过 TLS 证书验证(用于自签名证书)',
|
|||
|
|
'ai.providers.defaultModel': '默认模型',
|
|||
|
|
'ai.providers.defaultModel.placeholder': '例如 gpt-4o, claude-sonnet-4-20250514',
|
|||
|
|
'ai.providers.contextWindow': '上下文窗口',
|
|||
|
|
'ai.providers.contextWindow.placeholder': '例如 128000',
|
|||
|
|
'ai.providers.contextWindow.help': '留空时优先使用模型列表返回的值;如果没有,NetMesh 会使用安全默认值。',
|
|||
|
|
'ai.providers.contextWindow.error': '请输入正整数,或留空。',
|
|||
|
|
'ai.providers.refreshModels': '刷新模型列表',
|
|||
|
|
'ai.providers.test': '检测',
|
|||
|
|
'ai.providers.test.testing': '检测中…',
|
|||
|
|
'ai.providers.test.ok': '连接正常({latency} ms)',
|
|||
|
|
'ai.providers.test.warn': '已连通,但响应不完整({latency} ms)',
|
|||
|
|
'ai.providers.test.warnSlow': '已连通,但较慢({latency} ms)',
|
|||
|
|
'ai.providers.test.error': '检测失败({detail})',
|
|||
|
|
'ai.providers.test.missingBaseUrl': '请先填写 Base URL',
|
|||
|
|
'ai.providers.test.missingApiKey': '请先填写 API Key',
|
|||
|
|
'ai.providers.test.unavailable': '当前环境无法进行连接检测',
|
|||
|
|
'ai.providers.searchModel': '搜索或输入模型 ID...',
|
|||
|
|
'ai.providers.filterModels': '筛选模型...',
|
|||
|
|
'ai.providers.loadingModels': '加载模型中...',
|
|||
|
|
'ai.providers.noMatchingModels': '没有匹配的模型',
|
|||
|
|
'ai.providers.clickToLoadModels': '点击加载模型',
|
|||
|
|
'ai.providers.showingModels': '显示前 100 个,共 {count} 个模型。输入以筛选。',
|
|||
|
|
'ai.providers.advancedParams': '高级参数',
|
|||
|
|
'ai.providers.advancedParams.hint': '留空则使用提供商默认值。',
|
|||
|
|
'ai.providers.advancedParams.maxTokens.placeholder': '例如 4096',
|
|||
|
|
'ai.providers.advancedParams.default': '提供商默认',
|
|||
|
|
|
|||
|
|
// AI Codex
|
|||
|
|
'ai.codex': 'Codex',
|
|||
|
|
'ai.codex.title': 'Codex CLI',
|
|||
|
|
'ai.codex.description': '接入 OpenAI Codex。可以在这里登录 ChatGPT,也可以在设置里启用兼容 OpenAI 的 API Key 和自定义接口地址。',
|
|||
|
|
'ai.codex.appServer.title': '使用 Codex App Server',
|
|||
|
|
'ai.codex.appServer.experimental': '实验性',
|
|||
|
|
'ai.codex.appServer.description': '使用持久化 Codex 协议,提供原生审批、沙箱控制、动态模型和对话中提问。默认仍使用 SDK。',
|
|||
|
|
'ai.codex.appServer.checking': '正在检查 App Server 支持…',
|
|||
|
|
'ai.codex.appServer.available': '当前 Codex CLI 支持 App Server。',
|
|||
|
|
'ai.codex.appServer.modelCatalogWarning': 'Codex 动态模型目录暂不可用,当前将使用内置模型列表。',
|
|||
|
|
'ai.codex.appServer.approval.allowSession': '本会话允许',
|
|||
|
|
'ai.codex.appServer.userInput.title': 'Codex 需要你的输入',
|
|||
|
|
'ai.codex.appServer.userInput.description': '回答以下问题以继续当前任务。',
|
|||
|
|
'ai.codex.appServer.userInput.other': '输入其他答案',
|
|||
|
|
'ai.codex.appServer.userInput.autoResolve': '若未及时回答,Codex 将自动继续。',
|
|||
|
|
'ai.codex.appServer.userInput.skip': '跳过',
|
|||
|
|
'ai.codex.appServer.userInput.submit': '继续',
|
|||
|
|
'ai.codex.steer.addInstruction': '补充指令',
|
|||
|
|
'ai.codex.steer.sending': '正在补充指令…',
|
|||
|
|
'ai.codex.steer.placeholder': '在 Codex 工作时补充指令…',
|
|||
|
|
'ai.codex.steer.notSteerableReview': '当前 Codex 审查任务无法接收补充指令,草稿已保留。',
|
|||
|
|
'ai.codex.steer.notSteerableCompact': '当前 Codex 压缩任务无法接收补充指令,草稿已保留。',
|
|||
|
|
'ai.codex.steer.busy': '已有一条补充指令正在发送给 Codex。',
|
|||
|
|
'ai.codex.steer.inactive': '当前 Codex 任务已经结束,草稿已保留。',
|
|||
|
|
'ai.codex.steer.unsupported': '运行中补充指令仅支持 Codex App Server。',
|
|||
|
|
'ai.codex.steer.failed': 'Codex 未能接收补充指令,草稿已保留。',
|
|||
|
|
'ai.codex.detecting': '检测中...',
|
|||
|
|
'ai.codex.notFound': '未找到',
|
|||
|
|
'ai.codex.awaitingLogin': '等待登录',
|
|||
|
|
'ai.codex.connectedChatGPT': '已通过 ChatGPT 连接',
|
|||
|
|
'ai.codex.connectedApiKey': '已通过 API Key 连接',
|
|||
|
|
'ai.codex.connectedCustomConfig': '使用 ~/.codex/config.toml 自定义 provider',
|
|||
|
|
'ai.codex.customConfigIncomplete': '检测到自定义配置(缺少环境变量)',
|
|||
|
|
'ai.codex.customConfigHint': '使用 ~/.codex/config.toml 中配置的自定义 provider "{provider}",无需 ChatGPT 登录。',
|
|||
|
|
'ai.codex.customConfigMissingEnvKey': '警告:环境变量 {envKey} 未在当前 shell 中设置。请 export 它(或从包含该变量的 shell 启动 NetMesh),否则 Codex 无法鉴权。',
|
|||
|
|
'ai.codex.notConnected': '未连接',
|
|||
|
|
'ai.codex.statusUnknown': '状态未知',
|
|||
|
|
'ai.codex.path': '路径:',
|
|||
|
|
'ai.codex.notFoundHint': '在 PATH 中未找到 codex。请安装或在下方指定可执行文件路径。',
|
|||
|
|
'ai.codex.customPathPlaceholder': '例如 /usr/local/bin/codex',
|
|||
|
|
'ai.codex.check': '检查',
|
|||
|
|
'ai.codex.resetPath': '重置',
|
|||
|
|
'ai.codex.openLogin': '打开登录',
|
|||
|
|
'ai.codex.logout': '退出登录',
|
|||
|
|
'ai.codex.connectChatGPT': '连接 ChatGPT',
|
|||
|
|
'ai.codex.refreshStatus': '刷新状态',
|
|||
|
|
|
|||
|
|
// AI Claude Code
|
|||
|
|
'ai.claude.title': 'Claude Code',
|
|||
|
|
'ai.claude.description': 'Anthropic 的智能编程助手。需要系统中已安装 Claude Code CLI。',
|
|||
|
|
'ai.claude.detecting': '检测中...',
|
|||
|
|
'ai.claude.detected': '已检测到',
|
|||
|
|
'ai.claude.notFound': '未找到',
|
|||
|
|
'ai.claude.path': '路径:',
|
|||
|
|
'ai.claude.notFoundHint': '在 PATH 中未找到 claude。请安装或在下方指定可执行文件路径。',
|
|||
|
|
'ai.claude.customPathPlaceholder': '例如 /usr/local/bin/claude',
|
|||
|
|
'ai.claude.configSection': '认证与配置(可选)',
|
|||
|
|
'ai.claude.configDir': '配置目录',
|
|||
|
|
'ai.claude.configDir.placeholder': '~/.claude(留空用默认)',
|
|||
|
|
'ai.claude.configDir.hint': '设置 CLAUDE_CONFIG_DIR —— 指向你已运行 `claude` 登录的目录(含 settings.json 和凭据)。',
|
|||
|
|
'ai.claude.settings': 'Settings 文件',
|
|||
|
|
'ai.claude.settings.placeholder': '~/team-settings.json(路径,或内联 {"model":"..."})',
|
|||
|
|
'ai.claude.settings.hint': '可选。settings.json 路径或内联 JSON,作为 SDK 的 `settings` 传入。与上面的「配置目录」互补且独立(叠加合并,不是替换)。',
|
|||
|
|
'ai.claude.envVars': '环境变量',
|
|||
|
|
'ai.claude.envVars.placeholder': 'ANTHROPIC_BASE_URL=https://...\nANTHROPIC_MODEL=...',
|
|||
|
|
'ai.claude.envVars.hint': '每行一个 KEY=VALUE,传给 Claude agent。明文存在本地——API key/凭据建议用上面的「配置目录」(claude 登录),不要放这里。',
|
|||
|
|
'ai.claude.check': '检查',
|
|||
|
|
'ai.claude.resetPath': '重置',
|
|||
|
|
|
|||
|
|
// AI GitHub Copilot CLI
|
|||
|
|
'ai.copilot.title': 'GitHub Copilot CLI',
|
|||
|
|
'ai.copilot.description': '接入 GitHub Copilot CLI。检测到后即可作为外部编程 Agent 使用。',
|
|||
|
|
'ai.copilot.detecting': '检测中...',
|
|||
|
|
'ai.copilot.detected': '已检测到',
|
|||
|
|
'ai.copilot.notFound': '未找到',
|
|||
|
|
'ai.copilot.path': '路径:',
|
|||
|
|
'ai.copilot.notFoundHint': '在 PATH 中未找到 copilot。请安装或在下方指定可执行文件路径。',
|
|||
|
|
'ai.copilot.customPathPlaceholder': '例如 /usr/local/bin/copilot',
|
|||
|
|
'ai.copilot.check': '检查',
|
|||
|
|
'ai.copilot.resetPath': '重置',
|
|||
|
|
|
|||
|
|
// AI Cursor SDK
|
|||
|
|
'ai.cursor.title': 'Cursor',
|
|||
|
|
'ai.cursor.description': '使用 Cursor SDK 或本地 Agent CLI 登录。',
|
|||
|
|
'ai.cursor.detecting': '检测中...',
|
|||
|
|
'ai.cursor.detected': '可用',
|
|||
|
|
'ai.cursor.notFound': '不可用',
|
|||
|
|
'ai.cursor.path': '运行环境:',
|
|||
|
|
'ai.cursor.notFoundHint': '填写 API Key,或切换到 CLI 登录模式。',
|
|||
|
|
'ai.cursor.notInstalledHint': '未检测到 Cursor SDK / Agent CLI。',
|
|||
|
|
'ai.cursor.installStatus': 'Cursor 运行时',
|
|||
|
|
'ai.cursor.installed': '已检测到',
|
|||
|
|
'ai.cursor.notInstalled': '未检测到',
|
|||
|
|
'ai.cursor.modeCli': 'CLI 登录',
|
|||
|
|
'ai.cursor.modeApiKey': 'API Key',
|
|||
|
|
'ai.cursor.modeCliHint': '使用本机 `cursor-agent login` 会话与订阅 Auto 额度。已保存的 API Key 会保留,但此模式不会使用。',
|
|||
|
|
'ai.cursor.modeApiKeyHint': '走 Cursor 计量 API。此模式下不会使用 CLI 登录。',
|
|||
|
|
'ai.cursor.cliLoginStatus': 'CLI 登录',
|
|||
|
|
'ai.cursor.cliLoginOk': '已登录',
|
|||
|
|
'ai.cursor.cliLoginAs': '已登录为 {{email}}',
|
|||
|
|
'ai.cursor.cliLoginMissing': '未登录',
|
|||
|
|
'ai.cursor.cliLoginHint': '在终端运行 `cursor-agent login`,然后点击「检查」。',
|
|||
|
|
'ai.cursor.apiKeyStatus': 'API Key',
|
|||
|
|
'ai.cursor.apiKeyConfigured': '已填写',
|
|||
|
|
'ai.cursor.apiKeyMissing': '未填写',
|
|||
|
|
'ai.cursor.apiKeyFromEnv': '来自环境变量',
|
|||
|
|
'ai.cursor.apiKey': 'API Key',
|
|||
|
|
'ai.cursor.apiKeyPlaceholder': '输入 Cursor API Key',
|
|||
|
|
'ai.cursor.apiKeyPlaceholder.env': '已使用 CURSOR_API_KEY;填写后会覆盖',
|
|||
|
|
'ai.cursor.apiKeyEnvHint': '已检测到本机 CURSOR_API_KEY。留空即可继续使用,填写保存后会覆盖它。',
|
|||
|
|
'ai.cursor.apiKeyOverrideHint': '当前优先使用这里保存的 Key;清空保存后会回到 CURSOR_API_KEY。',
|
|||
|
|
'ai.cursor.saveApiKey': '保存',
|
|||
|
|
'ai.cursor.saved': '已保存',
|
|||
|
|
'ai.cursor.showApiKey': '显示 API Key',
|
|||
|
|
'ai.cursor.hideApiKey': '隐藏 API Key',
|
|||
|
|
'ai.cursor.customPathPlaceholder': '例如 /usr/local/bin/cursor',
|
|||
|
|
'ai.cursor.check': '检查',
|
|||
|
|
|
|||
|
|
// AI CodeBuddy Code
|
|||
|
|
'ai.codebuddy.title': 'CodeBuddy Code',
|
|||
|
|
'ai.codebuddy.description': '通过官方 Agent SDK(`@tencent-ai/agent-sdk`)接入 CodeBuddy Code。检测到后即可作为外部编程 Agent 使用。',
|
|||
|
|
'ai.codebuddy.detecting': '检测中...',
|
|||
|
|
'ai.codebuddy.detected': '已检测到',
|
|||
|
|
'ai.codebuddy.notFound': '未找到',
|
|||
|
|
'ai.codebuddy.path': '路径:',
|
|||
|
|
'ai.codebuddy.notFoundHint': '在 PATH 中未找到 codebuddy。请安装或在下方指定可执行文件路径。',
|
|||
|
|
'ai.codebuddy.customPathPlaceholder': '例如 /usr/local/bin/codebuddy',
|
|||
|
|
'ai.codebuddy.check': '检查',
|
|||
|
|
'ai.codebuddy.resetPath': '重置',
|
|||
|
|
'ai.codebuddy.configSection': '认证与配置(可选)',
|
|||
|
|
'ai.codebuddy.internetEnv': '网络环境',
|
|||
|
|
'ai.codebuddy.internetEnv.default': '默认(海外)',
|
|||
|
|
'ai.codebuddy.internetEnv.internal': 'Internal',
|
|||
|
|
'ai.codebuddy.internetEnv.ioa': 'IOA',
|
|||
|
|
'ai.codebuddy.internetEnv.hint': '设置 CODEBUDDY_INTERNET_ENVIRONMENT —— 受限网络环境请选择 Internal 或 IOA。',
|
|||
|
|
'ai.codebuddy.envVars': '环境变量',
|
|||
|
|
'ai.codebuddy.envVars.placeholder': 'CODEBUDDY_API_KEY=...\nCODEBUDDY_AUTH_TOKEN=...\nOTHER_VAR=...',
|
|||
|
|
'ai.codebuddy.envVars.hint': '每行一个 KEY=VALUE,传给 CodeBuddy agent。可在此设置 CODEBUDDY_API_KEY 或 CODEBUDDY_AUTH_TOKEN 完成认证。明文存在本地。',
|
|||
|
|
'ai.codebuddy.advancedSection': '高级选项(SDK 0.3.230)',
|
|||
|
|
'ai.codebuddy.effort': '推理力度',
|
|||
|
|
'ai.codebuddy.effort.default': '默认',
|
|||
|
|
'ai.codebuddy.effort.low': 'Low',
|
|||
|
|
'ai.codebuddy.effort.medium': 'Medium',
|
|||
|
|
'ai.codebuddy.effort.high': 'High',
|
|||
|
|
'ai.codebuddy.effort.xhigh': 'XHigh',
|
|||
|
|
'ai.codebuddy.effort.hint': '控制模型推理深度。简单命令用 Low 节省 token,复杂诊断用 High/XHigh。',
|
|||
|
|
'ai.codebuddy.maxTurns': '最大轮次',
|
|||
|
|
'ai.codebuddy.maxTurns.hint': '限制每次请求的最大对话轮次,防止 AI 失控循环。留空使用默认值。',
|
|||
|
|
'ai.codebuddy.maxBudget': '预算上限 (USD)',
|
|||
|
|
'ai.codebuddy.maxBudget.hint': '每次请求的最大花费(美元)。超出后自动停止。留空不限制。',
|
|||
|
|
'ai.codebuddy.sandbox': '沙箱模式',
|
|||
|
|
'ai.codebuddy.sandbox.hint': '在沙箱中执行工具调用,限制文件系统和网络访问。',
|
|||
|
|
'ai.codebuddy.fileCheckpointing': '文件检查点',
|
|||
|
|
'ai.codebuddy.fileCheckpointing.hint': '启用文件操作检查点,AI 修改文件后可回滚。',
|
|||
|
|
'ai.codebuddy.elicitation.title': 'CodeBuddy 需要你的输入',
|
|||
|
|
'ai.codebuddy.elicitation.description': '请确认或填写请求内容以继续当前轮次。',
|
|||
|
|
'ai.codebuddy.elicitation.select': '请选择',
|
|||
|
|
'ai.codebuddy.elicitation.yes': '是',
|
|||
|
|
'ai.codebuddy.elicitation.no': '否',
|
|||
|
|
'ai.codebuddy.elicitation.decline': '拒绝',
|
|||
|
|
'ai.codebuddy.elicitation.accept': '继续',
|
|||
|
|
'ai.codebuddy.elicitation.validation.required': '{field} 为必填项。',
|
|||
|
|
'ai.codebuddy.elicitation.validation.invalidType': '{field} 的值无效。',
|
|||
|
|
'ai.codebuddy.elicitation.validation.integer': '{field} 必须是整数。',
|
|||
|
|
'ai.codebuddy.elicitation.validation.notInteger': '{field} 必须是整数。',
|
|||
|
|
'ai.codebuddy.elicitation.validation.minimum': '{field} 不能小于 {limit}。',
|
|||
|
|
'ai.codebuddy.elicitation.validation.maximum': '{field} 不能大于 {limit}。',
|
|||
|
|
'ai.codebuddy.elicitation.validation.minLength': '{field} 至少需要 {limit} 个字符。',
|
|||
|
|
'ai.codebuddy.elicitation.validation.maxLength': '{field} 最多允许 {limit} 个字符。',
|
|||
|
|
'ai.codebuddy.elicitation.validation.minItems': '{field} 至少选择 {limit} 项。',
|
|||
|
|
'ai.codebuddy.elicitation.validation.maxItems': '{field} 最多选择 {limit} 项。',
|
|||
|
|
'ai.codebuddy.elicitation.validation.format': '{field} 必须符合 {format} 格式。',
|
|||
|
|
'ai.codebuddy.elicitation.validation.option': '请为 {field} 选择有效选项。',
|
|||
|
|
|
|||
|
|
// AI OpenCode
|
|||
|
|
'ai.opencode.title': 'OpenCode',
|
|||
|
|
'ai.opencode.description': '通过官方 SDK 接入 OpenCode。先在 OpenCode 里配置 provider 和密钥,检测到后即可作为外部编程 Agent 使用。',
|
|||
|
|
'ai.opencode.detecting': '检测中...',
|
|||
|
|
'ai.opencode.detected': '已检测到',
|
|||
|
|
'ai.opencode.notFound': '未找到',
|
|||
|
|
'ai.opencode.path': '路径:',
|
|||
|
|
'ai.opencode.notFoundHint': '在 PATH 中未找到 opencode。请安装或在下方指定可执行文件路径。',
|
|||
|
|
'ai.opencode.customPathPlaceholder': '例如 /usr/local/bin/opencode',
|
|||
|
|
'ai.opencode.check': '检查',
|
|||
|
|
'ai.opencode.resetPath': '重置',
|
|||
|
|
|
|||
|
|
// AI Grok Build(应用内托管 Agent,与 External MCP「添加到 Grok」不同)
|
|||
|
|
'ai.grok.title': 'Grok Build',
|
|||
|
|
'ai.grok.description': 'xAI 的 Grok Build 编程 Agent CLI。安装 Grok CLI,使用 `grok login` 登录或设置 XAI_API_KEY 后,即可作为外部 Agent 选择。',
|
|||
|
|
'ai.grok.detecting': '检测中...',
|
|||
|
|
'ai.grok.detected': '已检测到',
|
|||
|
|
'ai.grok.notFound': '未找到',
|
|||
|
|
'ai.grok.path': '路径:',
|
|||
|
|
'ai.grok.notFoundHint': '在 PATH 中未找到 grok。请安装 Grok Build CLI 或在下方指定可执行文件路径。',
|
|||
|
|
'ai.grok.customPathPlaceholder': '例如 /usr/local/bin/grok',
|
|||
|
|
'ai.grok.check': '检查',
|
|||
|
|
'ai.grok.resetPath': '重置',
|
|||
|
|
'ai.grok.runtime.acp.title': '使用 Grok ACP(agent stdio)',
|
|||
|
|
'ai.grok.runtime.acp.default': '默认',
|
|||
|
|
'ai.grok.runtime.acp.description':
|
|||
|
|
'通过 Agent Client Protocol(grok agent stdio)接入 Grok。在 session/new 注入 NetMesh MCP。关闭后使用原始 headless streaming-json CLI 路径。',
|
|||
|
|
'ai.grok.runtime.streamingJson.hint':
|
|||
|
|
'当前为 headless streaming-json(grok -p --output-format streaming-json)。MCP 通过项目 .grok/config.toml 注入。',
|
|||
|
|
|
|||
|
|
// AI Default Agent
|
|||
|
|
'ai.defaultAgent': '默认 Agent',
|
|||
|
|
'ai.defaultAgent.description': '创建新 AI 会话时使用的 Agent',
|
|||
|
|
'ai.defaultAgent.catty': 'Catty(内置)',
|
|||
|
|
'ai.toolAccess.title': '工具接入',
|
|||
|
|
'ai.toolAccess.mode': 'NetMesh 接入模式',
|
|||
|
|
'ai.toolAccess.description': '选择外部 Agent 访问 NetMesh 会话的方式。MCP 会暴露内置服务器,Skills + CLI 会引导 Agent 读取本地 Skill 并调用 NetMesh CLI。',
|
|||
|
|
'ai.toolAccess.mode.mcp': 'MCP',
|
|||
|
|
'ai.toolAccess.mode.skills': 'Skills + CLI',
|
|||
|
|
'ai.toolAccess.mcpPrompt.title': '喂给 AI 的接入提示词',
|
|||
|
|
'ai.toolAccess.mcpPrompt.description': '把这段提示词粘贴到你的 AI 客户端(Codex、Claude Code 等),它就会帮你完成 NetMesh MCP 的注册。',
|
|||
|
|
'ai.toolAccess.mcpPrompt.enableHint': '先在下方打开对外 MCP 开关,提示词中才会包含 launcher 路径。',
|
|||
|
|
'ai.toolAccess.skills.file': 'Skill 文件',
|
|||
|
|
'ai.toolAccess.skills.description': 'Skills + CLI 模式下,Agent 会自动被指向这个本地 Skill 文件;NetMesh CLI 启动路径会在每个会话中提供给 Agent。',
|
|||
|
|
'ai.toolAccess.skills.unavailable': '暂时无法获取 Skill 文件路径',
|
|||
|
|
|
|||
|
|
// External MCP
|
|||
|
|
'ai.externalMcp.title': '对外 MCP',
|
|||
|
|
'ai.externalMcp.description': '把 NetMesh 作为 MCP 服务器暴露给 Codex、Claude Code、Cursor、Grok 等外部客户端。工具面与应用内 Agent 相同(终端、SFTP、Vault、端口转发)。客户端连接期间请保持 NetMesh 运行。',
|
|||
|
|
'ai.externalMcp.sessionsExposed': '作用域内会话:{count}',
|
|||
|
|
'ai.externalMcp.mode': '可用模式',
|
|||
|
|
'ai.externalMcp.mode.temporary': '临时',
|
|||
|
|
'ai.externalMcp.mode.persistent': '常开',
|
|||
|
|
'ai.externalMcp.mode.description': '临时模式会在空闲超时后自动关闭;常开模式会在 NetMesh 启动时恢复对外 MCP。',
|
|||
|
|
'ai.externalMcp.idleTimeout': '空闲超时',
|
|||
|
|
'ai.externalMcp.idleTimeout.description': '临时模式下,若超过该分钟数没有 MCP 操作,将自动关闭对外 MCP。',
|
|||
|
|
'ai.externalMcp.idleTimeout.minutes': '分钟',
|
|||
|
|
'ai.externalMcp.focusOnHostOpen': 'host_open 时激活窗口',
|
|||
|
|
'ai.externalMcp.focusOnHostOpen.description': '当 MCP 客户端打开主机连接时,将主窗口切换到前台。关闭后可不受打扰地继续当前工作。',
|
|||
|
|
'ai.externalMcp.silentSessions': 'AI 会话静默运行',
|
|||
|
|
'ai.externalMcp.silentSessions.description': 'AI 打开的会话不会出现在标签栏,重启后也不会恢复。可随时在托盘面板中查看。',
|
|||
|
|
'ai.externalMcp.sessionIdleTimeout': '已打开会话空闲超时',
|
|||
|
|
'ai.externalMcp.sessionIdleTimeout.description': 'AI 打开的会话若超过该分钟数没有终端或文件操作,将自动关闭。',
|
|||
|
|
'ai.externalMcp.usage.title': '使用说明',
|
|||
|
|
'ai.externalMcp.usage.keepRunning': '1. 打开对外 MCP 开关,并保持 NetMesh 运行。',
|
|||
|
|
'ai.externalMcp.usage.localhost': '2. 客户端通过本地 launcher 连接(仅 127.0.0.1)。关闭开关后会删除 discovery。',
|
|||
|
|
'ai.externalMcp.usage.permissions': '3. 写操作遵循「设置 → AI → 安全」(观察 / 确认 / 自动)以及命令黑名单。',
|
|||
|
|
'ai.externalMcp.usage.capabilities': '4. 完整 catalog 工具可用:终端、SFTP、Vault、端口转发。密码 / 私钥不会返回。',
|
|||
|
|
'ai.externalMcp.help.ariaLabel': '对外 MCP 使用说明',
|
|||
|
|
'ai.externalMcp.security': '安全',
|
|||
|
|
'ai.externalMcp.security.description': '仅监听 127.0.0.1,使用轮换 token,写操作复用 AI 权限模式,关闭时删除 discovery。不做 OAuth——这是本机桌面桥接。',
|
|||
|
|
'ai.externalMcp.permissionMode': '当前权限模式:{mode}',
|
|||
|
|
'ai.externalMcp.permissionMode.label': '写操作权限模式',
|
|||
|
|
'ai.externalMcp.permissionMode.hint': '与「设置 → AI → 安全」为同一项。自动:NetMesh 写操作不再弹本应用审批;确认:每次询问。外部客户端(Codex / Claude / Grok)仍可能有自己的工具审批界面。',
|
|||
|
|
'ai.externalMcp.permissionMode.unknown': '未知',
|
|||
|
|
'ai.externalMcp.discovery': 'Discovery',
|
|||
|
|
'ai.externalMcp.launcher': 'Launcher',
|
|||
|
|
'ai.externalMcp.unavailable': '不可用',
|
|||
|
|
'ai.externalMcp.bridgeUnavailable': '对外 MCP 桥接不可用',
|
|||
|
|
'ai.externalMcp.copy': '复制',
|
|||
|
|
'ai.externalMcp.copied': '已复制',
|
|||
|
|
'ai.externalMcp.copyFailed': '复制失败,请手动复制。',
|
|||
|
|
'ai.externalMcp.refresh': '刷新',
|
|||
|
|
'ai.externalMcp.clientConfiguration': '客户端配置',
|
|||
|
|
'ai.externalMcp.clientConfiguration.description': '选择客户端一键安装,或复制 CLI / 配置片段。',
|
|||
|
|
'ai.externalMcp.client.codex': 'Codex',
|
|||
|
|
'ai.externalMcp.client.claude': 'Claude Code',
|
|||
|
|
'ai.externalMcp.client.grok': 'Grok',
|
|||
|
|
'ai.externalMcp.client.cursor': 'Cursor',
|
|||
|
|
'ai.externalMcp.cliCommand': 'CLI 命令',
|
|||
|
|
'ai.externalMcp.configSnippet': '配置片段',
|
|||
|
|
'ai.externalMcp.addToCodex': '添加到 Codex',
|
|||
|
|
'ai.externalMcp.addToClaude': '添加到 Claude Code',
|
|||
|
|
'ai.externalMcp.addToGrok': '添加到 Grok',
|
|||
|
|
'ai.externalMcp.codexAdded': '已添加 Codex MCP 条目。请重启 Codex 或打开新会话。',
|
|||
|
|
'ai.externalMcp.claudeAdded': '已添加 Claude Code MCP 条目。请重启 Claude Code 或打开新会话。',
|
|||
|
|
'ai.externalMcp.grokAdded': '已添加 Grok MCP 条目。请重启 Grok 或打开新会话。',
|
|||
|
|
'ai.externalMcp.installCodex': '请先单独安装 Codex,然后点击刷新。',
|
|||
|
|
'ai.externalMcp.installClaude': '请先单独安装 Claude Code,然后点击刷新。',
|
|||
|
|
'ai.externalMcp.installGrok': '请先单独安装 Grok CLI,然后点击刷新。',
|
|||
|
|
'ai.externalMcp.conflict.description': '已存在指向其他位置的 NetMesh-external 条目,请手动删除或修改。',
|
|||
|
|
'ai.externalMcp.enableForLauncher': '请先启用对外 MCP,以获取可用的 launcher 路径。',
|
|||
|
|
'ai.externalMcp.cursor.title': 'Cursor / 其他客户端',
|
|||
|
|
'ai.externalMcp.cursor.description': '合并到 MCP 配置文件(例如 ~/.cursor/mcp.json)。若已有其他服务器,请勿整文件覆盖。',
|
|||
|
|
'ai.externalMcp.status.unavailable': '不可用',
|
|||
|
|
'ai.externalMcp.status.disabled': '已关闭',
|
|||
|
|
'ai.externalMcp.status.running': '运行中',
|
|||
|
|
'ai.externalMcp.status.starting': '启动中',
|
|||
|
|
'ai.externalMcp.status.error': '错误',
|
|||
|
|
'ai.externalMcp.status.configured': '已配置',
|
|||
|
|
'ai.externalMcp.status.notConfigured': '未配置',
|
|||
|
|
'ai.externalMcp.status.checking': '检查中',
|
|||
|
|
'ai.externalMcp.status.codexNotFound': '未找到 Codex',
|
|||
|
|
'ai.externalMcp.status.claudeNotFound': '未找到 Claude Code',
|
|||
|
|
'ai.externalMcp.status.grokNotFound': '未找到 Grok',
|
|||
|
|
'ai.externalMcp.status.conflict': '冲突',
|
|||
|
|
'ai.userSkills.title': '用户 Skills',
|
|||
|
|
'ai.userSkills.description': '打开 NetMesh 的 Skills 文件夹以添加你自己的技能目录。NetMesh 会自动扫描这些 skills,默认只注入轻量索引,只有在请求明显命中某个 skill 时才展开正文。',
|
|||
|
|
'ai.userSkills.openFolder': '打开 Skills 文件夹',
|
|||
|
|
'ai.userSkills.reload': '重新加载 Skills',
|
|||
|
|
'ai.userSkills.location': '位置',
|
|||
|
|
'ai.userSkills.loading': '正在扫描用户 skills...',
|
|||
|
|
'ai.userSkills.summary': '已就绪 {ready} 个,警告 {warnings} 个',
|
|||
|
|
'ai.userSkills.empty': '暂未发现用户 skills。打开文件夹后可添加包含 SKILL.md 的技能目录。',
|
|||
|
|
'ai.userSkills.unavailable': '当前环境不支持用户 skills。',
|
|||
|
|
'ai.userSkills.status.ready': '正常',
|
|||
|
|
'ai.userSkills.status.warning': '警告',
|
|||
|
|
|
|||
|
|
// AI Quick Messages
|
|||
|
|
'ai.quickMessages.title': '快捷消息',
|
|||
|
|
'ai.quickMessages.description': '创建常用提示词,在 AI 聊天框输入 / 或点击快捷按钮即可插入到输入框。与用户 Skills 不同,快捷消息会直接填入消息内容。',
|
|||
|
|
'ai.quickMessages.add': '添加快捷消息',
|
|||
|
|
'ai.quickMessages.createTitle': '新建快捷消息',
|
|||
|
|
'ai.quickMessages.editTitle': '编辑快捷消息',
|
|||
|
|
'ai.quickMessages.name': '名称',
|
|||
|
|
'ai.quickMessages.name.placeholder': '例如:检查磁盘空间',
|
|||
|
|
'ai.quickMessages.slug': '命令',
|
|||
|
|
'ai.quickMessages.slug.placeholder': 'disk-check',
|
|||
|
|
'ai.quickMessages.descriptionField': '说明(可选)',
|
|||
|
|
'ai.quickMessages.descriptionField.placeholder': '简短描述这条快捷消息的用途',
|
|||
|
|
'ai.quickMessages.content': '消息内容',
|
|||
|
|
'ai.quickMessages.content.placeholder': '输入选择后要插入的完整提示词...',
|
|||
|
|
'ai.quickMessages.empty': '还没有快捷消息。添加几条常用提示,聊天时就能一键插入。',
|
|||
|
|
'ai.quickMessages.confirmDelete': '确定删除快捷消息「{name}」吗?',
|
|||
|
|
'ai.quickMessages.error.nameRequired': '请填写名称。',
|
|||
|
|
'ai.quickMessages.error.invalidSlug': '命令只能包含小写字母、数字和连字符。',
|
|||
|
|
'ai.quickMessages.error.contentRequired': '请填写消息内容。',
|
|||
|
|
'ai.quickMessages.error.slugTaken': '该命令已被其他快捷消息使用。',
|
|||
|
|
'ai.quickMessages.error.slugConflictsWithSkill': '该命令与用户 Skill「/{slug}」冲突,请换一个命令。',
|
|||
|
|
'ai.quickMessages.error.maxItems': '最多只能保存 {max} 条快捷消息。',
|
|||
|
|
|
|||
|
|
// AI Chat
|
|||
|
|
'ai.chat.noProvider': '尚未配置 AI 提供商。请前往 **设置 → AI → 提供商** 添加并启用一个提供商。',
|
|||
|
|
'ai.chat.toolDenied': '操作已被用户拒绝。',
|
|||
|
|
'ai.chat.toolApproved': '已批准',
|
|||
|
|
'ai.chat.toolApprovalHint': 'Enter 允许 · Esc 拒绝',
|
|||
|
|
'ai.chat.approve': '批准',
|
|||
|
|
'ai.chat.approveOnce': '允许',
|
|||
|
|
'ai.chat.alwaysAllow': '始终',
|
|||
|
|
'ai.chat.slashStopDesc': '停止当前 AI 回合并取消进行中的工具',
|
|||
|
|
'ai.chat.slashCompactDesc': '压缩较早的会话上下文',
|
|||
|
|
'ai.chat.reject': '拒绝',
|
|||
|
|
'ai.chat.toolLabel': '工具',
|
|||
|
|
'ai.chat.targetLabel': '目标',
|
|||
|
|
'ai.chat.rawCommand': '命令',
|
|||
|
|
'ai.chat.copyCommand': '复制',
|
|||
|
|
'ai.chat.commandCopied': '已复制',
|
|||
|
|
'ai.chat.approvalSession': '会话',
|
|||
|
|
'ai.chat.approvalShell': 'Shell',
|
|||
|
|
'ai.chat.approvalCwd': '目录',
|
|||
|
|
'ai.chat.approvalReason': '原因',
|
|||
|
|
'ai.chat.approvalInvocation': '调用详情',
|
|||
|
|
'ai.chat.permissionRequired': '需要权限',
|
|||
|
|
'ai.chat.permissionDescription': 'AI Agent 希望执行一个需要你批准的工具调用。',
|
|||
|
|
'ai.chat.commandBlocked': '此命令已被安全策略拦截,无法执行。',
|
|||
|
|
'ai.chat.recommendAllow': '允许',
|
|||
|
|
'ai.chat.recommendConfirm': '确认',
|
|||
|
|
'ai.chat.recommendDeny': '拒绝',
|
|||
|
|
'ai.chat.exportConversation': '导出对话',
|
|||
|
|
'ai.chat.exportAs': '导出为',
|
|||
|
|
'ai.chat.exportMarkdown': 'Markdown',
|
|||
|
|
'ai.chat.exportJSON': 'JSON',
|
|||
|
|
'ai.chat.exportPlainText': '纯文本',
|
|||
|
|
'ai.chat.thinking': '思考中',
|
|||
|
|
'ai.chat.thoughtFor': '思考了 {duration}',
|
|||
|
|
'ai.chat.thought': '思考',
|
|||
|
|
'ai.chat.agents': 'Agents',
|
|||
|
|
'ai.chat.detectedOnMachine': '在本机检测到',
|
|||
|
|
'ai.chat.rescan': '重新扫描',
|
|||
|
|
'ai.chat.permObserver': '观察',
|
|||
|
|
'ai.chat.permConfirm': '确认',
|
|||
|
|
'ai.chat.permAuto': '自动',
|
|||
|
|
'ai.chat.permObserverDesc': '只读',
|
|||
|
|
'ai.chat.permConfirmDesc': '写操作前确认',
|
|||
|
|
'ai.chat.permAutoDesc': '自由执行',
|
|||
|
|
'ai.chat.emptyHint': '询问服务器相关问题、执行命令或获取配置帮助。',
|
|||
|
|
'ai.chat.placeholder': '向 {agent} 发送消息 — @ 引用上下文,/ 使用命令',
|
|||
|
|
'ai.chat.placeholderDefault': '向 Catty Agent 发送消息...',
|
|||
|
|
'ai.chat.noModel': '未选择模型',
|
|||
|
|
'ai.chat.noProviderModel': '未配置默认模型——前往 设置 → AI → 提供商 设置。',
|
|||
|
|
'ai.chat.selectProvider': '选择提供商',
|
|||
|
|
'ai.chat.selectProviderAndModel': '选择提供商和模型',
|
|||
|
|
'ai.chat.selectModel': '选择模型',
|
|||
|
|
'ai.chat.searchModels': '搜索模型',
|
|||
|
|
'ai.chat.providers': '提供商',
|
|||
|
|
'ai.chat.models': '模型',
|
|||
|
|
'ai.chat.pinned': '已固定',
|
|||
|
|
'ai.chat.useCustomModel': '使用 “{id}”',
|
|||
|
|
'ai.chat.thinkingLevel': '思考强度',
|
|||
|
|
'ai.chat.thinkingOff': '关闭',
|
|||
|
|
'ai.chat.pinModel': '固定模型',
|
|||
|
|
'ai.chat.unpinModel': '取消固定',
|
|||
|
|
'ai.chat.loadingModels': '正在加载模型...',
|
|||
|
|
'ai.chat.noMatchingModels': '没有匹配的模型',
|
|||
|
|
'ai.chat.recent': '最近',
|
|||
|
|
'ai.chat.viewAll': '查看全部',
|
|||
|
|
'ai.chat.untitled': '无标题',
|
|||
|
|
'ai.chat.justNow': '刚刚',
|
|||
|
|
'ai.chat.minutesAgo': '{n}分钟前',
|
|||
|
|
'ai.chat.hoursAgo': '{n}小时前',
|
|||
|
|
'ai.chat.daysAgo': '{n}天前',
|
|||
|
|
'ai.chat.newChat': '新对话',
|
|||
|
|
'ai.chat.allSessions': '所有会话',
|
|||
|
|
'ai.chat.loadEarlierMessages': '加载更早的消息(还有 {n} 条)',
|
|||
|
|
'ai.chat.jumpNav': '跳转到消息',
|
|||
|
|
'ai.chat.jumpUntitled': '(空消息)',
|
|||
|
|
'ai.chat.usedTools': '已使用 {n} 个工具',
|
|||
|
|
'ai.chat.loadMoreSessions': '加载更多会话(还有 {n} 条)',
|
|||
|
|
'ai.chat.noSessions': '没有历史会话',
|
|||
|
|
'ai.chat.retryHint': '你可以重新发送消息来重试。',
|
|||
|
|
'ai.chat.approvalTimeout': '工具审批已超时(5 分钟)。你可以重新发送消息来重试。',
|
|||
|
|
'ai.chat.menuHosts': '主机',
|
|||
|
|
'ai.chat.menuContext': '上下文',
|
|||
|
|
'ai.chat.menuFiles': '文件',
|
|||
|
|
'ai.chat.menuImage': '图片',
|
|||
|
|
'ai.chat.menuMentionHost': '提及主机',
|
|||
|
|
'ai.chat.menuMentionNote': '提及笔记',
|
|||
|
|
'ai.chat.mentionNoteSearch': '搜索笔记…',
|
|||
|
|
'ai.chat.mentionNoteEmpty': '没有匹配的笔记',
|
|||
|
|
'ai.chat.mentionNoteUnavailable': '当前连接方式下,此 AI 无法读取保险箱笔记。',
|
|||
|
|
'ai.chat.mentionNoteTooMany': '这些笔记无法一起引用,请减少选择。',
|
|||
|
|
'ai.chat.mentionNoteInvalid': '无法附加「{{title}}」:笔记的标识符无效。',
|
|||
|
|
'ai.chat.untitledNote': '未命名笔记',
|
|||
|
|
'ai.chat.menuUserSkills': '用户 Skills',
|
|||
|
|
'ai.chat.menuSlashCommands': '快捷命令',
|
|||
|
|
'ai.chat.slashCommands': '快捷命令',
|
|||
|
|
'ai.chat.slashSystemCommands': '系统命令',
|
|||
|
|
'ai.chat.slashQuickMessages': '快捷消息',
|
|||
|
|
'ai.chat.slashUserSkills': '用户 Skills',
|
|||
|
|
'ai.chat.quickMessages': '快捷命令',
|
|||
|
|
'ai.chat.slashNoResults': '没有匹配的命令',
|
|||
|
|
'ai.chat.slashEmptyHint': '可在 设置 → AI → 快捷消息 中添加常用提示词。',
|
|||
|
|
|
|||
|
|
// AI 聊天快捷入口
|
|||
|
|
'ai.chatShortcuts.title': '聊天快捷入口',
|
|||
|
|
'ai.chatShortcuts.selectionAction': '选中终端内容时显示“添加到对话”',
|
|||
|
|
'ai.chatShortcuts.selectionAction.description': '在终端里选中文本后显示 AI 快捷按钮。',
|
|||
|
|
|
|||
|
|
// AI Error
|
|||
|
|
'ai.codex.bridgeError': 'Codex 主进程处理器尚未加载。请完全重启 NetMesh 或重启 Electron 开发进程,然后重试。',
|
|||
|
|
|
|||
|
|
// AI Web Search
|
|||
|
|
'ai.webSearch.title': '网络搜索',
|
|||
|
|
'ai.webSearch.enable': '启用网络搜索',
|
|||
|
|
'ai.webSearch.enable.description': '允许 AI 代理搜索互联网获取最新信息。',
|
|||
|
|
'ai.webSearch.provider': '搜索供应商',
|
|||
|
|
'ai.webSearch.provider.description': '选择一个网络搜索 API 供应商。',
|
|||
|
|
'ai.webSearch.apiKey': 'API 密钥',
|
|||
|
|
'ai.webSearch.apiKey.description': '所选搜索供应商的 API 密钥。',
|
|||
|
|
'ai.webSearch.apiKey.placeholder': '输入 API 密钥...',
|
|||
|
|
'ai.webSearch.apiHost': 'API 地址',
|
|||
|
|
'ai.webSearch.apiHost.description': '自定义 API 端点。除非使用代理,否则保持默认值。',
|
|||
|
|
'ai.webSearch.apiHost.searxngDescription': 'SearXNG 实例的 URL(必填)。',
|
|||
|
|
'ai.webSearch.maxResults': '最大结果数',
|
|||
|
|
'ai.webSearch.maxResults.description': '搜索返回的最大结果数(1-20)。',
|
|||
|
|
|
|||
|
|
// AI Safety Settings
|
|||
|
|
'ai.safety.title': '安全',
|
|||
|
|
'ai.safety.permissionMode': '权限模式',
|
|||
|
|
'ai.safety.permissionMode.description': '控制 AI 通过 NetMesh 访问终端会话的方式。观察者模式会阻止经由 NetMesh 的写操作;外部 Agent CLI 可能仍有自己的本机工具和审批流程。',
|
|||
|
|
'ai.safety.permissionMode.observer': '观察者 - 只读,禁止操作',
|
|||
|
|
'ai.safety.permissionMode.confirm': '确认 - 操作前询问',
|
|||
|
|
'ai.safety.permissionMode.auto': '自动 - 自由执行',
|
|||
|
|
'ai.safety.commandTimeout': '命令超时',
|
|||
|
|
'ai.safety.commandTimeout.description': '通过 NetMesh 执行命令时允许运行的最长秒数,超时将被终止。',
|
|||
|
|
'ai.safety.commandTimeout.unit': '秒',
|
|||
|
|
'ai.safety.responseIdleTimeout': '内置 AI 响应等待时间',
|
|||
|
|
'ai.safety.responseIdleTimeout.description': '内置 AI 请求连续这么多秒没有收到新响应时会被取消。这个设置不控制整段响应总时长,也不影响命令超时。',
|
|||
|
|
'ai.safety.responseIdleTimeout.unit': '秒',
|
|||
|
|
'ai.safety.maxIterations': '最大迭代次数',
|
|||
|
|
'ai.safety.maxIterations.description': '防止 AI 失控执行的最大工具调用循环次数。外部 Agent 可能有自己的内部迭代限制,以其为准。',
|
|||
|
|
'ai.safety.blocklist': '命令黑名单',
|
|||
|
|
'ai.safety.blocklist.description': '用于拦截通过 NetMesh 执行的危险命令的正则表达式。',
|
|||
|
|
'ai.safety.blocklist.placeholder': '正则表达式...',
|
|||
|
|
'ai.safety.blocklist.reset': '恢复默认',
|
|||
|
|
'ai.safety.blocklist.add': '添加规则',
|
|||
|
|
'ai.safety.grants.title': '许可记忆表',
|
|||
|
|
'ai.safety.grants.heading': 'Confirm 模式放行规则',
|
|||
|
|
'ai.safety.grants.description': 'Confirm 模式会先询问再执行;保存为规则后,匹配的同类操作会自动放行。规则对所有终端节点/会话生效,也可手动编辑。',
|
|||
|
|
'ai.safety.grants.empty': '尚无规则。可在审批时选择「一律许可」,或手动添加。',
|
|||
|
|
'ai.safety.grants.capability': '能力',
|
|||
|
|
'ai.safety.grants.sessionPattern': '节点/会话模式',
|
|||
|
|
'ai.safety.grants.commandPattern': '命令模式(可选)',
|
|||
|
|
'ai.safety.grants.note': '备注(可选)',
|
|||
|
|
'ai.safety.grants.add': '添加规则',
|
|||
|
|
'ai.safety.grants.remove': '删除',
|
|||
|
|
'ai.safety.grants.export': '导出 JSON',
|
|||
|
|
'ai.safety.grants.import': '导入 JSON',
|
|||
|
|
'ai.safety.note': '这些安全设置会约束经由 NetMesh 执行的操作。外部 Agent CLI 也可能提供本机工具,那部分由 Agent 自己的控制规则约束。',
|
|||
|
|
|
|||
|
|
// 统一终端工作区和顶部标签的 tooltip 文案 (issue #954)
|
|||
|
|
'terminal.layer.addTerminal': '添加终端',
|
|||
|
|
'terminal.layer.switchToSplitView': '切换到分屏视图',
|
|||
|
|
'terminal.layer.sftp': '文件传输',
|
|||
|
|
'terminal.layer.scripts': '脚本',
|
|||
|
|
'terminal.layer.history': '命令历史',
|
|||
|
|
'terminal.layer.theme': '主题',
|
|||
|
|
'terminal.layer.notes': '笔记',
|
|||
|
|
'terminal.layer.aiChat': 'AI 助手',
|
|||
|
|
'terminal.layer.movePanelLeft': '面板移至左侧',
|
|||
|
|
'terminal.layer.movePanelRight': '面板移至右侧',
|
|||
|
|
'terminal.layer.closePanel': '关闭面板',
|
|||
|
|
'terminal.layer.closePane': '关闭分屏',
|
|||
|
|
'terminal.layer.resizeSplit': '调整分屏大小',
|
|||
|
|
'terminal.layer.splitHorizontal': '上下分屏',
|
|||
|
|
'terminal.layer.splitVertical': '左右分屏',
|
|||
|
|
'terminal.layer.openInNewSplit': '在新分屏中打开',
|
|||
|
|
'terminal.layer.hostTree.search': '搜索主机...',
|
|||
|
|
'terminal.layer.hostTree.searchButton': '搜索',
|
|||
|
|
'terminal.layer.hostTree.tagsButton': '按标签筛选',
|
|||
|
|
'terminal.layer.hostTree.newHost': '新建主机',
|
|||
|
|
'terminal.layer.hostTree.newHostInGroup': '在此分组中新建主机',
|
|||
|
|
'terminal.layer.hostTree.editHost': '编辑主机',
|
|||
|
|
'terminal.layer.hostTree.hostSavedNextConnection': '主机已更新,连接设置将在下次连接时生效。',
|
|||
|
|
'terminal.layer.hostTree.newGroup': '新建分组',
|
|||
|
|
'terminal.layer.hostTree.localShell': '本地 Shell',
|
|||
|
|
'terminal.layer.hostTree.tagsEmpty': '暂无标签',
|
|||
|
|
'terminal.layer.hostTree.clearTags': '清除筛选',
|
|||
|
|
'terminal.layer.hostTree.collapse': '收起主机列表',
|
|||
|
|
'terminal.layer.hostTree.expand': '展开主机列表',
|
|||
|
|
'terminal.layer.hostTree.empty': '没有匹配的主机',
|
|||
|
|
'terminal.layer.hostTree.details.host': '主机',
|
|||
|
|
'terminal.layer.hostTree.details.user': '用户',
|
|||
|
|
'terminal.layer.hostTree.details.port': '端口',
|
|||
|
|
'terminal.layer.hostTree.details.protocol': '协议',
|
|||
|
|
'terminal.layer.hostTree.details.group': '分组',
|
|||
|
|
'terminal.layer.hostTree.details.tags': '标签',
|
|||
|
|
'terminal.layer.hostTree.details.lastConnected': '最近连接',
|
|||
|
|
'topTabs.openQuickSwitcher': '打开快速切换',
|
|||
|
|
'topTabs.moreTabs': '更多标签页',
|
|||
|
|
'topTabs.aiAssistant': 'AI 助手',
|
|||
|
|
'topTabs.newLocalTerminal': '新建本地终端',
|
|||
|
|
'topTabs.controlPanel': '快捷控制',
|
|||
|
|
'topTabs.controlPanel.externalMcp': '对外 MCP',
|
|||
|
|
'topTabs.controlPanel.theme': '主题',
|
|||
|
|
'topTabs.controlPanel.theme.light': '浅色',
|
|||
|
|
'topTabs.controlPanel.theme.dark': '深色',
|
|||
|
|
'topTabs.controlPanel.theme.system': '系统',
|
|||
|
|
'topTabs.externalMcp.enable': '启用对外 MCP',
|
|||
|
|
'topTabs.externalMcp.disable': '停用对外 MCP',
|
|||
|
|
'topTabs.windowOpacity': '窗口透明度',
|
|||
|
|
'topTabs.openSettings': '打开设置',
|
|||
|
|
'ai.chat.sessionHistory': '会话历史',
|
|||
|
|
'ai.chat.resizeInput': '拖动调整消息输入框高度',
|
|||
|
|
'ai.chat.attach': '附件',
|
|||
|
|
'ai.chat.terminalSelectionAttachment': '终端选区',
|
|||
|
|
'ai.chat.terminalSelectionLines': '{count} 行',
|
|||
|
|
'ai.chat.collapse': '收起',
|
|||
|
|
'ai.chat.expand': '展开',
|
|||
|
|
'ai.chat.enableAgent': '启用 {name}',
|
|||
|
|
'ai.chat.artifact.noteFallback': 'Vault 笔记',
|
|||
|
|
'ai.chat.artifact.openNotes': '打开笔记',
|
|||
|
|
'ai.chat.artifact.openHosts': '打开主机',
|
|||
|
|
'ai.chat.artifact.notesSummary': 'Vault 中有 {count} 条笔记',
|
|||
|
|
'ai.chat.artifact.hostsSummary': 'Vault 中有 {count} 台主机',
|
|||
|
|
'ai.chat.artifact.hostsAdded': '已添加 {count} 台主机',
|
|||
|
|
'ai.chat.artifact.hostsPreview': '预览 {count} 台主机',
|
|||
|
|
'ai.chat.artifact.failed': 'Vault 操作失败',
|
|||
|
|
'ai.chat.artifact.unavailableTitle': '不可用',
|
|||
|
|
'ai.chat.artifact.noteMissing': '该笔记已不在 Vault 中。',
|
|||
|
|
'ai.chat.artifact.hostMissing': '该主机已不在 Vault 中。',
|
|||
|
|
'ai.chat.artifact.snippetMissing': '该 Snippet 或脚本已不在 Vault 中。',
|
|||
|
|
'ai.chat.artifact.openSnippets': '打开 Snippets',
|
|||
|
|
'ai.chat.artifact.snippetsSummary': 'Vault 中有 {count} 个 Snippet',
|
|||
|
|
'ai.chat.artifact.scriptsSummary': 'Vault 中有 {count} 个脚本',
|
|||
|
|
'ai.chat.artifact.snippetFallback': 'Vault Snippet',
|
|||
|
|
'ai.chat.artifact.scriptFallback': '自动化脚本',
|
|||
|
|
'ai.chat.artifact.scriptLanguage': '{language} 脚本',
|
|||
|
|
'ai.chat.artifact.snippetDeleted': 'Snippet 已删除',
|
|||
|
|
'ai.chat.artifact.scriptDeleted': '脚本已删除',
|
|||
|
|
'ai.chat.artifact.snippetRan': 'Snippet 已执行',
|
|||
|
|
'ai.chat.artifact.scriptStarted': '脚本运行已启动',
|
|||
|
|
'ai.chat.artifact.scriptRunStatus': '脚本运行 {status}',
|
|||
|
|
'ai.chat.artifact.scriptRunsSummary': '{count} 个脚本运行',
|
|||
|
|
'ai.chat.artifact.scriptRunStopped': '脚本运行已停止',
|
|||
|
|
'ai.chat.artifact.scriptRunPaused': '脚本运行已暂停',
|
|||
|
|
'ai.chat.artifact.scriptRunResumed': '脚本运行已恢复',
|
|||
|
|
'ai.chat.artifact.scriptReference': 'nct API 参考',
|
|||
|
|
'zmodem.waitingForRemote': '等待远端...',
|
|||
|
|
'zmodem.uploading': '上传中',
|
|||
|
|
'zmodem.downloading': '下载中',
|
|||
|
|
'zmodem.cancelTransfer': '取消传输 (Ctrl+C)',
|
|||
|
|
'zmodem.overwrite.title': '远端已存在同名文件',
|
|||
|
|
'zmodem.overwrite.applyToRest': '应用到其余冲突文件',
|
|||
|
|
'zmodem.overwrite.overwrite': '覆盖',
|
|||
|
|
'zmodem.overwrite.skip': '跳过',
|
|||
|
|
'zmodem.overwrite.cancel': '取消',
|
|||
|
|
'settings.shortcuts.resetToDefault': '重置为默认',
|
|||
|
|
};
|