Files
Hermes-ui/packages/client/src/i18n/locales/zh-TW.ts
T

1555 lines
62 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
export default {
// 登入
login: {
title: 'Hermes Web UI',
description: '輸入使用者名稱和密碼以繼續。',
placeholder: '存取權杖',
submit: '登入',
tokenRequired: '請輸入存取權杖',
invalidToken: '權杖無效',
connectionFailed: '無法連線至伺服器',
passwordLogin: '密碼登入',
tokenLogin: '權杖登入',
usernamePlaceholder: '使用者名稱',
passwordPlaceholder: '密碼',
defaultCredentialsHint: '預設登入名:admin,預設密碼:123456',
credentialsRequired: '請輸入使用者名稱和密碼',
invalidCredentials: '使用者名稱或密碼錯誤',
tooManyAttempts: '登入失敗次數過多,請稍後再試',
lockResetHint: '如果這是你的伺服器,可以執行以下命令清除登入鎖定:',
defaultLoginResetHint: '如需重置預設 admin 密碼,可以執行:',
sessionExpired: '登入已過期,請重新登入',
accessDenied: '你沒有權限存取此資源',
passwordMismatch: '兩次密碼不一致',
passwordTooShort: '密碼長度至少 6 個字元',
setupSuccess: '密碼登入設定成功',
passwordChanged: '密碼修改成功',
passwordRemoved: '密碼登入已移除',
setupPassword: '設定密碼登入',
changePassword: '修改密碼',
changeUsername: '修改使用者名稱',
removePasswordLogin: '移除',
username: '使用者名稱',
currentPassword: '目前密碼',
newPassword: '新密碼',
confirmPassword: '確認密碼',
newUsername: '新使用者名稱',
usernameChanged: '使用者名稱修改成功',
usernameTooShort: '使用者名稱至少 2 個字元',
setupDescription: '管理用於登入的使用者名稱和密碼。',
removeConfirm: '使用者帳號必須保留密碼登入。',
passwordLoginNotConfigured: '密碼登入未設定',
passwordLoginConfigured: '目前帳號:{username}',
defaultCredentialTitle: '請修改預設帳號和密碼',
defaultCredentialMessage: '目前登入帳號仍在使用預設使用者名稱或預設密碼。為避免未授權存取,請盡快進入目前帳號修改使用者名稱和密碼。',
defaultCredentialAction: '去修改',
defaultCredentialLater: '稍後提醒',
},
users: {
title: '帳號管理',
description: '建立使用者、分配角色,並控制一般管理員可存取的設定檔。',
create: '建立使用者',
edit: '編輯使用者',
username: '使用者名稱',
role: '角色',
statusLabel: '狀態',
profiles: '可存取設定檔',
profilesPlaceholder: '選擇可存取的設定檔',
allProfiles: '全部設定檔',
noProfiles: '未關聯設定檔',
lastLogin: '最後登入',
newPasswordOptional: '新密碼(留空不修改)',
loadFailed: '使用者列表載入失敗',
deleteConfirm: '確認刪除此使用者?',
enable: '啟用',
disable: '停用',
roles: {
superAdmin: '超級管理員',
admin: '一般管理員',
},
status: {
active: '啟用',
disabled: '停用',
},
},
// 通用
common: {
loading: '載入中...',
cancel: '取消',
delete: '刪除',
retry: '重試',
edit: '編輯',
save: '儲存',
saved: '已儲存',
saveFailed: '儲存失敗',
deleteFailed: '刪除失敗',
ok: '確定',
copied: '已複製',
copy: '複製',
update: '更新',
create: '建立',
noData: '目前無資料',
expired: '已過期',
fetch: '取得',
add: '新增',
enable: '啟用',
disable: '停用',
configured: '已設定',
notConfigured: '未設定',
confirm: '確定',
expand: '展開',
collapse: '收起',
start: '啟動',
stop: '停止',
},
// 側邊欄
// MCP 管理
mcp: {
title: 'MCP 伺服器',
loadFailed: '載入 MCP 伺服器失敗',
reloadAll: '全部重載',
refresh: '重新整理',
total: '總計',
connected: '已連線',
disconnected: '未連線',
tools: '工具',
tool: '工具',
searchPlaceholder: '搜尋伺服器...',
addServer: '+ 新增伺服器',
zeroTools: '0 個工具',
loading: '載入中...',
empty: '暫無 MCP 伺服器設定',
reloaded: '已重載 {server}',
reloadedAll: '所有 MCP 伺服器已重載',
reloadFailed: '重載失敗',
serverAdded: '伺服器 "{name}" 已新增',
addFailed: '新增伺服器失敗',
serverUpdated: '伺服器 "{name}" 已更新',
updateFailed: '更新伺服器失敗',
saveFailed: '儲存失敗',
serverRemoved: '已移除 "{name}"',
enabled: "已啟用 {name}",
disabled: "已禁用 {name}",
connectedStatus: '已連線',
disconnectedStatus: '未連線',
disabledStatus: '已停用',
toolList: '工具列表',
count: '個',
more: '更多',
removeFailed: '移除伺服器失敗',
testOk: '測試成功 — {count} 個工具可用',
testEmpty: '測試未回傳工具',
testFailed: '測試失敗',
edit: '編輯',
test: '測試',
reload: '重載',
remove: '移除',
confirmRemove: '確認刪除伺服器 "{name}"',
cancel: '取消',
add: '新增',
save: '儲存',
addTitle: '新增 MCP 伺服器',
editTitle: '編輯 MCP 伺服器',
invalidJson: 'JSON 格式錯誤',
invalidYaml: 'YAML 格式錯誤',
invalidConfig: '配置格式錯誤',
invalidServerConfig: '伺服器配置無效',
missingCommandOrUrl: '必須包含 command 或 url',
manageTools: '管理工具',
toolsVisibilityTitle: '工具可見性管理',
fetchTools: '獲取工具列表',
fetchToolsFailed: '獲取工具列表失敗',
toolsMode: '模式:',
toolsModeAll: '全部',
toolsModeInclude: '包含',
toolsModeExclude: '排除',
toolsListHeader: '工具名稱',
toolsEmpty: '暫無工具,請先獲取工具列表',
toolsSummaryAll: '共 {count} 個工具,全部啟用',
toolsSummaryInclude: '共 {total} 個工具,已選 {count} 個',
toolsSummaryExclude: '共 {total} 個工具,已排除 {count} 個',
toolsVisibilitySaved: '工具可見性已儲存',
toolsSelectAll: '全選',
toolsClearSelection: '取消全選',
toolsExcludeAll: '全部排除',
toolsClearExcluded: '清空排除',
},
sidebar: {
chat: '對話',
search: '搜尋',
apiRelay: '中轉站',
history: '歷史',
jobs: '任務',
kanban: '看板',
models: '模型',
profiles: '使用者',
plugins: '插件',
mcp: 'MCP',
skills: '技能',
memory: '記憶',
logs: '日誌',
usage: '用量',
performance: '效能監控',
skillsUsage: '技能用量',
channels: '頻道',
gateways: '閘道',
terminal: '終端機',
groupChat: '群聊',
files: '檔案',
groupConversation: '對話',
groupConversationShort: '對話',
groupPlatform: '平台',
groupAgent: '代理',
groupAgentShort: '代理',
groupSystem: '系統',
groupSystemShort: '系統',
groupMonitoring: '監控',
groupMonitoringShort: '監控',
groupTools: '工具',
groupToolsShort: "工具",
codingAgents: "編程工具",
versionPreview: "版本預覽",
settings: '設定',
connected: '已連線',
disconnected: '未連線',
collapse: '收起選單',
expand: '展開選單',
updateTip: '在終端機執行 "hermes-web-ui update" 即可更新',
updateVersion: '升級版本 v{version}',
reloadClientVersion: '重新整理到 v{version}',
updating: '正在更新...',
updateSuccess: '更新成功,請稍後重新整理頁面,如長時間未啟動,請手動啟動',
updateFailed: '更新失敗',
logout: '登出',
nodeVersionWarning: '偵測到 Node.js v{version},請升級至 23 以上版本。',
changelog: '更新日誌',
noChangelog: '目前無更新日誌',
},
performance: {
title: '效能監控',
subtitle: '查看系統資源、Bridge Broker、Workers 和活躍會話',
refresh: '重新整理',
autoRefreshOn: '自動重新整理',
autoRefreshOff: '手動重新整理',
loadFailed: '效能資料載入失敗',
systemCpu: '系統 CPU',
systemMemory: '系統記憶體',
activeSessions: '活躍會話',
runningSessions: '執行中 {count}',
workers: 'Workers',
totalWorkerMemory: 'Worker 總記憶體',
processes: '程序',
uptime: '執行',
running: '執行中',
stopped: '已停止',
workerMemory: 'Worker 記憶體',
lastUpdated: '更新時間',
profile: 'Profile',
memory: '記憶體',
sessions: '會話',
runningActiveSessions: '執行中 / 活躍',
lastUsed: '最後使用',
status: '狀態',
noWorkers: '暫無 Worker',
sessionsByProfile: '按 Profile 統計會話',
noActiveSessions: '暫無活躍會話',
},
// 抽屜
drawer: {
terminal: '終端機',
files: '工作區',
},
// 對話
chat: {
contextRemaining: '剩餘',
contextClickToEdit: '點擊編輯上下文長度',
contextEditTitle: '編輯上下文長度',
contextEditDesc: '設定目前模型的上下文長度限制(token 數量)',
contextEditPlaceholder: '請輸入上下文長度',
contextEditHint: '常見值:256k (Hermes 預設), 128k (GPT-4), 32k (GPT-3.5)',
contextEditSave: '儲存',
contextEditCancel: '取消',
contextEditInvalid: '請輸入有效的上下文長度',
contextEditSuccess: '上下文長度已更新',
contextEditFailed: '更新失敗',
emptyState: '開始與 Hermes Agent 對話',
outlineTitle: '會話大綱',
outlineEmpty: '暫無會話內容',
outlineUserQuestion: '使用者問題',
inputPlaceholder: '輸入訊息... (Enter 發送,Shift+Enter 換行)',
slashCommandArgs: {
message: '<訊息>',
title: '<標題>',
text: '<文字>',
},
slashCommands: {
usage: '計算目前會話用量',
status: '查看會話狀態和佇列',
abort: '停止目前 Bridge 執行',
queue: '將訊息加入目前執行後的佇列',
plan: '產生一份 Markdown 實作計畫',
goal: '設定一個跨輪次持續推進的目標',
goalStatus: '查看目前目標狀態',
goalPause: '暫停目前目標循環',
goalResume: '繼續已暫停的目標循環',
goalDone: '完成並清除目前目標',
goalClear: '清除目前目標',
subgoal: '為目前目標追加驗收條件',
clear: '清空目前顯示內容',
clearHistory: '刪除目前會話已儲存的訊息歷史',
title: '重新命名目前會話',
compress: '空閒時觸發上下文壓縮',
steer: '向目前 Bridge 執行傳送引導文字',
destroy: '釋放目前會話的 Bridge Agent',
reloadMcp: '重載 MCP 伺服器',
},
attachFiles: '新增附件',
autoPlaySpeech: '自動播放語音',
showToolCalls: '顯示工具呼叫',
hideToolCalls: '隱藏工具呼叫',
messageQueue: '訊息佇列',
removeQueuedMessage: '移除佇列訊息',
stop: '停止',
start: '啟動',
stopGateway: '停止閘道',
send: '發送',
contextUsed: '上下文已用:',
sessions: '工作階段',
webUiSessions: '工作階段',
allProfiles: '全部設定',
profileMissingModelsTip: '此工作階段所屬設定「{profile}」沒有可用的 provider 或模型',
sessionScopeHint: '這裡只顯示目前工作階段;CLI、Telegram、Discord、Cron 等頻道工作階段在歷史中以唯讀方式查看。',
openHistory: '開啟歷史',
hermesHistory: 'Hermes 歷史',
historyScopeHint: '這裡按來源以唯讀方式查看目前 profile 的 Hermes 歷史工作階段。',
noSessions: '目前無工作階段',
searchTitle: '搜尋工作階段',
searchSubtitle: '依標題或訊息內容搜尋',
searchScope: '搜尋範圍:僅 Web UI 本地工作階段資料庫;不包含唯讀 Hermes 歷史工作階段。',
searchHint: 'Cmd/Ctrl+K',
searchPlaceholder: '搜尋工作階段...',
searchEmpty: '最近工作階段',
searchRecent: '最近工作階段',
searchNoResults: '沒有符合的工作階段',
searchNoSnippet: '沒有可顯示的摘要',
searchEnterHint: 'Enter 開啟 · Esc 關閉',
searchFailed: '搜尋工作階段失敗',
newChat: '新增對話',
approvalKicker: '終端授權',
approvalTitle: '執行前請確認命令',
approvalAllowOnce: '僅本次允許',
approvalAllowSession: '本工作階段允許',
approvalAlways: '永遠允許',
approvalDeny: '拒絕',
clarifyKicker: 'Agent 需要確認',
clarifyTitle: 'Agent 有一個問題需要您回答',
clarifyPlaceholder: '輸入你的回答...',
clarifySubmit: '回覆',
clarifyDismiss: '忽略',
deleteSession: '確定刪除此工作階段?',
sessionDeleted: '工作階段已刪除',
toggleBatchMode: '批次選取',
selectAll: '全選',
confirmBatchDelete: '確定刪除選取的 {count} 個工作階段?',
batchDeleteSuccess: '已刪除 {count} 個工作階段',
batchDeletePartial: '{failed} 個工作階段刪除失敗',
batchDeleteFailed: '批次刪除失敗',
importToWebUi: '匯入到 Web UI',
importSessionSuccess: '工作階段已匯入 Web UI',
importSessionAlreadyExists: '工作階段已存在於 Web UI',
importSessionFailed: '匯入工作階段失敗',
rename: '重新命名',
pin: '釘選',
unpin: '取消釘選',
pinned: '已釘選',
chatMode: '聊天',
liveMode: '即時',
liveSessions: '即時工作階段',
recentBadge: '最近',
linkedSessions: '關聯 {count} 個工作階段',
noVisibleMessages: '沒有人類可見訊息。',
monitorRoleUser: '使用者',
monitorRoleAssistant: '助手',
copySessionLink: '複製工作階段連結',
openSessionInNewTab: '在新分頁開啟',
sessionLinkCopied: 'Session link copied',
copySessionId: '複製工作階段 ID',
export: '匯出',
exportFull: '完整匯出 (JSON)',
exportCompressed: '壓縮匯出 (TXT)',
exportCompressing: '正在壓縮上下文,請稍候...',
exportSuccess: '工作階段已匯出',
exportFailed: '匯出失敗',
renamed: '已重新命名',
renameFailed: '重新命名失敗',
renameSession: '重新命名工作階段',
sessionNotFound: '找不到工作階段',
enterNewTitle: '輸入新標題',
workspace: '工作區',
setWorkspace: '設定工作區',
setWorkspaceTitle: '設定工作階段工作區',
workspacePlaceholder: '輸入專案路徑,例如 /home/user/project',
workspaceSet: '工作區已設定',
workspaceSetFailed: '設定工作區失敗',
other: '其他',
runFailed: '執行失敗',
error: '錯誤',
tool: '工具',
arguments: '參數',
result: '結果',
truncated: '... (已截斷)',
executionDuration: '執行時長',
thinkingLabel: '思考過程',
thinkingInProgress: '思考中…',
thinkingShow: '展開思考過程',
thinkingHide: '收起思考過程',
thinkingDuration: '已觀察 {duration}',
thinkingChars: '{count} 字',
copyBubble: '複製訊息',
copiedBubble: '已複製',
copyFailed: '複製失敗',
playSpeech: '播放語音',
pauseSpeech: '暫停',
resumeSpeech: '繼續',
stopSpeech: '停止',
speechNotSupported: '此瀏覽器不支援語音播放',
modelSetFailed: '設定模型失敗',
modelSet: '模型已設定',
setModelTitle: '設定工作階段模型',
setModel: '設定模型',
newCliChat: '新增 CLI',
cliEmptyState: '開始 CLI 對話',
},
// 看板
kanban: {
title: '看板',
createTask: '新增任務',
noTasks: '目前無任務',
allStatuses: '所有狀態',
allAssignees: '所有負責人',
board: {
create: '新增看板',
archive: '封存看板',
slugPlaceholder: '看板識別碼,例如 project-a',
namePlaceholder: '顯示名稱(選填)',
slugRequired: '看板識別碼不能為空',
created: '看板已建立',
archived: '看板已封存',
archiveConfirm: '確定封存目前看板?',
},
columns: {
triage: '待分類',
todo: '待辦',
ready: '就緒',
running: '進行中',
blocked: '阻塞',
done: '已完成',
archived: '已封存',
},
form: {
title: '標題',
titlePlaceholder: '任務標題',
titleRequired: '標題不能為空',
body: '描述',
bodyPlaceholder: '任務描述(選填)',
assignee: '負責人',
selectAssignee: '選擇負責人...',
priority: '優先級',
selectPriority: '選擇優先級...',
},
card: {
assigneeTooltip: '負責人',
priority: {
low: '低',
medium: '中',
high: '高',
},
timeAgo: {
justNow: '剛剛',
minutes: '{count} 分鐘前',
hours: '{count} 小時前',
days: '{count} 天前',
},
},
detail: {
status: '狀態',
assignee: '負責人',
priority: '優先級',
tenant: '租戶',
createdAt: '建立時間',
startedAt: '開始時間',
completedAt: '完成時間',
comments: '評論',
events: '事件',
runs: '執行記錄',
result: '完成結果',
sessions: '關聯工作階段',
sessionMessages: '工作階段記錄',
noSessions: '找不到關聯工作階段。',
artifacts: '產出檔案',
sources: '資料來源',
highlights: '關鍵資訊',
},
action: {
title: '操作',
complete: '完成',
completeSummary: '完成摘要(選填)',
block: '阻塞',
blockReason: '阻塞原因',
unblock: '解除阻塞',
assign: '指派',
assignTo: '指派給...',
},
message: {
taskCreated: '任務已建立',
taskCompleted: '任務已完成',
taskBlocked: '任務已阻塞',
taskUnblocked: '任務已解除阻塞',
taskAssigned: '任務已指派',
loadFailed: '載入任務失敗',
},
stats: {
total: '總計',
tasks: '任務數',
},
},
// 排程任務
jobs: {
title: '排程任務',
createJob: '建立任務',
editJob: '編輯任務',
noJobs: '目前無排程任務,建立一個開始吧。',
name: '名稱',
namePlaceholder: '任務名稱',
schedule: '排程運算式 (Cron)',
schedulePlaceholder: '例如 0 9 * * *',
quickPresets: '快速預設',
selectPreset: '選擇預設...',
presetEveryMinute: '每分鐘',
presetEvery5Min: '每 5 分鐘',
presetEveryHour: '每小時',
presetEveryDay: '每天 00:00',
presetEveryDay9: '每天 09:00',
presetEveryMonday: '每週一 09:00',
presetEveryMonth: '每月 1 日 09:00',
prompt: '提示詞',
promptPlaceholder: '要執行的內容',
deliverTarget: '投遞目標',
origin: '來源',
local: '本地',
repeatCount: '重複次數(選填)',
modelPlaceholder: '預設模型',
repeatPlaceholder: '留空表示無限重複',
jobCreated: '任務已建立',
jobUpdated: '任務已更新',
nameRequired: '名稱為必填項',
scheduleRequired: '排程運算式為必填項',
loadFailed: '載入任務失敗',
jobPaused: '任務已暫停',
jobResumed: '任務已恢復',
jobTriggered: '任務已觸發',
modelUpdated: '模型已更新',
jobDeleted: '任務已刪除',
status: {
running: '執行中',
paused: '已暫停',
disabled: '已停用',
scheduled: '已排程',
},
info: {
model: '模型',
schedule: '排程',
lastRun: '上次執行',
nextRun: '下次執行',
deliver: '投遞',
repeat: '重複',
},
action: {
pause: '暫停',
pauseJob: '暫停任務',
resume: '恢復',
resumeJob: '恢復任務',
runNow: '立即執行',
triggerImmediately: '立即觸發',
},
runHistory: {
title: '執行歷史',
runs: '次執行',
noRuns: '目前無執行歷史。',
},
},
// 技能
skills: {
title: '技能',
searchPlaceholder: '搜尋技能...',
noMatch: '沒有符合的技能',
noSkills: '目前無技能',
backTo: '返回',
attachedFiles: '附件檔案',
loadFailed: '載入技能失敗',
fileLoadFailed: '載入檔案失敗',
modified: '使用者已修改',
archived: '已封存',
pinned: '已釘選',
pin: '釘選技能',
unpin: '取消釘選',
pinFailed: '變更釘選狀態失敗',
toggleFailed: '切換技能狀態失敗',
source: {
builtin: '內建',
hub: 'Hub 安裝',
local: '本地安裝',
external: '外部目錄',
},
},
// 插件
plugins: {
title: '插件',
refresh: '重新整理',
notice: '唯讀顯示可發現的 Hermes 插件 manifest。發現元資料讀取不會載入插件程式碼。v1 管理動作仍保留在 CLI,新 Hermes 工作階段生效。',
loadFailed: '載入插件失敗',
commandCopied: '指令已複製',
searchPlaceholder: '搜尋 key、名稱、描述、路徑...',
source: '來源',
kind: '類型',
statusTitle: '狀態',
configStatus: '設定:{status}',
notAvailable: '無',
copyCommand: '複製指令',
managedElsewhere: '由其他位置管理',
noMatch: '沒有符合目前篩選條件的插件',
enabled: '已啟用',
disabled: '已停用',
summary: {
total: '總數',
active: '已啟用 / 自動',
inactive: '未啟用',
disabled: '已停用',
providerManaged: 'Provider 管理',
},
status: {
enabled: '已啟用',
'auto-active': '自動啟用',
inactive: '未啟用',
disabled: '已停用',
'provider-managed': 'Provider 管理',
},
statusLabel: {
enabled: '設定啟用',
'auto-active': '自動啟用',
inactive: '未啟用',
disabled: '已停用',
'provider-managed': 'Provider 管理',
},
configStatuses: {
enabled: '已啟用',
disabled: '已停用',
'not-enabled': '未啟用',
auto: '自動',
'provider-managed': 'Provider 管理',
},
table: {
plugin: '插件',
status: '狀態',
source: '來源',
kind: '類型',
capabilities: '能力',
path: '路徑 / 入口',
cli: 'CLI',
},
capabilities: {
tools: '{count} 個工具',
hooks: '{count} 個 hook',
env: '{count} 個環境變數',
},
metadata: {
agentRoot: 'Agent 根目錄',
python: 'Python',
scanCwd: '掃描 cwd',
projectPlugins: '專案插件',
},
},
// 記憶
memory: {
title: '記憶',
refresh: '重新整理',
loadFailed: '載入記憶失敗',
myNotes: '我的筆記',
noNotes: '目前無筆記。',
notesPlaceholder: '輸入筆記內容...',
userProfile: '使用者畫像',
noProfile: '目前無畫像。',
profilePlaceholder: '輸入使用者畫像...',
soul: '靈魂',
noSoul: '目前無靈魂設定。',
soulPlaceholder: '輸入靈魂設定...',
},
// 模型
models: {
title: '模型',
searchPlaceholder: '搜尋模型...',
addProvider: '新增 Provider',
providerType: 'Provider 類型',
preset: '預設',
custom: '自訂',
selectProvider: '選擇 Provider',
chooseProvider: '選擇一個 provider...',
getApiKey: '取得 API Key',
name: '名稱',
autoGeneratedName: '依 Base URL 自動產生',
baseUrl: 'Base URL',
region: '區域',
regionIntl: '國際版',
regionCn: '中國大陸',
baseUrlPlaceholder: '例如 https://api.example.com/v1',
apiKey: 'API Key',
apiKeyPlaceholder: 'sk-...',
defaultModel: '預設模型',
selectOrInput: '選擇或輸入模型名稱...',
selectModel: '選擇模型...',
providerAdded: 'Provider 已新增',
providerDeleted: 'Provider 已刪除',
deleteProvider: '刪除 Provider',
deleteConfirm: '確定刪除「{name}」嗎?',
codexLoginTitle: 'OpenAI Codex 登入',
codexWaiting: '在授權頁面輸入以下代碼完成登入:',
codexCopyCode: '代碼已複製',
codexOpenLink: '開啟授權頁面',
codexApproved: '登入成功',
codexExpired: '授權已過期,請重試。',
nousLoginTitle: 'Nous Portal 登入',
nousWaiting: '在授權頁面輸入此代碼完成登入:',
nousCopyCode: '代碼已複製',
nousOpenLink: '開啟授權頁面',
nousApproved: '登入成功',
nousDenied: '授權被拒絕,請重試。',
nousExpired: '授權已過期,請重試。',
copilotLoginTitle: 'GitHub Copilot 登入',
copilotWaiting: '請前往 GitHub 輸入下方裝置代碼完成授權。授權完成後視窗會自動關閉。',
copilotCopyCode: '代碼已複製',
copilotOpenLink: '開啟 GitHub 授權頁',
copilotApproved: '登入成功!',
copilotDenied: '授權被拒絕。',
copilotExpired: '授權連結已過期,請重試。',
copilotAddDetectedTitle: '偵測到 GitHub Copilot',
copilotAddDetected: '已在本機偵測到 GitHub Copilot OAuth 憑證,點擊「新增」即可在 Hermes 中啟用 Copilot。',
copilotAddSourceEnv: '來源:~/.hermes/.envCOPILOT_GITHUB_TOKEN',
copilotAddSourceGhCli: '來源:gh CLIgh auth token',
copilotAddSourceAppsJson: '來源:VS Code Copilot 插件(apps.json',
copilotDeleteHintEnv: '此操作會清除 ~/.hermes/.env 中的 COPILOT_GITHUB_TOKEN,不影響其他工具。',
copilotDeleteHintGhCli: 'Copilot 將從 Hermes 清單移除。不會影響 gh CLI —— `gh auth status` 仍顯示已登入。',
copilotDeleteHintAppsJson: 'Copilot 將從 Hermes 清單移除。不會影響 VS Code Copilot 插件的登入。',
customBadge: '自訂',
previewBadge: '預覽',
disabledBadge: '不可用',
disabledTooltip: '此模型目前帳號不可用',
customModelPlaceholder: '自訂模型名稱',
customModelHint: '按 Enter 載入',
removeCustomModel: '移除這個未列出的模型',
noProviders: '目前無 Provider,新增一個開始吧。',
models: '模型清單',
count: '個模型',
more: '個更多',
builtIn: '內建',
customType: '自訂',
provider: 'Provider',
contextLength: '上下文長度',
contextLengthPlaceholder: '例如 256000(選填)',
local: '本地 ({host})',
selectProviderRequired: '請選擇 Provider',
baseUrlRequired: 'Base URL 為必填項',
apiKeyRequired: 'API Key 為必填項',
modelRequired: '預設模型為必填項',
enterBaseUrl: '請先輸入 Base URL',
unexpectedFormat: '回應格式異常',
foundModels: '找到 {count} 個模型',
fetchFailed: '取得模型失敗',
manageVisibleModels: '管理可見模型',
manageVisibleModelsFor: '管理 {name} 可見模型',
visibilityHint: '僅影響 Web UI 的模型選擇器和模型頁展示,不會改寫 Hermes CLI 的 provider/model 配置。實際呼叫仍使用原始模型 ID。',
visibilitySaved: '可見模型已儲存',
visibilitySaveFailed: '儲存可見模型失敗',
showAllModels: '顯示全部模型',
clearVisibleModels: '取消全選',
currentDefault: '目前預設',
defaultShort: '預設',
aliasEdit: '重新命名',
aliasTitle: '模型顯示名',
aliasTitleFor: '{model} 的顯示名',
aliasPlaceholder: '留空則使用原始模型 ID',
aliasHint: '僅修改 Web UI 顯示名,傳送給 Hermes 的仍是原始模型 ID。',
aliasCanonical: '原始 ID{model}',
aliasUseOriginal: '恢復原始 ID',
aliasManage: '顯示名',
aliasManageFor: '{provider} 的顯示名',
aliasSaveFailed: '儲存顯示名失敗',
visibilitySelectOne: '至少保留一個可見模型',
xaiWaiting: '請在開啟的 xAI 頁面完成授權。授權完成後視窗會自動關閉。',
xaiOpenLink: '開啟 xAI 授權頁',
xaiLoginTitle: 'xAI Grok OAuth 登入',
xaiExpired: '授權連結已過期,請重試。',
xaiCopyLink: '複製授權連結',
xaiApproved: '登入成功!',
},
// 設定檔
profiles: {
title: '設定檔',
create: '建立設定檔',
import: '匯入',
export: '匯出',
rename: '重新命名',
delete: '刪除',
switchTo: '切換 Hermes Profile',
switchConfirm: '將執行 `hermes profile use {name}` 並切換 Hermes CLI 的 active profile,是否繼續?',
switchSuccess: 'Hermes active profile 已切換為「{name}」',
switchFailed: '切換 Hermes Profile 失敗,閘道可能需要手動重新啟動',
createSuccess: '設定檔「{name}」已建立',
createFailed: '建立設定檔失敗',
renameSuccess: '設定檔已重新命名',
renameFailed: '重新命名設定檔失敗',
deleteConfirm: '確定刪除設定檔「{name}」嗎?',
deleteSuccess: '設定檔已刪除',
deleteFailed: '刪除設定檔失敗',
exportSuccess: '設定檔已匯出',
exportFailed: '匯出設定檔失敗',
importSuccess: '設定檔已匯入',
importFailed: '匯入設定檔失敗',
importSelectFile: '選擇封存檔案',
importInvalidFile: '請選擇有效的封存檔案 (.tar.gz, .tgz, .gz, .zip)',
name: '設定檔名稱',
namePlaceholder: '僅限小寫字母、數字、連字號',
nameValidation: '設定檔名稱只能包含小寫字母、數字、底線和連字號',
newName: '新名稱',
newNamePlaceholder: '小寫字母、數字、連字號',
cloneFromCurrent: '從目前設定檔複製',
cloneCleanupNotice: '複製時會自動略過獨占型平台憑證(Weixin / Telegram / Slack 等),避免與來源設定檔衝突',
cloneStrippedCredentials: '已清理 {count} 項獨占憑證:{list}',
cloneDisabledPlatforms: '已停用 {count} 個平台:{list}',
cloneStrippedConfigCredentials: '已清理 config.yaml 中 {count} 項嵌入憑證:{list}',
archivePath: '封存路徑',
archivePathPlaceholder: '封存檔案的伺服器路徑',
importName: '設定檔名稱(選填)',
importNamePlaceholder: '留空則使用封存名稱',
active: '使用中',
model: '模型',
gateway: '閘道',
alias: '別名',
provider: 'Provider',
path: '路徑',
skills: '技能',
hasEnv: '有 .env',
hasSoulMd: '有 soul.md',
noProfiles: '目前無設定檔,建立一個開始吧。',
avatar: {
title: '自訂頭像',
customize: '頭像',
upload: '上傳圖片',
random: '隨機產生',
reset: '恢復預設',
hint: '支援 PNG、JPEG、WebP,最大 1MB',
invalidType: '請選擇 PNG、JPEG 或 WebP 圖片',
tooLarge: '頭像圖片不能超過 1MB',
saveSuccess: '頭像已儲存',
saveFailed: '儲存頭像失敗',
resetSuccess: '已恢復預設頭像',
resetFailed: '恢復預設頭像失敗',
},
runtime: {
activeProfile: '目前:{name}',
bridgeWorker: '橋接狀態',
gateway: '閘道',
active: '使用中',
activeTag: '目前',
idle: '閒置',
checking: '檢測中',
running: '執行中',
stopped: '已停止',
restartGateway: '重啟閘道',
restartProfile: '重啟設定檔',
switchProfile: '切換前端設定檔',
gatewayRestarted: '閘道已重啟:{name}',
gatewayRestartFailed: '重啟閘道失敗',
profileRestarted: '設定檔已重啟:{name}',
profileRestartFailed: '重啟設定檔失敗',
},
},
// 日誌
logs: {
title: '日誌',
all: '全部',
searchPlaceholder: '搜尋...',
refresh: '重新整理',
noEntries: '目前無日誌',
},
// 設定
settings: {
title: '設定',
saved: '已儲存',
saveFailed: '儲存失敗',
tabs: {
display: '顯示',
account: '目前帳號',
users: '帳號管理',
agent: '代理',
memory: '記憶',
compression: '上下文壓縮',
session: '工作階段',
privacy: '隱私',
apiServer: 'API 伺服器',
models: '模型',
voice: '語音',
},
models: {
apiKey: 'API Key',
apiKeyPlaceholder: '輸入 API Key',
save: '儲存',
saved: '已儲存',
saveFailed: '儲存失敗',
noProviders: '目前無已設定的模型',
},
display: {
streaming: '串流回應',
streamingHint: '即時顯示 AI 回覆',
compact: '緊湊模式',
compactHint: '減少訊息間距',
showReasoning: '顯示推理過程',
showReasoningHint: '展示模型思考過程',
showCost: '顯示費用',
showCostHint: '在回覆中顯示 token 使用量',
inlineDiffs: '內嵌差異',
inlineDiffsHint: '程式碼變更以內嵌方式顯示',
bellOnComplete: '完成提示音',
bellOnCompleteHint: 'AI 回覆完成時播放提示音',
busyInputMode: '忙碌輸入模式',
busyInputModeHint: 'AI 處理中仍可輸入',
theme: '主題',
themeHint: '選擇淺色、暗色或跟隨系統',
themeLight: '淺色',
themeDark: '暗色',
themeSystem: '跟隨系統',
},
agent: {
maxTurns: '最大輪次',
maxTurnsHint: '單次對話最大互動輪數',
gatewayTimeout: '閘道逾時',
gatewayTimeoutHint: '單次請求逾時時間(秒)',
restartDrainTimeout: '重啟排空逾時',
restartDrainTimeoutHint: '重啟前排空請求的逾時時間(秒)',
toolEnforcement: '工具執行策略',
toolEnforcementHint: '控制工具呼叫的執行模式',
auto: '自動',
always: '始終',
never: '從不',
},
memory: {
enabled: '啟用記憶',
enabledHint: '允許 AI 記住對話上下文',
userProfile: '使用者畫像',
userProfileHint: '允許 AI 記住使用者偏好資訊',
charLimit: '記憶字元上限',
charLimitHint: 'MEMORY.md 最大字元數',
userCharLimit: '使用者畫像字元上限',
userCharLimitHint: 'USER.md 最大字元數',
},
compression: {
enabled: '啟用壓縮',
enabledHint: '長對話接近模型上下文上限前自動壓縮歷史',
threshold: '壓縮閾值',
thresholdHint: '預估 token 超過上下文比例時開始壓縮',
targetRatio: '目標比例',
targetRatioHint: '壓縮後歷史保留到上下文的目標比例',
protectLastN: '保護最近訊息',
protectLastNHint: '最近多少則訊息不參與壓縮',
protectFirstN: '保護開頭訊息',
protectFirstNHint: '最早多少則訊息不參與壓縮',
},
session: {
mode: '重設模式',
modeHint: '工作階段重設的觸發條件',
modeBoth: '閒置 + 定時',
modeIdle: '僅閒置',
modeDaily: '僅定時',
modeNone: '永不(僅手動)',
idleMinutes: '閒置逾時',
idleMinutesHint: '無操作後自動重設的等待時間(分鐘)',
atHour: '定時重設時間',
humanOnly: '僅顯示人類工作階段',
humanOnlyHint: '預設隱藏子代理和工作階段監看雜訊',
liveMonitorHumanOnly: '即時監看:僅顯示人類工作階段',
liveMonitorHumanOnlyHint: '在即時監看中預設隱藏子代理和工作階段監看雜訊',
atHourHint: '每天在指定小時重設工作階段',
requireAuth: '工作階段授權',
requireAuthHint: '修改工作階段操作是否授權',
},
privacy: {
redactPii: '遮蔽 PII',
redactPiiHint: '自動偵測並隱藏敏感資訊(密碼、金鑰等)',
},
apiServer: {
enable: '啟用',
enableHint: '啟用 API 伺服器',
host: '主機',
hostHint: '監聽位址',
port: '連接埠',
portHint: '監聽連接埠',
key: '金鑰',
keyHint: 'API 存取金鑰',
cors: 'CORS 來源',
corsHint: '允許的跨域來源',
},
lockedIps: {
title: '鎖定 IP 管理',
count: '{count} 個 IP 被鎖定',
empty: '目前無鎖定 IP',
unlock: '解鎖',
unlockAll: '全部解鎖',
unlockAllConfirm: '確認解鎖所有鎖定的 IP',
unlocked: 'IP 已解鎖',
allUnlocked: '已解鎖 {count} 個 IP',
},
voice: {
ttsProvider: 'TTS 提供者',
ttsProviderHint: '選擇訊息朗讀使用的語音引擎',
providerWebSpeech: 'WebSpeech API(瀏覽器內建)',
providerOpenai: 'OpenAI TTS',
providerCustom: '自訂端點(相容 OpenAI',
providerEdge: 'Edge TTS(免費,無需 API Key',
// WebSpeech
webspeechVoice: '音色',
webspeechVoiceHint: '從瀏覽器或系統提供的語音中選擇',
webspeechVoicePlaceholder: '自動(預設語音)',
// OpenAI
openaiKey: 'API 金鑰',
openaiKeyHint: '具有 TTS 權限的 OpenAI API Key',
openaiUrl: 'API 基礎位址',
openaiUrlHint: '例如 https://api.openai.com/v1/audio/speech',
openaiModel: '模型',
openaiModelHint: 'tts-1(快速)/ tts-1-hd(高音質)',
openaiVoice: '音色',
openaiVoiceHint: '用於語音合成的音色',
// 自訂端點
customHint: '支援任何 OpenAI 相容的 TTS 服務——可用於 GPT-SoVITS、CosyVoice 等自部署服務。',
customUrl: 'API 位址',
customUrlHint: 'TTS 服務的完整基礎位址',
customUrlPlaceholder: '本地適配器中設定的位址,如:http://127.0.0.1:9880',
customApiKey: 'API 金鑰(選填)',
customApiKeyHint: '部分自部署服務需要身份驗證',
customApiKeyPlaceholder: '不需要則留空',
// Edge TTS
edgeHint: '由 Microsoft Edge TTS 驅動(node-edge-tts)。',
edgeUrl: '適配器位址',
edgeUrlHint: 'Edge TTS 適配器位址,例如 http://127.0.0.1:9882',
edgeUrlPlaceholder: 'http://127.0.0.1:9882',
edgeVoice: '音色',
edgeVoiceHint: '選擇用於語音合成的音色',
edgeRate: '語速',
edgeRateHint: '調整語音速度(0.52.0 倍)',
edgePitch: '音調',
edgePitchHint: '調整語音音調(-20+20 Hz',
// 試聽
testTitle: '試聽測試',
testText: '測試文字',
testTextPlaceholder: '輸入測試文字...',
testTextDefault: '你好,這是一個語音測試。',
testButton: '試聽',
testButtonPlaying: '播放中...',
testFailed: '測試失敗:{error}',
// MiMo TTS
providerMimo: 'MiMo TTS',
mimoHint: '小米 MiMo TTS,支援預設音色、音色設計、音色複製三種模式',
mimoApiKey: 'API Key',
mimoApiKeyHint: '在 platform.xiaomimimo.com 取得',
mimoApiKeyPlaceholder: 'MiMo API Key',
mimoBaseUrl: 'Base URL',
mimoBaseUrlHint: 'MiMo API 端點位址',
mimoModel: '模型',
mimoModelHint: '選擇語音合成模型',
mimoModelPreset: '預設音色',
mimoModelVoiceDesign: '音色設計',
mimoModelVoiceClone: '音色複製',
mimoVoice: '音色',
mimoVoiceHint: '選擇預設音色',
mimoVoiceDesignPrompt: '音色描述',
mimoVoiceDesignPromptHint: '描述你想要的音色特徵',
mimoVoiceDesignPromptPlaceholder: '例如:溫柔的年輕女聲,語速稍慢,帶著磁性',
mimoCloneAudio: '上傳音訊',
mimoCloneAudioHint: '上傳音訊樣本用於音色複製,支援 mp3/wav,最大 10MB',
mimoCloneAudioUpload: '選擇檔案',
mimoCloneAudioClear: '清除音訊',
mimoStylePrompt: '風格指令',
mimoStylePromptHint: '可選,用自然語言描述語音風格',
mimoStylePromptPlaceholder: '例如:用輕快上揚的語調,語速稍快',
},
},
githubPreview: {
title: "版本預覽",
description: "將選取的 GitHub tag 複製到 Web UI 預覽工作目錄,安裝依賴並以開發連接埠執行。",
refresh: "重新整理",
selectTag: "選擇 tag",
prepare: "準備程式碼",
install: "安裝依賴",
start: "開啟預覽",
stop: "停止",
note: "預覽程式碼存放在 Web UI 資料目錄下。正式環境仍使用 8648,預覽開發環境使用前端 8651、後端 8650。",
path: "預覽路徑",
webuiHome: "預覽資料目錄",
currentTag: "目前 Tag",
repoReady: "倉庫就緒",
dependencies: "依賴已安裝",
running: "執行狀態",
notRunning: "未執行",
open: "開啟預覽",
log: "操作日誌路徑",
logOutput: "日誌輸出",
actionLog: "操作日誌",
devLog: "開發服務日誌",
yes: "是",
no: "否",
actionFailed: "操作失敗",
nodeEnvironmentMissing: "未偵測到可用的 Node/npm 環境,請先安裝 Node.js 後重試。",
prepareSuccess: "預覽程式碼已準備好",
installSuccess: "依賴安裝完成",
startSuccess: "預覽已啟動",
stopSuccess: "預覽已停止",
},
codingAgents: {
title: "編程工具",
notice: "並非所有提供商和模型都相容。",
claudeDescription: "Anthropic CLI,適合 print mode 單次任務和互動式編程工作階段。",
codexDescription: "OpenAI CLI,以及 Hermes openai-codex 提供商的倉庫任務流程。",
copyCommand: "複製",
commandCopied: "命令已複製",
commandCopyFailed: "複製失敗",
refresh: "重新整理",
checking: "偵測中",
installStatus: "安裝狀態",
installed: "已安裝",
notInstalled: "未安裝",
installNow: "安裝",
installing: "安裝中",
installSuccess: "安裝完成",
installFailed: "安裝失敗",
nodeEnvironmentMissing: "未偵測到可用的 Node/npm 環境,請先安裝 Node.js 後重試。",
deleteNow: "刪除",
deleting: "刪除中",
deleteSuccess: "刪除完成",
deleteFailed: "刪除失敗",
configFiles: "設定檔",
profileScope: "設定",
providerScope: "提供商",
providerPlaceholder: "例如 custom:glm",
modelScope: "模型",
modelPlaceholder: "選擇模型",
launchModeScope: "啟動方式",
launchModeGlobal: "全域預設設定",
launchModeScoped: "選擇提供商和模型",
protocolScope: "協議",
protocolOpenAiChat: "OpenAI Chat Completions (/v1/chat/completions)",
protocolOpenAiResponses: "OpenAI Responses (/v1/responses)",
protocolAnthropicMessages: "Anthropic Messages (/v1/messages)",
reloadConfig: "重新讀取設定",
configFileNotCreated: "未建立",
configLoadFailed: "讀取設定檔失敗",
loadFailed: "偵測編程工具失敗",
launch: "啟動",
launchTitle: "啟動編程工具",
nativeTerminal: "原生終端機",
builtInTerminal: "內建終端機",
launchPrepared: "啟動設定已產生",
launchPrepareFailed: "產生啟動設定失敗",
nativeLaunchStarted: "已開啟原生終端機",
nativeLaunchFailed: "開啟原生終端機失敗",
terminalTitle: "編程工具終端機",
loadProvidersFailed: "讀取目前設定的提供商失敗",
selectProviderModel: "請選擇提供商和模型",
launchConfigDir: "啟動設定目錄",
launchCommand: "啟動命令",
table: {
tool: "工具",
kind: "步驟",
command: "命令",
note: "說明",
action: "操作",
},
kinds: {
install: "安裝",
auth: "認證",
health: "檢查",
run: "執行",
},
notes: {
claudeInstall: "全域安裝 Claude Code CLI。",
codexInstall: "全域安裝 Codex CLI。",
claudeAuth: "檢查 Claude Code 登入狀態;未登入時先執行 claude。",
codexAuth: "新增 Hermes 管理的 OpenAI Codex OAuth 憑證。",
claudeHealth: "檢查自動更新器和本機 CLI 健康狀態。",
codexHealth: "確認 Codex CLI 已在 PATH 中可用。",
claudeRun: "Print mode 最適合 API 驅動的單次任務。",
codexRun: "Codex 單次任務需要在 git 倉庫中執行。",
},
},
// 平台頻道設定
platform: {
requireMention: "需要 {'@'}提及",
requireMentionGroup: "群組中需要 {'@'}機器人 才會回應",
requireMentionChannel: "頻道中需要 {'@'}機器人 才會回應",
requireMentionRoom: "房間中需要 {'@'}機器人 才會回應",
reactions: '表情回應',
reactionsHint: '對訊息新增表情回應',
freeResponseChats: '自由回應聊天',
freeResponseChatsHint: "不需要 {'@'}提及即回應的聊天 ID(逗號分隔)",
freeResponseChannels: '自由回應頻道',
freeResponseChannelsHint: "不需要 {'@'}提及即回應的頻道 ID(逗號分隔)",
freeResponseRooms: '自由回應房間',
freeResponseRoomsHint: "不需要 {'@'}提及即回應的房間 ID(逗號分隔)",
mentionPatterns: '自訂提及模式',
mentionPatternsHint: '額外的觸發模式清單',
autoThread: '自動建立討論串',
autoThreadHint: "{'@'}提及後自動建立回覆討論串",
autoThreadHintRoom: '在房間中自動建立回覆討論串',
dmMentionThreads: 'DM 提及討論串',
dmMentionThreadsHint: '在私聊中也使用討論串回覆提及',
allowBots: '允許機器人訊息',
allowBotsHint: '回應其他機器人傳送的訊息',
allowedChannels: '允許的頻道',
allowedChannelsHint: '白名單頻道 ID(逗號分隔)',
ignoredChannels: '忽略的頻道',
ignoredChannelsHint: '不回應的頻道 ID(逗號分隔)',
noThreadChannels: '無討論串頻道',
noThreadChannelsHint: '不建立討論串的頻道 ID(逗號分隔)',
exclusiveTokenWarning: '此平台使用獨占 token 鎖。每個 profile 必須使用不同的身份 token,否則會與其他 profile 衝突導致 gateway 啟動失敗。',
botToken: 'Bot Token',
botTokenHint: '開發者入口網站取得的 Bot Token',
accessToken: 'Access Token',
accessTokenHint: 'Matrix Access Token',
homeserver: 'Homeserver URL',
homeserverHint: 'Matrix 伺服器位址',
appId: 'App ID',
appIdHint: '飛書 App ID',
appSecret: 'App Secret',
appSecretHint: '飛書 App Secret',
clientId: 'Client ID',
clientIdHint: '釘釘 Client ID',
clientSecret: 'Client Secret',
clientSecretHint: '釘釘 Client Secret',
cardTemplateId: 'AI 卡片範本 ID',
cardTemplateIdHint: '釘釘 AI 卡片範本 ID;留空則不啟用 AI 卡片',
allowedUsers: '允許使用者',
allowedUsersHint: '使用者 ID 或 OpenID 白名單,多個請用英文逗號分隔',
allowAllUsers: '允許所有使用者',
allowAllUsersHint: '允許任意使用者發起訊息;關閉後使用白名單',
botId: 'Bot ID',
botIdHint: '企業微信 Bot ID',
wecomSecretHint: '企業微信 Bot Secret',
waEnabled: '啟用 WhatsApp',
waEnabledHint: '透過 QR Code 配對啟用 WhatsApp',
weixinToken: '微信 Token',
weixinTokenHint: '透過 weixin CLI 掃碼登入取得 (hermes weixin)',
accountId: 'Account ID',
accountIdHint: '微信 Account ID',
qrLogin: '掃碼登入',
qrRelogin: '重新登入',
qrFetching: '正在取得 QR Code...',
qrScanHint: '使用微信掃描 QR Code 登入',
qrScanedHint: '已掃描,請在手機上確認...',
// QQ
qqAppId: 'App ID',
qqAppIdHint: 'QQ 開放平台機器人 App ID',
qqAppSecret: 'App Secret',
qqAppSecretHint: 'QQ 開放平台機器人 App Secret',
qqMarkdown: 'Markdown 支援',
qqMarkdownHint: '啟用 Markdown 格式訊息(部分客戶端可能不支援)',
qqSandbox: '沙箱模式',
qqSandboxHint: '啟用沙箱環境(測試用)',
qqQrScanHint: '使用 QQ 掃描上方 QR Code,或在手機上開啟連結完成綁定',
},
// 閘道
gateways: {
title: '閘道',
running: '執行中',
stopped: '已停止',
started: '已啟動',
startFailed: '啟動失敗',
stopFailed: '停止失敗',
},
// 語言
language: {
label: '語言',
zh: '中文(簡體)',
'zh-TW': '繁體中文',
en: 'English',
},
// 終端機
terminal: {
sessions: '工作階段',
newTab: '新增終端機',
closeSession: '關閉此工作階段?',
sessionExited: '已退出',
processExited: '程序已退出,代碼 {code}',
noSessions: '目前無終端機工作階段',
connectionFailed: '終端機服務連線失敗',
connectionClosed: '終端機連線已關閉',
connectionError: '終端機連線錯誤',
},
// 群聊
groupChat: {
title: '群聊',
createRoom: '建立房間',
joinByCode: '透過邀請碼加入',
roomName: '房間名稱',
roomNamePlaceholder: '輸入房間名稱',
inviteCode: '邀請碼',
autoGenerate: '自動產生',
noRooms: '目前無房間',
selectOrCreate: '選擇或建立一個房間開始聊天',
agents: '智慧代理',
addAgent: '新增智慧代理',
selectProfile: '選擇一個設定檔',
agentAdded: '智慧代理已新增',
agentAlreadyInRoom: '該智慧代理已在房間中',
agentAddFailedCount: '{count} 個智慧代理未新增:{details}',
noAgents: '目前房間無智慧代理',
members: '成員',
roomCreated: '房間已建立',
roomDeleted: '房間已刪除',
roomCloned: '房間已複製',
cloneRoom: '複製房間',
copyRoomLink: '複製房間連結',
deleteRoomConfirm: '確定刪除這個房間嗎?',
clearContext: '清理上下文',
clearContextConfirm: '確定清理目前房間上下文嗎?訊息和壓縮快照會被刪除,智慧代理和成員會保留。',
contextCleared: '上下文已清理',
you: '你',
joined: '已加入房間',
joinFailed: '加入房間失敗',
inputPlaceholder: '輸入訊息... (Enter 發送)',
enterCode: '輸入邀請碼',
yourName: '你的名稱',
yourNamePlaceholder: '輸入你的群聊暱稱',
yourDescription: '自我介紹(選填)',
yourDescriptionPlaceholder: '介紹一下你自己...',
agentName: 'Agent 名稱',
agentNamePlaceholder: '自訂名稱(留空則使用 profile 名稱)',
agentDesc: 'Agent 描述',
agentDescPlaceholder: '描述這個 agent 的作用...',
agentReplying: '正在回覆...',
agentCompressing: '正在壓縮上下文...',
compressionSettings: '壓縮設定',
triggerTokens: '觸發壓縮 Token 數',
triggerTokensDesc: '訊息 token 數超過此值時觸發上下文壓縮',
maxHistoryTokens: '最大歷史 Token 數',
maxHistoryTokensDesc: '壓縮後傳送給 LLM 的最大 token 數',
tailMessageCount: '保留最近訊息數',
tailMessageCountDesc: '壓縮後保留最近的原始訊息條數',
compressionConfig: '壓縮設定',
compressionSaved: '壓縮設定已儲存',
compressNow: '立即壓縮',
compressingInProgress: '正在壓縮中,請稍後',
},
// 用量統計
usage: {
title: '用量統計',
refresh: '重新整理',
totalTokens: '總 Token 數',
inputTokens: '輸入',
outputTokens: '輸出',
totalSessions: '總工作階段數',
avgPerDay: '日均 ~{n}',
estimatedCost: '預估費用',
cacheHitRate: '快取命中率',
modelBreakdown: '模型分布',
dailyTrend: '每日用量',
date: '日期',
tokens: 'Token',
cache: '快取',
cacheRead: '快取讀取',
cacheWrite: '快取寫入',
sessions: '工作階段',
cost: '費用',
noData: '目前無用量資料',
},
skillsUsage: {
title: '技能用量',
subtitle: '追蹤 Hermes 工作階段中的技能載入與編輯',
refresh: '重新整理',
periodSelector: '技能用量期間',
periodLabel: '{days}天',
summary: '總覽',
totalActions: '操作',
loads: '載入',
edits: '編輯',
distinctSkills: '技能數',
topSkills: '熱門',
dailyTrend: '趨勢',
periodSummary: '最近 {days} 天',
skill: '技能',
share: '占比',
lastUsed: '最近',
noData: '暫無技能用量資料',
loadFailed: '技能用量載入失敗',
otherSkills: '其他技能',
},
// 檔案管理
files: {
title: '檔案',
fileTree: '檔案樹',
tree: '目錄樹',
list: '檔案清單',
breadcrumbRoot: '根目錄',
newFile: '新增檔案',
newFolder: '新增資料夾',
upload: '上傳',
refresh: '重新整理',
open: '開啟',
edit: '編輯',
preview: '預覽',
download: '下載',
copyPath: '複製路徑',
rename: '重新命名',
delete: '刪除',
name: '名稱',
size: '大小',
modified: '修改時間',
actions: '操作',
emptyDir: '空目錄',
loading: '載入中...',
confirmDelete: '確定要刪除「{name}」嗎?',
confirmDeleteDir: '確定要刪除目錄「{name}」及其所有內容嗎?',
deleteFailed: '刪除失敗',
deleted: '已刪除',
renameTo: '重新命名為',
newFileName: '檔案名稱',
newFolderName: '資料夾名稱',
created: '已建立',
createFailed: '建立失敗',
renamed: '已重新命名',
renameFailed: '重新命名失敗',
uploadSuccess: '已上傳 {count} 個檔案',
uploadFailed: '上傳失敗',
saveFailed: '儲存失敗',
saved: '已儲存',
unsavedChanges: '有未儲存的變更,是否捨棄?',
pathCopied: '路徑已複製',
fileTooLarge: '檔案過大(最大 10MB',
permissionDenied: '無法修改受保護的檔案',
notFound: '檔案或目錄不存在',
backendError: '檔案操作失敗',
dragDropHint: '拖曳檔案至此處上傳',
closeEditor: '關閉編輯器',
closePreview: '關閉',
saveFile: '儲存',
},
// 下載
download: {
downloading: '正在下載...',
downloadFailed: '下載失敗',
fileNotFound: '檔案不存在或已被刪除',
fileTooLarge: '檔案過大(超過限制)',
backendError: '檔案讀取失敗,遠端環境可能不可用',
backendTimeout: '檔案讀取逾時',
unsupportedBackend: '目前 terminal backend 暫不支援檔案下載',
invalidPath: '無效的檔案路徑',
contentDisplay: '內容展示',
download: '下載',
downloadFile: '下載檔案',
},
// 更新日誌
changelog: {
new_0_6_7_1: '桌面版預設使用 8748 連接埠,支援區域網路內存取,也可以直接用本機瀏覽器開啟 Web UI',
new_0_6_7_9: '桌面端下載入口已補充到官網 https://ekkolearnai.com/,也可以繼續從 GitHub Releases 取得最新安裝包',
new_0_6_7_2: 'MCP 工具鏈繼續完善:修復 bridge 工具發現與 MCP 管理生命週期,並在管理頁支援按模型控制工具可見性',
new_0_6_7_3: '訊息列表體驗優化:修復空狀態置中、捲動抖動、歷史會話載入串訊息,並在切換會話時保留捲動位置與 1.5 秒淡入效果',
new_0_6_7_4: 'Bridge 與執行狀態更穩定:保持文字和 tool-call 順序、修復 Profile runtime 狀態載入、改進 Node/npm 偵測,並避免正式環境自動建立資料目錄',
new_0_6_7_5: 'Desktop 發佈鏈路補齊 Electron 打包、應用命名、preload 建置、release artifact 上傳、Windows Hermes CLI 啟動、Linux 圖示與可寫資料路徑、macOS 無憑證跳過簽名和 Windows 啟動無視窗體驗',
new_0_6_7_6: '官網發佈支援下載頁和部署工作流,並修復沒有 rsync 的環境下部署失敗的問題',
new_0_6_7_7: '服務端與認證修復:Windows 憑據目錄使用 dirname 解析,頭像上傳 body 限制提高,避免大圖觸發 413',
new_0_6_7_8: '補充 coding agents 倉庫 harness、驗證文件和 agent 指南,同時移除過期 setup script 文件',
new_0_6_4_1: 'CI 流程加固:PR 檢查固定 npm 安裝路徑,並補齊 Docker smoke 校驗',
new_0_6_4_2: '聊天訊息列表新增虛擬分頁,長工作階段捲動與載入更穩定',
new_0_6_4_3: 'Docker 映像發布改為僅在 release 場景執行,避免一般 PR 觸發發布流程',
new_0_6_4_4: '新增版本預覽工作流:超級管理員可選擇 main 或 GitHub tag,準備預覽程式碼、安裝依賴、啟動/停止預覽並查看日誌',
new_0_6_4_5: '預覽實例隔離前後端連接埠、Web UI home 與 agent bridge endpoint,並在執行時修補舊版本的連接埠、WebSocket、base URL 與巢狀預覽入口',
new_0_6_4_6: '修復 legacy session_usage 表缺少 created_at 時的遷移問題,舊資料會以預設值補齊',
new_0_6_4_7: '預覽與正式環境的 bridge profile worker endpoint 會依 broker 隔離,避免同名 Profile 並發聊天時互相搶占導致 unknown run',
new_0_6_5_1: 'Coding Agents 新增完整啟動工作流:支援 Claude Code 與 Codex、全域設定啟動、按設定/提供商隔離的工作區,以及內建/原生終端機啟動',
new_0_6_5_2: 'Codex 啟動補齊 OpenAI Chat Completions、OpenAI Responses 和 Anthropic Messages 三種協議,並透過本機代理適配不同提供商',
new_0_6_5_3: 'Windows 下 Coding Agents 安裝偵測與終端機啟動更穩定,支援 .cmd/.bat shimClaude Code 自訂模型啟動也避開本機型號校驗',
new_0_6_5_4: '訊息列表、History 分頁、TTS 認證、群聊 agent 提及、版本檢查開關和 bridge worker transport 等執行體驗繼續完善',
new_0_6_3_1: 'Bridge spinner 狀態不再寫入模型 reasoning,避免裝飾性 thinking 文字污染後續上下文',
new_0_6_3_2: 'History 新增 Hermes CLI 工作階段匯入控制,並在匯入時更安全地規範化訊息結構',
new_0_6_3_3: 'Provider 設定支援編輯內建 base URL,新增 LM Studio 內建 Provider,並支援從 LM Studio /models 即時發現模型',
new_0_6_3_4: '透過 Web UI bridge 發起的 OpenRouter 請求會攜帶 Hermes Web UI 應用歸因 headers',
new_0_6_3_5: '公開 auth status 介面不再向未登入請求暴露第一個使用者名稱',
new_0_6_3_6: '釘釘設定新增 AI Card Template ID,並持久化為 DINGTALK_CARD_TEMPLATE_ID',
new_0_6_3_7: 'Bridge socket JSON 輸出會清洗孤立 Unicode surrogate 字元,避免聊天 SSE 崩潰',
new_0_6_2_1: 'Web Bridge 支援 /plan 命令,計畫命令會正確啟動並顯示執行狀態',
new_0_6_2_2: '聊天輸入框指令選單新增 /goal 和 /subgoal,支援狀態、暫停、恢復、完成和清空等操作',
new_0_6_2_3: 'Goal 與 subgoal 工作流接入聊天工作階段,支援目標延續與狀態更新',
new_0_6_2_4: '修復任務投遞目標渠道選項,排程任務可以選擇正確的投遞位置',
new_0_6_2_5: '上下文 token 用量在重新連線後會依快照感知邏輯準確恢復',
new_0_6_2_6: '上下文檢查點壓縮對較慢的 Codex 摘要更穩定:Web UI 等待 5 分鐘,Python bridge broker 不再於 2 分鐘後提前切斷 worker 請求',
new_0_6_2_7: '修復聊天佇列推進,queued 訊息不會提前跳入訊息列表,多視窗同步場景也保持一致',
new_0_6_2_8: 'Clarify 彈窗輸入框不再按 Enter 直接提交,已回覆的 Clarify 也不會在切換工作階段後重複彈出',
new_0_6_2_9: 'Bridge 終端環境刷新與 stale pid 清理收斂到更準確的作用域,減少前端執行狀態殘留',
new_0_6_2_10: '預設上下文長度遵循 Hermes 規範,調整為 256,000 tokens',
new_0_5_35_1: 'Bridge 工作階段支援不同 session 並發執行,同一 session 仍保持串行以避免訊息順序錯亂',
new_0_5_35_2: '新增「效能監控」頁面,可查看系統 CPU/記憶體、Web UI、Bridge Broker、Workers 和活躍工作階段狀態',
new_0_5_35_3: '新增 Worker 級資源統計,展示每個 worker 的 CPU、記憶體、Profile、工作階段數和執行狀態',
new_0_5_35_4: '最佳化 Bridge worker 生命週期清理,Broker 關閉或父行程退出時會回收 worker,減少殘留 Python 行程',
new_0_5_35_5: '監控介面增強跨平台相容,支援 macOS、Windows、Linux、Docker 和 Termux 的資源採集降級',
new_0_5_35_6: '效能監控不再因 Agent 初始化中的 worker 請求而阻塞,降低 Windows 上 request timed out 的機率',
new_0_5_35_7: '聊天 Markdown 新增文字內容內嵌預覽,下載圖示會直接下載檔案,避免被預覽抽屜攔截',
new_0_5_35_8: '最佳化內容展示抽屜:行動端全寬並提供關閉入口,桌面端加寬到 800px,文字與 Markdown 背景保持一致',
new_0_6_0_1: '分帳戶、分 Profile 管理現在一致保護工作階段、模型、用量、看板、任務、上傳、媒體與相關 Hermes API',
new_0_6_0_2: '內建媒體 Skills 只會在媒體端點使用產生的伺服器 token,並依請求的 Profile 讀取 fun-codex/xAI 憑證',
new_0_6_0_3: '單聊與群聊都會把目前 Hermes Profile 注入執行提示,方便 Skills 請求時帶上 X-Hermes-Profile',
new_0_6_0_4: 'delegate_task 的 subagent 進度會即時顯示在聊天介面,包含開始、工具、進度與完成狀態',
new_0_6_0_5: '停止或中止執行時會清理暫時事件,避免舊的 abort 狀態帶入下一次聊天',
new_0_6_0_6: '同步更新文件與官網文案,涵蓋帳戶管理、預設憑證、分帳戶分 Profile 管理、上傳下載與內建媒體 Skills',
new_0_6_0_7: '新增 CLI 維護命令,用於清理登入 IP 鎖與重設預設 admin / 123456 登入帳戶',
new_0_6_0_8: '0.6.0 是 Web UI 從單使用者走向多使用者的分界版本;如果多使用者模式遇到問題,請提交 issue,必要時可回退到 0.5.35 單使用者版本',
new_0_6_1_1: '會話列表預設顯示目前帳戶可用的全部 Profile;只有明確選擇 Profile 篩選時才會限定 Profile,同時 CLI start/stop/status 不再列印 node:sqlite 實驗警告',
new_0_6_1_2: 'Clarify 與確認回覆現在會透過已鑑權的聊天 socket 傳到 Hermes bridge,並補上回應鏈路測試',
new_0_6_1_3: '導覽項目與聊天會話列改用原生連結,支援新分頁開啟、複製連結,並保留側邊欄摺疊狀態',
new_0_6_1_4: '會話連結不再把路由 Profile 洩漏到一般會話列表篩選,並補齊「在新分頁開啟」多語文案',
new_0_6_1_5: 'Skills 會讀取目前 Profile config 中的 skills.external_dirs,標記 external 來源,保留本地優先,並支援讀取外部 skill 檔案',
new_0_6_1_6: '登入 IP 鎖定門檻提高到 10 次失敗,鎖定後的登入頁會提示清除鎖定與重設預設登入的復原命令',
new_0_6_1_7: '行動端或背景造成的聊天斷線會視為暫時斷線,重連後從服務端恢復執行狀態',
new_0_6_1_8: 'Bridge 工具標記 flush 會在工具與執行邊界持久化殘留的工具呼叫前綴,避免重新整理後內容截斷',
new_0_6_1_9: 'History 與會話刪除改為帶上 Profile 精確目標,並在全域 Profile 切換時刷新歷史頁',
new_0_6_1_10: '移除舊的 AUTH_DISABLED 認證繞過以符合多使用者權限模型,同時保留 AUTH_TOKEN 支援',
},
}