1297 lines
53 KiB
TypeScript
1297 lines
53 KiB
TypeScript
export default {
|
||
// 登入
|
||
login: {
|
||
title: 'Hermes Web UI',
|
||
description: '輸入存取權杖以繼續。權杖可在伺服器啟動日誌中查看。',
|
||
placeholder: '存取權杖',
|
||
submit: '登入',
|
||
tokenRequired: '請輸入存取權杖',
|
||
invalidToken: '權杖無效',
|
||
connectionFailed: '無法連線至伺服器',
|
||
passwordLogin: '密碼登入',
|
||
tokenLogin: '權杖登入',
|
||
usernamePlaceholder: '使用者名稱',
|
||
passwordPlaceholder: '密碼',
|
||
credentialsRequired: '請輸入使用者名稱和密碼',
|
||
invalidCredentials: '使用者名稱或密碼錯誤',
|
||
tooManyAttempts: '登入失敗次數過多,請稍後再試',
|
||
passwordMismatch: '兩次密碼不一致',
|
||
passwordTooShort: '密碼長度至少 6 個字元',
|
||
setupSuccess: '密碼登入設定成功',
|
||
passwordChanged: '密碼修改成功',
|
||
passwordRemoved: '密碼登入已移除',
|
||
setupPassword: '設定密碼登入',
|
||
changePassword: '修改密碼',
|
||
changeUsername: '修改使用者名稱',
|
||
removePasswordLogin: '移除',
|
||
username: '使用者名稱',
|
||
currentPassword: '目前密碼',
|
||
newPassword: '新密碼',
|
||
confirmPassword: '確認密碼',
|
||
newUsername: '新使用者名稱',
|
||
usernameChanged: '使用者名稱修改成功',
|
||
usernameTooShort: '使用者名稱至少 2 個字元',
|
||
setupDescription: '設定使用者名稱和密碼以便快速登入。存取權杖仍可繼續使用。',
|
||
removeConfirm: '確定要移除密碼登入嗎?移除後需使用存取權杖登入。',
|
||
passwordLoginNotConfigured: '密碼登入未設定',
|
||
passwordLoginConfigured: '密碼登入已啟用({username})',
|
||
},
|
||
|
||
// 通用
|
||
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: '停止',
|
||
},
|
||
|
||
// 側邊欄
|
||
sidebar: {
|
||
chat: '對話',
|
||
search: '搜尋',
|
||
apiRelay: '中轉站',
|
||
history: '歷史',
|
||
jobs: '任務',
|
||
kanban: '看板',
|
||
models: '模型',
|
||
profiles: '使用者',
|
||
plugins: '插件',
|
||
skills: '技能',
|
||
memory: '記憶',
|
||
logs: '日誌',
|
||
usage: '用量',
|
||
skillsUsage: '技能用量',
|
||
channels: '頻道',
|
||
gateways: '閘道',
|
||
terminal: '終端機',
|
||
groupChat: '群聊',
|
||
files: '檔案',
|
||
groupConversation: '對話',
|
||
groupConversationShort: '對話',
|
||
groupPlatform: '平台',
|
||
groupAgent: '代理',
|
||
groupAgentShort: '代理',
|
||
groupSystem: '系統',
|
||
groupSystemShort: '系統',
|
||
groupMonitoring: '監控',
|
||
groupMonitoringShort: '監控',
|
||
groupTools: '工具',
|
||
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: '目前無更新日誌',
|
||
},
|
||
|
||
// 抽屜
|
||
drawer: {
|
||
terminal: '終端機',
|
||
files: '工作區',
|
||
},
|
||
|
||
// 對話
|
||
chat: {
|
||
contextRemaining: '剩餘',
|
||
contextClickToEdit: '點擊編輯上下文長度',
|
||
contextEditTitle: '編輯上下文長度',
|
||
contextEditDesc: '設定目前模型的上下文長度限制(token 數量)',
|
||
contextEditPlaceholder: '請輸入上下文長度',
|
||
contextEditHint: '常見值:200k (Claude), 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: '將訊息加入目前執行後的佇列',
|
||
clear: '清空目前顯示內容',
|
||
clearHistory: '刪除目前會話已儲存的訊息歷史',
|
||
title: '重新命名目前會話',
|
||
compress: '空閒時觸發上下文壓縮',
|
||
steer: '向目前 Bridge 執行傳送引導文字',
|
||
destroy: '釋放目前會話的 Bridge Agent',
|
||
},
|
||
attachFiles: '新增附件',
|
||
autoPlaySpeech: '自動播放語音',
|
||
showToolCalls: '顯示工具呼叫',
|
||
hideToolCalls: '隱藏工具呼叫',
|
||
messageQueue: '訊息佇列',
|
||
removeQueuedMessage: '移除佇列訊息',
|
||
stop: '停止',
|
||
start: '啟動',
|
||
stopGateway: '停止閘道',
|
||
send: '發送',
|
||
contextUsed: '上下文已用:',
|
||
sessions: '工作階段',
|
||
webUiSessions: '工作階段',
|
||
sessionScopeHint: '這裡只顯示目前工作階段;CLI、Telegram、Discord、Cron 等頻道工作階段在歷史中以唯讀方式查看。',
|
||
openHistory: '開啟歷史',
|
||
hermesHistory: 'Hermes 歷史',
|
||
historyScopeHint: '這裡按來源以唯讀方式查看 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: '拒絕',
|
||
deleteSession: '確定刪除此工作階段?',
|
||
sessionDeleted: '工作階段已刪除',
|
||
toggleBatchMode: '批次選取',
|
||
selectAll: '全選',
|
||
confirmBatchDelete: '確定刪除選取的 {count} 個工作階段?',
|
||
batchDeleteSuccess: '已刪除 {count} 個工作階段',
|
||
batchDeletePartial: '{failed} 個工作階段刪除失敗',
|
||
batchDeleteFailed: '批次刪除失敗',
|
||
rename: '重新命名',
|
||
pin: '釘選',
|
||
unpin: '取消釘選',
|
||
pinned: '已釘選',
|
||
chatMode: '聊天',
|
||
liveMode: '即時',
|
||
liveSessions: '即時工作階段',
|
||
recentBadge: '最近',
|
||
linkedSessions: '關聯 {count} 個工作階段',
|
||
noVisibleMessages: '沒有人類可見訊息。',
|
||
monitorRoleUser: '使用者',
|
||
monitorRoleAssistant: '助手',
|
||
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: '此瀏覽器不支援語音播放',
|
||
},
|
||
|
||
// 看板
|
||
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: '本地安裝',
|
||
},
|
||
},
|
||
|
||
// 插件
|
||
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/.env(COPILOT_GITHUB_TOKEN)',
|
||
copilotAddSourceGhCli: '來源:gh CLI(gh 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: '例如 200000(選填)',
|
||
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: '取消全選',
|
||
aliasEdit: '重新命名',
|
||
aliasTitle: '模型顯示名',
|
||
aliasTitleFor: '{model} 的顯示名',
|
||
aliasPlaceholder: '留空則使用原始模型 ID',
|
||
aliasHint: '僅修改 Web UI 顯示名,傳送給 Hermes 的仍是原始模型 ID。',
|
||
aliasCanonical: '原始 ID:{model}',
|
||
aliasUseOriginal: '恢復原始 ID',
|
||
aliasManage: '顯示名',
|
||
aliasManageFor: '{provider} 的顯示名',
|
||
aliasSaveFailed: '儲存顯示名失敗',
|
||
visibilitySelectOne: '至少保留一個可見模型',
|
||
},
|
||
|
||
// 設定檔
|
||
profiles: {
|
||
title: '設定檔',
|
||
create: '建立設定檔',
|
||
import: '匯入',
|
||
export: '匯出',
|
||
rename: '重新命名',
|
||
delete: '刪除',
|
||
switchTo: '切換至',
|
||
switchConfirm: '切換至設定檔「{name}」將重新啟動閘道,是否繼續?',
|
||
switchSuccess: '已切換至設定檔「{name}」',
|
||
switchFailed: '切換設定檔失敗,閘道可能需要手動重新啟動',
|
||
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: '目前無設定檔,建立一個開始吧。',
|
||
},
|
||
|
||
// 日誌
|
||
logs: {
|
||
title: '日誌',
|
||
all: '全部',
|
||
searchPlaceholder: '搜尋...',
|
||
refresh: '重新整理',
|
||
noEntries: '目前無日誌',
|
||
},
|
||
|
||
// 設定
|
||
settings: {
|
||
title: '設定',
|
||
saved: '已儲存',
|
||
saveFailed: '儲存失敗',
|
||
tabs: {
|
||
display: '顯示',
|
||
account: '帳號',
|
||
agent: '代理',
|
||
memory: '記憶',
|
||
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 最大字元數',
|
||
},
|
||
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.5~2.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: '例如:用輕快上揚的語調,語速稍快',
|
||
},
|
||
},
|
||
|
||
// 平台頻道設定
|
||
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',
|
||
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: '該智慧代理已在房間中',
|
||
noAgents: '目前房間無智慧代理',
|
||
members: '成員',
|
||
roomCreated: '房間已建立',
|
||
roomDeleted: '房間已刪除',
|
||
roomCloned: '房間已複製',
|
||
cloneRoom: '複製房間',
|
||
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: '無效的檔案路徑',
|
||
download: '下載',
|
||
downloadFile: '下載檔案',
|
||
},
|
||
|
||
// 更新日誌
|
||
changelog: {
|
||
new_0_5_14_1: '新增工作階段匯出功能:支援完整和壓縮模式,匯出為 JSON 或純文字',
|
||
new_0_5_14_2: '修復終端機面板啟動即連線導致 PTY 資源耗盡的問題,改為延遲載入連線',
|
||
new_0_5_14_3: '修復 WSL2 環境下 IPv6 雙堆疊綁定導致健康檢查失敗、連接埠無法存取的問題',
|
||
new_0_5_14_4: '修復服務關閉時 SQLite 連線未釋放導致重啟後資料庫被鎖的問題',
|
||
new_0_5_14_5: '更新 FUN-Codex/FUN-Claude 模型清單,新增內建標識、API 中轉站入口',
|
||
new_0_5_15_1: '新增看板面板,視覺化任務與工作階段管理',
|
||
new_0_5_15_2: '新增官網首頁與文件站',
|
||
new_0_5_15_3: '修復群聊 Agent 客戶端使用動態連接埠而非硬式編碼 8648',
|
||
new_0_5_15_4: '新增 node-edge-tts 語音模組',
|
||
new_0_5_15_5: '修復 WSL 預設監聽位址綁定問題',
|
||
new_0_5_15_6: '新增官網首頁 SEO 元資料',
|
||
new_0_5_15_7: '新增基於 IP 的登入暴力破解防護',
|
||
new_0_5_15_8: '修復 MarkdownRenderer 中下載連結重複包裝問題',
|
||
new_0_5_15_9: '修復 Hermes Markdown 媒體渲染與同步重試',
|
||
new_0_5_15_10: '重構移除上游環境變數依賴',
|
||
new_0_5_15_11: '如果看板功能無法使用,請升級 hermes-agent',
|
||
new_0_5_16_1: '聊天串流介面從 /v1/runs 遷移至 /v1/responses,降低延遲',
|
||
new_0_5_16_2: '持久化真實 API 用量(token、快取、推理)到用量統計表',
|
||
new_0_5_16_3: '官網導覽列新增 QQ 群 QR Code',
|
||
new_0_5_16_4: '移除訊息 schema 中未使用的 codex_reasoning_items 欄位',
|
||
new_0_5_17_1: '全面相容 Windows:路徑處理、程序管理、終端機、日誌解析',
|
||
new_0_5_17_2: '重構 Gateway 程序管理,支援跨平台啟動/停止/健康檢查',
|
||
new_0_5_17_3: '修復 Termux 環境下外掛發現失敗的問題,自動解析 hermes shebang 定位 Python',
|
||
new_0_5_17_4: 'YAML 配置解析容忍重複鍵',
|
||
new_0_5_17_5: '最佳化認證鎖定視窗和開發環境關閉流程',
|
||
new_0_5_17_6: 'Comic 佈景主題新增中文(站酷快樂體)、日文(Zen Maru Gothic)、韓文(Gaegu)手寫字體',
|
||
new_0_5_17_7: '新增 Comic/塗鴉佈景主題風格',
|
||
new_0_5_17_8: '授權條款變更為 BSL-1.1',
|
||
new_0_5_17_9: '新增唯讀 Hermes 外掛頁',
|
||
new_0_5_17_10: '圖片上傳轉為 base64 多模態格式',
|
||
new_0_5_17_11: '修復 Kanban 看板選擇與隔離問題',
|
||
new_0_5_17_12: '新增語音播放設定,支援 4 種 TTS 提供商',
|
||
new_0_5_17_13: '降低上下文壓縮提示閾值從 200 到 150',
|
||
new_0_5_17_14: '修復 Web UI 自更新重啟邏輯',
|
||
new_0_5_17_15: '修復 opencode-zen 和 opencode-go 共享環境變數導致配置聯動',
|
||
new_0_5_17_16: '新增繁體中文(zh-TW)語言支援',
|
||
new_0_5_17_17: '模型頁支援在 Web UI 裡管理可見模型',
|
||
new_0_5_17_18: 'Kanban:補齊任務操作鏈路(評論、日誌、分配、派發),明確能力邊界',
|
||
new_0_5_17_19: '修復刪除 Provider 時未清除認證條目',
|
||
new_0_5_17_20: '修復 Codex credential-pool 認證識別',
|
||
new_0_5_17_21: 'Edge TTS 新增語速/音調調節',
|
||
new_0_5_17_22: 'config.yaml 重複鍵不再導致解析崩潰',
|
||
new_0_5_17_23: 'Gateway 連接埠所有權檢查改為基於 PID 檔案,防止跨 Profile 連接埠佔用',
|
||
new_0_5_17_24: '歷史頁面現在顯示 Cron 工作階段記錄',
|
||
new_0_5_17_25: '修復收起側邊欄時語言切換和佈景主題圖示擠壓問題',
|
||
|
||
new_0_5_18_1: 'Add Skills Usage monitoring page with daily trend chart and top skills statistics',
|
||
new_0_5_18_2: 'Add CLI chat session bridge with Python agent bridge for WebSocket-based sessions',
|
||
new_0_5_18_3: 'Add Ollama Cloud provider preset with dynamic model catalog',
|
||
new_0_5_18_4: 'Support model display name renaming (aliases)',
|
||
new_0_5_18_5: 'Support model visibility management in Web UI',
|
||
new_0_5_18_6: 'Enhance usage analytics dashboard',
|
||
new_0_5_18_7: 'Docker single-container deployment with docker-compose and gateway startup fixes',
|
||
new_0_5_18_8: 'Fix plugins page HERMES_HOME fallback warning for non-default profiles',
|
||
new_0_5_18_9: 'Fix gateway stability across dev restarts and improve Windows compatibility',
|
||
new_0_5_22_1: '修復 Hermes 會話列表介面錯誤讀取 Web UI 本地會話庫的問題',
|
||
new_0_5_23_1: '新增僅 Bridge 會話可用的聊天斜線命令,並支援本地化命令提示',
|
||
new_0_5_23_2: '持久化命令歷史用於會話回顯,同時避免污染模型上下文、用量統計和壓縮',
|
||
new_0_5_23_3: '隔離 gateway profile 環境變數,防止憑證在不同 profile 之間串用',
|
||
new_0_5_23_4: 'gateway 分配連接埠時保留 Web UI 連接埠,避免啟動連接埠衝突',
|
||
new_0_5_23_5: '修復自更新重啟邏輯,避免將 restart helper 的成功退出誤報為失敗',
|
||
new_0_5_24_1: '對齊 Bridge 聊天與 API Server 的多模態輸入、系統提示詞和工作區上下文處理',
|
||
new_0_5_25_1: '新增群聊房間重設和複製操作',
|
||
new_0_5_25_2: '支援設定 Web UI 狀態目錄,方便自訂部署目錄結構',
|
||
new_0_5_25_3: '語音設定新增 MiMo TTS 提供商',
|
||
new_0_5_25_4: '自訂 Provider 模型清單改由後端代理請求,避免瀏覽器跨域失敗',
|
||
new_0_5_25_5: '修復 Bridge 工作階段的工具授權流程',
|
||
new_0_5_25_6: '移除 Bridge 強制注入的 CLI 平台提示,保留使用者自訂媒體和檔案輸出規則',
|
||
new_0_5_25_7: '使用者訊息歷史支援正確展示 base64 圖片內容',
|
||
new_0_5_25_8: '新增 Playwright 瀏覽器測試、聊天串流契約覆蓋、Provider 模型測試和覆蓋率基線',
|
||
new_0_5_26_1: '聊天歷史和 Markdown 渲染支援 Windows 與本機媒體路徑',
|
||
new_0_5_26_2: '過濾空 Assistant 歷史訊息,並在新執行開始時清理舊的壓縮狀態',
|
||
new_0_5_26_3: '設定與 Profile 寫入新增檔案鎖,降低並發寫入導致設定損壞的風險',
|
||
new_0_5_26_4: '新增 QQBot 與釘釘頻道設定',
|
||
new_0_5_26_5: 'CLI 連接埠偵測改為跨平台實作,並最佳化行動端終端機抽屜尺寸',
|
||
new_0_5_26_6: '隔離 Bridge Profile 環境,並修復不同 Python 環境下的 Hermes 外掛發現',
|
||
new_0_5_26_7: 'Gateway 停止狀態新增 Web UI 診斷說明,並保持日誌載入狀態穩定',
|
||
new_0_5_26_8: '修復工作階段重設模式選項、自訂 Provider Base URL 處理和動態投遞目標',
|
||
new_0_5_26_9: '聊天輸入列新增本機保存的工具呼叫記錄顯示開關',
|
||
new_0_5_26_10: '支援未找到原始碼目錄時使用套件安裝的 Hermes Agent',
|
||
new_0_5_26_11: '新增 xAI Grok OAuth 登入,支援 SuperGrok 訂閱使用者授權,並更新 Grok 模型預設',
|
||
new_0_5_26_12: '擴展瀏覽器、聊天串流、Provider、Gateway、設定、外掛和 Bridge 測試覆蓋',
|
||
new_0_5_27_1: '新增 Bridge 工作階段級模型設定,每個工作階段可獨立保存 provider 和 model',
|
||
new_0_5_27_2: '在 Bridge 工作階段列表中右鍵工作階段,選擇「設定模型」即可為目前工作階段切換模型',
|
||
new_0_5_27_3: '執行時會自動校驗工作階段模型是否可用;不可用時回退到目前預設模型並更新工作階段',
|
||
new_0_5_27_4: '上下文壓縮預設跟隨目前 Profile 的預設選中模型',
|
||
new_0_5_6_1: '新增語音播放功能:使用 Web Speech API,支援手動播放按鈕、自動播放開關、彩虹邊框動畫和行動端最佳化',
|
||
new_0_5_6_2: '新增強健的 LLM JSON 解析器,相容 Python 格式並從串流事件中擷取文字',
|
||
new_0_5_6_3: 'Skills 功能增強:使用統計、來源過濾、封存技能、來源追溯和釘選切換',
|
||
new_0_5_6_4: '擴展每日使用統計,包含詳細的 token 細分,分離快取讀/寫統計',
|
||
new_0_5_6_5: '最佳化工作階段歷史範圍說明,改進聊天和歷史視圖的描述',
|
||
new_0_5_6_6: '重新設計附件處理,採用 Anthropic 風格的 ContentBlock 陣列格式,支援類型區分(文字、圖片、檔案)',
|
||
new_0_5_6_7: '新增前端檔案下載功能,支援 ContentBlock 和 Markdown 兩種格式,附身份驗證',
|
||
new_0_5_6_8: '修復多程序衝突導致的 SQLite 資料庫重設問題,清理冗餘 nodemon 程序',
|
||
new_0_5_5_1: '🎉 勞動節快樂!祝大家勞動愉快',
|
||
new_0_5_5_2: '新增歷史頁面,用於瀏覽 Hermes 工作階段歷史記錄',
|
||
new_0_5_5_3: '歷史頁面獨立管理工作階段狀態,不影響目前聊天頁面的使用中工作階段',
|
||
new_0_5_5_4: '歷史頁面預設自動載入並選取第一個 CLI 類型的工作階段',
|
||
new_0_5_5_5: '新增 HistoryMessageList 元件,支援透過 props 注入工作階段資料',
|
||
new_0_5_5_6: '過濾空內容訊息和無 toolName 的 tool 訊息,提升歷史記錄顯示品質',
|
||
new_0_5_5_7: '移除 localStorage 工作階段快取,所有工作階段資料改為直接從後端取得',
|
||
new_0_5_5_8: '最佳化 profile 切換邏輯,移除已棄用的快取清理呼叫',
|
||
new_0_5_4_1: '修復並發聊天工作階段事件串擾問題,重構 WebSocket 事件路由機制',
|
||
new_0_5_4_2: '修復 cron job 編輯 payload,支援長提示詞的僅名稱編輯',
|
||
new_0_5_4_3: '修復 Docker 部署後 Web 終端機無法使用 Hermes CLI 的問題',
|
||
new_0_5_4_4: '新增工作區對話框標題 i18n 翻譯,改進工作階段持久化',
|
||
new_0_5_4_5: '支援程式碼區塊複製回饋,顯示使用者通知',
|
||
new_0_5_4_6: '對齊使用分析與 Hermes 狀態資料庫架構',
|
||
new_0_4_8_2: '修復巢狀 Markdown 程式碼區塊導致渲染截斷',
|
||
new_0_4_8_3: '修復壓縮續接工作階段投影和搜尋問題',
|
||
new_0_4_8_4: '最佳化工作階段清單 N+1 查詢,修復非 CJK 搜尋 500 錯誤',
|
||
new_0_4_8_5: '修復切換標籤頁返回時強制捲動到底部',
|
||
new_0_4_8_6: '切換工作階段時新增載入過渡動畫',
|
||
new_0_4_8_7: '修復登入 Token 驗證使用正確的工作階段端點',
|
||
new_0_4_8_8: '修復重新整理頁面後圖片附件失效問題',
|
||
new_0_4_8_9: '點擊圖片附件可全螢幕預覽',
|
||
new_0_4_8_10: '上傳目錄從暫存目錄遷移到 ~/.hermes-web-ui/upload',
|
||
new_0_4_7_1: '即時串流顯示思考/推理過程',
|
||
new_0_4_7_2: 'Docker 建置時跳過 prepare 指令碼',
|
||
new_0_4_7_3: '群聊行動端體驗改進和 UI 最佳化',
|
||
new_0_4_7_4: '將剩餘上下文 Token 數限制為 0 而非負數',
|
||
new_0_4_7_5: '新增阿里雲編碼計畫內建 Provider,支援 .env base_url 覆蓋',
|
||
new_0_4_7_6: '啟動時跳過遠端設定檔以防止卡住',
|
||
new_0_4_7_7: '偵測並展示被靜默吞沒的執行錯誤',
|
||
new_0_4_7_8: 'Provider 感知的上下文長度查詢',
|
||
new_0_4_7_9: '切換時重設 config.model 並解析 CLI 自訂 Provider',
|
||
new_0_4_7_10: '刪除內建 Provider 時清除 .env 中的 base_url_env',
|
||
new_0_4_7_11: '對齊群聊房間側邊欄背景與工作階段清單',
|
||
new_0_4_4_1: '新增檔案瀏覽器,支援多後端(本地/Docker/SSH/Singularity)',
|
||
new_0_4_4_2: '新增聊天訊息附件檔案下載',
|
||
new_0_4_4_3: '使用中工作階段顯示即時狀態標籤',
|
||
new_0_4_4_4: '新增 StepFun 和 Nous Portal Provider 支援',
|
||
new_0_4_4_5: '修復特殊字元搜尋導致 500 錯誤',
|
||
new_0_4_5_1: '新增群聊功能,支援多 Agent 房間、提及路由和輸入狀態恢復',
|
||
new_0_4_5_2: '使用 YAML 重寫模型上下文設定,新增 context_length 設定',
|
||
new_0_4_5_3: '新增 gpt-5.5 到 OpenAI Codex 模型清單',
|
||
new_0_4_5_4: '用本地控制器替換任務代理,最佳化模型載入',
|
||
new_0_4_5_5: 'ModelSelector 自訂模型功能新增 i18n 支援',
|
||
new_0_4_5_6: '修復側邊欄 i18n 缺失 key 警告',
|
||
new_0_4_5_7: '登出時清除所有 localStorage',
|
||
new_0_4_5_8: '新增日誌定期輪替,防止日誌無限增長',
|
||
new_0_4_2_1: '新增 Token 用量追蹤、上下文顯示和動態上下文長度',
|
||
new_0_4_2_2: '新增工作階段搜尋彈窗',
|
||
new_0_4_2_3: '恢復群聊系統(Socket.IO + SQLite 持久化)',
|
||
new_0_4_2_4: 'Chat 頁面新增釘選工作階段和即時監控',
|
||
new_0_4_2_5: '修復內建 Provider 偵測和模型匹配問題',
|
||
},
|
||
}
|