mirror of
https://gitee.com/mateos/mateclaw.git
synced 2026-09-16 20:34:39 +08:00
2357 lines
90 KiB
TypeScript
2357 lines
90 KiB
TypeScript
export default {
|
||
app: {
|
||
title: 'MateClaw - AI 助手',
|
||
},
|
||
common: {
|
||
save: '保存',
|
||
cancel: '取消',
|
||
reset: '重置',
|
||
edit: '编辑',
|
||
delete: '删除',
|
||
create: '创建',
|
||
update: '更新',
|
||
loading: '加载中...',
|
||
enabled: '启用',
|
||
disabled: '停用',
|
||
default: '默认',
|
||
view: '查看',
|
||
copy: '复制',
|
||
copied: '已复制',
|
||
copyFailed: '复制失败',
|
||
confirm: '确认',
|
||
close: '关闭',
|
||
add: '添加',
|
||
search: '搜索',
|
||
clear: '清除',
|
||
expandSidebar: '展开侧边栏',
|
||
collapseSidebar: '折叠侧边栏',
|
||
manageWorkspaces: '管理工作区',
|
||
show: '显示',
|
||
hide: '隐藏',
|
||
on: '开启',
|
||
off: '关闭',
|
||
yes: '是',
|
||
no: '否',
|
||
configure: '配置',
|
||
enable: '启用',
|
||
disable: '停用',
|
||
},
|
||
auth: {
|
||
changePassword: '修改密码',
|
||
oldPassword: '当前密码',
|
||
newPassword: '新密码',
|
||
confirmPassword: '确认新密码',
|
||
fieldsRequired: '请填写当前密码和新密码',
|
||
passwordMismatch: '两次输入的新密码不一致',
|
||
passwordChanged: '密码修改成功',
|
||
passwordChangeFailed: '密码修改失败',
|
||
},
|
||
chat: {
|
||
status: {
|
||
idle: '就绪',
|
||
streaming: '生成中...',
|
||
error: '连接断开',
|
||
},
|
||
thinking: '深度思考',
|
||
thinkingInProgress: '思考中...',
|
||
stopped: '已停止生成',
|
||
interrupted: '已中断',
|
||
expandLines: '展开(还有 {hidden} 行)',
|
||
collapse: '收起',
|
||
failed: '生成失败',
|
||
compressionSummary: '之前的对话已整理为摘要',
|
||
compressionWithCount: '之前的 {count} 条对话已整理为摘要',
|
||
loadingOlder: '加载更早的消息...',
|
||
loadOlderMessages: '点击加载更早的消息',
|
||
retry: '重试',
|
||
errorCode: '错误码',
|
||
error: {
|
||
rate_limit: {
|
||
title: '请求过于频繁',
|
||
description: '您的请求超出了频率限制,服务器暂时无法处理。',
|
||
action: '请稍等片刻后重试,或减少连续提交次数。',
|
||
},
|
||
auth_expired: {
|
||
title: '登录已过期',
|
||
description: '您的登录凭证已失效,需要重新登录。',
|
||
action: '页面将自动跳转到登录页。',
|
||
},
|
||
provider_auth_error: {
|
||
title: '模型认证失败',
|
||
description: '当前模型的 API Key 无效或已失效,与你的登录状态无关。',
|
||
action: '请到「设置 → 模型」中检查并更新该模型的 API Key。',
|
||
},
|
||
forbidden: {
|
||
title: '没有权限',
|
||
description: '您没有执行此操作的权限。',
|
||
action: '请联系管理员获取访问权限。',
|
||
},
|
||
bad_request: {
|
||
title: '请求参数有误',
|
||
description: '发送的请求格式有误,服务器无法理解。',
|
||
action: '请检查输入内容后重试。如果问题持续,请联系管理员。',
|
||
},
|
||
server_error: {
|
||
title: '服务器内部错误',
|
||
description: '服务器处理请求时遇到了问题。',
|
||
action: '请稍后重试。如果问题持续出现,请联系管理员。',
|
||
},
|
||
service_unavailable: {
|
||
title: '服务暂时不可用',
|
||
description: '服务正在维护或暂时过载,无法处理请求。',
|
||
action: '请稍后再试。',
|
||
},
|
||
timeout: {
|
||
title: '请求超时',
|
||
description: '服务器在规定时间内没有响应,可能是网络问题或服务繁忙。',
|
||
action: '请检查网络连接后重试。',
|
||
},
|
||
network: {
|
||
title: '网络连接失败',
|
||
description: '无法连接到服务器,请检查您的网络状况。',
|
||
action: '请确认网络正常后重试。',
|
||
},
|
||
unknown: {
|
||
title: '发生了未知错误',
|
||
description: '请求过程中遇到了意外问题。',
|
||
action: '请重试。如果问题持续出现,请联系管理员。',
|
||
},
|
||
},
|
||
copy: '复制',
|
||
copied: '已复制',
|
||
regenerate: '重新生成',
|
||
ttsPlay: '朗读',
|
||
ttsStop: '停止朗读',
|
||
conversations: '会话列表',
|
||
newChat: '新对话',
|
||
loadingAgents: '加载 Agent 中...',
|
||
selectAgent: '请选择 Agent',
|
||
noConversations: '暂无会话',
|
||
startNewChat: '开始新对话吧',
|
||
messages: '{count} 条消息',
|
||
configModel: '配置模型',
|
||
clearMessages: '清空消息',
|
||
goToModelSettings: '前往模型设置',
|
||
configModelFirst: '请先配置模型',
|
||
modelUnavailable: '当前模型不可用',
|
||
noActiveModel: '当前没有激活模型。先到模型管理中选择一个可用模型,再开始对话。',
|
||
providerNotReady: '当前激活模型属于 {name},但这个提供商还没配置完成。请到模型管理中补全 API Key 或 Base URL。',
|
||
noAvailableModel: '当前没有可用模型。',
|
||
loadAgentsFailed: '加载 Agent 列表失败',
|
||
loadModelFailed: '加载模型状态失败',
|
||
loadConversationsFailed: '加载会话列表失败',
|
||
loadMessagesFailed: '加载消息记录失败',
|
||
deleteConversationFailed: '删除会话失败',
|
||
deleteConfirm: '确定删除这个会话?此操作不可恢复。',
|
||
switchModelFailed: '切换模型失败',
|
||
searchModel: '搜索模型…',
|
||
noMatchModel: '没有匹配的模型',
|
||
// RFC-073: liveness hints shown in the model dropdown header
|
||
modelLivenessUnprobed: '正在检查可用性',
|
||
modelLivenessCooldown: '冷却中({seconds} 秒后自动恢复)',
|
||
// RFC-074 PR-2: empty-state inside the model dropdown
|
||
noProvidersConfigured: '还没有可用的模型',
|
||
goConfigure: '去配置',
|
||
uploadFailed: '文件上传失败',
|
||
dropToUpload: '拖放文件或文件夹到此处',
|
||
copyFailed: '复制失败',
|
||
datePinned: '置顶',
|
||
dateToday: '今天',
|
||
dateYesterday: '昨天',
|
||
dateLast7Days: '近 7 天',
|
||
dateEarlier: '更早',
|
||
hasUnread: '有新内容',
|
||
cronRunning: {
|
||
executing: '执行中…',
|
||
fallbackName: '定时任务',
|
||
},
|
||
suggestionIntro: '记住我平时不吃香菜、喜欢喝冰美式,以后点餐时提醒我',
|
||
suggestionPoem: '帮我搜一下今天科技圈有什么大新闻,用一句话总结',
|
||
suggestionCode: '让写手帮我润色一段文案,我先把草稿发你',
|
||
suggestionWeather: '你现在都装了哪些技能和工具?教我怎么给你加新本事',
|
||
approvalRequired: '需要审批',
|
||
approve: '批准',
|
||
deny: '拒绝',
|
||
approvalHint: '或输入 <code>/approve</code> / <code>/deny</code>',
|
||
approved: '✅ 已允许',
|
||
denied: '⛔ 已拒绝',
|
||
approvalWaiting: '等待输入框确认...',
|
||
pendingApprovalPlaceholder: '输入 /approve 或 /deny 来回复...',
|
||
messagePlaceholder: '输入消息... (Enter 发送, Shift+Enter 换行)',
|
||
thinkingOn: '深度思考已开启',
|
||
thinkingOff: '点击开启深度思考',
|
||
thinkingUnsupported: '当前模型不支持深度思考',
|
||
subtitle: '基于 Spring AI Alibaba 的智能 AI 助手',
|
||
// 排队相关
|
||
queuedSending: '正在发送排队消息...',
|
||
queuedWillSend: '已排队,当前步骤结束后发送',
|
||
queuedCancel: '取消',
|
||
queuedReplace: '消息已排队,按回车替换...',
|
||
queuedBadge: '{count} 条排队',
|
||
// 流状态
|
||
streamPreparingContext: '准备上下文...',
|
||
streamReadingMemory: '读取记忆...',
|
||
streamReasoning: '分析问题...',
|
||
streamDraftingAnswer: '生成回答...',
|
||
streamSummarizingObservations: '整理信息...',
|
||
streamThinking: '思考中...',
|
||
streamGenerating: '生成中...',
|
||
streamExecutingTool: '执行工具...',
|
||
streamAwaitingApproval: '等待审批',
|
||
streamFinalizing: '正在收尾...',
|
||
streamFailed: '本轮中断',
|
||
streamInterrupting: '中断中...',
|
||
streamQueued: '排队中...',
|
||
streamReconnecting: '重新连接...',
|
||
streamStopped: '已停止',
|
||
streamCompleted: '已完成',
|
||
streamPreparingContextDetail: '正在收集当前问题、历史对话和必要配置。',
|
||
streamReadingMemoryDetail: '正在查找与你当前问题最相关的长期记忆和今日记录。',
|
||
streamReasoningDetail: '正在基于现有信息进行判断、比较方案并组织回答结构。',
|
||
streamDraftingAnswerDetail: '已经完成主要分析,正在把结论写成可直接阅读的答案。',
|
||
streamSummarizingObservationsDetail: '刚刚拿到了较多工具结果,正在提炼重点,避免回答冗长或遗漏关键信息。',
|
||
streamThinkingDetail: '正在做内部推理,这一步未必会立即产生正文。',
|
||
streamGeneratingDetail: '已经进入可见输出阶段,会陆续显示结果。',
|
||
streamExecutingToolDetail: '正在读取文件、查询数据或执行必要操作,以便给出更准确的答案。',
|
||
streamAwaitingApprovalDetail: '接下来需要你的确认,确认后我会继续执行。',
|
||
streamFinalizingDetail: '正在保存结果并结束当前响应。',
|
||
streamFailedDetail: '这次处理没有完整完成,但你可以继续追问或重试。',
|
||
streamSlowShort: '这一步比平时慢一些,但系统仍在处理中。',
|
||
streamSlowSummarizing: '正在整理较长的工具结果。因为信息较多,这一步可能需要更久。',
|
||
streamSlowReasoning: '正在做较复杂的分析和取舍,不是卡住。',
|
||
streamSlowGeneral: '处理还在继续,当前主要耗时在内部分析,不代表连接中断。',
|
||
// 审批栏
|
||
approvalAllow: '允许',
|
||
approvalExecute: '执行?',
|
||
// 时间格式
|
||
timeJustNow: '刚刚',
|
||
timeMinutesAgo: '{n} 分钟前',
|
||
timeHoursAgo: '{n} 小时前',
|
||
},
|
||
nav: {
|
||
dashboard: '仪表盘',
|
||
chat: '对话',
|
||
control: '控制台',
|
||
channels: '渠道',
|
||
sessions: '会话',
|
||
core: '核心',
|
||
connect: '连接',
|
||
system: '系统',
|
||
agent: '智能体',
|
||
workspace: '工作区',
|
||
agentContext: '智能体上下文',
|
||
skills: '技能',
|
||
wiki: 'Wiki 知识库',
|
||
tools: '工具',
|
||
plugins: '插件',
|
||
datasources: '数据源',
|
||
mcpServers: 'MCP 连接',
|
||
mcpConnections: 'MCP 连接',
|
||
toolsCatalog: '工具目录',
|
||
activity: '活动记录',
|
||
acpEndpoints: 'ACP Endpoints',
|
||
settingsGroup: '设置',
|
||
agents: '智能体',
|
||
security: '安全',
|
||
tokenUsage: 'Token 统计',
|
||
cronJobs: '定时任务',
|
||
settings: '设置',
|
||
logout: '退出登录',
|
||
themeLight: '浅色',
|
||
themeDark: '深色',
|
||
memory: '记忆',
|
||
themeSystem: '跟随系统',
|
||
themeLabel: '外观',
|
||
languageLabel: '语言',
|
||
appearance: '外观与语言',
|
||
roleUser: '用户',
|
||
roleAdmin: '管理员',
|
||
},
|
||
settings: {
|
||
title: '设置',
|
||
kicker: '配置中心',
|
||
layoutDesc: '调整模型、系统行为与媒体能力,让整个产品在扩张时仍然保持一致。',
|
||
sections: {
|
||
model: '模型管理',
|
||
system: '系统设置',
|
||
image: '图片生成',
|
||
tts: '语音合成',
|
||
stt: '语音识别',
|
||
music: '音乐生成',
|
||
video: '视频生成',
|
||
about: '关于',
|
||
advanced: '高级',
|
||
},
|
||
modelTitle: '模型管理',
|
||
modelDesc: '管理模型预设与默认模型选择',
|
||
systemTitle: '系统设置',
|
||
systemDesc: '语言与运行行为配置',
|
||
aboutTitle: '关于 MateClaw',
|
||
aboutDesc: '版本与系统信息',
|
||
about: {
|
||
heroDesc: '一套个人 AI 操作系统,让模型真正进入上下文、记忆、执行、知识和交付的连续流程。',
|
||
foundationTitle: '技术栈',
|
||
pillars: {
|
||
contextTitle: '让上下文保持连续',
|
||
contextDesc: '模型、知识、工作区和当前任务在同一个语境里运行,而不是每次重新开始。',
|
||
executionTitle: '让执行成为产品本身',
|
||
executionDesc: '工具、渠道与异步任务是系统的真实执行面,不是外挂。',
|
||
memoryTitle: '让记忆产生复利',
|
||
memoryDesc: '记忆被整理、被召回,在下一次任务里变得更有价值。',
|
||
},
|
||
},
|
||
model: {
|
||
title: '模型管理',
|
||
desc: '配置模型提供商、凭证和模型列表',
|
||
addProvider: '新增提供商',
|
||
localProviders: '本地模型',
|
||
cloudProviders: '云端模型',
|
||
active: '当前激活',
|
||
setActive: '设为激活',
|
||
configured: '已配置',
|
||
partial: '部分配置',
|
||
unavailable: '未就绪',
|
||
builtin: '内置',
|
||
custom: '自定义',
|
||
notSet: '未设置',
|
||
noModels: '暂无模型',
|
||
baseUrl: 'Base URL',
|
||
apiKey: 'API Key',
|
||
apiKeyInput: '输入 API Key',
|
||
leaveBlankKeep: '留空则保持当前值不变',
|
||
modelCount: '{count} 个模型',
|
||
createTitle: '新增提供商',
|
||
editTitle: '提供商配置',
|
||
manageTitle: '管理模型',
|
||
addModel: '新增模型',
|
||
// Inline API Key on the provider card — primary entry point for the
|
||
// 90% case (paste a key, hit save). Modal stays for advanced fields.
|
||
inlineApiKeyTitle: 'API Key',
|
||
inlineApiKeyPlaceholder: '粘贴 API Key 后回车保存',
|
||
inlineApiKeyMasked: '已设置 ••••••••',
|
||
inlineApiKeyChange: '更换',
|
||
inlineApiKeySaving: '保存中…',
|
||
inlineApiKeySaved: 'API Key 已保存',
|
||
inlineApiKeySaveFailed: 'API Key 保存失败',
|
||
inlineApiKeyEnvHint: '或在环境变量中设置 {var} 后重启',
|
||
// Headline status pill on the card — what the user reads first.
|
||
statusNotSet: '未配置',
|
||
statusReady: '已就绪',
|
||
statusError: '连接失败',
|
||
modelCountAvailable: '可用 {count} 个模型',
|
||
activeChanged: '激活模型已更新',
|
||
providerSaved: '提供商配置已保存',
|
||
providerDeleted: '提供商已删除',
|
||
modelAdded: '模型已添加',
|
||
modelRemoved: '模型已移除',
|
||
modelAddFailed: '模型添加失败',
|
||
modelRemoveFailed: '模型删除失败',
|
||
activeChangeFailed: '激活模型切换失败',
|
||
deleteConfirm: '确认删除提供商“{name}”?',
|
||
removeConfirm: '确认移除模型 “{name}”?',
|
||
generateConfigInvalidJson: 'Generate Kwargs 不是合法 JSON',
|
||
generateConfigMustBeObject: 'Generate Kwargs 必须是 JSON 对象',
|
||
advancedSettings: '高级设置',
|
||
protocolHint: '这里选择的是提供商 API 协议,不是前端或后端里的具体类名。',
|
||
protocolOpenAI: 'OpenAI 兼容(Chat Completions)',
|
||
protocolAnthropic: 'Anthropic(Messages API)',
|
||
protocolGemini: 'Gemini 原生',
|
||
protocolDashScope: 'DashScope 原生',
|
||
advancedHint: '用于补充 temperature、max_tokens、top_p 等生成参数。',
|
||
fallbackPriorityHint: '池内尝试顺序(数字越小越先):0 = 不参与;1 = 第一顺位;2 = 第二顺位,依此类推。多个提供商共用同一数字时按 ID 字典序。',
|
||
fallbackBadge: '偏好 #{priority}',
|
||
fallbackBadgeTitle: '可用池内的尝试顺序,数字越小越先尝试',
|
||
// RFC-009 Phase 4: provider pool status badges
|
||
poolBadgeInPool: '可用',
|
||
poolBadgeInPoolTitle: '已通过启动体检,参与失败切换',
|
||
poolBadgeRemoved: '已下线',
|
||
poolBadgeRemovedTitle: '已从可用池移除({source}):{message}',
|
||
poolBadgeCooldown: '冷却中',
|
||
poolBadgeCooldownTitle: '近期连续失败,{seconds} 秒后自动恢复',
|
||
poolSourceAuthError: 'API Key 失效',
|
||
poolSourceBilling: '余额/计费问题',
|
||
poolSourceModelNotFound: '模型不存在',
|
||
poolSourceInitProbe: '启动体检失败',
|
||
poolSourceManual: '手动移除',
|
||
poolReprobe: '重新检测',
|
||
poolReprobing: '检测中...',
|
||
poolReprobeOk: '检测通过,已重新加入可用池',
|
||
poolReprobeFail: '检测失败:{error}',
|
||
// RFC-073: status-pill labels driven by Liveness
|
||
livenessLive: '可用',
|
||
livenessCooldown: '冷却中',
|
||
livenessRemoved: '未连接',
|
||
livenessUnprobed: '检测中',
|
||
livenessUnprobedTooltip: '启动后正在检测可用性,稍候自动更新',
|
||
livenessUnconfigured: '需要配置',
|
||
// RFC-074 PR-2: enable / disable / drawer
|
||
enableProviderCta: '+ 启用提供商',
|
||
addCustomProvider: '+ 自定义提供商',
|
||
enable: '启用',
|
||
disable: '禁用',
|
||
alreadyEnabled: '已启用',
|
||
disableConfirm: '确定禁用提供商"{name}"?它将从下拉中消失,但配置保留,可随时再启用。',
|
||
defaultSwitchedToast: '已将默认模型切换到 {provider} / {model}',
|
||
addProviderDrawerTitle: '添加提供商',
|
||
addProviderDrawerSubtitle: '启用后会出现在模型下拉中。如果是云端提供商,启用后还需要填 API Key。',
|
||
catalogEmpty: '目录为空',
|
||
catalogSearchPlaceholder: '搜索提供商…',
|
||
catalogSearchEmpty: '没有匹配“{query}”的提供商',
|
||
enabledToast: '已启用 {name}',
|
||
emptyTitle: '还没有可用的提供商',
|
||
emptyDesc: '从内置目录中启用一个,或新建一个自定义提供商。',
|
||
searchHint: '开启后,大模型将在回答时自动调用内置搜索引擎获取实时信息(DashScope/Kimi/OpenAI 支持)。',
|
||
searchStrategyDefault: '默认',
|
||
oauthTitle: 'OpenAI OAuth 登录',
|
||
oauthLogin: 'OAuth 登录',
|
||
oauthConnected: '已连接',
|
||
oauthDisconnected: '未连接',
|
||
oauthDisconnect: '断开连接',
|
||
oauthHint: '通过 OAuth 登录 OpenAI 账号,使用 ChatGPT Plus/Pro 会员额度(非 API 额度)。',
|
||
oauthLoginSuccess: 'OpenAI OAuth 登录成功',
|
||
oauthRevokeSuccess: '已断开 OpenAI OAuth 连接',
|
||
// RFC-062:Claude Code OAuth(订阅复用)
|
||
claudeCodeOauthDetect: '检测 Claude Code 登录态',
|
||
claudeCodeOauthHint: '复用本地 Claude Code Pro/Max 订阅。请先在 Claude Code 客户端中登录,再点击"检测"读取凭据。',
|
||
claudeCodeOauthInstructions: '未检测到 Claude Code 凭据。请安装 Claude Code 客户端,使用 Pro/Max 账号登录后再点击检测。',
|
||
claudeCodeOauthRevokeHint: '请在 Claude Code 客户端中退出登录。MateClaw 不会修改 Claude Code 的本地凭据。',
|
||
providerIdPlaceholder: '例如:my-local-gemma',
|
||
providerIdHint: 'ID 仅作内部 key 使用,建议小写英文/数字,可含 . _ -,不要含斜杠或空格(创建后不可修改)。',
|
||
providerIdInvalid: 'Provider ID 只能包含字母、数字、点、下划线、连字符(不允许斜杠或空格),首字符必须是字母或数字,长度 1-64。',
|
||
fields: {
|
||
providerId: '提供商 ID',
|
||
providerName: '提供商名称',
|
||
defaultBaseUrl: '默认 Base URL',
|
||
apiKeyPrefix: 'API Key 前缀',
|
||
protocol: '协议',
|
||
generateKwargs: 'Generate Kwargs (JSON)',
|
||
fallbackPriority: '池内尝试顺序',
|
||
enableSearch: '内置搜索',
|
||
searchStrategy: '搜索策略',
|
||
modelId: '模型 ID',
|
||
modelDisplayName: '显示名称',
|
||
},
|
||
actions: {
|
||
manageModels: '管理模型',
|
||
providerSettings: '配置',
|
||
},
|
||
hints: {
|
||
openai: 'OpenAI 默认使用 https://api.openai.com/v1',
|
||
azureOpenai: 'Azure OpenAI 请填写资源级 endpoint,例如 https://<resource>.openai.azure.com/openai/v1',
|
||
anthropic: 'Anthropic 默认使用 https://api.anthropic.com',
|
||
ollama: 'Ollama 本地默认地址通常是 http://localhost:11434',
|
||
lmstudio: 'LM Studio 本地默认 OpenAI 兼容地址通常是 http://localhost:1234/v1',
|
||
gemini: 'Gemini 默认使用 https://generativelanguage.googleapis.com',
|
||
openrouter: 'OpenRouter 默认使用 https://openrouter.ai/api/v1,支持聚合多家模型',
|
||
zhipu: '智谱 AI 默认使用 https://open.bigmodel.cn/api/paas/v4',
|
||
zhipuIntl: '智谱 AI 国际版使用 https://open.z.ai/api/paas/v4',
|
||
volcengine: '火山引擎(豆包)默认使用 https://ark.cn-beijing.volces.com/api/v3,需要在火山方舟平台创建接入点',
|
||
openaiCompatible: '兼容 OpenAI 协议的服务通常使用 /v1 结尾的 Base URL',
|
||
},
|
||
discovery: {
|
||
discover: '发现模型',
|
||
discovering: '正在发现...',
|
||
testConnection: '测试连接',
|
||
testing: '测试中...',
|
||
testModel: '测试',
|
||
testingModel: '测试中...',
|
||
discoveredTitle: '发现的新模型',
|
||
discoveredCount: '发现 {total} 个模型,其中 {count} 个为新模型',
|
||
noNewModels: '未发现新模型,所有远端模型均已存在',
|
||
selectAll: '全选',
|
||
addSelected: '添加选中模型',
|
||
adding: '添加中...',
|
||
addedCount: '已添加 {count} 个模型',
|
||
connectionOk: '连接成功',
|
||
connectionFail: '连接失败',
|
||
latency: '延迟 {ms}ms',
|
||
modelOk: '模型可用',
|
||
modelFail: '模型不可用',
|
||
probeVerified: '已验证',
|
||
probeVerifiedTitle: '已验证可达',
|
||
probeFailedBanner: '⚠ {count} 个模型未通过可达性检测,未列入上方列表:',
|
||
probeUnreachable: '无法连接',
|
||
},
|
||
},
|
||
fields: {
|
||
name: '显示名称',
|
||
provider: '提供商',
|
||
modelName: '模型标识',
|
||
description: '描述',
|
||
temperature: '温度',
|
||
maxTokens: '最大 Token',
|
||
topP: 'Top P',
|
||
language: '界面语言',
|
||
streamEnabled: '流式响应',
|
||
debugMode: '调试模式',
|
||
searchEnabled: '启用搜索',
|
||
searchProvider: '搜索提供商',
|
||
searchFallbackEnabled: '失败回退',
|
||
serperApiKey: 'Serper API Key',
|
||
serperBaseUrl: 'Serper 接口地址',
|
||
tavilyApiKey: 'Tavily API Key',
|
||
tavilyBaseUrl: 'Tavily 接口地址',
|
||
duckduckgoEnabled: 'DuckDuckGo(免 Key)',
|
||
searxngBaseUrl: 'SearXNG 地址',
|
||
// STT 语音识别
|
||
sttEnabled: '启用语音识别',
|
||
sttProvider: '首选 STT 提供商',
|
||
sttFallbackEnabled: '提供商回退',
|
||
// 音乐生成
|
||
musicEnabled: '启用音乐生成',
|
||
musicProvider: '首选音乐提供商',
|
||
musicFallbackEnabled: '提供商回退',
|
||
// TTS 语音合成
|
||
ttsEnabled: '启用语音合成',
|
||
ttsProvider: '首选 TTS 提供商',
|
||
ttsFallbackEnabled: '提供商回退',
|
||
ttsAutoMode: '自动朗读模式',
|
||
ttsSpeed: '语速',
|
||
// 图片生成
|
||
imageEnabled: '启用图片生成',
|
||
imageProvider: '首选图片提供商',
|
||
imageFallbackEnabled: '提供商回退',
|
||
openaiStatus: 'OpenAI 状态',
|
||
// 视频生成
|
||
videoEnabled: '启用视频生成',
|
||
videoProvider: '首选视频提供商',
|
||
videoFallbackEnabled: '提供商回退',
|
||
dashscopeStatus: 'DashScope 状态',
|
||
zhipuApiKey: '智谱 API Key',
|
||
zhipuBaseUrl: '智谱 API 地址',
|
||
falApiKey: 'fal.ai API Key',
|
||
klingAccessKey: '可灵 Access Key',
|
||
klingSecretKey: '可灵 Secret Key',
|
||
runwayApiKey: 'Runway API Key',
|
||
minimaxApiKey: 'MiniMax API Key',
|
||
minimaxRegion: 'MiniMax API 区域',
|
||
},
|
||
hints: {
|
||
provider: '当前版本会把 DashScope 模型参数真实应用到 Agent 调用链路。',
|
||
language: '界面语言会持久化到后端设置中。',
|
||
streamEnabled: '用于控制前端默认流式响应偏好。',
|
||
debugMode: '预留给后续执行明细展示。',
|
||
searchEnabled: '关闭后搜索工具将不可用,Agent 无法联网搜索。',
|
||
searchProvider: '选择主搜索提供商,调用搜索工具时优先使用。',
|
||
searchFallbackEnabled: '主提供商调用失败时,自动回退到另一个提供商。',
|
||
serperApiKey: '用于 Google Serper 搜索服务,从 serper.dev 获取。',
|
||
serperBaseUrl: '通常无需修改,除非使用自定义代理地址。',
|
||
tavilyApiKey: '用于 Tavily 搜索服务,从 tavily.com 获取。',
|
||
tavilyBaseUrl: '通常无需修改,除非使用自定义代理地址。',
|
||
duckduckgoEnabled: '免费搜索兜底,无需 API Key。默认开启,作为零配置下的搜索降级方案。',
|
||
searxngBaseUrl: '自部署 SearXNG 实例地址。Docker 部署时自动配置。',
|
||
// STT 语音识别
|
||
sttEnabled: '开启后支持语音消息转文字。OpenAI Whisper 和 DashScope Paraformer 均复用已有 Key。',
|
||
sttProvider: '选择首选 STT 提供商,auto 模式自动选择可用的提供商。',
|
||
sttFallbackEnabled: '首选提供商失败时自动尝试其他已配置的提供商。',
|
||
openaiSttInfo: '复用模型管理中的 OpenAI API Key。使用 Whisper 模型,支持多语言自动识别。',
|
||
dashscopeSttInfo: '复用模型管理中的 DashScope API Key。使用 Paraformer Realtime(WebSocket 流式),中文识别效果优秀,亚秒级延迟。',
|
||
// 音乐生成
|
||
musicEnabled: '开启后 Agent 可通过 music_generate 工具生成音乐。Google Lyria 复用 Google Key。',
|
||
musicProvider: '选择首选音乐提供商,auto 模式优先使用 Google Lyria。',
|
||
musicFallbackEnabled: '首选提供商失败时自动尝试其他已配置的提供商。',
|
||
googleLyriaInfo: '复用模型管理中的 Google API Key。Lyria 3 模型,支持歌词谱曲和纯音乐生成。',
|
||
minimaxMusicInfo: '复用视频生成中的 MiniMax API Key。music-2.5+ 模型,支持歌词和纯音乐。',
|
||
// TTS 语音合成
|
||
ttsEnabled: '开启后可通过消息朗读按钮或自动模式使用语音合成。Edge TTS 免费无需 Key。',
|
||
ttsProvider: '选择首选 TTS 提供商,auto 模式优先使用免费的 Edge TTS。',
|
||
ttsFallbackEnabled: '首选提供商失败时自动尝试其他已配置的提供商。',
|
||
ttsAutoMode: 'off = 仅手动朗读,always = 每条 AI 回复自动播放语音。',
|
||
ttsSpeed: '语音播放速度,1.0 为正常速度。',
|
||
edgeTtsInfo: '微软 Edge 内置 TTS 服务,免费使用,支持中文、英文、日文等多语言。自动根据文本语言切换语音。',
|
||
dashscopeTtsInfo: '复用模型管理中的 DashScope API Key。使用 CosyVoice 模型,支持多种中文语音。',
|
||
openaiTtsInfo: '复用模型管理中的 OpenAI API Key。支持 alloy、echo、nova 等多种语音风格。',
|
||
// 图片生成
|
||
imageEnabled: '开启后 Agent 可使用图片生成工具。需至少配置一个图片提供商的 API Key。',
|
||
imageProvider: '选择首选图片生成提供商,auto 模式自动选择第一个可用的。',
|
||
imageFallbackEnabled: '首选提供商失败时自动尝试其他已配置的提供商。',
|
||
dashscopeImageStatus: '复用模型管理中配置的 DashScope API Key,无需额外配置。',
|
||
openaiImageStatus: '复用模型管理中配置的 OpenAI API Key,无需额外配置。',
|
||
zhipuImageApiKey: '从 bigmodel.cn 获取。CogView-3-Flash 模型免费。与视频生成共用同一 Key。',
|
||
falImageApiKey: '从 fal.ai 获取,支持 Flux 系列图片生成模型。与视频生成共用同一 Key。',
|
||
googleImagenInfo: '复用模型管理中的 Google API Key。支持 Gemini 图片生成和 Imagen 4.0 模型。',
|
||
minimaxImageInfo: '复用视频生成中的 MiniMax API Key。image-01 模型,支持多种画面比例,最多 9 张。',
|
||
// 视频生成
|
||
videoEnabled: '开启后 Agent 可使用视频生成工具。需至少配置一个视频提供商的 API Key。',
|
||
videoProvider: '选择首选视频生成提供商,auto 模式自动选择第一个可用的。',
|
||
videoFallbackEnabled: '首选提供商失败时自动尝试其他已配置的提供商。',
|
||
dashscopeVideoStatus: '复用模型管理中配置的 DashScope API Key,无需额外配置。',
|
||
zhipuApiKey: '从 bigmodel.cn 获取,CogVideoX-Flash 模型免费。',
|
||
zhipuBaseUrl: '通常无需修改,除非使用自定义代理地址。',
|
||
falApiKey: '从 fal.ai 获取,一个 Key 可访问 Kling、Runway、Luma 等多个模型。',
|
||
klingAccessKey: '从快手开放平台获取,用于调用可灵视频生成 API。',
|
||
klingSecretKey: '与 Access Key 配对使用,用于 JWT 签名鉴权。',
|
||
runwayApiKey: '从 runwayml.com 获取。支持 gen4.5、gen4_turbo 等旗舰模型。',
|
||
minimaxApiKey: '从 minimaxi.com 获取。海螺 Hailuo 视频,有免费额度,中文场景优秀。',
|
||
minimaxRegion: '选择 API 入口域名。中国账号用 CN,海外账号用 Global。',
|
||
},
|
||
searchTitle: '搜索服务',
|
||
searchDesc: '配置内置搜索工具的提供商与 API 凭证',
|
||
sttTitle: '语音识别',
|
||
sttDesc: '配置 STT 语音转文字,支持 OpenAI Whisper 和 DashScope Paraformer',
|
||
sttProviderOptions: { auto: '自动选择' },
|
||
sttProviderTags: { reuseLlmKey: '复用 LLM API Key' },
|
||
musicTitle: '音乐生成',
|
||
musicDesc: '配置 AI 音乐生成,支持 Google Lyria 和 MiniMax Music',
|
||
musicProviderOptions: { auto: '自动选择' },
|
||
musicProviderTags: { reuseLlmKey: '复用 LLM API Key', sharedWithVideo: '与视频共用' },
|
||
ttsTitle: '语音合成',
|
||
ttsDesc: '配置 TTS 语音合成,支持 Edge TTS(免费)、OpenAI TTS、DashScope CosyVoice',
|
||
ttsProviderOptions: {
|
||
auto: '自动选择',
|
||
},
|
||
ttsProviderTags: {
|
||
free: '免费',
|
||
noKeyNeeded: '无需 API Key',
|
||
reuseLlmKey: '复用 LLM API Key',
|
||
},
|
||
ttsAutoModeOptions: {
|
||
off: '关闭(仅手动朗读)',
|
||
always: '始终自动朗读',
|
||
},
|
||
imageTitle: '图片生成',
|
||
imageDesc: '配置 AI 图片生成能力,支持 DashScope、OpenAI DALL-E、fal.ai Flux、智谱 CogView',
|
||
imageProviderOptions: {
|
||
auto: '自动选择',
|
||
},
|
||
imageProviderTags: {
|
||
reuseLlmKey: '复用 LLM API Key',
|
||
freeQuota: '有免费额度',
|
||
configuredInModels: '前往模型设置查看',
|
||
sharedWithVideo: '与视频共用',
|
||
},
|
||
videoTitle: '视频生成',
|
||
videoDesc: '配置 AI 视频生成能力,支持文字生成视频和图片生成视频',
|
||
videoProviderOptions: {
|
||
auto: '自动选择',
|
||
},
|
||
videoProviderTags: {
|
||
reuseLlmKey: '复用 LLM API Key',
|
||
freeQuota: '有免费额度',
|
||
configuredInModels: '前往模型设置查看',
|
||
},
|
||
minimaxRegionGlobal: '海外(api.minimax.io)',
|
||
minimaxRegionCn: '中国大陆(api.minimaxi.com)',
|
||
actions: {
|
||
setDefault: '设为默认',
|
||
saveSystem: '保存系统设置',
|
||
},
|
||
messages: {
|
||
loadFailed: '加载设置失败',
|
||
saveSuccess: '设置已保存',
|
||
saveFailed: '保存设置失败',
|
||
deleteConfirm: '确认删除该模型预设?',
|
||
modelSaved: '模型预设已保存',
|
||
modelDeleted: '模型预设已删除',
|
||
defaultChanged: '默认模型已更新',
|
||
},
|
||
languageOptions: {
|
||
zhCN: '简体中文',
|
||
enUS: 'English',
|
||
},
|
||
},
|
||
agentContext: {
|
||
kicker: '上下文工作面',
|
||
title: '智能体上下文',
|
||
desc: '管理智能体的提示文件和记忆',
|
||
selectAgent: '选择智能体',
|
||
noAgent: '请先选择一个智能体',
|
||
files: '文件列表',
|
||
coreFiles: '核心文件',
|
||
coreFilesDesc: '启用的文件将按顺序拼接为 Agent 系统提示词',
|
||
newFile: '新建文件',
|
||
noFiles: '暂无文件',
|
||
selectFile: '选择左侧文件查看内容',
|
||
fileContent: '在此编辑 Markdown 内容...',
|
||
preview: '预览',
|
||
editOnly: '编辑',
|
||
splitView: '分栏',
|
||
modified: '已修改',
|
||
saveSuccess: '保存成功',
|
||
saveFailed: '保存失败',
|
||
deleteConfirm: '确认删除文件 "{name}" 吗?',
|
||
deleteSuccess: '文件已删除',
|
||
deleteFailed: '删除失败',
|
||
promptUpdated: '系统提示文件配置已更新',
|
||
promptUpdateFailed: '更新系统提示文件配置失败',
|
||
newFileTitle: '新建文件',
|
||
newFilePlaceholder: '输入文件名(如 AGENTS.md)',
|
||
newFileHint: '文件名必须以 .md 结尾',
|
||
fileExists: '文件名已存在',
|
||
invalidFilename: '请输入有效的 .md 文件名',
|
||
loadFailed: '加载文件列表失败',
|
||
loadFileFailed: '加载文件内容失败',
|
||
},
|
||
agents: {
|
||
title: '智能体管理',
|
||
desc: '创建、编辑和管理你的 AI 智能体',
|
||
newAgent: '新建智能体',
|
||
templates: {
|
||
title: '选择模板',
|
||
desc: '选择预配置的 Agent 模板快速开始,或从空白创建。',
|
||
skip: '从空白开始',
|
||
applied: '已从模板创建 Agent',
|
||
},
|
||
search: '搜索智能体...',
|
||
tabs: {
|
||
all: '全部',
|
||
react: 'ReAct',
|
||
planExecute: 'Plan-Execute',
|
||
enabled: '已启用',
|
||
disabled: '已停用',
|
||
basic: '基本信息',
|
||
skills: '技能',
|
||
tools: '工具',
|
||
providers: '偏好提供商',
|
||
context: '上下文',
|
||
},
|
||
columns: {
|
||
name: '名称',
|
||
description: '描述',
|
||
agentType: '类型',
|
||
modelName: '模型',
|
||
tags: '标签',
|
||
enabled: '状态',
|
||
updateTime: '更新时间',
|
||
actions: '操作',
|
||
},
|
||
status: {
|
||
enabled: '已启用',
|
||
disabled: '已停用',
|
||
},
|
||
emptyTitle: '暂无智能体',
|
||
emptyDesc: '创建你的第一个智能体开始使用',
|
||
modal: {
|
||
newTitle: '新建智能体',
|
||
editTitle: '编辑智能体',
|
||
},
|
||
fields: {
|
||
name: '名称',
|
||
icon: '图标',
|
||
type: '类型',
|
||
description: '描述',
|
||
systemPrompt: '系统提示词',
|
||
maxIterations: '最大迭代次数',
|
||
defaultThinkingLevel: '默认思考深度',
|
||
tags: '标签',
|
||
enabled: '启用',
|
||
},
|
||
thinkingLevels: {
|
||
auto: '跟随模型',
|
||
off: '关闭',
|
||
low: '低',
|
||
medium: '标准',
|
||
high: '深度',
|
||
max: '极限',
|
||
},
|
||
types: {
|
||
react: 'ReAct(工具调用)',
|
||
planExecute: 'Plan-and-Execute',
|
||
},
|
||
actions: {
|
||
edit: '编辑',
|
||
delete: '删除',
|
||
create: '创建',
|
||
update: '保存',
|
||
},
|
||
placeholders: {
|
||
name: '智能体名称',
|
||
icon: 'Emoji 或 URL',
|
||
description: '简短描述',
|
||
systemPrompt: '你是一个有帮助的 AI 助手...',
|
||
tags: 'tag1,tag2',
|
||
},
|
||
messages: {
|
||
noDescription: '暂无描述',
|
||
deleteConfirm: '确认删除该智能体吗?删除后不可恢复。',
|
||
loadFailed: '加载智能体列表失败',
|
||
saveFailed: '保存智能体失败',
|
||
saveSuccess: '智能体已保存',
|
||
deleteFailed: '删除智能体失败',
|
||
deleteSuccess: '智能体已删除',
|
||
toggleFailed: '切换状态失败',
|
||
toggleSuccess: '状态已更新',
|
||
},
|
||
binding: {
|
||
skillsHint: '选择此智能体可使用的技能。留空则使用所有已启用的技能。',
|
||
toolsHint: '选择此智能体可使用的工具。留空则使用所有已启用的工具。',
|
||
advancedToolsTitle: '高级:手选原子工具',
|
||
advancedToolsHint: 'Skill 绑定已自动展开 allowed-tools。此处仅用于未打包成 Skill 的内置微工具(如 datetime、delegate_agent)。',
|
||
providersHint: '此智能体优先使用的提供商顺序(数字越小越先尝试)。留空则按全局可用池顺序回退。提供商进入冷却或被移出池时仍会被自动跳过。',
|
||
providersAddHint: '点击下方提供商加入偏好列表:',
|
||
noSkills: '暂无可用技能',
|
||
noTools: '暂无可用工具',
|
||
noProviderPreferences: '尚未配置偏好顺序,将按全局回退链顺序使用。',
|
||
contextHint: '管理此智能体的上下文文件(如 AGENT.md),定义智能体的行为、知识和指令。',
|
||
goToContext: '前往编辑上下文',
|
||
},
|
||
},
|
||
security: {
|
||
title: '安全管理',
|
||
kicker: '治理中心',
|
||
layoutDesc: '边界、审批、审计和工作区治理必须在这里说同一种语言,否则系统不值得被信任。',
|
||
sections: {
|
||
toolGuard: '工具防护',
|
||
fileGuard: '文件防护',
|
||
auditLogs: '审计日志',
|
||
members: '成员管理',
|
||
workspaces: '工作区',
|
||
activity: '操作日志',
|
||
},
|
||
activity: {
|
||
title: '操作日志',
|
||
desc: '聚合视图:审计事件 + 工具审批(成功 tool 调用待落库后自动接入)。',
|
||
allActions: '全部操作',
|
||
allResources: '全部资源',
|
||
allSources: '全部来源',
|
||
sourceAudit: '审计',
|
||
sourceApproval: '审批',
|
||
detailTitle: '事件详情',
|
||
detailDetails: '详情',
|
||
loading: '加载中...',
|
||
noEvents: '暂无操作记录',
|
||
columns: {
|
||
time: '时间',
|
||
source: '来源',
|
||
user: '用户',
|
||
action: '操作',
|
||
resource: '资源类型',
|
||
name: '名称',
|
||
ip: 'IP',
|
||
},
|
||
},
|
||
members: {
|
||
title: '工作区成员',
|
||
desc: '管理当前工作区的成员和角色。',
|
||
addMember: '添加成员',
|
||
noMembers: '暂无成员。',
|
||
loading: '加载中...',
|
||
columns: {
|
||
user: '用户',
|
||
role: '角色',
|
||
joined: '加入时间',
|
||
actions: '操作',
|
||
},
|
||
roles: {
|
||
owner: '所有者',
|
||
admin: '管理员',
|
||
member: '成员',
|
||
viewer: '查看者',
|
||
},
|
||
addDialog: {
|
||
title: '添加成员',
|
||
userId: '用户 ID',
|
||
userIdPlaceholder: '输入用户 ID',
|
||
user: '选择用户',
|
||
userPlaceholder: '搜索用户名…',
|
||
username: '用户名',
|
||
usernamePlaceholder: '输入用户名',
|
||
usernameHint: '如果用户不存在,将自动创建账号',
|
||
password: '密码',
|
||
passwordPlaceholder: '新用户需填写密码',
|
||
passwordHint: '已有用户无需填写,新用户必填',
|
||
nickname: '昵称',
|
||
nicknamePlaceholder: '可选,用户显示名称',
|
||
role: '角色',
|
||
},
|
||
actions: {
|
||
remove: '移除',
|
||
cancel: '取消',
|
||
confirm: '确认',
|
||
},
|
||
messages: {
|
||
addSuccess: '成员添加成功',
|
||
addFailed: '添加成员失败',
|
||
updateSuccess: '角色更新成功',
|
||
updateFailed: '更新角色失败',
|
||
removeConfirm: '确定要移除该成员吗?',
|
||
removeSuccess: '成员已移除',
|
||
removeFailed: '移除成员失败',
|
||
},
|
||
},
|
||
workspaces: {
|
||
title: '工作区管理',
|
||
desc: '管理组织的工作区。',
|
||
manage: '管理工作区',
|
||
newWorkspace: '新建工作区',
|
||
loading: '加载中...',
|
||
noWorkspaces: '暂无工作区。',
|
||
current: '当前',
|
||
columns: {
|
||
name: '名称',
|
||
slug: '标识',
|
||
description: '描述',
|
||
basePath: '活动目录',
|
||
created: '创建时间',
|
||
actions: '操作',
|
||
},
|
||
createDialog: {
|
||
title: '新建工作区',
|
||
name: '名称',
|
||
namePlaceholder: '例如:工程团队',
|
||
slug: '标识',
|
||
slugPlaceholder: '例如:engineering',
|
||
slugHint: '标识创建后不可修改。',
|
||
description: '描述',
|
||
descriptionPlaceholder: '可选描述',
|
||
basePath: '活动目录',
|
||
basePathPlaceholder: '例如:/home/user/project 或 D:\\codes\\MyProject',
|
||
basePathHint: '限制 Agent 文件操作的根目录,留空不限制。',
|
||
},
|
||
editDialog: {
|
||
title: '编辑工作区',
|
||
},
|
||
deleteDialog: {
|
||
title: '删除工作区',
|
||
confirm: '确定要删除 {name} 吗?这将移除该工作区下的所有资源。',
|
||
},
|
||
actions: {
|
||
edit: '编辑',
|
||
delete: '删除',
|
||
cancel: '取消',
|
||
create: '创建',
|
||
save: '保存',
|
||
},
|
||
messages: {
|
||
saveSuccess: '工作区保存成功',
|
||
saveFailed: '保存工作区失败',
|
||
deleteSuccess: '工作区已删除',
|
||
deleteFailed: '删除工作区失败',
|
||
},
|
||
},
|
||
toolGuard: {
|
||
title: '工具防护',
|
||
desc: '管理工具调用安全规则和全局防护配置',
|
||
enabled: '启用工具防护',
|
||
enabledHint: '开启后将对工具调用进行安全检查和规则匹配',
|
||
guardScope: '防护范围',
|
||
scopeAll: '所有工具',
|
||
scopeSelected: '指定工具',
|
||
guardedTools: '受保护工具',
|
||
guardedToolsPlaceholder: '输入工具名后回车',
|
||
deniedTools: '禁止调用工具',
|
||
deniedToolsPlaceholder: '输入工具名后回车',
|
||
rules: '安全规则',
|
||
rulesDesc: '管理内置和自定义安全规则',
|
||
addRule: '新增规则',
|
||
editRule: '编辑规则',
|
||
columns: {
|
||
name: '规则名称',
|
||
severity: '严重度',
|
||
category: '分类',
|
||
pattern: '匹配模式',
|
||
decision: '决策',
|
||
enabled: '状态',
|
||
builtin: '类型',
|
||
actions: '操作',
|
||
},
|
||
builtinBadge: '内置',
|
||
customBadge: '自定义',
|
||
deleteConfirm: '确认删除规则 "{name}" 吗?',
|
||
fields: {
|
||
ruleId: '规则 ID',
|
||
name: '名称',
|
||
description: '描述',
|
||
toolName: '目标工具',
|
||
pattern: '正则模式',
|
||
excludePattern: '排除模式',
|
||
category: '分类',
|
||
severity: '严重度',
|
||
decision: '决策',
|
||
remediation: '修复建议',
|
||
priority: '优先级',
|
||
},
|
||
},
|
||
fileGuard: {
|
||
title: '文件防护',
|
||
desc: '管理敏感文件路径保护',
|
||
enabled: '启用文件防护',
|
||
enabledHint: '开启后将保护敏感文件路径免受未授权访问',
|
||
sensitivePaths: '敏感路径',
|
||
sensitivePathsDesc: '配置需要保护的文件路径(支持通配符)',
|
||
addPath: '添加路径',
|
||
pathPlaceholder: '输入路径后回车 (例: ~/.ssh/)',
|
||
},
|
||
audit: {
|
||
title: '审计日志',
|
||
desc: '查看工具安全检查记录',
|
||
config: {
|
||
title: '审计配置',
|
||
enabled: '启用审计日志',
|
||
enabledHint: '关闭后将不再记录工具调用审计日志',
|
||
minSeverity: '最低记录等级',
|
||
minSeverityHint: '仅记录达到此等级及以上的审计事件',
|
||
retentionDays: '保留天数',
|
||
retentionDaysHint: '超过此天数的审计日志将被自动清理(0=永不清理)',
|
||
},
|
||
stats: {
|
||
total: '总检查',
|
||
blocked: '已阻止',
|
||
needsApproval: '需审批',
|
||
allowed: '已放行',
|
||
},
|
||
filters: {
|
||
toolName: '工具名称',
|
||
decision: '决策',
|
||
severity: '严重度',
|
||
conversationId: '会话 ID',
|
||
},
|
||
columns: {
|
||
time: '时间',
|
||
tool: '工具',
|
||
decision: '决策',
|
||
severity: '严重度',
|
||
conversationId: '会话',
|
||
},
|
||
noLogs: '暂无审计记录',
|
||
expandFindings: '展开详情',
|
||
},
|
||
severity: {
|
||
CRITICAL: '严重',
|
||
HIGH: '高',
|
||
MEDIUM: '中',
|
||
LOW: '低',
|
||
INFO: '信息',
|
||
},
|
||
decision: {
|
||
ALLOW: '放行',
|
||
NEEDS_APPROVAL: '需审批',
|
||
BLOCK: '阻止',
|
||
},
|
||
messages: {
|
||
loadFailed: '加载安全配置失败',
|
||
saveSuccess: '安全配置已保存',
|
||
saveFailed: '保存安全配置失败',
|
||
ruleCreated: '规则已创建',
|
||
ruleUpdated: '规则已更新',
|
||
ruleDeleted: '规则已删除',
|
||
ruleToggled: '规则状态已更新',
|
||
},
|
||
approval: {
|
||
title: '需要审批',
|
||
severity: '风险等级',
|
||
summary: '摘要',
|
||
findings: '发现的问题',
|
||
remediation: '修复建议',
|
||
approved: '已批准',
|
||
denied: '已拒绝',
|
||
hint: '输入 /approve 批准执行,或输入 /deny 拒绝',
|
||
},
|
||
},
|
||
tokenUsage: {
|
||
kicker: '运行成本',
|
||
title: 'Token 统计',
|
||
desc: '查看 Token 使用量和模型调用统计',
|
||
refresh: '刷新',
|
||
startDate: '开始日期',
|
||
endDate: '结束日期',
|
||
promptTokens: 'Prompt Tokens',
|
||
completionTokens: 'Completion Tokens',
|
||
assistantMessages: 'Assistant Messages',
|
||
byModel: '按模型统计',
|
||
byDate: '按日期统计',
|
||
model: '模型',
|
||
provider: '提供商',
|
||
date: '日期',
|
||
messageCount: '消息数',
|
||
loadFailed: '加载 Token 统计失败',
|
||
noData: '暂无 Token 使用数据',
|
||
},
|
||
acp: {
|
||
kicker: '外部 Agent',
|
||
title: 'ACP Endpoints',
|
||
desc: '通过 stdio 委派给外部编码 Agent(codex / claude-code / opencode / qwen-code)。安装对应 CLI 后开启该入口。',
|
||
addEndpoint: '新增 Endpoint',
|
||
builtin: '内置',
|
||
test: '测试',
|
||
testing: '测试中…',
|
||
statusUnknown: '未测试',
|
||
empty: '暂无 ACP endpoint。',
|
||
loadFailed: '加载 ACP endpoint 列表失败',
|
||
saveFailed: '保存 endpoint 失败',
|
||
deleteTitle: '确认删除',
|
||
deleteConfirm: '确认删除 ACP endpoint "{name}"?内置 endpoint 不可删除。',
|
||
deleteFailed: '删除 endpoint 失败',
|
||
toggleFailed: '切换 endpoint 状态失败',
|
||
invalidJson: 'JSON 格式错误',
|
||
columns: {
|
||
name: 'Endpoint',
|
||
command: '命令',
|
||
status: '最近一次测试',
|
||
enabled: '启用',
|
||
actions: '操作',
|
||
},
|
||
fields: {
|
||
name: '标识 (slug)',
|
||
displayName: '显示名',
|
||
description: '描述',
|
||
command: '命令',
|
||
args: '参数 (JSON 数组)',
|
||
env: '环境变量 (JSON 对象)',
|
||
toolParseMode: 'Tool 解析模式',
|
||
enabled: '启用',
|
||
},
|
||
modal: {
|
||
newTitle: '新增 ACP Endpoint',
|
||
editTitle: '编辑 ACP Endpoint',
|
||
},
|
||
},
|
||
mcp: {
|
||
kicker: '能力桥接',
|
||
title: 'MCP 连接',
|
||
desc: '管理 MCP (Model Context Protocol) 服务器连接',
|
||
addServer: '添加连接',
|
||
refreshAll: '全量刷新',
|
||
columns: {
|
||
name: '名称',
|
||
transport: '协议',
|
||
enabled: '状态',
|
||
lastStatus: '连接状态',
|
||
lastConnectedTime: '最后连接',
|
||
toolCount: '工具数',
|
||
description: '描述',
|
||
actions: '操作',
|
||
},
|
||
status: {
|
||
connected: '已连接',
|
||
disconnected: '未连接',
|
||
error: '连接失败',
|
||
},
|
||
transport: {
|
||
stdio: 'Stdio',
|
||
sse: 'SSE',
|
||
streamable_http: 'HTTP',
|
||
},
|
||
modal: {
|
||
newTitle: '添加 MCP 连接',
|
||
editTitle: '编辑 MCP 连接',
|
||
},
|
||
fields: {
|
||
name: '名称',
|
||
description: '描述',
|
||
transport: '传输协议',
|
||
url: 'URL',
|
||
headers: 'HTTP Headers (JSON)',
|
||
command: '命令',
|
||
args: '参数 (JSON 数组)',
|
||
env: '环境变量 (JSON)',
|
||
cwd: '工作目录',
|
||
connectTimeout: '连接超时 (秒)',
|
||
readTimeout: '读取超时 (秒)',
|
||
enabled: '启用',
|
||
},
|
||
placeholders: {
|
||
name: '服务名称',
|
||
description: '简短描述',
|
||
url: 'http://localhost:8080/sse',
|
||
headers: '',
|
||
command: 'npx',
|
||
args: '',
|
||
env: '',
|
||
cwd: '/path/to/dir',
|
||
},
|
||
actions: {
|
||
test: '测试连接',
|
||
testing: '测试中...',
|
||
},
|
||
testResult: {
|
||
success: '连接成功',
|
||
failed: '连接失败',
|
||
tools: '发现 {count} 个工具',
|
||
latency: '延迟 {ms}ms',
|
||
},
|
||
messages: {
|
||
loadFailed: '加载 MCP 连接列表失败',
|
||
createSuccess: 'MCP 连接已创建',
|
||
updateSuccess: 'MCP 连接已更新',
|
||
deleteSuccess: 'MCP 连接已删除',
|
||
deleteConfirm: '确认删除 MCP 连接 "{name}" 吗?',
|
||
toggleSuccess: '状态已更新',
|
||
refreshSuccess: '全量刷新完成',
|
||
saveFailed: '保存失败',
|
||
empty: '暂无 MCP 连接',
|
||
emptyDesc: '添加一个 MCP 连接来扩展 Agent 的能力',
|
||
},
|
||
},
|
||
sessions: {
|
||
title: '会话管理',
|
||
desc: '查看和管理所有会话',
|
||
search: '搜索会话...',
|
||
columns: {
|
||
session: '会话',
|
||
source: '来源',
|
||
agent: 'Agent',
|
||
messages: '消息',
|
||
status: '状态',
|
||
lastActive: '最后活跃',
|
||
actions: '操作',
|
||
},
|
||
status: {
|
||
active: '活跃',
|
||
closed: '已关闭',
|
||
},
|
||
empty: '暂无会话',
|
||
loadFailed: '加载会话列表失败',
|
||
deleteConfirm: '确定要删除这个会话吗?',
|
||
deleteTitle: '确认删除',
|
||
deleteFailed: '删除会话失败',
|
||
time: {
|
||
justNow: '刚刚',
|
||
minutesAgo: '{n} 分钟前',
|
||
hoursAgo: '{n} 小时前',
|
||
},
|
||
},
|
||
tools: {
|
||
kicker: '开发者目录',
|
||
title: '工具目录',
|
||
desc: '已安装 Skill 暴露的原子动作。终端绑定请使用 Skills 页。',
|
||
registerButton: '注册工具',
|
||
columns: {
|
||
tool: '工具',
|
||
beanName: 'Bean 名称',
|
||
type: '类型',
|
||
status: '状态',
|
||
actions: '操作',
|
||
},
|
||
empty: '暂无已注册工具',
|
||
modal: {
|
||
editTitle: '编辑工具',
|
||
newTitle: '注册工具',
|
||
},
|
||
fields: {
|
||
name: '名称',
|
||
beanName: 'Bean 名称',
|
||
type: '类型',
|
||
description: '描述',
|
||
},
|
||
placeholders: {
|
||
name: '工具名称',
|
||
beanName: 'Spring Bean 名称',
|
||
description: '工具描述',
|
||
},
|
||
types: {
|
||
builtin: '内置',
|
||
mcp: 'MCP',
|
||
custom: '自定义',
|
||
},
|
||
messages: {
|
||
saveFailed: '保存工具失败',
|
||
deleteConfirm: '确定要删除这个工具吗?',
|
||
deleteTitle: '确认删除',
|
||
deleteFailed: '删除工具失败',
|
||
toggleFailed: '切换工具状态失败',
|
||
},
|
||
},
|
||
skillTemplates: {
|
||
kicker: '创作向导',
|
||
title: 'Skill 模板库',
|
||
desc: '选一个起步模板,填几个字段,模板向导会在你的工作区里生成一个标准 manifest skill。',
|
||
backToSkills: '← 返回 Skills',
|
||
backToGallery: '返回模板列表',
|
||
fields: '个字段',
|
||
useTemplate: '使用模板',
|
||
empty: '暂无可用模板。',
|
||
step1: '填写参数',
|
||
step2: '预览',
|
||
step3: '完成',
|
||
next: '下一步',
|
||
back: '上一步',
|
||
selectKb: '— 选择知识库 —',
|
||
previewHint: '即将生成的 SKILL.md 预览。确认无误后点 Install Skill 创建。',
|
||
installSkill: '安装 Skill',
|
||
installing: '安装中...',
|
||
installFailed: '安装失败',
|
||
installed: 'Skill 已安装',
|
||
installedDesc: '{name} 已添加到你的工作区。',
|
||
installAnother: '再装一个',
|
||
viewInSkills: '到 Skills 查看',
|
||
},
|
||
plugins: {
|
||
title: '插件',
|
||
desc: '管理从 JAR 文件加载的外部插件',
|
||
refresh: '刷新',
|
||
type: '类型',
|
||
author: '作者',
|
||
status: '状态',
|
||
tools: '工具',
|
||
channels: '渠道',
|
||
provider: '提供商',
|
||
memoryProvider: '记忆',
|
||
noDescription: '暂无描述',
|
||
emptyTitle: '暂无已安装插件',
|
||
emptyHint: '将插件 JAR 文件放入 ~/.mateclaw/plugins/ 目录后重启服务',
|
||
loading: '加载插件中...',
|
||
loadFailed: '加载插件失败',
|
||
enabled: '{name} 已启用',
|
||
disabled: '{name} 已禁用',
|
||
toggleFailed: '切换插件状态失败',
|
||
},
|
||
datasources: {
|
||
kicker: '数据接入',
|
||
title: '数据源管理',
|
||
desc: '管理外部数据库连接,用于自然语言查数',
|
||
addButton: '添加数据源',
|
||
empty: '暂无数据源,点击添加开始配置',
|
||
columns: {
|
||
name: '名称',
|
||
type: '类型',
|
||
connection: '连接',
|
||
status: '状态',
|
||
actions: '操作',
|
||
},
|
||
sections: {
|
||
basic: '基本信息',
|
||
connection: '连接信息',
|
||
auth: '认证',
|
||
advanced: '高级配置',
|
||
},
|
||
modal: {
|
||
editTitle: '编辑数据源',
|
||
newTitle: '添加数据源',
|
||
},
|
||
fields: {
|
||
name: '名称',
|
||
dbType: '数据库类型',
|
||
host: '主机',
|
||
port: '端口',
|
||
databaseName: '数据库名',
|
||
schemaName: 'Schema',
|
||
username: '用户名',
|
||
password: '密码',
|
||
description: '描述',
|
||
extraParams: 'JDBC 参数',
|
||
},
|
||
placeholders: {
|
||
name: '例如:业务数据库',
|
||
host: '127.0.0.1',
|
||
port: '3306',
|
||
databaseName: '数据库名',
|
||
schemaName: 'public(默认)',
|
||
username: '数据库用户名',
|
||
password: '数据库密码',
|
||
description: '数据源用途说明(可选)',
|
||
extraParams: 'useSSL=false&serverTimezone=UTC',
|
||
},
|
||
hints: {
|
||
extraParams: 'JDBC URL 附加参数,多个参数用 & 分隔',
|
||
},
|
||
testButton: '测试连接',
|
||
messages: {
|
||
saveFailed: '保存数据源失败',
|
||
deleteConfirm: '确定要删除这个数据源吗?删除后 Agent 将无法访问此数据源。',
|
||
deleteTitle: '确认删除',
|
||
deleteFailed: '删除数据源失败',
|
||
toggleFailed: '切换数据源状态失败',
|
||
testSuccess: '连接成功',
|
||
testFailed: '连接失败,请检查配置',
|
||
},
|
||
},
|
||
doctor: {
|
||
title: '系统诊断',
|
||
checking: '检查中...',
|
||
allGood: '所有系统正常',
|
||
hasWarnings: '{count} 个警告',
|
||
hasErrors: '{count} 个问题',
|
||
refresh: '重新检查',
|
||
lastChecked: '{time} 前检查',
|
||
diagnose: '诊断问题',
|
||
},
|
||
wiki: {
|
||
kicker: '知识引擎',
|
||
desc: 'AI 驱动的结构化知识库,自动消化原始材料为 Wiki 页面',
|
||
createKB: '新建知识库',
|
||
knowledgeBases: '知识库',
|
||
noKB: '暂无知识库',
|
||
selectKB: '请选择一个知识库',
|
||
selectPage: '从左侧选择一个页面查看',
|
||
pageKicker: '知识页面',
|
||
confirmDelete: '确认删除页面「{title}」?此操作不可撤销。',
|
||
confirmBatchDelete: '确认删除 {count} 个页面?此操作不可撤销。',
|
||
batchSelect: '批量选择',
|
||
selectAll: '全选',
|
||
kbName: '名称',
|
||
kbNamePlaceholder: '输入知识库名称',
|
||
kbDescription: '描述',
|
||
kbDescPlaceholder: '简要描述知识库用途',
|
||
rawMaterials: '原始材料',
|
||
pages: 'Wiki 页面',
|
||
config: '处理配置',
|
||
searchPages: '搜索页面...',
|
||
dropFiles: '拖拽文件到此处或点击上传',
|
||
dropToUpload: '松开即开始上传',
|
||
uploading: '上传中…',
|
||
uploadFailed: '上传失败:{name}',
|
||
addText: '添加文本',
|
||
noRawMaterials: '暂无原始材料',
|
||
reprocess: '重新处理',
|
||
resume: '继续生成',
|
||
download: '下载原始文件',
|
||
downloadFailed: '下载失败',
|
||
processAll: '处理所有待处理材料',
|
||
materialTitle: '标题',
|
||
materialContent: '内容',
|
||
pasteContent: '粘贴或输入文本内容...',
|
||
backlinks: '反向链接',
|
||
generatedByAi: 'AI 生成',
|
||
editedManually: '人工编辑',
|
||
configTitle: '知识库处理规则',
|
||
configDesc: '配置 AI 消化原始材料时遵循的规则',
|
||
configPlaceholder: '在此编辑 Wiki 处理规则...',
|
||
pageCount: '{count} 页',
|
||
sourceCount: '{count} 份材料',
|
||
dirPlaceholder: '输入本地目录路径,如 /Users/me/docs',
|
||
scan: '扫描',
|
||
scanning: '扫描中...',
|
||
scanResult: '已扫描 {scanned} 个文件,新增 {added} 个,跳过 {skipped} 个',
|
||
saving: '保存中...',
|
||
status: {
|
||
active: '启用',
|
||
uploading: '上传中',
|
||
processing: '处理中',
|
||
error: '错误',
|
||
pending: '待处理',
|
||
completed: '已完成',
|
||
partial: '部分完成',
|
||
failed: '失败',
|
||
},
|
||
progress: {
|
||
preparing: '准备中…',
|
||
uploading: '上传 {pct}%',
|
||
},
|
||
jobStage: {
|
||
queued: '排队中',
|
||
routing: '选择模型',
|
||
phase_a_running: '分析中',
|
||
phase_a_done: '分析完成',
|
||
phase_b_running: '生成页面',
|
||
enriching: '补充链接',
|
||
embedding: '向量化',
|
||
completed: '已完成',
|
||
failed: '处理失败',
|
||
cancelled: '已取消',
|
||
},
|
||
jobInfo: {
|
||
currentModel: '当前模型',
|
||
fallbackActive: '已启用备用模型',
|
||
elapsedTime: '已用时',
|
||
pagesProgress: '已生成 {done}/{total} 页',
|
||
},
|
||
page: {
|
||
type: {
|
||
entity: '实体',
|
||
concept: '概念',
|
||
source: '来源',
|
||
synthesis: '综合',
|
||
},
|
||
enriched: '已链接',
|
||
notEnriched: '未链接',
|
||
enrich: '添加交叉链接',
|
||
repair: '修复页面',
|
||
citations: '来源 {count} 个 chunk',
|
||
noCitations: '未找到来源引用',
|
||
citationUnknownSource: '未知来源',
|
||
citationChunkN: '第 {n} 段',
|
||
citationChunkUnknown: '段落未知',
|
||
citationOffset: '偏移 {start}–{end}',
|
||
},
|
||
relation: {
|
||
shared_chunk: '共享片段',
|
||
shared_raw: '共享来源',
|
||
direct_link: '直接引用',
|
||
semantic_near: '语义相近',
|
||
relatedPages: '相关页面',
|
||
explainRelation: '查看关联原因',
|
||
},
|
||
configPanel: {
|
||
embeddingModel: '向量化模型',
|
||
embeddingModelHint: '语义搜索模型,留空使用系统默认',
|
||
ingestMode: '入库模式',
|
||
ingestModeEager: '立即生成页面',
|
||
ingestModeLazy: '先入索引',
|
||
ingestModeEagerHint: '上传后立即调用 LLM 生成完整 Wiki 页面。',
|
||
ingestModeLazyHint: '上传仅抽取、切片、向量化,跳过页面生成;上传即可搜索,页面按需编译。',
|
||
modelStrategy: '模型策略',
|
||
globalDefault: '跟随全局默认',
|
||
selectModel: '选择可用模型…',
|
||
otherProvider: '其他',
|
||
searchModel: '搜索模型…',
|
||
noModelMatch: '未找到匹配模型',
|
||
addFallback: '+ 添加备选',
|
||
stepModel: {
|
||
route: '分析/路由',
|
||
create_page: '页面生成',
|
||
merge_page: '页面合并',
|
||
enrich: '链接标注',
|
||
summary: '摘要更新',
|
||
},
|
||
fallbackModels: '备选模型',
|
||
searchPreview: '检索测试',
|
||
searchPreviewPlaceholder: '输入用户消息,预览 Agent 检索结果…',
|
||
searchPreviewRun: '测试',
|
||
},
|
||
stats: {
|
||
enrichedRatio: '{enriched}/{total} 已链接',
|
||
failedJobs: '{count} 个失败',
|
||
},
|
||
noPages: '暂无页面',
|
||
noResults: '未找到匹配页面',
|
||
loadMore: '加载更多 {n} 条',
|
||
filteredByRaw: '按原始材料过滤',
|
||
clearFilter: '清除过滤',
|
||
systemPageBadge: '系统页',
|
||
systemPageHint: 'overview / log 是知识库自带的系统页,无法删除',
|
||
lockedPageBadge: '已锁定',
|
||
lockedPageHint: '该页被手动锁定,AI 工具与批量操作不会修改或删除',
|
||
archivedSection: '已归档',
|
||
noArchived: '没有已归档的页面',
|
||
unarchive: '恢复',
|
||
pageTypes: {
|
||
concept: '概念',
|
||
person: '人物',
|
||
place: '地点',
|
||
event: '事件',
|
||
technology: '技术',
|
||
organization: '组织',
|
||
product: '产品',
|
||
term: '术语',
|
||
process: '流程',
|
||
other: '其他',
|
||
},
|
||
graph: {
|
||
tab: '知识图谱',
|
||
nodes: '节点',
|
||
edges: '连接',
|
||
orphans: '孤立节点',
|
||
showOrphans: '显示孤立节点',
|
||
allTypes: '全部类型',
|
||
resetView: '重置视图',
|
||
fullscreen: '全屏',
|
||
exitFullscreen: '退出全屏',
|
||
linksTo: '链接到',
|
||
openPage: '打开页面',
|
||
empty: '暂无图谱数据,请先处理原始材料',
|
||
},
|
||
},
|
||
cronJobs: {
|
||
kicker: '自动执行',
|
||
title: '定时任务',
|
||
desc: '定时触发 Agent 执行消息或目标任务',
|
||
createJob: '新建任务',
|
||
editJob: '编辑任务',
|
||
noJobs: '暂无定时任务',
|
||
createFirst: '新建第一个定时任务',
|
||
columns: {
|
||
name: '任务名称',
|
||
agent: '关联 Agent',
|
||
taskType: '类型',
|
||
cron: 'Cron 表达式',
|
||
timezone: '时区',
|
||
nextRun: '下次执行',
|
||
lastRun: '上次执行',
|
||
enabled: '启用',
|
||
actions: '操作',
|
||
// RFC-063r §2.14: 列表页"最近投递"列
|
||
lastDelivery: '最近投递',
|
||
// RFC-063r post-deploy: 关联渠道列
|
||
channel: '关联渠道',
|
||
targetId: '投递目标',
|
||
},
|
||
// RFC-063r §2.14: delivery_status 状态机展示
|
||
lastDelivery: {
|
||
none: '无投递',
|
||
pending: '投递中',
|
||
delivered: '已送达',
|
||
not_delivered: '投递失败',
|
||
},
|
||
taskTypes: { text: '文字消息', reminder: '提醒', agent: 'Agent 目标' },
|
||
cronTypes: { hourly: '每小时', daily: '每天', weekly: '每周', custom: '自定义' },
|
||
days: { mon: '周一', tue: '周二', wed: '周三', thu: '周四', fri: '周五', sat: '周六', sun: '周日' },
|
||
fields: {
|
||
name: '任务名称',
|
||
namePlaceholder: '输入任务名称',
|
||
agent: '关联 Agent',
|
||
agentPlaceholder: '选择执行的 Agent',
|
||
taskType: '任务类型',
|
||
triggerMessage: '触发消息',
|
||
triggerMessagePlaceholder: '输入发送给 Agent 的消息',
|
||
reminderText: '提醒内容',
|
||
reminderTextPlaceholder: '输入到点要原样推送的提醒内容(不会经过 LLM 改写)',
|
||
requestBody: '执行目标',
|
||
requestBodyPlaceholder: '直接描述 Agent 要完成的目标',
|
||
cronFrequency: '执行频率',
|
||
cronTime: '执行时间',
|
||
cronDays: '执行星期',
|
||
cronExpression: '自定义表达式',
|
||
cronExpressionPlaceholder: '分 时 日 月 周,如: 0 9 * * 1-5',
|
||
timezone: '时区',
|
||
enabled: '立即启用',
|
||
},
|
||
actions: { runNow: '立即执行', edit: '编辑', delete: '删除' },
|
||
messages: {
|
||
createSuccess: '定时任务创建成功',
|
||
updateSuccess: '定时任务更新成功',
|
||
deleteSuccess: '定时任务删除成功',
|
||
deleteConfirm: '确定删除任务「{name}」?删除后不可恢复。',
|
||
runTriggered: '任务已触发,请到会话列表查看「cron_{id}」对应对话',
|
||
enableSuccess: '任务已启用',
|
||
disableSuccess: '任务已停用',
|
||
invalidCron: 'Cron 表达式格式不正确,请使用 5 字段格式(分 时 日 月 周)',
|
||
agentRequired: '请选择关联 Agent',
|
||
textRequired: '触发消息不能为空',
|
||
goalRequired: '执行目标不能为空',
|
||
},
|
||
},
|
||
login: {
|
||
kicker: 'AI Operating System',
|
||
subtitle: '你的智能 AI 助手',
|
||
heroTitle: '让 AI 不止会回答,而是真正进入持续工作的系统。',
|
||
heroDesc: 'MateClaw 的重点不是把更多能力堆进聊天框,而是把上下文、知识、执行和记忆收拢成一个可靠的工作面。',
|
||
pointContext: '上下文保持连续',
|
||
pointKnowledge: '知识被组织起来',
|
||
pointExecution: '能力真正能执行',
|
||
cardTitle: '登录并进入工作面',
|
||
cardDesc: '从这里进入你的 AI 工作系统。模型、知识、工作区和运行状态会在同一个界面里协同。 ',
|
||
fields: {
|
||
username: '用户名',
|
||
password: '密码',
|
||
},
|
||
placeholders: {
|
||
username: '请输入用户名',
|
||
password: '请输入密码',
|
||
},
|
||
signIn: '登录',
|
||
hint: '默认账号: <code>admin</code> / <code>admin123</code>',
|
||
failed: '登录失败,请检查账号密码',
|
||
},
|
||
channels: {
|
||
title: '渠道管理',
|
||
desc: '将 Agent 连接到各消息平台和 API',
|
||
newChannel: '新建渠道',
|
||
addChannel: '添加渠道',
|
||
status: {
|
||
active: '已启用',
|
||
inactive: '未启用',
|
||
},
|
||
configure: '配置',
|
||
enable: '启用',
|
||
disable: '停用',
|
||
empty: {
|
||
title: '连接第一个渠道',
|
||
desc: '把你的 Agent 接入团队已经在用的 IM 工具——Slack、企业微信、Telegram 等。',
|
||
cta: '连接一个渠道',
|
||
},
|
||
stats: {
|
||
active: '{n} 个运行中',
|
||
reconnecting: '{n} 个重连中',
|
||
errors: '{n} 个出错',
|
||
disabled: '{n} 个已停用',
|
||
},
|
||
cardDesc: {
|
||
connectedAs: '已连接:{account}',
|
||
connectedAsIn: '已连接:{account}({team})',
|
||
},
|
||
catalog: {
|
||
subtitle: '选一个服务接入,配置项稍后还能改。',
|
||
groups: {
|
||
im: 'IM 平台',
|
||
enterprise: '企业平台',
|
||
web: '网页与 API',
|
||
},
|
||
descriptions: {
|
||
telegram: '长轮询接入,无需公网 IP',
|
||
discord: 'Gateway WebSocket,无需公网 IP',
|
||
slack: 'Socket Mode 接入',
|
||
qq: 'WebSocket 长连接,无需公网 IP',
|
||
wecom: '企业微信智能机器人,扫码即用',
|
||
weixin: '微信个人号(iLink Bot)',
|
||
feishu: '飞书 / Lark 应用,扫码一键创建',
|
||
dingtalk: '钉钉机器人,扫码一键创建',
|
||
web: '默认浏览器渠道,始终可用',
|
||
webchat: '可嵌入网页的聊天小组件',
|
||
webhook: '通用 HTTP 接入端点',
|
||
},
|
||
},
|
||
modal: {
|
||
editTitle: '编辑渠道',
|
||
newTitle: '新建渠道',
|
||
},
|
||
fields: {
|
||
name: '名称',
|
||
type: '类型',
|
||
description: '描述',
|
||
bindAgent: '绑定 Agent',
|
||
},
|
||
placeholders: {
|
||
name: '渠道名称',
|
||
description: '渠道用途说明',
|
||
selectAgent: '选择 Agent...',
|
||
},
|
||
types: {
|
||
web: 'Web API',
|
||
dingtalk: '钉钉',
|
||
feishu: '飞书',
|
||
telegram: 'Telegram',
|
||
discord: 'Discord',
|
||
wecom: '企业微信',
|
||
weixin: '微信',
|
||
qq: 'QQ',
|
||
slack: 'Slack',
|
||
webchat: '网页嵌入',
|
||
webhook: 'Webhook',
|
||
},
|
||
tabs: {
|
||
form: '表单配置',
|
||
json: '原始 JSON',
|
||
},
|
||
webhook: {
|
||
url: 'Webhook URL',
|
||
copy: '复制',
|
||
copied: '已复制',
|
||
copyFailed: '复制失败,请手动复制',
|
||
localhostWarn: '当前为本地开发环境,IM 平台无法回调 localhost。请使用 ngrok、frp 等内网穿透工具将本地服务暴露到公网后,将公网地址替换上方 URL 中的 host 部分。',
|
||
},
|
||
weixin: {
|
||
authHint: '点击下方按钮获取微信登录二维码,使用微信扫一扫确认后 Bot Token 将自动填入。需要 iLink Bot 内测资格。',
|
||
qrcodeButton: '获取登录二维码',
|
||
rescanButton: '重新扫码(将替换当前账号)',
|
||
qrcodeLoading: '正在获取...',
|
||
qrcodeFailed: '获取二维码失败,请检查网络连接',
|
||
qrcodeExpired: '二维码已过期,请重新获取',
|
||
scanHint: '请使用微信扫描二维码登录',
|
||
polling: '等待扫码...',
|
||
scanned: '已扫码,请在手机上确认',
|
||
confirmed: '登录成功',
|
||
expired: '二维码已过期',
|
||
loginSuccess: '微信扫码登录成功,Token 已自动填入',
|
||
replaceWarning: '重新扫码将替换当前绑定的微信账号。如需绑定额外的微信账号,请点击下方按钮添加新渠道。',
|
||
addNewAccount: '绑定新微信账号(添加新渠道)',
|
||
newAccountName: '微信',
|
||
},
|
||
wecom: {
|
||
authHint: '点击按钮后会弹出企业微信二维码窗口,使用企业微信扫码确认后 Bot ID 与 Secret 将自动填入。',
|
||
authButton: '扫码授权企业微信机器人',
|
||
authLoading: '正在加载...',
|
||
authSuccess: '企业微信机器人授权成功',
|
||
sdkFailed: '企业微信 SDK 加载失败,请检查网络连接',
|
||
windowBlocked: '弹窗被浏览器拦截,请允许弹窗后重试',
|
||
authCancelled: '授权已取消',
|
||
authFailed: '授权失败',
|
||
},
|
||
webHint: 'Web 渠道使用内置 SSE 通信,无需额外配置。',
|
||
webchatHint: 'WebChat 用于把 MateClaw 聊天挂件嵌入外部网站。请配置 API Key、标题和主题色,然后在网站中引入 WebChat SDK。',
|
||
webchatApiKeyGenerated: '保存后平台会自动生成 API Key。创建完成后返回此页面即可复制。',
|
||
webchatApiKeyReadOnly: '该 API Key 由平台自动生成并托管,你只能复制,不能手动修改。',
|
||
webhookHint: 'Webhook 渠道配置请在下方「原始 JSON」标签页中编辑。',
|
||
jsonHint: '直接编辑渠道的完整 JSON 配置。切换到「表单配置」标签页时会自动同步。',
|
||
advanced: '高级配置',
|
||
accessControl: {
|
||
title: '访问控制',
|
||
dmPolicy: '私聊策略',
|
||
dmPolicyTooltip: '控制是否允许用户与机器人私聊',
|
||
groupPolicy: '群聊策略',
|
||
groupPolicyTooltip: '控制是否在群聊中响应消息',
|
||
policyOpen: '开放',
|
||
policyClosed: '关闭',
|
||
allowFrom: '允许的用户',
|
||
allowFromTooltip: '逗号分隔的用户 ID 白名单,留空则允许所有人',
|
||
allowFromPlaceholder: '逗号分隔用户 ID(留空 = 全部允许)',
|
||
denyMessage: '拒绝提示',
|
||
denyMessagePlaceholder: '抱歉,您没有使用权限',
|
||
requireMention: "需要 {'@'}提及",
|
||
requireMentionTooltip: "群聊中是否需要 {'@'}机器人才响应",
|
||
},
|
||
messageFilter: {
|
||
title: '消息过滤',
|
||
filterThinking: '过滤思维链',
|
||
filterThinkingTooltip: '发送给用户前过滤 <think> 标签内容',
|
||
filterToolMessages: '过滤工具消息',
|
||
filterToolMessagesTooltip: '过滤 tool_call / tool_result 和 ReAct Action/Observation 行',
|
||
messageFormat: '消息格式',
|
||
formatAuto: '自动',
|
||
formatMarkdown: 'Markdown',
|
||
formatText: '纯文本',
|
||
formatHtml: 'HTML',
|
||
},
|
||
feishuPermissions: {
|
||
title: '所需飞书权限',
|
||
goToPermissions: '前往权限管理 →',
|
||
},
|
||
connection: {
|
||
connected: '已连接',
|
||
reconnecting: '重连中',
|
||
error: '断开',
|
||
disconnected: '未连接',
|
||
outOfService: '未启动',
|
||
retryCount: '重试 #{n}',
|
||
errorLabel: '错误',
|
||
},
|
||
messages: {
|
||
loadFailed: '加载渠道列表失败',
|
||
saveFailed: '保存渠道失败',
|
||
saveSuccess: '渠道已保存',
|
||
deleteFailed: '删除渠道失败',
|
||
deleteConfirm: '确定要删除这个渠道吗?',
|
||
deleteTitle: '确认删除',
|
||
toggleFailed: '切换渠道状态失败',
|
||
invalidJson: '配置 JSON 格式不正确',
|
||
},
|
||
guide: {
|
||
dingtalk: {
|
||
step1: '在 <a href="https://open-dev.dingtalk.com/" target="_blank" rel="noopener">钉钉开放平台</a> 创建机器人,填入 <b>AppKey</b> 和 <b>AppSecret</b>',
|
||
step2: 'Stream 模式(推荐):消息接收模式选「Stream 模式」,无需公网 IP 即可使用',
|
||
step3: 'Webhook 模式:消息接收模式选「HTTP 模式」,将 Webhook URL 填入回调地址',
|
||
},
|
||
feishu: {
|
||
step1: '前往 <a href="https://open.feishu.cn/" target="_blank" rel="noopener">飞书开放平台</a> 创建企业自建应用',
|
||
step2: '将应用的 <b>App ID</b> 和 <b>App Secret</b> 填入下方配置',
|
||
webhookStep: '在飞书后台「事件订阅」中将请求地址设置为上方 Webhook URL,订阅 <code>im.message.receive_v1</code> 事件',
|
||
websocketStep: '在飞书后台「事件订阅」中选择「长连接」订阅方式,订阅 <code>im.message.receive_v1</code> 事件(无需公网 IP)',
|
||
permissionStep: '如需昵称显示,请在「权限管理」中申请 <code>contact:user.base:readonly</code> 权限',
|
||
},
|
||
telegram: {
|
||
step1: '在 Telegram 中搜索 <a href="https://t.me/BotFather" target="_blank" rel="noopener">{at}BotFather</a>,发送 <code>/newbot</code> 创建 Bot',
|
||
step2: '将 BotFather 返回的 <b>Bot Token</b> 填入下方配置',
|
||
step3: '<b>Long-Polling 模式</b>(推荐):启动后自动通过 <code>getUpdates</code> 轮询接收消息,<b>无需公网 IP</b>',
|
||
step4: '<b>Webhook 模式</b>:需要公网可访问的回调地址,切换接入模式后填入 Webhook URL',
|
||
},
|
||
discord: {
|
||
step1: '前往 <a href="https://discord.com/developers/applications" target="_blank" rel="noopener">Discord Developer Portal</a> 创建 Application',
|
||
step2: '在 Bot 页面创建 Bot 并复制 <b>Bot Token</b> 填入下方配置',
|
||
step3: '在 Bot 页面开启 <b>MESSAGE CONTENT Intent</b>(Privileged Gateway Intents 区域)',
|
||
step4: '在 OAuth2 → URL Generator 中勾选 <b>bot</b> scope 和 <b>Send Messages / Read Message History</b> 权限,生成邀请链接将 Bot 添加到目标服务器',
|
||
step5: '启动后通过 <b>Gateway WebSocket</b> 自动接收消息,<b>无需公网 IP 和回调 URL</b>',
|
||
},
|
||
wecom: {
|
||
step1: '前往 <a href="https://work.weixin.qq.com/wework_admin/frame" target="_blank" rel="noopener">企业微信管理后台</a>,进入「应用管理 → 智能机器人」创建一个新的智能机器人',
|
||
step2: '在机器人配置中选择「<b>API 模式 → 配置长连接</b>」',
|
||
step3: '记录机器人的 <b>Bot ID</b> 和 <b>Secret</b>,填入下方配置',
|
||
step4: '启动渠道后即可在企业微信中扫码添加机器人对话,<b>无需公网 IP 和回调 URL</b>',
|
||
},
|
||
weixin: {
|
||
step1: '确保已获得微信 <b>iLink Bot</b> 内测资格(目前为受邀内测阶段)',
|
||
step2: '点击下方「获取登录二维码」按钮,用微信扫码登录',
|
||
step3: '扫码成功后系统自动获取 <b>bot_token</b> 并填入配置',
|
||
step4: '启动渠道后通过 <b>HTTP 长轮询</b>自动接收消息,<b>无需公网 IP 和回调 URL</b>',
|
||
},
|
||
qq: {
|
||
step1: '前往 <a href="https://q.qq.com/" target="_blank" rel="noopener">QQ 开放平台</a> 创建机器人应用',
|
||
step2: '在应用管理页面获取 <b>AppID</b> 和 <b>AppSecret</b>,填入下方配置',
|
||
step3: "在「功能配置 → 消息订阅」中开启需要的消息类型(C2C 消息、群聊 {'@'}消息、频道消息等)",
|
||
step4: '启动渠道后通过 <b>WebSocket 长连接</b>自动接收消息,<b>无需公网 IP 和回调 URL</b>',
|
||
},
|
||
},
|
||
dingtalkRegister: {
|
||
title: '一键创建钉钉机器人',
|
||
hint: '点击按钮获取二维码,使用钉钉扫一扫并授权后,会自动在你的企业里创建机器人应用,Client ID / Client Secret 自动填入下方。',
|
||
button: '扫码自动创建机器人',
|
||
buttonLoading: '正在准备二维码…',
|
||
qrcodeLoading: '正在生成二维码',
|
||
scanHint: '请使用钉钉 App 扫描上方二维码并确认授权',
|
||
confirmed: '机器人创建成功,Client ID 和 Secret 已自动填入',
|
||
expired: '二维码已过期,请重新生成',
|
||
denied: '授权被拒绝',
|
||
startFailed: '获取二维码失败,请检查网络',
|
||
},
|
||
feishuRegister: {
|
||
title: '一键创建飞书应用',
|
||
hint: '点击按钮获取二维码,使用飞书扫一扫并确认授权后,会自动在你的企业里创建自建应用,App ID / App Secret 自动填入下方。',
|
||
button: '扫码自动创建应用',
|
||
buttonLoading: '正在准备二维码…',
|
||
qrcodeLoading: '正在生成二维码',
|
||
scanHint: '请使用飞书 App 扫描上方二维码并确认授权',
|
||
confirmed: '应用创建成功,App ID 和 Secret 已自动填入',
|
||
expired: '二维码已过期,请重新生成',
|
||
denied: '授权被拒绝',
|
||
error: '注册过程出错,请稍后重试',
|
||
startFailed: '获取二维码失败,请检查网络',
|
||
},
|
||
feishu: {
|
||
perm: {
|
||
message: '获取与发送单聊、群组消息',
|
||
messageReason: '基础:收发消息',
|
||
receive: '接收消息事件',
|
||
receiveReason: '基础:接收用户消息',
|
||
resource: '获取消息中的资源文件',
|
||
resourceReason: 'WebSocket 模式下获取消息内容',
|
||
reactions: '管理消息表情回复',
|
||
reactionsReason: '消息反应:添加 👍 表情',
|
||
contact: '获取用户基本信息',
|
||
contactReason: '昵称获取:显示用户真实姓名',
|
||
media: '获取消息中的资源文件',
|
||
mediaReason: '媒体下载:下载图片和文件',
|
||
},
|
||
},
|
||
wizard: {
|
||
step1: '配置',
|
||
step2: '验证',
|
||
step3: '就绪',
|
||
configureSubtitle: '填入凭证以连接 {service}',
|
||
howToGet: '如何获取凭证',
|
||
saveAndTest: '保存并测试',
|
||
back: '返回',
|
||
continue: '继续',
|
||
done: '完成',
|
||
verifying: '正在与 {service} 通信…',
|
||
verifySuccess: '连接成功',
|
||
verifySuccessHeadline: '已连接 — {service} 接受了凭证',
|
||
verifyFailed: '验证失败',
|
||
verifySkipped: '无需在线验证',
|
||
verifySkippedDetail: '该渠道类型没有需要验证的凭证,可以直接保存并启用。',
|
||
durationMs: '({n} ms)',
|
||
fixIt: '修复',
|
||
retry: '重试',
|
||
readyHeadline: '一切就绪',
|
||
readySubtitle: '绑定一个 Agent,发条测试消息确认。',
|
||
bindAgentLabel: '绑定 Agent',
|
||
sendTest: '发送测试消息',
|
||
sendTestHint: '打开 {service} 给机器人发条消息——回复应该几秒内到达。',
|
||
saveFailed: '渠道保存失败',
|
||
noVerifierHint: '{type} 暂未支持在线验证。保存会直接启动渠道,请关注卡片上的连接状态指示。',
|
||
oauthScanHint: '扫码完成后会自动填充并验证凭证——你不需要手动复制任何东西。',
|
||
identity: {
|
||
accountId: '账号 ID',
|
||
accountName: '账号',
|
||
firstName: '名字',
|
||
team: '团队',
|
||
teamId: '团队 ID',
|
||
botId: '机器人 ID',
|
||
transport: '接入方式',
|
||
region: '地区',
|
||
tokenTtl: 'Token 有效期',
|
||
baseUrl: '接口地址',
|
||
isBot: '机器人账号',
|
||
verified: '已认证',
|
||
canJoinGroups: '可加入群聊',
|
||
canReadAllGroupMessages: '可读全部群消息',
|
||
},
|
||
},
|
||
},
|
||
skills: {
|
||
title: '技能管理',
|
||
desc: '管理 Agent 可用的工具和技能',
|
||
newSkill: '新建技能',
|
||
importSkill: '导入技能',
|
||
browseTemplates: '浏览模板',
|
||
refreshRuntime: '刷新运行时',
|
||
refreshing: '刷新中...',
|
||
refreshSuccess: '运行时技能已刷新',
|
||
refreshFailed: '刷新运行时失败',
|
||
tabs: {
|
||
all: '全部',
|
||
builtin: '内置',
|
||
mcp: 'MCP',
|
||
dynamic: '动态',
|
||
},
|
||
search: {
|
||
placeholder: '搜索技能名称、描述或标签...',
|
||
},
|
||
filter: {
|
||
all: '全部状态',
|
||
enabled: '已启用',
|
||
disabled: '已禁用',
|
||
scanFailed: '扫描失败',
|
||
},
|
||
security: {
|
||
scanned: '已扫描',
|
||
scanFailed: '扫描失败',
|
||
findingsTitle: '安全扫描失败',
|
||
rescan: '重新扫描',
|
||
rescanning: '扫描中...',
|
||
rescanPassed: '重新扫描通过',
|
||
rescanStillFailed: '重新扫描仍未通过,请查看详情',
|
||
rescanFailed: '重新扫描失败',
|
||
noPersistedFindings: '本次尚无持久化的扫描详情,点击"重新扫描"以重新生成。',
|
||
fix: '修复建议',
|
||
},
|
||
empty: '暂无技能',
|
||
emptyDesc: '添加技能以增强 Agent 的能力',
|
||
noDescription: '暂无描述',
|
||
modal: {
|
||
configureTitle: '配置技能',
|
||
newTitle: '新建技能',
|
||
},
|
||
fields: {
|
||
name: '名称',
|
||
nameZh: '中文显示名',
|
||
nameEn: '英文显示名',
|
||
type: '类型',
|
||
icon: '图标',
|
||
version: '版本',
|
||
author: '作者',
|
||
tags: '标签',
|
||
description: '描述',
|
||
configJson: '配置 (JSON)',
|
||
skillContent: '技能内容 (SKILL.md)',
|
||
sourceCode: '源代码 / 脚本',
|
||
},
|
||
placeholders: {
|
||
name: '技能名称',
|
||
nameZh: '可选 — 留空则显示原始 name',
|
||
nameEn: 'Optional — leave blank to show the slug',
|
||
icon: '🛠️ (emoji 或 URL)',
|
||
version: '1.0.0',
|
||
author: '作者名称',
|
||
tags: 'tag1,tag2,tag3',
|
||
description: '这个技能做什么?',
|
||
configJson: '',
|
||
sourceCode: '# Python 或脚本内容...',
|
||
},
|
||
hints: {
|
||
directorySkill: '— 目录技能:当目录不可用时用作备用',
|
||
primaryContent: '— Agent 提示注入的主要内容',
|
||
},
|
||
types: {
|
||
builtin: '内置',
|
||
mcp: 'MCP',
|
||
dynamic: '动态',
|
||
},
|
||
source: {
|
||
builtin: '内置',
|
||
synthesized: 'AI 合成',
|
||
local: '本地',
|
||
},
|
||
usedByTitle: '已绑定此技能的 Agent 数量',
|
||
lessonsCountTitle: '已记录的 lessons — 点击查看',
|
||
actions: {
|
||
configure: '配置',
|
||
view: '查看',
|
||
setUp: '配置就绪',
|
||
delete: '删除',
|
||
saveChanges: '保存更改',
|
||
createSkill: '创建技能',
|
||
},
|
||
preflight: {
|
||
title: '装前检查',
|
||
allMet: '所有依赖已满足',
|
||
allMetDesc: '该 skill 已就绪,绑定到 agent 即可使用。',
|
||
setupNeeded: '{count} 项依赖待处理',
|
||
setupNeededDesc: '按下方提示安装所需依赖,安装完成后点重新检查。',
|
||
requirements: '依赖项',
|
||
features: '特性',
|
||
installCommands: '安装命令',
|
||
optional: '可选',
|
||
noManifest: '该 skill 未提供 v3 manifest,状态回退到旧依赖检查模式。',
|
||
recheck: '重新检查',
|
||
loadFailed: '加载预检数据失败',
|
||
},
|
||
detail: {
|
||
title: '技能详情',
|
||
manifest: 'Manifest',
|
||
tools: '工具',
|
||
features: '特性',
|
||
lessons: 'Lessons',
|
||
memory: '记忆',
|
||
noManifest: '该技能未声明 v3 manifest,使用旧字段。',
|
||
noTools: '当前激活特性未暴露任何工具。',
|
||
noFeatures: '未声明 features[] 矩阵,技能被视为单一默认特性。',
|
||
noLessons: '尚未记录任何 lesson。开启 self-evolution 后,每次调用结束 skill 可向此处写入经验。',
|
||
noEmployees: '暂无 Agent 绑定此 skill。',
|
||
toolsHint: 'Skill 绑定到 agent 时,这些工具名将合并进 LLM 的 allowed-tools。SETUP_NEEDED 特性下的工具保持隐藏。',
|
||
lessonsHint: '该 skill 的 LESSONS.md 内容。下次加载时自动注入到 SKILL.md 正文之后。',
|
||
memoryHint: '已绑定该 skill 的 Agents。点击进入 Agent 的 MEMORY.md / 结构化记忆查看与该 skill 相关的条目。',
|
||
openMemory: '查看 Agent 记忆',
|
||
clearLessons: '全部清空',
|
||
clearLessonsConfirm: '删除该 skill 的全部 lessons?操作不可撤销。',
|
||
},
|
||
runtime: {
|
||
disabled: '已停用',
|
||
unknown: '未知',
|
||
securityBlocked: '安全阻止',
|
||
depsMissing: '缺少依赖',
|
||
directoryActive: '目录激活',
|
||
databaseFallback: '数据库回退',
|
||
databaseActive: '数据库激活',
|
||
unresolved: '未解析',
|
||
},
|
||
messages: {
|
||
saveFailed: '保存技能失败',
|
||
deleteConfirm: '确定要删除这个技能吗?此操作不可撤销。',
|
||
deleteTitle: '确认删除',
|
||
deleteFailed: '删除技能失败',
|
||
toggleFailed: '切换技能状态失败',
|
||
},
|
||
import: {
|
||
title: '导入技能',
|
||
urlTab: '从 URL 安装',
|
||
searchTab: '搜索市场',
|
||
urlPlaceholder: '输入 GitHub 仓库 URL 或 ClawHub 技能 URL',
|
||
urlHint: '支持 GitHub 仓库和 ClawHub 市场链接',
|
||
examples: '示例',
|
||
install: '安装',
|
||
installing: '安装中...',
|
||
installed: '安装成功',
|
||
failed: '安装失败',
|
||
cancelled: '已取消',
|
||
cancel: '取消',
|
||
overwrite: '覆盖已有技能',
|
||
enableAfterInstall: '安装后启用',
|
||
searchPlaceholder: '搜索 ClawHub 市场...',
|
||
search: '搜索',
|
||
searching: '搜索中...',
|
||
searchFailed: '搜索失败',
|
||
noResults: '未找到匹配的技能',
|
||
statusPending: '等待中',
|
||
zipTab: 'ZIP 导入',
|
||
dropHint: '拖拽 .zip 文件到此处,或点击选择',
|
||
zipRequirement: 'ZIP 包需包含 SKILL.md 文件',
|
||
uploading: '正在安装...',
|
||
uploadSuccess: '技能安装成功',
|
||
uploadFailed: '安装失败',
|
||
invalidZip: '请选择 .zip 格式的文件',
|
||
tooLarge: '文件过大(最大 50MB)',
|
||
},
|
||
},
|
||
onboarding: {
|
||
title: '欢迎使用 MateClaw',
|
||
subtitle: '配置你的第一个 AI 模型',
|
||
stepPath: '选择方式',
|
||
stepConfigure: '配置模型',
|
||
stepVerify: '验证',
|
||
localTitle: '本地模型',
|
||
localDesc: '已安装 Ollama?一键启用本地模型',
|
||
localDetected: '已检测到',
|
||
cloudTitle: '云端 API',
|
||
cloudDesc: '使用 OpenAI、DashScope 等云端模型',
|
||
selectModel: '选择模型',
|
||
setDefault: '设为默认',
|
||
enterApiKey: '输入 API Key',
|
||
testConnection: '测试连接',
|
||
testSuccess: '连接成功',
|
||
testFailed: '连接失败',
|
||
saveAndContinue: '保存并继续',
|
||
verifyTitle: '验证你的模型',
|
||
verifyMessage: '你好!简单介绍一下你自己。',
|
||
send: '发送',
|
||
startUsing: '开始使用 MateClaw',
|
||
skip: '跳过',
|
||
back: '返回',
|
||
},
|
||
talk: {
|
||
title: '语音模式',
|
||
ready: '就绪',
|
||
connecting: '连接中...',
|
||
listening: '收听中...',
|
||
processing: '思考中...',
|
||
speaking: '回复中...',
|
||
holdToTalk: '按住说话',
|
||
releaseToSend: '松开发送',
|
||
retry: '点击重新连接',
|
||
you: '你',
|
||
ai: 'AI',
|
||
micError: '无法访问麦克风',
|
||
connectionError: '连接错误,点击按钮重试',
|
||
playbackError: '音频播放失败',
|
||
tooShort: '录音过短,请按住按钮多说几秒',
|
||
},
|
||
browser: {
|
||
timeline: {
|
||
title: '浏览器({count} 个操作)',
|
||
},
|
||
actions: {
|
||
start: '启动',
|
||
stop: '停止',
|
||
open: '打开',
|
||
click: '点击',
|
||
type: '输入',
|
||
screenshot: '截图',
|
||
},
|
||
},
|
||
dashboard: {
|
||
title: '仪表盘',
|
||
kicker: '运营脉搏',
|
||
desc: '系统用量概览与运行状态',
|
||
conversations: '对话数',
|
||
messages: '消息数',
|
||
tokens: 'Token 消耗',
|
||
toolCalls: '工具调用',
|
||
periodDesc: '从日、周、月三个维度观察系统运行状况。',
|
||
runsDesc: '定时任务执行记录,包含耗时、消耗和结果。',
|
||
trend: {
|
||
title: '本周活跃度',
|
||
subtitle: '你和 AI 的互动频率。',
|
||
},
|
||
periodComparison: '周期对比',
|
||
periods: {
|
||
today: '今日',
|
||
thisWeek: '本周',
|
||
thisMonth: '本月',
|
||
},
|
||
recentRuns: '最近定时任务执行',
|
||
noRuns: '暂无执行记录',
|
||
runColumns: {
|
||
time: '时间',
|
||
job: '任务',
|
||
status: '状态',
|
||
trigger: '触发方式',
|
||
duration: '耗时',
|
||
tokens: 'Token',
|
||
},
|
||
},
|
||
memory: {
|
||
kicker: '记忆',
|
||
title: '记忆',
|
||
desc: '你的智能体在想什么、记住了什么、遗忘了什么。',
|
||
selectAgent: '选择智能体',
|
||
selectAgentHint: '请先选择一个智能体查看其记忆',
|
||
tabTimeline: '整理时间线',
|
||
tabMemory: '长期记忆',
|
||
tabFacts: '事实库',
|
||
noReports: '暂无整理记录',
|
||
modeFocused: '专题',
|
||
modeNightly: '夜间',
|
||
candidates: '条候选',
|
||
loadMore: '加载更多',
|
||
retry: '重试',
|
||
memoryBrowser: {
|
||
header: '概述',
|
||
empty: '暂无记忆内容',
|
||
userEdited: '用户编辑',
|
||
files: {
|
||
memory: '记忆',
|
||
profile: '档案',
|
||
soul: '灵魂',
|
||
userFacts: '用户事实',
|
||
references: '参考资料',
|
||
},
|
||
},
|
||
time: {
|
||
justNow: '刚刚',
|
||
hoursAgo: '{n}小时前',
|
||
daysAgo: '{n}天前',
|
||
},
|
||
status: {
|
||
success: '成功',
|
||
failed: '失败',
|
||
skipped: '跳过',
|
||
running: '运行中',
|
||
pending: '等待中',
|
||
},
|
||
report: {
|
||
mode: '模式',
|
||
topic: '主题',
|
||
status: '状态',
|
||
time: '时间',
|
||
candidates: '候选数',
|
||
promoted: '已整合',
|
||
rejected: '未采纳',
|
||
trigger: '触发方式',
|
||
reason: '整理理由',
|
||
diff: '变更摘要',
|
||
},
|
||
morningCard: {
|
||
title: '昨夜 Dream 回顾',
|
||
dismiss: '我知道了',
|
||
promoted: '整合了 {count} 条记忆',
|
||
},
|
||
hil: {
|
||
confirm: '确认',
|
||
edit: '编辑',
|
||
cancel: '取消',
|
||
save: '保存',
|
||
editPlaceholder: '修改记忆内容...',
|
||
confirmed: '已确认',
|
||
saved: '已保存到 MEMORY.md',
|
||
},
|
||
facts: {
|
||
searchPlaceholder: '搜索事实…',
|
||
empty: '暂无事实数据(需启用事实投影)',
|
||
trust: '信任度',
|
||
used: '使用 {n} 次',
|
||
helpful: '有用',
|
||
unhelpful: '没用',
|
||
forget: '遗忘',
|
||
forgotten: '已遗忘',
|
||
resolved: '已解决',
|
||
contradictions: '{count} 条矛盾待处理',
|
||
resolve: {
|
||
KEEP_A: '保留 A',
|
||
KEEP_B: '保留 B',
|
||
MERGE: '合并',
|
||
IGNORE: '忽略',
|
||
},
|
||
},
|
||
focused: {
|
||
desc: '围绕一个主题让智能体重新整理记忆,优先提炼相关信息。',
|
||
placeholder: '输入主题,如"项目架构"、"用户偏好"…',
|
||
trigger: '开始整理',
|
||
success: '整理完成,时间线已更新',
|
||
skipped: '没有需要整合的内容',
|
||
},
|
||
},
|
||
// Tool display labels consumed by useToolLabel() — keys must mirror en-US.ts exactly.
|
||
// Unknown tools (MCP / custom skills) fall back to humanizeToolName() and are not listed here.
|
||
toolLabels: {
|
||
// Delegation
|
||
delegateToAgent: '委派给智能体',
|
||
delegateParallel: '并行委派',
|
||
listAvailableAgents: '列出可用智能体',
|
||
|
||
// Wiki
|
||
wiki_search_pages: '搜索知识库',
|
||
wiki_semantic_search: '语义检索知识库',
|
||
wiki_read_page: '读取知识库页面',
|
||
wiki_list_pages: '列出知识库页面',
|
||
wiki_related_pages: '查找相关页面',
|
||
wiki_trace_source: '溯源知识库',
|
||
wiki_create_page: '创建知识库页面',
|
||
wiki_delete_page: '删除知识库页面',
|
||
wiki_enrich_page: '丰富知识库页面',
|
||
wiki_explain_relation: '解释关联关系',
|
||
|
||
// Web search
|
||
search: '联网搜索',
|
||
|
||
// Memory
|
||
recall_structured: '检索记忆',
|
||
remember_structured: '保存记忆',
|
||
forget_structured: '清除记忆',
|
||
fact_probe: '探查事实',
|
||
fact_related: '查询关联事实',
|
||
fact_list_contradictions: '检查矛盾事实',
|
||
session_search: '搜索会话',
|
||
read_workspace_memory_file: '读取记忆文件',
|
||
write_workspace_memory_file: '写入记忆文件',
|
||
edit_workspace_memory_file: '编辑记忆文件',
|
||
list_workspace_memory_files: '列出记忆文件',
|
||
|
||
// Files & shell
|
||
read_file: '读取文件',
|
||
execute_shell_command: '执行命令',
|
||
extract_document_text: '提取文档内容',
|
||
extract_pdf_text: '提取 PDF 内容',
|
||
extract_docx_text: '提取文档内容',
|
||
detect_file_type: '识别文件类型',
|
||
readMateClawDoc: '查阅系统文档',
|
||
|
||
// Generative
|
||
image_generate: '生成图片',
|
||
video_generate: '生成视频',
|
||
music_generate: '生成音乐',
|
||
|
||
// Data
|
||
query_datasource: '查询数据源',
|
||
execute_sql: '执行 SQL',
|
||
|
||
// Browser
|
||
browser_use: '浏览器操作',
|
||
|
||
// Cron
|
||
create_cron_job: '创建定时任务',
|
||
list_cron_jobs: '查看定时任务',
|
||
toggle_cron_job: '启停定时任务',
|
||
delete_cron_job: '删除定时任务',
|
||
|
||
// Time
|
||
getCurrentDateTime: '获取当前时间',
|
||
getCurrentTime: '获取当前时间',
|
||
getCurrentDate: '获取当前日期',
|
||
|
||
// Skills
|
||
skill_manage: '管理技能',
|
||
runSkillScript: '运行技能',
|
||
listSkillFiles: '列出技能文件',
|
||
listAvailableSkills: '列出可用技能',
|
||
readSkillFile: '读取技能文件',
|
||
},
|
||
} as const
|