hermes-web-ui 0.6.40 → 0.6.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (287) hide show
  1. package/dist/client/assets/js/{AppSidebar-CaSVcbCW.js → AppSidebar-CNkSiv3l.js} +1 -1
  2. package/dist/client/assets/js/{ChannelsView-hdAXa1hf.js → ChannelsView-6rEo6RBl.js} +1 -1
  3. package/dist/client/assets/js/{ChatPanel-C6sX6idm.js → ChatPanel-ANAZWluc.js} +3 -3
  4. package/dist/client/assets/js/{ChatView-B68k_-D9.js → ChatView-DFcPsmRF.js} +1 -1
  5. package/dist/client/assets/js/{CodingAgentsView-CsIjwbXR.js → CodingAgentsView-CpIY0SHT.js} +1 -1
  6. package/dist/client/assets/js/{DefaultCredentialPrompt-BRhb4DOa.js → DefaultCredentialPrompt-DmNeotSW.js} +1 -1
  7. package/dist/client/assets/js/{DesktopBrowserPanel-BlBfS64w.js → DesktopBrowserPanel-CWjTU-3y.js} +1 -1
  8. package/dist/client/assets/js/{DesktopBrowserView-JukL0QuS.js → DesktopBrowserView-D9Qb3fIV.js} +1 -1
  9. package/dist/client/assets/js/{DesktopPetView-DWq4EiRU.js → DesktopPetView-B7REtC57.js} +1 -1
  10. package/dist/client/assets/js/{DesktopTitleBar-DphP4oa6.js → DesktopTitleBar-Dej_16hB.js} +1 -1
  11. package/dist/client/assets/js/{DevicesView-BFtrfqJs.js → DevicesView--d4HCkch.js} +1 -1
  12. package/dist/client/assets/js/{DocxFilePreview-CmVJ9Jxx.js → DocxFilePreview-BQz6WC7r.js} +2 -2
  13. package/dist/client/assets/js/{FileEditor-CdkNYp7b.js → FileEditor-BBegs-5i.js} +2 -2
  14. package/dist/client/assets/js/{FilePreview-CJrVRPRs.js → FilePreview-B7WqYvZs.js} +2 -2
  15. package/dist/client/assets/js/{FileRenameModal-mghyEXU4.js → FileRenameModal-82RkAZkd.js} +1 -1
  16. package/dist/client/assets/js/{FilesPanel-B9cKB5lX.js → FilesPanel-BHcg6CpC.js} +2 -2
  17. package/dist/client/assets/js/{FilesView-iKZu70E9.js → FilesView-Dl15WTar.js} +2 -2
  18. package/dist/client/assets/js/{GlobalAgentView-JZsss0gx.js → GlobalAgentView-dxEX611f.js} +1 -1
  19. package/dist/client/assets/js/{GlobalPendingActions-BRQIt5vl.js → GlobalPendingActions-CeK96C3G.js} +1 -1
  20. package/dist/client/assets/js/{GroupChatLinkView-CNrV8lnT.js → GroupChatLinkView-CJhI9DVE.js} +1 -1
  21. package/dist/client/assets/js/{GroupChatPanel-WK4zBasl.js → GroupChatPanel-CLa3s08V.js} +3 -3
  22. package/dist/client/assets/js/{GroupChatView-BlMUD1MW.js → GroupChatView-CUwvu-6F.js} +1 -1
  23. package/dist/client/assets/js/{HistoryMessageList-D8zoQ1Zs.js → HistoryMessageList-BdD8GJYM.js} +1 -1
  24. package/dist/client/assets/js/{HistoryView-Bpr8N2lC.js → HistoryView-Ro92tP5R.js} +1 -1
  25. package/dist/client/assets/js/{HtmlFilePreview-Bj3_-hMo.js → HtmlFilePreview-xYn7YtmC.js} +1 -1
  26. package/dist/client/assets/js/{JobsView-CZK26gTw.js → JobsView-BaNA1Yaa.js} +2 -2
  27. package/dist/client/assets/js/{JourneyView-BPUsLj4o.js → JourneyView-Bw-05mCF.js} +1 -1
  28. package/dist/client/assets/js/{KanbanView-B7d-2_z9.js → KanbanView-BYC32l2Q.js} +1 -1
  29. package/dist/client/assets/js/{LoginView-BpYyv831.js → LoginView-KrpCkwOr.js} +1 -1
  30. package/dist/client/assets/js/{LogsView-CabFHk0v.js → LogsView-Dgm4v5sN.js} +1 -1
  31. package/dist/client/assets/js/{MarkdownRenderer-CVtmHZwc.js → MarkdownRenderer-BIPowjr-.js} +3 -3
  32. package/dist/client/assets/js/{McpManagerView-C-ou8vf3.js → McpManagerView-DTtkUIvq.js} +1 -1
  33. package/dist/client/assets/js/{MemoryView-QGFW4iZo.js → MemoryView-BnL7xzux.js} +2 -2
  34. package/dist/client/assets/js/{MessageList-DZR-TFjD.js → MessageList-5tytzhb0.js} +3 -3
  35. package/dist/client/assets/js/{ModelsView-DiWdSWOW.js → ModelsView-ComCz0Ce.js} +1 -1
  36. package/dist/client/assets/js/{OutlinePanel-Dlr5svMY.js → OutlinePanel-CF_XPCRn.js} +1 -1
  37. package/dist/client/assets/js/{PageSidebarFooter-Bic1fUmG.js → PageSidebarFooter-dvLzcTIm.js} +1 -1
  38. package/dist/client/assets/js/{PdfFilePreview-Dkpan1ay.js → PdfFilePreview-COOAoJ4V.js} +2 -2
  39. package/dist/client/assets/js/{PerformanceView-LrZaED_Z.js → PerformanceView-D6dKifJh.js} +1 -1
  40. package/dist/client/assets/js/{PetdexView-Bv8RioGL.js → PetdexView-CmvzDYwf.js} +1 -1
  41. package/dist/client/assets/js/{PluginsView-CbtdIGlq.js → PluginsView-zJV9FE9c.js} +1 -1
  42. package/dist/client/assets/js/{PptxFilePreview-5if_GbU6.js → PptxFilePreview-dC4JxV6j.js} +2 -2
  43. package/dist/client/assets/js/{ProfileAvatar-DI9ciJxS.js → ProfileAvatar-C8xoALCI.js} +1 -1
  44. package/dist/client/assets/js/{ProfilesView-C-FSiKMU.js → ProfilesView-CxVxJRN_.js} +1 -1
  45. package/dist/client/assets/js/{ProviderConfigurationPrompt-BUoWC41Y.js → ProviderConfigurationPrompt-zwk1UwoP.js} +1 -1
  46. package/dist/client/assets/js/{SessionSearchModal-CEKvSihp.js → SessionSearchModal-DhwGsV-i.js} +1 -1
  47. package/dist/client/assets/js/{SettingRow-CSfiJmxx.js → SettingRow-DHqhLX3M.js} +1 -1
  48. package/dist/client/assets/js/{SettingsCircuitBadge-DHIEFyTR.js → SettingsCircuitBadge-CnWSfQZd.js} +1 -1
  49. package/dist/client/assets/js/{SettingsView-DbNJroV3.js → SettingsView-Cbroga25.js} +1 -1
  50. package/dist/client/assets/js/{SharedGroupChatView-CTYjqWcO.js → SharedGroupChatView-DXfqtQ33.js} +1 -1
  51. package/dist/client/assets/js/{SkillsUsageView-BqZ3GtfT.js → SkillsUsageView-C34i3lOQ.js} +1 -1
  52. package/dist/client/assets/js/{SkillsView-Bhla7821.js → SkillsView-DRG_1esx.js} +2 -2
  53. package/dist/client/assets/js/{SpreadsheetFilePreview-CGK8HDAx.js → SpreadsheetFilePreview-DRw4kIx5.js} +1 -1
  54. package/dist/client/assets/js/{TerminalPanel-CtBTLOwq.js → TerminalPanel-Da1nL9P8.js} +1 -1
  55. package/dist/client/assets/js/{TerminalView-BID7fupB.js → TerminalView-B6z-VaGq.js} +1 -1
  56. package/dist/client/assets/js/{ThemeView-Cx3ucIus.js → ThemeView-CAaJ9MH-.js} +1 -1
  57. package/dist/client/assets/js/{UsageView-ByGCsw7o.js → UsageView-B_hLsp0k.js} +1 -1
  58. package/dist/client/assets/js/{VersionPreviewView-DiAK1ind.js → VersionPreviewView-DKXL6anl.js} +1 -1
  59. package/dist/client/assets/js/{WebPet-CdIqrnp1.js → WebPet-BUvrfjpq.js} +1 -1
  60. package/dist/client/assets/js/{WorkflowView-DmBOhSuq.js → WorkflowView-r46Ap9FY.js} +1 -1
  61. package/dist/client/assets/js/{WorkspaceDiffPreview-dHIGp-9F.js → WorkspaceDiffPreview-EwZAE18F.js} +2 -2
  62. package/dist/client/assets/js/{abap-Dj8IFKiF.js → abap-C7gkFu-A.js} +1 -1
  63. package/dist/client/assets/js/{aiden0z-pptx-renderer.es-6vi5-jAN.js → aiden0z-pptx-renderer.es-DOpVaH_k.js} +1 -1
  64. package/dist/client/assets/js/{apex-C3INPUEt.js → apex-DZOtRowu.js} +1 -1
  65. package/dist/client/assets/js/{ar-Gk9y3ZfO.js → ar-8iThLSJQ.js} +1 -1
  66. package/dist/client/assets/js/architecture-7EHR7CIX-BrfhYGuP.js +1 -0
  67. package/dist/client/assets/js/{architectureDiagram-3BPJPVTR-DLZYeivB.js → architectureDiagram-3BPJPVTR-DEsTTzKd.js} +1 -1
  68. package/dist/client/assets/js/{auth-D1ZFqv22.js → auth-B52zm2Ir.js} +1 -1
  69. package/dist/client/assets/js/{azcli-UBzLhJq5.js → azcli-KxuicZQh.js} +1 -1
  70. package/dist/client/assets/js/{bat-P3O4jldt.js → bat-DfFP4HF-.js} +1 -1
  71. package/dist/client/assets/js/{bicep-DdQR9RxE.js → bicep-Co4bntVh.js} +1 -1
  72. package/dist/client/assets/js/{blockDiagram-GPEHLZMM-UWFo8sm5.js → blockDiagram-GPEHLZMM-NsxYeUKd.js} +1 -1
  73. package/dist/client/assets/js/{c4Diagram-AAUBKEIU-jgyj0wOb.js → c4Diagram-AAUBKEIU-D68asSzm.js} +1 -1
  74. package/dist/client/assets/js/{cameligo-Bb4ubW_C.js → cameligo-Xi0l_9Wr.js} +1 -1
  75. package/dist/client/assets/js/{chat-DdHii4Qz.js → chat-fUZW3YFa.js} +1 -1
  76. package/dist/client/assets/js/{chat-input-height-CSPwB9it.js → chat-input-height-lvFawuv9.js} +1 -1
  77. package/dist/client/assets/js/{chat-timestamp-DGQ8fmtT.js → chat-timestamp-4wWFcZWv.js} +1 -1
  78. package/dist/client/assets/js/{chunk-2J33WTMH-Br9OWF5a.js → chunk-2J33WTMH-CEU5sLIh.js} +1 -1
  79. package/dist/client/assets/js/{chunk-3OPIFGDE-Cb40LuI4.js → chunk-3OPIFGDE-DEhbKkCl.js} +1 -1
  80. package/dist/client/assets/js/{chunk-4BX2VUAB-jYtdiafd.js → chunk-4BX2VUAB-OIZUstuy.js} +1 -1
  81. package/dist/client/assets/js/{chunk-55IACEB6-CBtymeHY.js → chunk-55IACEB6-DQHKZCBG.js} +1 -1
  82. package/dist/client/assets/js/{chunk-5ZQYHXKU-yj9xqmex.js → chunk-5ZQYHXKU-BU3pQVVl.js} +1 -1
  83. package/dist/client/assets/js/{chunk-727SXJPM-er_5tB5X.js → chunk-727SXJPM-jj97gdnP.js} +1 -1
  84. package/dist/client/assets/js/{chunk-AQP2D5EJ-C4mDD6xK.js → chunk-AQP2D5EJ-jv-oWlkb.js} +1 -1
  85. package/dist/client/assets/js/{chunk-BSJP7CBP-QZesZe57.js → chunk-BSJP7CBP-DkKsepNF.js} +1 -1
  86. package/dist/client/assets/js/{chunk-CSCIHK7Q-5LH118bT.js → chunk-CSCIHK7Q-CLgoBoCF.js} +3 -3
  87. package/dist/client/assets/js/{chunk-FMBD7UC4-CQho6QZ5.js → chunk-FMBD7UC4-Bx1bCKUR.js} +1 -1
  88. package/dist/client/assets/js/{chunk-KSCS5N6A-DONM1Omv.js → chunk-KSCS5N6A-CZHZ6pBd.js} +1 -1
  89. package/dist/client/assets/js/{chunk-L5ZTLDWV-FN_zFWkp.js → chunk-L5ZTLDWV-dz9D3kOb.js} +1 -1
  90. package/dist/client/assets/js/{chunk-LZXEDZCA-CEEUVvpS.js → chunk-LZXEDZCA-CQiSQehC.js} +2 -2
  91. package/dist/client/assets/js/{chunk-ND2GUHAM-DWckpxQD.js → chunk-ND2GUHAM-mWODKb8v.js} +1 -1
  92. package/dist/client/assets/js/{chunk-NZK2D7GU-0mKZmkuV.js → chunk-NZK2D7GU-ivCkjCOR.js} +1 -1
  93. package/dist/client/assets/js/{chunk-O5CBEL6O-DIDAOkT_.js → chunk-O5CBEL6O-BRUisK47.js} +1 -1
  94. package/dist/client/assets/js/{chunk-QZHKN3VN-D3c-TMz-.js → chunk-QZHKN3VN-BHjgTrzY.js} +1 -1
  95. package/dist/client/assets/js/{chunk-WU5MYG2G-BZvSpwm4.js → chunk-WU5MYG2G-CNW1rcpL.js} +1 -1
  96. package/dist/client/assets/js/{chunk-XPW4576I-xdyJtk-s.js → chunk-XPW4576I-DP3dJbOu.js} +1 -1
  97. package/dist/client/assets/js/classDiagram-4FO5ZUOK-BVBBe3DQ.js +1 -0
  98. package/dist/client/assets/js/classDiagram-v2-Q7XG4LA2-DJUe3i9Y.js +1 -0
  99. package/dist/client/assets/js/{clipboard-DQ_A8ns-.js → clipboard-DHZFaAvO.js} +1 -1
  100. package/dist/client/assets/js/{clipboard-files-bDrcGKPe.js → clipboard-files-CBDy-02Y.js} +1 -1
  101. package/dist/client/assets/js/{clojure-ku7aCU1_.js → clojure-DuyGwS8X.js} +1 -1
  102. package/dist/client/assets/js/{coding-agents-DfHyBvky.js → coding-agents-BNTHD6kd.js} +1 -1
  103. package/dist/client/assets/js/{codingAgentProviders-BM18FAW9.js → codingAgentProviders-DM_ouxbL.js} +1 -1
  104. package/dist/client/assets/js/{coffee-DnRIdJlY.js → coffee-C5p7vzpa.js} +1 -1
  105. package/dist/client/assets/js/{completion-notification-XxjbntI8.js → completion-notification-CzdnhuX3.js} +1 -1
  106. package/dist/client/assets/js/{cose-bilkent-S5V4N54A-w891sIF1.js → cose-bilkent-S5V4N54A-De_ZdqY0.js} +1 -1
  107. package/dist/client/assets/js/{cpp-CN8i6ISX.js → cpp-II5hDbTe.js} +1 -1
  108. package/dist/client/assets/js/{csharp-B-fxig7O.js → csharp-D0POzSpv.js} +1 -1
  109. package/dist/client/assets/js/{csp-Bar9LGt4.js → csp-CwtuRkR3.js} +1 -1
  110. package/dist/client/assets/js/{css-DFtC5xZN.js → css-Dc2fJIqQ.js} +1 -1
  111. package/dist/client/assets/js/{cssMode-DH5XKKL2.js → cssMode-CC6jRvHF.js} +1 -1
  112. package/dist/client/assets/js/{cypher-BkJexWsv.js → cypher-DBcQoWDH.js} +1 -1
  113. package/dist/client/assets/js/{cytoscape.esm-BDsvr8Aq.js → cytoscape.esm-C9FMRqxM.js} +1 -1
  114. package/dist/client/assets/js/{dagre-BM42HDAG-BuT885pa.js → dagre-BM42HDAG-CvJIC410.js} +1 -1
  115. package/dist/client/assets/js/{dagre-BVUDh8Sh.js → dagre-BtgEsAtK.js} +1 -1
  116. package/dist/client/assets/js/{dart-B7W8hAtN.js → dart-Jf_Hmp2o.js} +1 -1
  117. package/dist/client/assets/js/{de-LDpd8WHJ.js → de-7hLSwCEx.js} +1 -1
  118. package/dist/client/assets/js/{defineProperty-DdPu4ZVv.js → defineProperty-DHkErCmG.js} +1 -1
  119. package/dist/client/assets/js/{desktop-browser-xrRFPNUg.js → desktop-browser-C6AhY0uu.js} +1 -1
  120. package/dist/client/assets/js/{diagram-2AECGRRQ-B1sSf-09.js → diagram-2AECGRRQ-CvPeU5Lm.js} +1 -1
  121. package/dist/client/assets/js/{diagram-5GNKFQAL-BffX22pf.js → diagram-5GNKFQAL-CBniYlkH.js} +1 -1
  122. package/dist/client/assets/js/{diagram-KO2AKTUF-D8QvpUpn.js → diagram-KO2AKTUF-C_yFaVRj.js} +1 -1
  123. package/dist/client/assets/js/{diagram-LMA3HP47-DkG7p3lQ.js → diagram-LMA3HP47-BzM1IxNe.js} +1 -1
  124. package/dist/client/assets/js/{diagram-OG6HWLK6-RjvNNvXM.js → diagram-OG6HWLK6-yvmf_3ax.js} +1 -1
  125. package/dist/client/assets/js/{dist-Bk0VKtV3.js → dist-BHzBn3v7.js} +1 -1
  126. package/dist/client/assets/js/{dockerfile-C4m7j8sy.js → dockerfile-J3d6ZPDJ.js} +1 -1
  127. package/dist/client/assets/js/{docx-preview-BpTW-GN7.js → docx-preview-Rqt8wMjQ.js} +1 -1
  128. package/dist/client/assets/js/{download-CX8EG48r.js → download-xhRMWMda.js} +1 -1
  129. package/dist/client/assets/js/{ecl-EHV358Ls.js → ecl-XnlT0p97.js} +1 -1
  130. package/dist/client/assets/js/{editor.api2-CnHBqh_d.js → editor.api2-ChO5nUQb.js} +1 -1
  131. package/dist/client/assets/js/{elixir-DLfp2Dwn.js → elixir-BEJbxH-B.js} +1 -1
  132. package/dist/client/assets/js/{en-D6VVFwFU.js → en-D2WSXgkM.js} +1 -1
  133. package/dist/client/assets/js/{erDiagram-TEJ5UH35-CLlLC6xx.js → erDiagram-TEJ5UH35-DZysD9r9.js} +1 -1
  134. package/dist/client/assets/js/{es-BIMLuyVP.js → es-B7Mq1P0U.js} +1 -1
  135. package/dist/client/assets/js/{esm-C8D4M0Yn.js → esm-DnZPPtmx.js} +1 -1
  136. package/dist/client/assets/js/eventmodeling-FCH6USID-vlE3-g2j.js +1 -0
  137. package/dist/client/assets/js/{file-preview-BvgwVZXh.js → file-preview-C417aixJ.js} +1 -1
  138. package/dist/client/assets/js/{files-CJkCqsUx.js → files-DjI-npgn.js} +1 -1
  139. package/dist/client/assets/js/{flow9-CtBaUnAi.js → flow9-j5XT_8TQ.js} +1 -1
  140. package/dist/client/assets/js/{flowDiagram-I6XJVG4X-VTRTPnqD.js → flowDiagram-I6XJVG4X-Dt5ZtyHz.js} +1 -1
  141. package/dist/client/assets/js/{fr-C2lf0cY2.js → fr-DvClrDOw.js} +1 -1
  142. package/dist/client/assets/js/{freemarker2-XLeMvhl_.js → freemarker2-BzCf_0SN.js} +1 -1
  143. package/dist/client/assets/js/{fsharp-Db0uaBQv.js → fsharp-ClU_Sdjr.js} +1 -1
  144. package/dist/client/assets/js/{ganttDiagram-6RSMTGT7-CdKcIZ8_.js → ganttDiagram-6RSMTGT7-Bca3rPWi.js} +1 -1
  145. package/dist/client/assets/js/gitGraph-WXDBUCRP-Cyd4P6XH.js +1 -0
  146. package/dist/client/assets/js/{gitGraphDiagram-PVQCEYII-Bcuyw6fo.js → gitGraphDiagram-PVQCEYII-Co29qnTg.js} +1 -1
  147. package/dist/client/assets/js/{go-DwaTlB-B.js → go-D3iUyCM0.js} +1 -1
  148. package/dist/client/assets/js/{graphlib-vAI4Pw7R.js → graphlib-Bln6qd-Z.js} +1 -1
  149. package/dist/client/assets/js/{graphql-Cf2XhNJR.js → graphql-z8koqyyL.js} +1 -1
  150. package/dist/client/assets/js/{group-agent-avatar-CPehpiK0.js → group-agent-avatar-CwqtaKGw.js} +1 -1
  151. package/dist/client/assets/js/{group-chat-CY62vc77.js → group-chat-Buz8HP-N.js} +1 -1
  152. package/dist/client/assets/js/{group-chat-xkdjC2Jt.js → group-chat-CgFAwCtr.js} +1 -1
  153. package/dist/client/assets/js/{group-chat-agent-link-DdSNKasF.js → group-chat-agent-link-N5IFeN_j.js} +1 -1
  154. package/dist/client/assets/js/{handlebars-CNEKu_p8.js → handlebars-C_JvhUYs.js} +1 -1
  155. package/dist/client/assets/js/{hcl-6UZbq6h2.js → hcl-X7TzviIX.js} +1 -1
  156. package/dist/client/assets/js/{highlight-DwtBT6t1.js → highlight-C4yUBxwQ.js} +1 -1
  157. package/dist/client/assets/js/{html-DfSIHhKA.js → html-B-rCQB0N.js} +1 -1
  158. package/dist/client/assets/js/{htmlMode-iGw9-O-W.js → htmlMode-CAeEf_yf.js} +1 -1
  159. package/dist/client/assets/js/{index-DnjQJzX4.js → index-DN4SafrP.js} +5 -5
  160. package/dist/client/assets/js/info-J43DQDTF-B9tkQ2Sb.js +1 -0
  161. package/dist/client/assets/js/{infoDiagram-5YYISTIA-85450Zam.js → infoDiagram-5YYISTIA-BWQGayms.js} +1 -1
  162. package/dist/client/assets/js/{ini-8em8V_Af.js → ini-LTHHN4J-.js} +1 -1
  163. package/dist/client/assets/js/{ishikawaDiagram-YF4QCWOH-BZ4az7UA.js → ishikawaDiagram-YF4QCWOH-Dhuplz_z.js} +1 -1
  164. package/dist/client/assets/js/{ja-C1bBXgr_.js → ja-D7BeX2_D.js} +1 -1
  165. package/dist/client/assets/js/{java-CP1MdIkO.js → java-BRFX-ya0.js} +1 -1
  166. package/dist/client/assets/js/{javascript-Cr8_LHYa.js → javascript-ZXiVmjXn.js} +1 -1
  167. package/dist/client/assets/js/{journeyDiagram-JHISSGLW-DGMB8Tgc.js → journeyDiagram-JHISSGLW-CJeatAU9.js} +1 -1
  168. package/dist/client/assets/js/{jsonMode-HCZ-1lFH.js → jsonMode-C6FcMe0o.js} +1 -1
  169. package/dist/client/assets/js/{jszip.min-BkR6b8DY.js → jszip.min-skZCUzWf.js} +1 -1
  170. package/dist/client/assets/js/{julia-DMTMxa5q.js → julia-Bph8N3CL.js} +1 -1
  171. package/dist/client/assets/js/{kanban-definition-UN3LZRKU-F5cH_RpB.js → kanban-definition-UN3LZRKU-tvWuOdSr.js} +1 -1
  172. package/dist/client/assets/js/{katex-CYbEJAbZ.js → katex-hSGJNERm.js} +1 -1
  173. package/dist/client/assets/js/{ko-qgOeHd8L.js → ko-BsVa-If_.js} +1 -1
  174. package/dist/client/assets/js/{kotlin-Blzus47W.js → kotlin-_c4-tPQp.js} +1 -1
  175. package/dist/client/assets/js/{less-DWCHpDyf.js → less-5oVo4jfQ.js} +1 -1
  176. package/dist/client/assets/js/{lexon-YXdlYGbJ.js → lexon-DE4YtGwF.js} +1 -1
  177. package/dist/client/assets/js/{liquid-DSQgvRwe.js → liquid-BGfieGMG.js} +1 -1
  178. package/dist/client/assets/js/{lspLanguageFeatures-0Hx2Vnc-.js → lspLanguageFeatures-DU_1H2uW.js} +1 -1
  179. package/dist/client/assets/js/{lua-Cyv3mTkg.js → lua-7WJSZJqD.js} +1 -1
  180. package/dist/client/assets/js/{m3-CPY3Ym7_.js → m3-gZlfoR19.js} +1 -1
  181. package/dist/client/assets/js/{markdown-DaPQ1nuG.js → markdown-BYF71orA.js} +1 -1
  182. package/dist/client/assets/js/{mdx-BqA6Xr9V.js → mdx-CunEIV3g.js} +1 -1
  183. package/dist/client/assets/js/{mermaid-parser.core-D4HRUOce.js → mermaid-parser.core-DU_SX15F.js} +3 -3
  184. package/dist/client/assets/js/{mermaid.core-w6kHmgOG.js → mermaid.core-8vsbhG5J.js} +3 -3
  185. package/dist/client/assets/js/{message-scroll-position-C5yRCyBU.js → message-scroll-position-C9_YO3pX.js} +2 -2
  186. package/dist/client/assets/js/{mindmap-definition-RKZ34NQL-CnzhnJ7Z.js → mindmap-definition-RKZ34NQL-HPtlKqL1.js} +1 -1
  187. package/dist/client/assets/js/{mips-BfqBfLvN.js → mips-DXkvw9aZ.js} +1 -1
  188. package/dist/client/assets/js/{models-wrytxWnf.js → models-BILDy2sV.js} +1 -1
  189. package/dist/client/assets/js/{monaco.contribution-Bc-DesyO.js → monaco.contribution-DDqeHGl3.js} +2 -2
  190. package/dist/client/assets/js/{msdax-DgMip49g.js → msdax-BbHEBDvP.js} +1 -1
  191. package/dist/client/assets/js/{mysql-DPUvF1g2.js → mysql-7I1rlwh7.js} +1 -1
  192. package/dist/client/assets/js/{objective-c-BQ3llrPW.js → objective-c-Dk03REAv.js} +1 -1
  193. package/dist/client/assets/js/packet-YPE3B663-DlTFK3Wo.js +1 -0
  194. package/dist/client/assets/js/{pascal-bFWHV7MZ.js → pascal-BCfNkzYY.js} +1 -1
  195. package/dist/client/assets/js/{pascaligo-C8Qza2pK.js → pascaligo-D-DslS98.js} +1 -1
  196. package/dist/client/assets/js/{pdf-Cb7x495t.js → pdf-B_OYWxSy.js} +1 -1
  197. package/dist/client/assets/js/{pdf.worker.min-DDUKJ6cJ.js → pdf.worker.min--q2RLEHa.js} +1 -1
  198. package/dist/client/assets/js/{perl-x25gw0_p.js → perl-MUnuTclx.js} +1 -1
  199. package/dist/client/assets/js/{pets-BfRsvl7D.js → pets-D74G2jqA.js} +1 -1
  200. package/dist/client/assets/js/{pgsql-DAUcGeRq.js → pgsql-BxCBktNe.js} +1 -1
  201. package/dist/client/assets/js/{php-nri1eqb2.js → php-zp9UgH03.js} +1 -1
  202. package/dist/client/assets/js/pie-LRSECV5Y-BtnBGhFZ.js +1 -0
  203. package/dist/client/assets/js/{pieDiagram-4H26LBE5-4LODdtT_.js → pieDiagram-4H26LBE5-CG8_pcHr.js} +1 -1
  204. package/dist/client/assets/js/{pla-CHi5LWNL.js → pla-DGCtmYZC.js} +1 -1
  205. package/dist/client/assets/js/{postiats-Bk7jD0AA.js → postiats-DHSW8gnY.js} +1 -1
  206. package/dist/client/assets/js/{powerquery-UTqJ0Vs7.js → powerquery-BGsPEmJe.js} +1 -1
  207. package/dist/client/assets/js/{powershell-CuPY3Rqk.js → powershell-BItlb0hE.js} +1 -1
  208. package/dist/client/assets/js/{profiles-D-vlI-Ec.js → profiles-BK5JKD7h.js} +1 -1
  209. package/dist/client/assets/js/{protobuf-Be4AIz9j.js → protobuf-BIhm6JYx.js} +1 -1
  210. package/dist/client/assets/js/{pt-D7_udWb3.js → pt-BSORCDMm.js} +1 -1
  211. package/dist/client/assets/js/{pug-CZFx15Ey.js → pug-BtnM7KZj.js} +1 -1
  212. package/dist/client/assets/js/{python-BgRg6Ez6.js → python-DxzTx1Q_.js} +1 -1
  213. package/dist/client/assets/js/{qsharp-BiBiLhRS.js → qsharp-B_8MSfaB.js} +1 -1
  214. package/dist/client/assets/js/{quadrantDiagram-W4KKPZXB-g_q9-dXx.js → quadrantDiagram-W4KKPZXB-CsbkMYuV.js} +1 -1
  215. package/dist/client/assets/js/{r-DM7NVSbZ.js → r-kvKC59jk.js} +1 -1
  216. package/dist/client/assets/js/radar-GUYGQ44K-BTKMKX4G.js +1 -0
  217. package/dist/client/assets/js/{razor-CiWy0jCW.js → razor-BwZ0MkaL.js} +1 -1
  218. package/dist/client/assets/js/{redis-BR2LPmFL.js → redis-5j1U_i85.js} +1 -1
  219. package/dist/client/assets/js/{redshift-B0sdAV16.js → redshift-CX1dFLA1.js} +1 -1
  220. package/dist/client/assets/js/{requirementDiagram-4Y6WPE33-EedCclad.js → requirementDiagram-4Y6WPE33-CKC7CQCX.js} +1 -1
  221. package/dist/client/assets/js/{restructuredtext-kQOBLN1M.js → restructuredtext-MV0-Naya.js} +1 -1
  222. package/dist/client/assets/js/{rough.esm-Dyx_2DON.js → rough.esm-CV1rL6PC.js} +1 -1
  223. package/dist/client/assets/js/{ru-CVQQmreT.js → ru-JsH6TKyg.js} +1 -1
  224. package/dist/client/assets/js/{ruby-CbdJXy6J.js → ruby-Bhyejf9X.js} +1 -1
  225. package/dist/client/assets/js/{rust-DZanYksk.js → rust-CR8d_FC1.js} +1 -1
  226. package/dist/client/assets/js/{sankeyDiagram-5OEKKPKP-DFC0nzsd.js → sankeyDiagram-5OEKKPKP-CKlqlvAe.js} +1 -1
  227. package/dist/client/assets/js/{sb-C5-WiqDZ.js → sb-hLW2EM2L.js} +1 -1
  228. package/dist/client/assets/js/{scala-Bk7i9nV-.js → scala-DVUhALEZ.js} +1 -1
  229. package/dist/client/assets/js/{scheme-CaZSWmJ2.js → scheme-BS6yNanr.js} +1 -1
  230. package/dist/client/assets/js/{scss-ByOYuc7K.js → scss-BfoRsElt.js} +1 -1
  231. package/dist/client/assets/js/{sequenceDiagram-3UESZ5HK-hWjPfqXt.js → sequenceDiagram-3UESZ5HK-CTimhD6H.js} +1 -1
  232. package/dist/client/assets/js/{session-browser-prefs-Br8OYA4_.js → session-browser-prefs-BT1woDux.js} +1 -1
  233. package/dist/client/assets/js/{sessions-iGK9S6zk.js → sessions-IkLKgnN6.js} +1 -1
  234. package/dist/client/assets/js/{settings-pbanANH0.js → settings-roYY6G3W.js} +1 -1
  235. package/dist/client/assets/js/{shell-Di0TEySc.js → shell-BO_Lyczz.js} +1 -1
  236. package/dist/client/assets/js/{skills-DC-UPcXj.js → skills-a5LPwmiT.js} +1 -1
  237. package/dist/client/assets/js/{solidity-BNTjAuuA.js → solidity-D3T2Ki4l.js} +1 -1
  238. package/dist/client/assets/js/{sophia-LY__8Yob.js → sophia-iJmIEvi8.js} +1 -1
  239. package/dist/client/assets/js/{sparql-CWnLfgGS.js → sparql-C2HCEExr.js} +1 -1
  240. package/dist/client/assets/js/{sql-B0ypQ9lR.js → sql-DM6_3GBc.js} +1 -1
  241. package/dist/client/assets/js/{src-BihFroE7.js → src-DD_TpJde.js} +1 -1
  242. package/dist/client/assets/js/{st-CqVFKTbZ.js → st-DSb39Fm5.js} +1 -1
  243. package/dist/client/assets/js/{stateDiagram-AJRCARHV-B7wEnYVe.js → stateDiagram-AJRCARHV-DwBGmBj6.js} +1 -1
  244. package/dist/client/assets/js/stateDiagram-v2-BHNVJYJU-5bNcwBne.js +1 -0
  245. package/dist/client/assets/js/{style-DDAg_jVj.js → style-B5xXhBlp.js} +1 -1
  246. package/dist/client/assets/js/{swift-B4ZZmDxc.js → swift-DrZYSZK3.js} +1 -1
  247. package/dist/client/assets/js/{systemverilog-zLt-O1mT.js → systemverilog-BAWNCaf6.js} +1 -1
  248. package/dist/client/assets/js/{tcl-DCSZmA-l.js → tcl-DY15ex6v.js} +1 -1
  249. package/dist/client/assets/js/{timeline-definition-PNZ67QCA-BN_LfleE.js → timeline-definition-PNZ67QCA-B8xuIu6g.js} +1 -1
  250. package/dist/client/assets/js/treeView-BLDUP644-DvZPUnGM.js +1 -0
  251. package/dist/client/assets/js/treemap-LRROVOQU-Bis1djYh.js +1 -0
  252. package/dist/client/assets/js/{tsMode-BjUcuHrq.js → tsMode-BE8JCSCE.js} +1 -1
  253. package/dist/client/assets/js/{ttsHelpers-BLunFYsq.js → ttsHelpers-BLNiQExI.js} +1 -1
  254. package/dist/client/assets/js/{twig-CuJlVpUG.js → twig-BpHF_18K.js} +1 -1
  255. package/dist/client/assets/js/{typescript-De40YVFt.js → typescript-FQ3z9hVG.js} +1 -1
  256. package/dist/client/assets/js/{typespec-8QcsIc3c.js → typespec-BKvcn6aE.js} +1 -1
  257. package/dist/client/assets/js/{useSttSettings-B1-KXN44.js → useSttSettings-DHX06G8A.js} +1 -1
  258. package/dist/client/assets/js/{vb-DEGTdhxf.js → vb-B74ucE43.js} +1 -1
  259. package/dist/client/assets/js/{vennDiagram-CIIHVFJN-hL8ax7wF.js → vennDiagram-CIIHVFJN-DtEu04QR.js} +1 -1
  260. package/dist/client/assets/js/wardley-L42UT6IY-CD4dIN63.js +1 -0
  261. package/dist/client/assets/js/{wardleyDiagram-YWT4CUSO-BIR-RA6Y.js → wardleyDiagram-YWT4CUSO-DdNKCPsp.js} +1 -1
  262. package/dist/client/assets/js/{wgsl-CmbiucmY.js → wgsl-DEf5Vdqv.js} +1 -1
  263. package/dist/client/assets/js/{workers-BgWBq4qY.js → workers-BbaiLVxx.js} +1 -1
  264. package/dist/client/assets/js/{workflow-socket-DZ9Ceffc.js → workflow-socket-DH402vxO.js} +1 -1
  265. package/dist/client/assets/js/{xml-SZLdwDmk.js → xml-zjE51I7v.js} +1 -1
  266. package/dist/client/assets/js/{xterm-D6CotCNH.js → xterm-Djy4rCx0.js} +1 -1
  267. package/dist/client/assets/js/{xychartDiagram-2RQKCTM6-DHa486uP.js → xychartDiagram-2RQKCTM6-CKqN7g7r.js} +1 -1
  268. package/dist/client/assets/js/{yaml-CgQpCgM5.js → yaml-DabeGoTc.js} +1 -1
  269. package/dist/client/assets/js/{zh-BDlMioZr.js → zh-CI4-L3JY.js} +1 -1
  270. package/dist/client/assets/js/{zh-TW-DTbLWR1A.js → zh-TW-wYlj-uOZ.js} +1 -1
  271. package/dist/client/index.html +1 -1
  272. package/dist/server/index.js +3 -3
  273. package/dist/server/openapi.json +1 -1
  274. package/package.json +9 -1
  275. package/dist/client/assets/js/architecture-7EHR7CIX-Cl4Qi40R.js +0 -1
  276. package/dist/client/assets/js/classDiagram-4FO5ZUOK-DC0BcY8x.js +0 -1
  277. package/dist/client/assets/js/classDiagram-v2-Q7XG4LA2-BfDDH_fm.js +0 -1
  278. package/dist/client/assets/js/eventmodeling-FCH6USID-Bgzwnvkn.js +0 -1
  279. package/dist/client/assets/js/gitGraph-WXDBUCRP-CwFrpI3e.js +0 -1
  280. package/dist/client/assets/js/info-J43DQDTF-wMwkmIWM.js +0 -1
  281. package/dist/client/assets/js/packet-YPE3B663-DYmKXJOE.js +0 -1
  282. package/dist/client/assets/js/pie-LRSECV5Y-Dx0hbcjV.js +0 -1
  283. package/dist/client/assets/js/radar-GUYGQ44K-D-t-QJhi.js +0 -1
  284. package/dist/client/assets/js/stateDiagram-v2-BHNVJYJU-CoMhBVvo.js +0 -1
  285. package/dist/client/assets/js/treeView-BLDUP644-CMJGhbWk.js +0 -1
  286. package/dist/client/assets/js/treemap-LRROVOQU-_j4KoVDh.js +0 -1
  287. package/dist/client/assets/js/wardley-L42UT6IY-BeOvmJoM.js +0 -1
@@ -1 +1 @@
1
- var e={browser:{title:"浏览器",settings:"浏览器设置",desktopOnly:"内置浏览器仅在 Hermes Studio 桌面端可用。",newTab:"新标签页",back:"后退",forward:"前进",reload:"刷新",stop:"停止",addressPlaceholder:"搜索或输入网址",selectElement:"选择元素",selectRegion:"框选区域",annotationPlaceholder:"描述希望 Agent 检查或修改的内容…",selectionData:"浏览器选区数据",annotationAdded:"截图已添加到对话输入框",annotationCount:"已标注 {count} 处",annotationLabel:"标注 {index}",clearAnnotations:"清除标注",finishAnnotation:"完成",agent:"Agent",agentControlling:"{agent} 正在控制此标签页",agentWaiting:"{agent} 正在等待你的确认",takeOver:"接管",tabCrashed:"此标签页已崩溃。",recoverTab:"重新加载",profiles:"配置档案",profileName:"配置名称",addProfile:"添加配置",currentProfile:"当前使用",switchProfile:"切换使用",editProfile:"编辑配置",profileDirectory:"Profile 数据目录",downloadDirectory:"下载目录",profileRootDirectory:"配置根目录",chooseProfileRootDirectory:"选择空目录",profileRootDirectoryHint:"请选择空目录。浏览器数据使用 {data},下载文件使用 {download}。",proxy:"代理",proxyMode:"代理模式",proxyDirect:"直连",proxySystem:"系统代理",proxyCustom:"自定义代理",proxyServer:"代理服务器",proxyServerPlaceholder:"例如:http://127.0.0.1:7890 或 socks5://127.0.0.1:1080",askBeforeDownload:"每次下载前询问保存位置",downloadConflictPolicy:"文件重名处理",uniquifyDownloads:"自动生成唯一文件名",askOnConflict:"文件已存在时询问",downloads:"下载记录",downloadStateProgressing:"下载中",downloadStateCompleted:"已完成",downloadStateCancelled:"已取消",downloadStateInterrupted:"已中断",downloadStateBlocked:"已阻止",permissions:"网站权限",permissionsHint:"远程页面权限默认全部拒绝,并在此处保留审计记录。",blocked:"已阻止",profileSwitchTitle:"切换浏览器 Profile?",profileSwitchWarning:"可能中断 {agents} 个 Agent 操作、{downloads} 个下载任务和 {annotations} 个批注任务。",deleteProfileTitle:"删除浏览器 Profile?",deleteProfileWarning:"托管的 Profile 数据将移入系统废纸篓,自定义目录不会被删除。",clearCache:"清除缓存",clearPermissionAudit:"清除权限记录",clearSiteData:"清除站点数据",clearSiteDataWarning:"这会退出所选 Profile 中的网站登录,并清除 Cookie 和本地存储。",dataCleared:"浏览器数据已清除",loadFailed:"内置浏览器启动失败"},login:{title:"Hermes Studio",description:"输入用户名和密码以继续。",placeholder:"访问令牌",submit:"登录",tokenRequired:"请输入访问令牌",invalidToken:"令牌无效",connectionFailed:"无法连接到服务器",passwordLogin:"密码登录",tokenLogin:"令牌登录",usernamePlaceholder:"用户名",passwordPlaceholder:"密码",defaultCredentialsHint:"默认登录名:admin,默认密码:123456",credentialsRequired:"请输入用户名和密码",invalidCredentials:"用户名或密码错误",tooManyAttempts:"登录失败次数过多,请稍后重试",lockResetHint:"如果这是你的服务器,可以执行以下命令清除登录锁定:",defaultLoginResetHint:"如需重置默认 admin 密码,可以执行:",desktopLockResetHint:"登录失败次数过多。请打开系统托盘菜单,选择“重置登录”来重置密码。",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:"重试",reset:"重置",edit:"编辑",save:"保存",saved:"已保存",saveFailed:"保存失败",deleteFailed:"删除失败",ok:"确定",copied:"已复制",copy:"复制",update:"更新",create:"创建",noData:"暂无数据",expired:"已过期",fetch:"获取",add:"添加",enable:"启用",disable:"禁用",configured:"已配置",notConfigured:"未配置",confirm:"确定",expand:"展开",collapse:"收起",start:"启动",stop:"停止"},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:"对话",backToChat:"返回",search:"搜索",apiRelay:"饲料",history:"历史",jobs:"任务",kanban:"看板",workflow:"工作流",models:"模型",profiles:"配置",plugins:"插件",mcp:"MCP",petdex:"宠物",skills:"技能",memory:"记忆",logs:"日志",usage:"用量",performance:"性能监控",journey:"学习轨迹",skillsUsage:"技能用量",channels:"频道",gateways:"网关",terminal:"终端",browser:"浏览器",singleChat:"单聊",globalAgent:"全局",groupChat:"群聊",files:"文件",devices:"设备",groupConversation:"对话",groupConversationShort:"对话",groupPlatform:"平台",groupAgent:"助手",groupAgentShort:"助手",groupSystem:"系统",groupSystemShort:"系统",groupMonitoring:"监控",groupMonitoringShort:"监控",groupTools:"工具",groupToolsShort:"工具",codingAgents:"编程工具",versionPreview:"版本预览",theme:"主题",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:"暂无更新日志",versionManagement:"版本管理",updateAvailableLabel:"(有新版)",dockerUpdateTitle:"Docker 升级",dockerUpdateGuide:"当前运行在 Docker 环境中,请拉取最新镜像并重建容器来升级:",dockerUpdateNote:"数据会持续保留,重建容器不会丢失数据。"},runtimeVersions:{title:"版本管理",runtimeTitle:"Hermes Runtime",currentHermesAgentVersion:"当前 Hermes Agent 版本",activeRuntimeDirectory:"当前 Runtime 路径",cliUpdateDescription:"Hermes Runtime 0.19.1 及以上版本支持通过以下命令单独升级内置的 Hermes Agent;该命令不会升级 Hermes Studio 桌面端或 Web UI。执行前请先完全退出 Hermes Studio:",webUiTitle:"Web UI",platform:"平台",currentWebUi:"当前 Web UI",activeVersion:"当前启用版本",runtimeDirectory:"Runtime 存储目录",chooseRuntimeDirectory:"选择目录",resetRuntimeDirectory:"恢复系统默认",runtimeDirectoryHint:"下次重启时会在本地服务启动前复制并校验当前 Runtime,旧目录会保留;后续 Runtime 下载也会保存在这里。",runtimeDirectorySaved:"Runtime 迁移已安排,重启 Hermes Studio 后执行。",runtimeMigrationPending:"待迁移到:{directory}",runtimeMigrationFailed:"存储目录迁移失败,已继续使用原目录",runtimeActivationFailed:"所选 Runtime 无法启动,Hermes Studio 已改用其他已安装版本",active:"已启用",installed:"已安装",download:"下载",downloadGithub:"GitHub 下载",downloadCf:"Cloudflare 下载",github:"GitHub",cf:"Cloudflare",useVersion:"下次启动使用",deleteVersion:"删除",deleteRuntimeConfirm:"删除 Hermes Runtime {version}?",deleteWebUiConfirm:"删除 Web UI {version}?",deleteRuntimeSuccess:"Runtime 已删除",deleteWebUiSuccess:"Web UI 已删除",refresh:"刷新",noVersions:"暂无可用版本",remoteLoadFailed:"远程版本加载失败",downloadTasks:"下载任务",downloadStarted:"已开始下载",activateSuccess:"版本选择已保存,重启 Hermes Studio 后生效。",jobStatus:{queued:"排队中",running:"下载中",completed:"已完成",failed:"失败"},jobStageStatus:{queued:"排队中",resolve:"解析中",download:"下载中",verify:"校验中",extract:"解压中",install:"安装中",completed:"已完成",failed:"失败"},jobStage:{queued:"排队中",download:"下载中",resolveRuntime:"正在解析 Runtime 包",verifyRuntime:"正在校验 Runtime 压缩包",extractRuntime:"正在解压 Runtime 压缩包",installRuntime:"正在安装 Runtime",resolveWebUi:"正在解析 Web UI 包",verifyWebUi:"正在校验 Web UI 压缩包",extractWebUi:"正在解压 Web UI 压缩包",installWebUi:"正在安装 Web UI",completed:"已完成",failed:"失败"}},mcuDevices:{title:"小方盒",subtitle:"查看设备链接状态",name:"名称",nameOptional:"名称可为空",deviceCode:"设备码",deviceCodePlaceholder:"请输入设备码",deviceCodeRequired:"请输入设备码",channel:"渠道",official:"官方",unofficial:"非官方",createdAt:"添加时间",lanStatus:"局域网",remoteStatus:"远程",connected:"已连接",disconnected:"未连接",remoteConnect:"远程连接",remoteConnected:"远程已连接",remoteConnectFailed:"远程连接失败",remoteDisconnect:"断开连接",remoteDisconnected:"远程已断开",remoteDisconnectFailed:"远程断开失败",actions:"操作",add:"添加",addTitle:"添加 MCU 设备",added:"MCU 设备已添加",addFailed:"添加 MCU 设备失败",purchase:"购买",edit:"编辑",editNameTitle:"编辑名称",nameUpdated:"名称已更新",nameUpdateFailed:"更新名称失败",delete:"删除",deleteTitle:"删除 MCU 设备",deleteConfirm:"确定删除「{name}」吗?",deleted:"MCU 设备已删除",deleteFailed:"删除 MCU 设备失败",loadFailed:"加载 MCU 设备失败",close:"关闭"},devices:{title:"设备",count:"{count} 台设备",lastScanned:"上次扫描:{time}",refresh:"刷新",empty:"暂无设备",computer:"电脑",endpointLabel:"端",statusLabel:"状态",online:"在线",offline:"离线",address:"地址",os:"系统",agentVersion:"Agent",webUiVersion:"Web UI",responseMs:"延迟",lastSeen:"最后发现",open:"打开",never:"从未",unknown:"未知",loadFailed:"加载设备失败",scanFailed:"扫描设备失败",updateFailed:"更新设备失败",duplicateRequest:"已存在待处理的配对申请",manualPairing:"远程配对",copyPairingLink:"复制配对链接",manualUrlPlaceholder:"https://device.example.com",manualUrlRequired:"请输入设备链接",manualRequestSent:"配对申请已发送",manualRequestFailed:"远程配对申请失败",pairingLinkCopied:"配对链接已复制",pairingLinkCopyFailed:"复制配对链接失败",pairingCodeTitle:"输入配对码",pairingCodePlaceholder:"配对码",pairingCodeRequired:"请输入配对码",submitPairingRequest:"提交申请",processed:"已处理",unprocessed:"未处理",deleteHistory:"删除记录",deleteHistoryConfirm:"确认删除这条申请记录并撤销该设备连接权限?",requests:"申请列表",requestsWithCount:"申请列表({count})",noRequests:"暂无申请",requestPairing:"申请配对",paired:"已配对",approve:"通过",reject:"拒绝",block:"拉黑",unblock:"解除拉黑",inboundStatus:{none:"允许申请",pending:"待处理",approved:"已通过",rejected:"已拒绝",blocked:"黑名单"},outboundStatus:{none:"未配对",pending:"已申请",approved:"已配对",rejected:"已拒绝",blocked:"被拉黑"},endpoint:{web:"Web 端",desktop:"桌面端",custom:"自定义"}},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:"暂无活跃会话"},journey:{title:"学习轨迹",play:"播放学习轨迹",pause:"暂停学习轨迹",refresh:"刷新",categorySelection:"分类选择",nodeKinds:"节点类型",description:"描述",canvasInstructions:"使用方向键预览节点,按 Enter 打开详情,按 Escape 清除选择。",loadFailed:"学习轨迹加载失败",nodes:"节点",edges:"关系",skills:"技能",memories:"记忆",clusters:"分组",profile:"Profile",source:"来源",learnedSkills:"已学习技能",memorySkillEdges:"记忆关联",allKinds:"全部类型",allCategories:"全部分组",searchPlaceholder:"搜索节点",noClusters:"暂无分组",noNodes:"暂无学习轨迹节点",noCategory:"未分组",category:"分组",useCount:"使用次数",createdBy:"创建来源",timestamp:"时间",pinned:"已固定"},drawer:{terminal:"终端",files:"工作区"},subagent:{title:"后台子任务",noGoal:"未命名后台子任务",open:"打开后台子任务实时输出",close:"关闭后台子任务输出",waiting:"正在等待实时输出…",tool:"工具",tools:"{count} 次工具调用",tokens:"输入 {input} · 输出 {output}",started:"已启动",running:"执行中",completed:"已完成",failed:"执行失败",cancelled:"已取消",interrupted:"已停止"},realtimeVoice:{title:"实时语音",mode:"语音模式",open:"进入实时语音",back:"返回对话",connected:"语音链路就绪",turnMode:"实时预览 · 逐轮模式",browserStt:"浏览器",browserTts:"浏览器",untitledSession:"未命名对话",sessionMissing:"当前对话不可用。",backendStreamRequired:"手机端和桌面端实时语音需要先配置后端语音转写服务。",networkUnavailableNoFallback:"浏览器语音识别网络不可用,且当前没有配置可用的备用 STT。",liveTranscript:"实时转写",transcriptPlaceholder:"轻触语音核心,然后开始说话",recentTurns:"最近对话",you:"你",mute:"静音输出",unmute:"恢复声音",finishTurn:"结束本轮",speak:"开始说话",end:"结束",status:{idle:"准备就绪",paused:"麦克风已关闭",listening:"正在聆听",processing:"正在转写",thinking:"{agent} 正在思考",speaking:"{agent} 正在回答",error:"语音链路中断"},hint:{idle:"轻触中央区域开始一轮语音",paused:"准备好后重新打开麦克风",listening:"自然停顿后自动发送,也可以轻触结束",listeningManual:"正在录音,再次轻触中央区域结束并转写",processing:"正在将你的语音转换为文字",thinking:"消息已发送到当前对话",speaking:"你可以随时打断回答",error:"轻触中央区域重试"}},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 对话",emptyStateAgent:"开始与 {agent} 对话",viewOlderInHistory:"前面的消息请到历史记录查看",scrollToBottom:"滚动到底部",forkedFrom:"Fork 来源",previousLastMessage:"上一段对话的最后一条消息",cliEmptyState:"开始 CLI 对话",outlineTitle:"会话大纲",outlineEmpty:"暂无会话内容",outlineUserQuestion:"用户问题",inputPlaceholder:"输入消息... (Enter 发送,Shift+Enter 换行)",inputHeightResizeHint:"拖拽调整聊天输入框高度,双击恢复自动高度。",slashCommandArgs:{message:"<消息>",title:"<标题>",text:"<文本>"},slashCommands:{usage:"计算当前会话用量",status:"查看会话状态和队列",yolo:"切换当前会话 YOLO 模式并跳过危险命令审批",abort:"停止当前 Bridge 运行",queue:"把消息加入当前运行后的队列",learn:"从描述的来源学习可复用技能",plan:"生成一份 Markdown 实施计划",moa:"用默认组合模型运行一次性提示",goal:"设置一个跨轮次持续推进的目标",goalStatus:"查看当前目标状态",goalPause:"暂停当前目标循环",goalResume:"继续已暂停的目标循环",goalDone:"完成并清除当前目标",goalClear:"清除当前目标",subgoal:"为当前目标追加验收条件",clear:"清空当前显示内容",clearHistory:"删除当前会话已入库的消息历史",title:"重命名当前会话",compress:"空闲时触发上下文压缩",fork:"将当前空闲会话 fork 成一个新的关联对话",steer:"向当前 Bridge 运行发送引导文本",destroy:"释放当前会话的 Bridge Agent",reloadMcp:"重载 MCP 服务器",reloadSkills:"重载技能命令",bundles:"查看 Skill Bundle",bundlesCreate:"创建 Skill Bundle"},bundlePicker:{title:"Skill Bundles",create:"创建 Bundle",searchPlaceholder:"搜索 Bundle...",skillCount:"{count} 个 Skills",skillsLabel:"包含 Skills",noSkills:"未配置 Skill",deleteBundle:"删除 {name}",deleteTitle:"删除 Bundle",deleteConfirm:"确定从当前 Profile 删除“{name}”吗?此操作无法撤销。",deleteFailed:"删除 Bundle 失败",deleted:"Bundle 已删除",noBundles:"还没有 Bundle,可创建一个来组合多个 Skills。",noMatch:"没有匹配的 Bundle"},bundleCreator:{title:"创建 Skill Bundle",name:"名称",namePlaceholder:"例如:PR Review Team",nameHint:"仅允许英文字母、数字、空格、连字符和下划线。",description:"描述",descriptionPlaceholder:"这个 Bundle 适合处理什么任务?",skills:"Skills",skillsPlaceholder:"选择一个或多个 Skills",nameRequired:"请输入 Bundle 名称",nameInvalid:"请输入至少包含一个英文字母的英文名称",skillsRequired:"请至少选择一个 Skill",skillsLoadFailed:"加载 Skills 失败",createFailed:"创建 Bundle 失败",created:"Bundle 已创建"},attachFiles:"添加附件",reasoningEffort:{tooltip:"推理强度",defaultLabel:"默认",options:{default:"默认 (config.yaml)",none:"无",minimal:"极低",low:"低",medium:"中",high:"高",max:"Max",xhigh:"超高",ultra:"极致"}},autoPlaySpeech:"自动播放语音",voiceInput:{startCapture:"开始语音输入",stopCaptureAndInsert:"停止语音输入并插入到输入框",cancelCapture:"取消语音输入",statusLabel:"状态:{status}",transcriptLabel:"转写:{text}",errorLabel:"错误:{error}",recentEvents:"最近事件",status:{idle:"空闲",capturing:"正在聆听",transcribing:"正在转写",sending:"正在插入输入框",error:"错误"},browserSpeechUnsupported:"当前浏览器不支持内置语音识别。",browserSpeechFailed:"浏览器语音识别失败。",browserSpeechFailedWithReason:"浏览器语音识别失败:{error}。",microphoneUnsupported:"当前浏览器不支持麦克风录音。",microphoneRecordingFailed:"麦克风录音失败。"},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:"暂无会话",recent:"最近",recentCount:"最近会话数量",loadMoreSessions:"加载更多会话",searchTitle:"搜索会话",searchSubtitle:"按标题或消息内容搜索",searchScope:"搜索范围:仅 Web UI 本地会话库;不包含只读 Hermes 历史会话。",searchHint:"Cmd/Ctrl+K",searchPlaceholder:"搜索会话...",searchEmpty:"最近会话",searchRecent:"最近会话",searchNoResults:"没有匹配的会话",searchNoSnippet:"没有可显示的摘要",searchEnterHint:"Enter 打开 · Esc 关闭",searchFailed:"搜索会话失败",newChat:"新建对话",category:"分类",uncategorized:"未分类",categoryPlaceholder:"选择或新建分类",categoryCreateHint:"选择已有分类,或输入新分类名称后按 Enter 创建。",categoryCreated:"已创建分类“{name}”",categoryCreateFailed:"创建分类失败",categoryLoadFailed:"加载分类失败",moveToCategory:"移动到分类",categoryUpdated:"分类已更新",categoryUpdateFailed:"更新分类失败",renameCategory:"重命名分类",deleteCategory:"删除分类",enterCategoryName:"输入分类名称",confirmDeleteCategory:"确定删除“{name}”吗?其中的会话将移至“未分类”。",categoryRenamed:"分类已重命名",categoryRenameFailed:"重命名分类失败",categoryDeleted:"分类已删除",categoryDeleteFailed:"删除分类失败",agent:"Agent",approvalKicker:"工具调用授权",toolResultUnavailable:"执行已中断,未收到工具结果",approvalCommand:"待执行命令",approvalTitle:"运行前请确认工具调用",approvalAgree:"同意",approvalAllowOnce:"仅本次允许",approvalAllowSession:"本会话允许",approvalAlways:"始终允许",approvalDeny:"拒绝",clarifyKicker:"Agent 需要确认",clarifyTitle:"Agent 有一个问题需要您回答",clarifyPlaceholder:"输入你的回答...",clarifySubmit:"回复",clarifyDismiss:"忽略",newCliChat:"新建 CLI",deleteSession:"确定删除此会话?",sessionDeleted:"会话已删除",toggleBatchMode:"批量选择",selectAll:"全选",confirmBatchDelete:"确定删除选中的 {count} 个会话?",batchDeleteSuccess:"已删除 {count} 个会话",batchDeletePartial:"{failed} 个会话删除失败",batchDeleteFailed:"批量删除失败",importToWebUi:"导入到 Web UI",importSessionSuccess:"会话已导入 Web UI",importSessionAlreadyExists:"会话已存在于 Web UI",importSessionFailed:"导入会话失败",rename:"重命名",archiveSession:"归档",unarchiveSession:"取消归档",pin:"置顶",unpin:"取消置顶",pinned:"已置顶",chatMode:"聊天",liveMode:"实时",liveSessions:"实时会话",recentBadge:"最近",linkedSessions:"关联 {count} 个会话",noVisibleMessages:"没有人类可见消息。",monitorRoleUser:"用户",monitorRoleAssistant:"助手",copySessionLink:"复制会话链接",openSessionInNewTab:"在新标签页打开",openSessionInNewWindow:"在新窗口打开",sessionLinkCopied:"Session link copied",copySessionId:"复制会话 ID",export:"导出",exportFull:"全量导出 (JSON)",exportCompressed:"压缩导出 (TXT)",exportCompressing:"正在压缩上下文,请稍候...",exportSuccess:"会话已导出",exportFailed:"导出失败",renamed:"已重命名",renameFailed:"重命名失败",sessionArchived:"会话已归档",archiveSessionFailed:"归档会话失败",sessionUnarchived:"已取消归档",unarchiveSessionFailed:"取消归档失败",renameSession:"重命名会话",sessionNotFound:"会话未找到",enterNewTitle:"输入新标题",workspace:"工作区",workspaceDefault:"默认",workspaceDefaultTooltip:"此工作区已设为默认,新建对话时自动填充",workspacePin:"设为默认工作区",workspaceUnpin:"取消默认工作区",workspaceRecent:"最近使用",defaultWorkspace:"默认工作区",more:"更多",setWorkspace:"设置工作区",setWorkspaceTitle:"设置会话工作区",workspacePlaceholder:"输入项目路径,例如 /home/user/project",folderPickerEmpty:"(空)",folderPickerNoFolders:"暂无工作区文件夹",folderPickerSelected:"已选择:",workspaceSet:"工作区已设置",workspaceSetFailed:"设置工作区失败",setModel:"设置模型",setModelTitle:"设置会话模型",standardModels:"普通模型",moaPresets:"MoA 组合",noMoaPresets:"暂无可用的 MoA 组合",modelType:"模型类型",modelSet:"模型已设置",modelSwitching:"正在切换模型...",modelSetFailed:"设置模型失败",other:"其他",runFailed:"运行失败",error:"错误",tool:"工具",arguments:"参数",result:"结果",workspaceChanges:"工作区变更",changedFiles:"{files} 个文件已更改",changesThisTurn:"本轮修改",diffUnavailable:"无法显示 diff",binaryFileDiffUnavailable:"二进制文件无法显示 diff",truncated:"... (已截断)",unchangedLines:"{count} 行未修改",executionDuration:"执行时长",thinkingLabel:"思考过程",thinkingInProgress:"正在思考",thinkingShow:"展开思考过程",thinkingHide:"收起思考过程",thinkingDuration:"已观察 {duration}",thinkingChars:"{count} 字",copyBubble:"复制消息",copiedBubble:"已复制",copyFailed:"复制失败",referenceMessage:"引用消息",cancelReference:"取消引用",playSpeech:"播放语音",pauseSpeech:"暂停",resumeSpeech:"继续",stopSpeech:"停止",speechNotSupported:"此浏览器不支持语音播放"},workflow:{title:"工作流",profile:"配置",namePlaceholder:"工作流名称",canvasAriaLabel:"工作流画布",workspace:{title:"选择工作区",select:"选择工作区",clear:"清空工作区"},actions:{newWorkflow:"新建工作流",addNode:"添加节点",createWorkflowFirst:"请先创建工作流",reset:"重置",startExecution:"开始执行",executionPending:"工作流执行功能待接入",executionStarted:"工作流已开始执行",executionCompleted:"工作流执行完成",executionFailed:"工作流执行失败",rerunDownstreamKeepNode:"保留此节点消息向下执行",rerunDownstreamClearNode:"清除此节点消息向下运行",rerunDownstreamStarted:"已开始向下重跑",rerunFromNodeStarted:"已开始从此节点重跑",rerunFailed:"工作流重跑失败",deleteNode:"删除节点",deleteEdge:"删除连接线",editEdge:"编辑连接线",undo:"撤销",importWorkflow:"导入 Workflow",exportWorkflow:"导出 Workflow",imported:"Workflow 导入成功",exported:"Workflow 导出成功",importFailed:"Workflow 导入失败",exportFailed:"Workflow 导出失败"},budget:{runTitle:"选择 Run 时间预算",rerunTitle:"选择 Rerun 时间预算",totalLabel:"整条 Run 总预算",customMinutes:"自定义分钟数",customPlaceholder:"分钟",invalidCustom:"自定义 Run 预算必须介于 0.1 到 1440 分钟",help:"这是整条 Run 共用的绝对截止时间。每个节点只获得当时的剩余时间,循环不会重置预算。",options:{unlimited:"不设截止时间",30:"30 分钟",60:"60 分钟",90:"90 分钟",custom:"自定义"},unlimitedSummary:"不设截止时间",unlimitedHelp:"本次 Run 没有配置时间截止点。",summary:"总预算 {total} · 已用 {elapsed} · 剩余 {remaining}",deadline:"截止时间:{deadline}",nodeStartRemaining:"节点启动时剩余 {remaining}"},schedule:{title:"工作流定时计划",manage:"管理定时计划",createTitle:"创建定时计划",editTitle:"编辑定时计划",create:"创建定时计划",save:"保存定时计划",edit:"编辑定时计划",delete:"删除定时计划",deleteConfirm:"要删除此定时计划吗?",deleted:"定时计划已删除",enable:"启用定时计划",disable:"停用定时计划",enabled:"已启用",disabled:"已停用",empty:"暂无定时计划",cron:"Cron 表达式",cronPlaceholder:"例如:0 9 * * * 或 {'@'}daily",timezone:"时区",timezonePlaceholder:"IANA 时区,例如 Asia/Shanghai",initialInput:"初始输入",initialInputPlaceholder:"每次定时运行可选的输入内容",startNodes:"起始节点",startNodesPlaceholder:"默认使用工作流起始节点",timeout:"总超时(分钟)",timeoutPlaceholder:"不设截止时间",policies:"并发:跳过 · 错过运行:跳过",lastScheduled:"上次计划时间",nextRun:"下次运行",lastRun:"上次运行",never:"从未",loadFailed:"加载定时计划失败",saveFailed:"保存定时计划失败",saved:"定时计划已保存",deleteFailed:"删除定时计划失败",required:"必须填写 Cron 表达式和时区",reset:"重置",presets:{hourly:"每小时",daily:"每天",weekly:"每周",monthly:"每月"}},evidence:{historyPage:"运行历史",detailsPage:"运行详情",backToRuns:"返回运行历史",resultStatus:"状态",duration:"耗时",budgetLabel:"预算",actualExecution:"实际执行",otherJudgments:"其他判断",loopEvents:"循环事件",evaluatedNotExecuted:"已判断,未执行",ariaLabel:"Workflow 执行详情",title:"执行详情",count:"{count} 条",intro:"展示本次执行的路径选择、循环轮次和异常节点。",empty:"暂无执行详情",loadFailed:"读取持久化执行详情失败",summaryTitle:"运行结论",blockedAt:"卡在 {gate}",actualPath:"实际执行路径",noActualPath:"本次未采用任何路径",pathChecks:"路径判断",selectedPaths:"已采用路径",otherPaths:"其他判断与事件",selectedCount:"已采用 {count} 条",otherCount:"未采用 {count} 条",eventCount:"事件 {count} 条",showOtherPaths:"查看其他详情({count})",hideOtherPaths:"收起其他详情",runDetails:"运行详情",actualPathSteps:"实际路径步骤",nodeBudgetDetails:"时间预算详情",condition:"条件",conditionMatched:"已匹配",conditionNotMatched:"未匹配",sourceOutcome:"节点结果",sourceReturned:"正常返回",sourceFailed:"执行失败",sourceSkippedStatus:"未执行",checkedData:"检查的数据",entireReplyText:"完整回复文本",errorText:"错误文本",jsonFieldValue:"单个 JSON 字段值",advancedPathValue:"高级路径的值",comparison:"比较方式",textToFind:"要查找的文字",expectedFieldValue:"期望的字段值",parsedBusinessDecision:"解析出的业务结论",failedGateLabel:"失败环节(failed_gate 字段的值)",failedGateValue:"失败环节(failed_gate 字段的值):{gate}",decisions:{blocked:"已阻塞",released:"已发布",verified:"已验证",skipped:"无需处理"},node:"异常节点",edge:"执行路径",loop:"循环",unknownNode:"未知节点",pathTitle:"{source} → {target}",loopPass:"循环第 {count} 轮",exceptionalNode:"该节点未正常完成。",loopPassNamed:"{node} · 第 {count} 轮",technical:"技术信息",recordId:"记录 ID",sequence:"执行顺序",rawStatus:"原始状态",rawRoute:"路由",rawReason:"原因",iterationPath:"循环路径",expectedValue:"需要的结果",actualValue:"上游实际结果",judgmentDetails:"连线判断",connectionResult:"本次是否经过",appliesWhen:"什么情况下经过",explanation:"具体原因",technicalStatus:{pathUsed:"本次经过了这条连线",pathNotUsed:"本次没有经过这条连线"},technicalRoute:{success:"仅当上游节点正常返回时",failure:"仅当上游节点执行失败时",always:"无论上游节点正常返回还是执行失败"},technicalReason:{conditionNotMatched:"上游回复没有满足这条连线设置的条件。"},statuses:{taken:"已采用",notTaken:"未采用",evaluationFailed:"判断失败",timedOut:"已超时",blocked:"已阻塞"},routes:{success:"成功后继续",failure:"失败后进入处理",always:"无论成功或失败均继续"},reasons:{evaluationFailed:"路径判断失败",conditionNotMatched:"条件不满足",iterationLimitReached:"已达到最大循环轮次",routeNotMatched:"当前结果不匹配此路径",pathSelected:"本次已采用这条路径。",pathEvaluatedNotUsed:"调度器评估了这条候选连线,但没有目标节点实际消费它。",sourceSkipped:"上游节点未执行,因此本次不经过这条路径。",failureRouteAfterSuccess:"上游节点已正常返回;这条路径只在节点执行失败时采用。",successRouteAfterFailure:"上游节点执行失败;这条路径只在节点正常返回时采用。",businessBlocked:"“{source}”已阻止继续执行({decision}):{reason}。因此没有执行“{target}”。",businessBlockedWithCondition:"“{source}”已阻止继续执行({decision}):{reason}。继续执行需要“{expected}”,但上游实际结果是“{actual}”,因此没有执行“{target}”。",conditionMismatchDetail:"继续执行需要“{expected}”,但上游实际结果是“{actual}”,因此没有执行“{target}”。"},loopOutcomes:{continued:"条件满足,继续下一轮",iterationLimitReached:"达到最大轮次后停止",conditionNotMatched:"条件不满足,循环结束",finished:"循环已结束"}},edgeEditor:{title:"编辑连接线",guideIntro:"先选择上游节点必须达到的执行结果;再选择不检查回复、按字面检查完整文本,或比较解析后的某个 JSON 字段值。",connectionSummary:"{source} → {target}",selfLoopDescription:"“{node}”会重新执行自身。",continueAfter:"上游结果",optionalCheck:"可选内容检查",runTarget:"然后",runTargetAction:"执行“{target}”",noContentCheck:"不检查回复内容",sourceResultStep:"1. 上游节点结果",replyDataStep:"2. 要检查的回复数据",nextStep:"3. 然后",replyDataQuestion:"要检查回复中的哪类数据?",requiredSourceResult:"上游必须达到的结果",loopSummary:"返回“{target}”",loopScope:"循环节点:{nodes}",historyLabel:"历史记录名称(可选)",advancedSettings:"高级设置",historyNode:"历史记录节点",historyNodePlaceholder:"选择节点名称",continueWhen:"何时继续",compareUsing:"如何比较",expectedType:"期望值按什么类型理解",expectedValue:"期望值",routeChoices:{success:"上游正常返回",failure:"上游执行失败",always:"任一结果"},operatorChoices:{equals:"等于",not_equals:"不等于",contains:"包含",not_contains:"不包含",exists:"存在",not_exists:"不存在",greater_than:"大于",greater_than_or_equal:"大于等于",less_than:"小于",less_than_or_equal:"小于等于",in:"属于列表",not_in:"不属于列表"},loopMissingForwardPath:"这条回连没有可循环的正向路径。",loopNotNatural:"这个循环还有其他入口路径,无法保证按预期重复执行。",loopDuplicateScope:"两条回连定义了相同的循环节点。",loopPartialOverlap:"多个循环可以互不相交或完整嵌套,但不能部分重叠。",loopDuplicateHistoryLabel:"每个循环的历史记录名称必须唯一。",route:"路由",routes:{success:"成功时(success)",failure:"失败时(failure)",always:"无论成功失败(always)"},routeHelp:"先判断上游节点结果:success 仅成功时;failure 仅失败时;always 成功或失败都可。设置条件后还必须同时满足条件。",routeExample:"示例:正常流程用 success,错误处理用 failure,最后清理用 always。",conditionPath:"这条连接要检查什么?",conditionPathPlaceholder:"高级路径,例如 output",conditionPathOptions:{routeOnly:"不检查回复内容",outputRecommended:"完整成功回复文本(output,推荐)",output:"完整成功回复文本(output)",outputJson:"单个 JSON 字段值(outputJson.*)",errorRecommended:"完整失败错误文本(error,推荐)",error:"完整失败错误文本(error)",custom:"高级数据路径"},structuredOutputPathPlaceholder:"JSON 字段路径,例如 outputJson.route_token",structuredOutputHelp:"解析完整 JSON 回复或唯一一个 fenced json 代码块。JSON 缺失、格式错误或存在多个代码块时,outputJson 不可用,条件不会匹配。",conditionPathHelp:{success:"成功路由推荐检查 output;如果不需要检查回复内容,选择“只判断路由”。",failure:"失败路由推荐检查 error;如果不需要检查错误文本,选择“只判断路由”。",always:"成功回复选 output,失败错误选 error;选择“只判断路由”则不检查内容。"},operator:"操作符",operators:{equals:"等于(equals)",not_equals:"不等于(not_equals)",contains:"包含(contains)",not_contains:"不包含(not_contains)",exists:"存在(exists)",not_exists:"不存在(not_exists)",greater_than:"大于(greater_than)",greater_than_or_equal:"大于等于(greater_than_or_equal)",less_than:"小于(less_than)",less_than_or_equal:"小于等于(less_than_or_equal)",in:"属于列表(in)",not_in:"不属于列表(not_in)"},operatorHelp:{equals:'类型和值都必须完全相同。示例:output equals "APPROVED"。',not_equals:'类型或值不同即匹配。示例:output not_equals "REJECTED"。',contains:'文本包含子文本,或数组包含某一项。示例:output contains "PASS"。',not_contains:"文本不含子文本,或数组不含某一项。",exists:"条件路径存在即匹配,不需要填写“值”。",not_exists:"条件路径不存在即匹配,不需要填写“值”。",greater_than:"实际值和“值”都必须是 JSON 数字;实际值更大时匹配。",greater_than_or_equal:"两边都必须是 JSON 数字;实际值大于等于设定值时匹配。",less_than:"两边都必须是 JSON 数字;实际值更小时匹配。",less_than_or_equal:"两边都必须是 JSON 数字;实际值小于等于设定值时匹配。",in:"“值”必须是 JSON 数组;数组包含实际值时匹配。",not_in:"“值”必须是 JSON 数组;数组不包含实际值时匹配。"},value:"值",invalidConditionValue:"条件值必须是有效的 JSON",conditionValuePlaceholder:'JSON:"文本"、42、true、["a"]',valueType:"值类型",valueTypes:{string:"字符串",number:"数字",boolean:"布尔值",null:"空值",array:"数组",object:"对象"},valueTypeHelp:"选择“值”的解析和校验类型。系统会从已保存的 JSON 值自动识别;该类型只辅助编辑,不会单独保存。",conditionValuePlaceholders:{string:"文本,例如 APPROVED",number:"数字,例如 42",boolean:"true 或 false",null:"null",array:'JSON 数组,例如 ["a", 2]',object:`JSON 对象,例如 {'{'}"status":"ready"{'}'}`},invalidValueTypes:{string:"值必须是字符串。",number:"值必须是有效数字。",boolean:"值必须是 true 或 false。",null:"值必须是 null。",array:"值必须是有效数组。",object:"值必须是有效对象。"},valueHelp:"请输入与所选类型一致的值。对象和数组使用 JSON;字符串直接输入,不需要 JSON 双引号。",expectedReplyText:"要查找的文字",expectedFieldValue:"期望的字段值",rawTextValueHelp:"这里按字面检查完整回复文本。选择“包含”时,文字可以出现在 JSON 的 key 或 value 中;系统不会按 JSON 字段取值。",jsonFieldValueHelp:"这里比较指定 outputJson 路径对应的字段值,而不是字段名。例如:outputJson.failed_gate 等于 quality-container-setup。",canvasLabel:{withValue:"{subject}{operator}「{value}」",withoutValue:"{subject}{operator}",join:"{route} · {condition}"},conditionSemantics:"实际检查规则",rawTextComparisonHelp:"当前选择“{operator}”。检查对象是整段完整回复文本,不读取单个 JSON 字段。包含/不包含时,文字出现在 JSON key 或 value 中都算;等于时,整段回复必须与设定值完全相同;不等于时,整段回复必须与设定值不同。",jsonFieldComparisonHelp:"这里读取 {path} 对应的字段值。{operator}比较的是这个字段的 value 与“{value}”,不会比较字段名。",rawTextExistenceHelp:"这里只检查完整回复文本是否存在,不代表某个 JSON key 存在。",jsonFieldExistenceHelp:"这里只检查 {path} 对应的 JSON 字段是否存在,不比较字段值。",rawTextOperatorHelp:{equals:"只有整段完整回复文本与“{value}”完全相同时才匹配。这里不会读取或比较某个 JSON 字段的 value。",not_equals:"只有整段完整回复文本与“{value}”不同时才匹配。这里不会读取或比较某个 JSON 字段的 value。",contains:"在整段完整回复文本的任意位置查找“{value}”。该文字出现在 JSON key 或 JSON value 中都能匹配;这不是 JSON 字段查询。",not_contains:"只有整段完整回复文本中完全没有“{value}”时才匹配;无论它原本会出现在 JSON key 还是 JSON value 中。这不是 JSON 字段查询。",exists:"完整回复文本存在时匹配。这里不判断任何 JSON key 是否存在。",not_exists:"没有完整回复文本时匹配。这里不判断某个 JSON key 是否缺失。"},jsonFieldOperatorHelp:{equals:"读取 {path} 对应的字段 value。只有该字段值与“{value}”完全相同时才匹配;不会比较字段名。",not_equals:"读取 {path} 对应的字段 value。只有该字段值与“{value}”不同时才匹配;不会比较字段名。",contains:"读取 {path} 对应的字段 value,并检查这个值是否包含“{value}”;不会搜索字段名。",not_contains:"读取 {path} 对应的字段 value。只有这个值不包含“{value}”时才匹配;不会搜索字段名。",exists:"{path} 对应的 JSON 字段存在时匹配,不比较字段 value。",not_exists:"{path} 对应的 JSON 字段缺失时匹配,不比较字段 value。"},feedback:"反馈循环",feedbackHelp:"把这条回连标记为有界循环。只有路由和条件都满足时才继续下一轮,并在达到“最大迭代次数”时强制停止。",maxIterations:"最大迭代次数",maxIterationsHelp:"循环体最多执行的总轮数,可填 1~100;整个 Run 还受全局执行预算保护。",invalidIterations:"最大迭代次数必须是 1 到 100 的整数",loopId:"循环标识",loopIdPlaceholder:"选择自动生成,或输入自定义 ID",loopIdAutomatic:"自动生成(推荐)· {id}",loopIdHelp:"它只用于在执行历史中标记这个循环,不影响循环何时运行。普通用户保持“自动生成”即可;只有多循环等高级设计才需要自定义。",invalidLoopId:"循环 ID 必须以字母或数字开头,且只能包含字母、数字、点、下划线、冒号或连字符"},batch:{toggle:"批量选择",selectAll:"全选",confirmDelete:"确定删除选中的 {count} 个工作流?",deleteSuccess:"已删除 {count} 个工作流",deletePartial:"{failed} 个工作流删除失败",deleteFailed:"批量删除失败"},validation:{nodesRequired:"请至少添加一个节点",nodeNameRequired:"节点 {node} 需要填写名称",providerRequired:"节点 {node} 需要选择 Provider",modelRequired:"节点 {node} 需要选择模型",apiModeRequired:"节点 {node} 需要选择 API 模式",inputRequired:"节点 {node} 需要填写输入内容",invalidEdge:"连接线引用了不存在的节点",invalidConnectionDirection:"连接线只能从右侧输出连接到左侧输入",orphanNode:"节点 {node} 没有连接到流程",disconnectedFlow:"流程不能拆成多条互不连接的链路",cycle:"流程中存在循环连接,请调整后再保存"},node:{title:"节点名称",agent:"Agent",model:"模型",apiMode:"API 模式",input:"输入",approvalRequired:"完成后审批",join:"汇合策略",joinAll:"全部入口",joinAny:"任一入口",joinAllHelp:"所有入线都生效才执行;只要一条不匹配,本节点就跳过。示例:同时等待代码检查和安全检查。",joinAnyHelp:"任一入线生效就执行一次;只有全部都不匹配才跳过。示例:任一审核人批准后继续。",promptPlaceholder:"描述这个 Agent 要做什么...",skillsPlaceholder:"技能,按 Enter 添加",uploadImages:"上传图片"},status:{idle:"空闲",queued:"排队中",running:"运行中",pending_approval:"待审批",completed:"已完成",skipped:"已跳过",failed:"失败",approval_rejected:"审批拒绝",canceled:"已取消"},runs:{title:"执行记录",refresh:"刷新",empty:"暂无执行记录",startNodes:"{count} 个起始节点",snapshotIndicator:"本次运行启动时的冻结快照",show:"显示执行记录",hide:"隐藏执行记录",nodeSessionTitle:"节点会话 - {node}",noNodeSession:"该节点暂无会话记录",loadNodeSessionFailed:"加载节点会话失败",stop:"停止执行",stopRequested:"已请求停止执行",stopFailed:"停止执行失败",delete:"删除记录",deleteSuccess:"执行记录已删除"},inspector:{selected:"选中节点",none:"未选择节点"},stats:{nodes:"节点",edges:"连线"},agents:{planner:"规划",researcher:"研究",builder:"执行",reviewer:"审查"},models:{default:"默认模型",fast:"快速模型",reasoning:"推理模型"},initialNodes:{node1:"节点 1",node2:"节点 2",node3:"节点 3",plan:"规划",execute:"执行",review:"审查"},initialPrompts:{node1:"输入这个节点的内容。",node2:"输入这个节点的内容。",node3:"输入这个节点的内容。",plan:"把需求拆成可执行步骤。",execute:"执行实现步骤并产出结果。",review:"审查产出质量并识别后续工作。"},newNodeTitle:"节点 {count}"},kanban:{title:"看板",createTask:"新建任务",noTasks:"暂无任务",allStatuses:"全部状态",allAssignees:"全部负责人",board:{create:"新建看板",archive:"归档看板",slugPlaceholder:"看板标识,例如 project-a",namePlaceholder:"显示名称(可选)",slugRequired:"看板标识不能为空",created:"看板已创建",archived:"看板已归档",archiveConfirm:"确定归档当前看板?",defaultArchiveUnavailable:"默认看板不能归档"},columns:{triage:"待分拣",todo:"待办",scheduled:"已调度",ready:"就绪",running:"进行中",blocked:"阻塞",review:"待审查",done:"已完成",archived:"已归档"},form:{title:"标题",titlePlaceholder:"任务标题",titleRequired:"标题不能为空",body:"描述",bodyPlaceholder:"任务描述(可选)",assignee:"负责人",selectAssignee:"选择负责人...",priority:"优先级",selectPriority:"选择优先级...",tenant:"租户",tenantPlaceholder:"租户(可选)",workspace:"工作区",workspaceScratch:"临时工作区",workspaceDir:"使用目录",workspaceWorktree:"使用 worktree",workspacePath:"工作区路径",workspacePathPlaceholder:"绝对路径(可选)",branch:"分支",branchPlaceholder:"Worktree 分支",skills:"技能",skillsPlaceholder:"选择技能...",triage:"创建到分拣状态",goalMode:"目标模式",maxRuntime:"最长运行时间",maxRuntimePlaceholder:"例如 30m、2h",maxRetries:"最大重试次数",maxRetriesPlaceholder:"重试次数",goalMaxTurns:"目标最大轮次",goalMaxTurnsPlaceholder:"最大轮次"},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:"关键信息",noLog:"未找到该任务的日志。",addComment:"添加评论",commentPlaceholder:"输入任务评论...",operations:"操作"},action:{title:"操作",complete:"完成",completeSummary:"完成摘要(可选)",block:"阻塞",blockReason:"阻塞原因",unblock:"解除阻塞",archive:"归档任务",archiveConfirm:"确定归档这个已完成任务?",assign:"分配",assignTo:"分配给...",dispatch:"调度",recoveryReason:"恢复原因(可选)",reclaim:"回收",reassign:"重新分配",specify:"细化",loadLog:"加载日志",loadDiagnostics:"加载诊断"},message:{taskCreated:"任务已创建",taskCompleted:"任务已完成",taskBlocked:"任务已阻塞",taskUnblocked:"任务已解除阻塞",taskArchived:"任务已归档",taskAssigned:"任务已分配",dispatchNudged:"已触发调度器",commentAdded:"评论已添加",taskReclaimed:"任务已回收",taskReassigned:"任务已重新分配",taskSpecified:"任务已细化",loadFailed:"加载任务失败"},stats:{total:"总计",tasks:"任务数"}},jobs:{title:"定时任务",createJob:"创建任务",editJob:"编辑任务",noJobs:"暂无定时任务,创建一个开始吧。",sortBy:"排序",sortByName:"名称排序",sortByTime:"时间排序",sortByNameHint:"点击按名称排序",sortByTimeHint:"点击按时间排序",sortAsc:"升序",sortDesc:"降序",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:"要执行的内容",skills:"技能",skillsPlaceholder:"选择技能...",provider:"服务商",model:"模型",defaultProvider:"默认服务商",defaultModel:"默认模型",deliverTarget:"投递目标",origin:"来源",local:"本地",repeatCount:"重复次数(可选)",modelPlaceholder:"选择模型",repeatPlaceholder:"留空表示无限重复",jobCreated:"任务已创建",jobUpdated:"任务已更新",nameRequired:"名称为必填项",scheduleRequired:"调度表达式为必填项",promptRequired:"提示词为必填项",loadFailed:"加载任务失败",jobPaused:"任务已暂停",jobResumed:"任务已恢复",jobTriggered:"任务已触发",modelUpdated:"模型已更新",jobDeleted:"任务已删除",status:{running:"运行中",paused:"已暂停",disabled:"已禁用",scheduled:"已调度"},info:{model:"模型",provider:"服务商",schedule:"调度",lastRun:"上次运行",nextRun:"下次运行",deliver:"投递",repeat:"重复"},action:{pause:"暂停",pauseJob:"暂停任务",resume:"恢复",resumeJob:"恢复任务",runNow:"立即运行",triggerImmediately:"立即触发"},runHistory:{title:"运行历史",runs:"次运行",noRuns:"暂无运行历史。"}},skills:{title:"技能",targetFilter:"运行时",targets:{hermes:"Hermes",claude:"Claude",codex:"Codex"},searchPlaceholder:"搜索技能...",noMatch:"没有匹配的技能",noSkills:"暂无技能",backTo:"返回",attachedFiles:"附件文件",loadFailed:"加载技能失败",fileLoadFailed:"加载文件失败",modified:"用户已修改",archived:"已归档",pinned:"已置顶",pin:"置顶技能",unpin:"取消置顶",pinFailed:"更改置顶状态失败",edit:"编辑",saving:"保存中...",editorLabel:"技能编辑器",saveSuccess:"技能已保存",saveFailed:"保存技能失败",toggleFailed:"切换技能状态失败",source:{builtin:"内置",hub:"Hub 安装",local:"本地安装",external:"外部目录"},delete:"删除",deleteConfirm:'确定要删除技能 "{name}" 吗?此操作不可撤销。',deleteSuccess:"已删除技能",deleteFailed:"删除失败",import:"导入",importTitle:"导入技能",importModeZip:"Zip 包",importModeFolder:"文件夹",importHintZip:"上传 .zip 包,应包含含 SKILL.md 的目录",importHintFolder:"选择本地技能文件夹(需含 SKILL.md)",importTargetCategory:"目标分类(可选)",importTargetCategoryPlaceholder:"留空则平铺到 misc",importSelectFile:"选择 .zip 文件",importSelectFolder:"选择文件夹",importInvalidFile:"仅支持 .zip 包",importFileCount:"个文件",importNoSelection:"请先选择文件或文件夹",importSuccess:"已导入技能",importFailed:"导入失败",path:{local:"本地",external:"外部"},externalDirs:{manage:"外部目录",title:"外部目录管理",hint:"在此管理 config.skills.external_dirs。支持 ~ 和 $VAR;不存在的路径会被标灰。",add:"添加外部目录",placeholder:"/path/to/skills 或 ~/my-skills",empty:"暂无外部目录",missing:"目录不存在",notDir:"不是目录",saveSuccess:"外部目录已保存",saveFailed:"保存失败",loadFailed:"加载外部目录失败",removeRow:"移除"},pathCopied:"路径已复制",pathCopyFailed:"复制路径失败",reloadHint:"活跃会话请执行 /reload-skills;新会话会自动加载。",writeApprovalButton:"待审核 {count}",writeApprovalTitle:"待审核写入",writeApprovalDescription:"批准或拒绝 Hermes Agent 暂存的记忆和技能写入。",writeApprovalRefresh:"刷新",writeApprovalEmpty:"暂无待审核写入。",writeApprovalUnsupported:"当前 Hermes Agent 版本不支持写入审核。请升级 Hermes Agent 后再使用。",writeApprovalMemory:"记忆",writeApprovalSkills:"技能",writeApprovalViewDiff:"查看",writeApprovalHideDiff:"收起",writeApprovalNoDiff:"没有可显示的差异。",writeApprovalLoadFailed:"待审核写入加载失败",writeApprovalDiffFailed:"写入详情加载失败",writeApprovalActionFailed:"待审核写入处理失败",writeApprovalApproved:"已批准写入",writeApprovalRejected:"已拒绝写入",writeApprovalApprove:"批准",writeApprovalReject:"拒绝",writeApprovalPendingMemoryWrite:"待审核记忆写入",writeApprovalCurrentFile:"当前 {file}",writeApprovalProposedFile:"批准后 {file}",writeApprovalDiffSection:"差异",writeApprovalPatchOldStringMissing:"当前文件 {file} 中没有找到这次补丁的 old_string,批准后的文件内容不会变化。",writeApprovalRequestedOldString:"本次请求匹配的 old_string",writeApprovalCurrentReadFailed:"当前文件 {file} 无法按 UTF-8 文本读取。",writeApprovalDeleteSkill:"这次审批会删除技能 {skill}。",writeApprovalRemoveFile:"这次审批会从技能 {skill} 中移除文件 {file}。"},plugins:{title:"插件",refresh:"刷新",notice:"展示可发现的 Hermes 插件 manifest。发现元数据读取不会加载插件代码。可在此启用或禁用 standalone 用户插件,新 Hermes 会话生效。",loadFailed:"加载插件失败",updateFailed:"更新插件失败",enableSuccess:"已启用 {name}",disableSuccess:"已禁用 {name}",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:"路径 / 入口",manage:"管理"},capabilities:{tools:"{count} 个工具",hooks:"{count} 个 hook",env:"{count} 个环境变量"},metadata:{agentRoot:"Agent 根目录",python:"Python",scanCwd:"扫描 cwd",projectPlugins:"项目插件"}},petdex:{title:"Petdex 宠物",subtitle:"浏览 Hermes 桌宠使用的 petdex 公共图库。",refresh:"刷新",adopt:"领取",active:"使用中",adopted:"已领取 {name}",adoptFailed:"领取宠物失败",loadFailed:"加载 petdex 图库失败",searchPlaceholder:"按名称、slug、作者或类型搜索",kindFilter:"类型",spritesheet:"精灵图",submittedBy:"作者 {name}",empty:"没有符合当前筛选的宠物。",showMore:"再显示 {count} 个",summary:{total:"图库总数",visible:"匹配数量",kinds:"类型数",generatedAt:"生成时间"}},memory:{title:"记忆",refresh:"刷新",loadFailed:"加载记忆失败",myNotes:"我的笔记",noNotes:"暂无笔记。",notesPlaceholder:"输入笔记内容...",userProfile:"用户画像",noProfile:"暂无画像。",profilePlaceholder:"输入用户画像...",soul:"灵魂",noSoul:"暂无灵魂配置。",soulPlaceholder:"输入灵魂配置..."},models:{title:"模型",searchPlaceholder:"搜索模型...",noResults:"无结果",noModels:"无模型",addProvider:"添加 Provider",noProviderPromptTitle:"当前 Profile 未配置大模型",noProviderPromptMessage:"当前 Profile“{profile}”未配置任何大模型 Provider,是否进入模型设置页面?",noProviderPromptLater:"稍等",noProviderPromptAction:"去设置",refreshModelCache:"刷新模型缓存",refreshModelCacheLoading:"正在刷新模型缓存...",refreshModelCacheSuccess:"模型缓存已刷新",refreshModelCacheFailed:"刷新模型缓存失败",refreshModels:"刷新模型",restoreModels:"恢复上一份列表",refreshModelsConfirmTitle:"确认更新模型列表",refreshModelsConfirmContent:"本次刷新将删除 {removed} 个模型、新增 {added} 个。将删除:{removedList}",refreshModelsConfirmAction:"覆盖模型列表",refreshModelsSuccess:"模型列表已更新(共 {count} 个,不可用 {unavailable} 个)",refreshModelsFailed:"刷新 Provider 模型失败",restoreModelsSuccess:"已恢复上一份模型列表(共 {count} 个)",restoreModelsFailed:"恢复上一份模型列表失败",editProviderTitle:"编辑 {name}",providerEditorLoadFailed:"加载 Provider 设置失败",providerEditorSaved:"Provider 设置已保存",providerEditorSaveFailed:"保存 Provider 设置失败",providerEditorConflict:"该 Provider 已被其他操作修改,现已重新加载最新设置。",providerEditorRequired:"显示名称、Base URL 和首选模型不能为空。",providerInternalId:"Provider 内部 ID",providerDisplayName:"显示名称",providerIdStableHint:"内部 Provider ID 保持不变,已有引用不会失效。",providerPreferredModel:"Provider 首选模型",providerPreferredModelHint:"此项不会修改当前 Profile 的全局默认模型。",selectOrEnterModel:"选择或输入模型 ID...",unverifiedModelWarning:"该模型不在当前目录中,尚未验证是否可用。",credentialConfigured:"已配置",credentialNotConfigured:"未配置",leaveBlankKeepCredential:"留空则保持当前 Key 不变",enterCredential:"输入新的 Provider 凭据",credentialNeverDisplayedHint:"已保存的 Key 不会回显;只有输入新值时才会替换。",providerCredentialMissingHint:"该 Provider 现已不可运行,重新配置凭据后才能使用。",providerAdvancedSettings:"Provider 高级设置",discoverModels:"允许从 Provider 自动发现模型",rateLimitDelay:"限流等待时间(秒)",requestTimeoutSeconds:"请求超时(秒)",staleTimeoutSeconds:"过期请求超时(秒)",extraBodyHint:"可选 JSON 对象,会合并到 Provider 请求体;留空表示删除。",extraBodyInvalid:"extra_body 必须是有效的 JSON 对象。",providerTestUnsupported:"当前 API Mode 不支持连接测试。",perModelContextLengths:"逐模型上下文长度",contextLengthInheritHint:"清空数值即继承 Provider 或系统默认值。",inheritDefault:"继承默认值",providerReconnectHint:"修改只对新运行生效;现有聊天或 Coding Agent 会话需要重新连接。",testConnection:"测试连接",providerTestSuccess:"连接成功,共发现 {count} 个模型",providerTestFailed:"Provider 连接测试失败",providerTestFailedTitle:"连接测试失败",providerSaveAnywayHint:"你仍可明确选择保存,但该 Provider 可能暂时不可用。",saveAnyway:"仍然保存",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 已删除",providerCredentialsCleared:"Provider 凭据已清除",clearProviderCredentials:"清除凭据",clearCredentialsConfirm:'确定清除 "{name}" 的已保存凭据吗?这是内置 Provider,条目会继续显示,重新配置凭据后仍可使用。',disableProvider:"禁用 Provider",disableProviderConfirm:'确定禁用内置 Provider "{name}" 吗?该 Provider 仍是内置项,之后可以重新启用。',providerDisabled:"Provider 已禁用",defaultProviderUpdated:"默认 Provider 已更新",defaultProviderUpdateFailed:"更新默认 Provider 失败",defaultModelUpdated:"默认模型已更新",defaultModelUpdateFailed:"更新默认模型失败",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 插件的登录。",xaiLoginTitle:"xAI Grok OAuth 登录",xaiWaiting:"请在打开的 xAI 页面完成授权。授权完成后窗口会自动关闭。",xaiOpenLink:"打开 xAI 授权页",xaiCopyLink:"复制授权链接",xaiApproved:"登录成功!",xaiExpired:"授权链接已过期,请重试。",anthropicLoginTitle:"Claude 授权登录",anthropicWaiting:"请在 Claude 授权页完成授权,然后把返回的授权代码粘贴到这里。",anthropicOpenLink:"打开 Claude 授权页",anthropicCopyLink:"复制授权链接",anthropicCodePlaceholder:"粘贴授权代码...",anthropicSubmitCode:"提交代码",anthropicApproved:"登录成功!",anthropicExpired:"授权已过期,请重试。",minimaxLoginTitle:"MiniMax Coding Plan 登录",minimaxRegionHint:"请选择 Coding Plan 账号所属的 MiniMax 区域。",minimaxGlobal:"国际站",minimaxChina:"中国站",minimaxStart:"开始授权",minimaxWaiting:"请打开 MiniMax 授权页并输入此代码。授权完成后窗口会自动关闭。",minimaxOpenLink:"打开 MiniMax 授权页",minimaxApproved:"登录成功!",minimaxExpired:"授权已过期,请重试。",customBadge:"自定义",previewBadge:"预览",disabledBadge:"不可用",disabledTooltip:"此模型当前账号不可用",customModelPlaceholder:"未列出的模型 ID",customModelHint:"仅用于 provider 支持但未返回的模型;不是重命名。按回车加载。",removeCustomModel:"移除这个未列出的模型",refresh:"刷新模型列表(重新加载 config.yaml)",noProviders:"暂无 Provider,添加一个开始吧。",models:"模型列表",count:"个模型",more:"个更多",aliasEdit:"重命名",aliasTitle:"模型显示名",aliasTitleFor:"{model} 的显示名",aliasPlaceholder:"留空则使用原始模型 ID",aliasHint:"仅修改 Web UI 显示名,发送给 Hermes 的仍是原始模型 ID。",aliasCanonical:"原始 ID:{model}",aliasUseOriginal:"恢复原始 ID",aliasManage:"显示名",aliasManageFor:"{provider} 的显示名",aliasSaveFailed:"保存显示名失败",manageVisibleModels:"管理可见模型",manageVisibleModelsFor:"管理 {name} 可见模型",visibilityHint:"仅影响 Web UI 的模型选择器和模型页展示,不会改写 Hermes CLI 的 provider/model 配置。实际调用仍使用原始模型 ID。",visibilitySelectOne:"至少保留一个可见模型",visibilitySaved:"可见模型已保存",visibilitySaveFailed:"保存可见模型失败",showAllModels:"显示全部模型",clearVisibleModels:"取消全选",generalTitle:"通用模型",auxiliaryTitle:"辅助模型",auxiliarySubtitle:"为压缩、视觉、审批、MCP 和后台维护等辅助任务单独指定模型。",combinationTitle:"组合模型",combinationSubtitle:"配置 MoA 预设:多个参考模型先给出视角,再由一个汇总模型负责最终回复和工具调用。",combinationPreset:"预设",combinationName:"名称",combinationAddModel:"添加组合模型",combinationEditModel:"编辑组合模型",combinationNewPreset:"新预设",combinationPresetPlaceholder:"例如 review",combinationAddPreset:"添加预设",combinationSetDefault:"设为默认",combinationEnabled:"启用参考模型",combinationReferenceModels:"参考模型",combinationReferenceModel:"参考模型",combinationAddReference:"添加参考模型",combinationAggregator:"汇总模型",combinationReferenceTemperature:"参考温度",combinationAggregatorTemperature:"汇总温度",combinationMaxTokens:"最大 Token",combinationNotSet:"未设置",combinationSaved:"组合模型已保存",combinationLoadFailed:"加载组合模型失败",combinationSaveFailed:"保存组合模型失败",combinationPresetExists:"预设已存在",combinationNameRequired:"请输入组合模型名称",combinationNameInvalid:"名称只能包含字母、数字、下划线、短横线和点",combinationReferenceRequired:"至少添加一个参考模型",combinationAggregatorRequired:"请选择汇总模型",auxiliaryRefresh:"刷新",auxiliaryTask:"任务",auxiliaryTimeout:"超时",auxiliaryDownloadTimeout:"下载超时",auxiliaryActions:"操作",auxiliaryDefault:"默认",auxiliaryCustomEndpoint:"自定义端点",auxiliaryProviderAuto:"自动",auxiliaryProviderMain:"主模型",auxiliaryProviderPlaceholder:"auto、main 或 provider key",auxiliaryDownloadShort:"下载",auxiliaryExtraBody:"Extra body JSON",auxiliaryClear:"清除",auxiliarySaved:"辅助模型已保存",auxiliaryLoadFailed:"加载辅助模型失败",auxiliarySaveFailed:"保存辅助模型失败",auxiliaryInvalidExtraBody:"Extra body 必须是 JSON 对象",auxiliaryTaskCompression:"压缩",auxiliaryTaskVision:"视觉",auxiliaryTaskWebExtract:"网页提取",auxiliaryTaskSkillsHub:"技能中心",auxiliaryTaskApproval:"审批",auxiliaryTaskMcp:"MCP",auxiliaryTaskTitleGeneration:"标题生成",auxiliaryTaskTriageSpecifier:"Triage 扩写",auxiliaryTaskKanbanDecomposer:"看板拆解",auxiliaryTaskProfileDescriber:"Profile 描述",auxiliaryTaskCurator:"策展",auxiliaryTaskSessionSearch:"会话搜索",auxiliaryTaskFlushMemories:"写入记忆",currentDefault:"当前默认",defaultShort:"默认",setDefaultProvider:"设为默认 Provider",setDefault:"设为默认",builtIn:"内置",customType:"自定义",provider:"Provider",contextLength:"上下文长度",contextLengthPlaceholder:"例如 256000(可选)",apiMode:"API 模式",local:"本地 ({host})",selectProviderRequired:"请选择 Provider",baseUrlRequired:"Base URL 为必填项",apiKeyRequired:"API Key 为必填项",modelRequired:"默认模型为必填项",enterBaseUrl:"请先输入 Base URL",unexpectedFormat:"响应格式异常",foundModels:"找到 {count} 个模型",fetchFailed:"获取模型失败"},profiles:{title:"配置",create:"创建配置",import:"导入",export:"导出",rename:"重命名",delete:"删除",editConfig:"编辑配置文件",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:"导出配置失败",exportTimeout:"导出超时。该配置体积过大,无法打包 —— 通常是 workspace 下的缓存和虚拟环境把它撑大的。",importTimeout:"服务器解包归档时导入超时。请换用更快的存储后重试,或通过 Hermes CLI 导入。",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:"暂无日志"},theme:{title:"主题",saved:"主题已保存",saveFailed:"主题保存失败",reset:"恢复默认",resetSuccess:"已恢复默认主题",appearance:"外观",appearanceHint:"修改会实时预览到整个界面",mode:"明暗模式",modeHint:"选择浅色或深色配色",modeSystem:"跟随系统",modeLight:"浅色",modeDark:"深色",style:"风格",styleHint:"选择界面的视觉风格",styleInk:"水墨",styleComic:"漫画",fontSize:"文字大小",fontSizeHint:"界面和对话内容的基础字号",textColor:"文字颜色",textColorHint:"次要文字色会自动生成",accentColor:"选中颜色",accentColorHint:"用于激活项、文字选中和主要按钮",background:"背景图片",backgroundHint:"上传个人工作区背景",backgroundTypeError:"请使用 PNG、JPEG、WebP 或 GIF 图片",backgroundSizeError:"背景图片不能超过 10 MB",backgroundUploaded:"背景图片已更新",backgroundUploadFailed:"背景图片上传失败",backgroundRemoved:"背景图片已移除",backgroundRemoveFailed:"背景图片移除失败",backgroundReplace:"更换图片",backgroundUpload:"上传图片",backgroundRemove:"移除",backgroundEmpty:"尚未设置背景图片",backgroundNote:"图片随账号保存,并通过本地缓存避免加载时闪烁。",preview:"预览",previewTitle:"打造属于你的工作空间",previewText:"文字和选中颜色会同步应用到整个界面。",previewAction:"选中操作"},settings:{title:"设置",saved:"已保存",saveFailed:"保存失败",tabs:{display:"显示",account:"当前账户",users:"账户管理",webhooks:"Webhook",agent:"网关",proxy:"代理",memory:"记忆",compression:"上下文压缩",session:"会话",privacy:"隐私",apiServer:"API 服务器",models:"模型",voice:"语音"},webhooks:{title:"Webhook",description:"把 Chat Run 生命周期事件发送到外部系统,不阻塞聊天执行。",deliveryNote:"投递使用有界内存队列:不同 Webhook 并行,同一 Webhook 按事件顺序投递。服务重启后,尚未投递的任务不会保留。",createTitle:"添加 Webhook",editTitle:"编辑 Webhook",allProfiles:"全部 Profile",queued:"队列 {count}",deleteConfirm:"确认删除这个 Webhook?它尚未投递的任务也会被丢弃。",localInboxTitle:"本机测试收件箱",localInboxDescription:"内置测试接收器最近收到的 {count} 条事件。仅保存在内存中,服务重启后自动清空。",localInboxEmpty:"还没有收到本机测试事件。",localInboxPayloadTitle:"收到的 Webhook Payload",clearInboxConfirm:"确认清空本机测试收件箱中的所有事件?",columns:{name:"名称",url:"URL",events:"事件",profiles:"Profile",status:"状态",actions:"操作",receivedAt:"接收时间",event:"事件",eventId:"Event ID",deliveryId:"Delivery ID"},events:{messageCreated:"用户消息已创建",runQueued:"运行已排队",runStarted:"运行已开始",toolStarted:"工具已开始",toolCompleted:"工具已完成",toolFailed:"工具执行失败",approvalRequested:"请求授权",approvalResolved:"授权已处理",clarificationRequested:"请求澄清",clarificationResolved:"澄清已处理",completed:"运行完成",failed:"运行失败"},status:{enabled:"已启用",disabled:"已停用"},runtime:{idle:"空闲",delivering:"投递中",retrying:"等待重试",success:"已送达",failed:"投递失败",dropped:"已丢弃"},actions:{add:"添加 Webhook",localTest:"使用本机测试接收器",test:"测试",enable:"启用",disable:"停用",refresh:"刷新",clear:"清空",view:"查看"},form:{name:"名称",localTestName:"本机 Webhook 测试",namePlaceholder:"例如:运营通知",url:"接收地址",secret:"签名密钥",secretPlaceholder:"可选,用于 HMAC-SHA256 签名",secretKeepPlaceholder:"留空则保留现有密钥",clearSecret:"删除已保存的密钥",events:"事件",profiles:"Profile",profilesPlaceholder:"留空接收所有 Profile",maxRetries:"首次失败后的重试次数(0–10)",includeContent:"包含助手最终文本",includeContentHint:"最终回复可能包含敏感信息。推理过程、系统提示词和工具参数永远不会发送。",includeUserContent:"包含用户消息文本",includeUserContentHint:"用户消息可能包含敏感信息,默认关闭。系统提示词、推理过程、工具参数和工具结果不会随此开关发送。",allowPrivateNetwork:"允许私网或本机地址",allowPrivateNetworkHint:"仅对可信的内部接收端开启;每次投递前都会重新检查 DNS。",enabled:"启用"},messages:{required:"名称和 URL 不能为空",eventRequired:"请至少选择一个事件",loadFailed:"加载 Webhook 失败",saved:"Webhook 已保存",saveFailed:"保存 Webhook 失败",deleted:"Webhook 已删除",deleteFailed:"删除 Webhook 失败",testSucceeded:"测试投递成功",testFailed:"测试投递失败",localTestFailed:"创建本机测试接收器失败",inboxLoadFailed:"加载本机测试事件失败",inboxCleared:"本机测试事件已清空",inboxClearFailed:"清空本机测试事件失败"}},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 回复完成时播放提示音",approvalBell:"审批提示音",approvalBellHint:"出现新的待处理审批或澄清时播放提示音",notifyOnComplete:"完成弹窗通知",notifyOnApproval:"审批桌面通知",notifyOnApprovalHint:"Hermes Studio 不在前台时,出现新的审批或澄清会发送系统通知;通知不显示敏感详情",notifyOnApprovalTest:"审批桌面通知已启用。",notifyOnApprovalTestButton:"测试",notifyOnApprovalTestSent:"审批通知已发送",notifyOnApprovalTestFailed:"审批通知发送失败",approvalNotificationTitle:"需要审批",approvalNotificationClarifyTitle:"需要澄清",approvalNotificationBody:"打开 Hermes Studio 查看并处理。",notifyOnCompleteHint:"AI 回复完成时显示系统通知",notifyOnCompleteMacHint:"macOS 需要在系统设置里允许浏览器通知。",notifyOnCompleteDenied:"通知权限已被拒绝",notifyOnCompleteInsecure:"浏览器通知需要 HTTPS 或 localhost",notifyOnCompleteUnsupported:"当前浏览器不支持通知",notifyOnCompleteTest:"通知已开启。",notifyOnCompleteTestButton:"测试",notifyOnCompleteTesting:"正在发送测试通知...",notifyOnCompleteTestSent:"测试通知已发送",notifyOnCompleteTestFailed:"测试通知发送失败",busyInputMode:"忙碌输入模式",busyInputModeHint:"AI 处理中仍可输入",theme:"主题",themeHint:"选择浅色、暗色或跟随系统",themeLight:"浅色",themeDark:"暗色",themeSystem:"跟随系统",chatInputHeight:"聊天输入框高度",chatInputHeightHint:"桌面端聊天输入框默认高度(像素)。移动端保持自动高度。"},agent:{maxTurns:"最大轮次",maxTurnsHint:"单次对话最大交互轮数",gatewayTimeout:"网关超时",gatewayTimeoutHint:"单次请求无活动超时时间(秒),0 表示无限制",restartDrainTimeout:"重启排空超时",restartDrainTimeoutHint:"重启前排空请求的超时时间(秒)",toolEnforcement:"工具执行策略",toolEnforcementHint:"控制工具调用的执行模式",auto:"自动",always:"始终",never:"从不"},gatewayAutoStart:{title:"Gateway 自动启动",description:"控制 Web UI 启动时自动拉起哪些本地 Hermes profile gateway。该项写入 Web UI 配置,不写入 profile config.yaml。",enabled:"自动启动 gateway",enabledHint:"关闭后,启动期不会自动拉起任何 profile gateway。",management:"统一 gateway",managementHint:"需要 Hermes Agent 0.17.0 及以上版本。开启后会写入 multiplex_profiles,让 default gateway 服务所有 profiles;其他 profile 不能单独配置飞书、微信、QQBot 等通讯工具入口。关闭后会移除该配置。",managementAuto:"自动",managementPerProfile:"每个 profile 一个 gateway",managementUnified:"统一 default gateway",mode:"Profile 策略",modeHint:"启动所有发现到的 profiles,或只启动白名单内的 profiles。",modeAll:"所有发现到的 profiles",modeInclude:"仅白名单 profiles",include:"白名单 profiles",includeHint:"逗号分隔 profile 名。白名单模式下留空表示不自动启动任何 profile。",exclude:"排除 profiles",excludeHint:"逗号分隔 profile 名;会在白名单/全量策略之后再排除。",profileListPlaceholder:"default, reviewer"},proxy:{title:"Gateway 代理",description:"为当前 profile gateway 设置代理环境变量。保存后会重启 gateway,让通讯平台使用新的网络配置。",httpsProxy:"HTTPS_PROXY",httpsProxyHint:"HTTPS 请求代理,通常优先配置这一项。",httpProxy:"HTTP_PROXY",httpProxyHint:"普通 HTTP 请求代理。",allProxy:"ALL_PROXY",allProxyHint:"未设置协议专用代理时使用的兜底代理。",noProxy:"NO_PROXY",noProxyHint:"不走代理的主机或域名,使用逗号分隔。",save:"保存代理设置"},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:"修改会话操作是否授权",memoryWriteApproval:"记忆写入审核",memoryWriteApprovalHint:"Hermes Agent 写入 MEMORY.md / USER.md 前先进入待审核队列。",skillsWriteApproval:"技能写入审核",skillsWriteApprovalHint:"Hermes Agent 创建或修改技能前先进入待审核队列。",writeApprovalTitle:"待审核写入",writeApprovalDescription:"批准或拒绝 Hermes Agent 暂存的记忆和技能写入。",writeApprovalRefresh:"刷新",writeApprovalEmpty:"暂无待审核写入。",writeApprovalMemory:"记忆",writeApprovalSkills:"技能",writeApprovalViewDiff:"查看",writeApprovalHideDiff:"收起",writeApprovalNoDiff:"没有可显示的差异。",writeApprovalLoadFailed:"待审核写入加载失败",writeApprovalDiffFailed:"写入详情加载失败",writeApprovalActionFailed:"待审核写入处理失败",writeApprovalApproved:"已批准写入",writeApprovalRejected:"已拒绝写入",writeApprovalApprove:"批准",writeApprovalReject:"拒绝",writeApprovalPendingMemoryWrite:"待审核记忆写入",writeApprovalCurrentFile:"当前 {file}",writeApprovalProposedFile:"批准后 {file}",writeApprovalDiffSection:"差异",writeApprovalPatchOldStringMissing:"当前文件 {file} 中没有找到这次补丁的 old_string,批准后的文件内容不会变化。",writeApprovalRequestedOldString:"本次请求匹配的 old_string",writeApprovalCurrentReadFailed:"当前文件 {file} 无法按 UTF-8 文本读取。",writeApprovalDeleteSkill:"这次审批会删除技能 {skill}。",writeApprovalRemoveFile:"这次审批会从技能 {skill} 中移除文件 {file}。"},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",type:{password:"密码",token:"API Token",pairing:"设备配对"}},userAvatar:{title:"用户头像",upload:"上传图片",random:"随机生成",reset:"恢复默认",hint:"支持 PNG、JPEG、WebP,最大 1MB,会自动压缩到 500KB 以下",invalidType:"请选择 PNG、JPEG 或 WebP 图片",tooLarge:"头像图片不能超过 1MB",saveSuccess:"头像已保存",saveFailed:"保存头像失败",resetSuccess:"已恢复默认头像",resetFailed:"恢复默认头像失败"},voice:{activeTtsApi:"当前 TTS API",activeSttApi:"当前 STT API",ttsProvidersTitle:"TTS 提供方",ttsProvidersDescription:"管理用于播放助手回复和语音预览的文字转语音集成。",sttProvidersTitle:"STT 提供方",sttProvidersDescription:"管理用于麦克风和语音输入流程的语音转文字集成。",localSttModelTitle:"本地中英双语 STT",localSttModelDescription:"在本机完成隐私优先的语音识别,音频无需上传到云端。",localSttModelUnavailable:"请先下载并验证本地 STT 模型,再将它设为当前默认。",localSttModelReady:"可用",localSttModelDownloading:"下载中",localSttModelNotInstalled:"未安装",localSttLanguages:"语言",localSttLanguagesValue:"中文 + 英文",localSttDownloadSize:"下载大小",localSttRuntime:"运行时",localSttDownloadCf:"Cloudflare 下载",localSttDownloadGithub:"GitHub 下载",localSttBackgroundHint:"下载、校验、解压和模型可用性验证均在后台执行,不会阻塞页面。",localSttDownloadFailed:"本地 STT 模型下载失败:{error}",localSttStage:{queued:"等待下载……",resolve:"正在准备下载……",download:"正在下载模型……",verify:"正在校验文件……",extract:"正在解压模型……",validate:"正在验证模型可用性……",install:"正在安装模型……",completed:"模型已可用",failed:"下载失败"},hermesConfigTitle:"Hermes Agent 配置",hermesConfigDescription:"Hermes profile 中原有的原生提供商会继续保留;Web UI 管理的提供商对 Hermes 统一显示为 Hermes Studio。",hermesActiveProvider:"当前提供商",hermesConfiguredProviders:"已配置提供商",hermesStudioProvider:"Hermes Studio",providerSpeed:"语速",providerSampleRate:"采样率",providerBitRate:"比特率",providerGroupId:"Group ID",providerVolume:"音量",providerEmotion:"情感",providerDiarize:"说话人分离",providerFormatText:"格式化转写文本",providerTagAudioEvents:"标注音频事件",optionEnabled:"启用",optionDisabled:"停用",nativeProvider:"Hermes 原生提供商",selectNativeProvider:"选择 Hermes 原生提供商",useHermesStudioProvider:"使用 Hermes Studio 提供商",presetElevenLabsTtsLabel:"ElevenLabs TTS",presetGeminiTtsLabel:"Gemini TTS",presetXaiTtsLabel:"xAI TTS",presetMistralTtsLabel:"Mistral TTS",presetMinimaxTtsLabel:"MiniMax TTS",presetDeepInfraTtsLabel:"DeepInfra TTS",presetMistralSttLabel:"Mistral STT",presetXaiSttLabel:"xAI STT",presetElevenLabsSttLabel:"ElevenLabs STT",presetDeepInfraSttLabel:"DeepInfra STT",noneSelected:"未选择",keyStored:"已存储",keyMissing:"未配置",customApi:"API",localBuiltin:"本地内置",ttsCardHint:"语音合成提供方",sttCardHint:"语音转写提供方",setActive:"设为当前",testAction:"测试",connect:"连接",presetEdgeTtsLabel:"Edge TTS",presetEdgeTtsDescription:"Microsoft Edge 提供的免费高质量云端音色。",presetOpenaiTtsLabel:"OpenAI TTS",presetMimoTtsLabel:"MiMo TTS",presetDoubaoTtsLabel:"Volcengine Doubao TTS",presetCustomTtsLabel:"自定义 TTS",presetBrowserSttLabel:"浏览器 STT",presetBrowserSttDescription:"浏览器原生语音识别 API。",presetOpenaiWhisperLabel:"OpenAI Whisper",presetGroqSttLabel:"Groq STT",presetDoubaoSttLabel:"Volcengine Doubao STT",presetCustomSttLabel:"自定义 STT",apiCompatibility:"API 兼容性",openaiCompatible:"OpenAI 兼容",manualCustomEndpoint:"手动自定义端点",connectionStep:"连接",discoveryManualHint:"已选择手动自定义端点,无法自动发现模型;请手动输入模型名称。",discoveryCredentialHint:"输入 Base URL 和 API key 后,点击连接获取可用模型。",discoveryNoAutoProbeHint:"输入过程中不会发送请求;凭据准备好后点击连接。",apiKeyConnectPlaceholder:"粘贴 API key 后连接;已存储的 key 不会显示",connectFetchModels:"连接并获取模型",modelRecommendedSuffix:"推荐",modelConnectManualHint:"连接后自动填充,或手动输入。",modelRequiredConnectManual:"模型必填。请连接后自动填充,或手动输入。",apiKeyRequired:"API key 必填。",apiKeyRequiredForDiscovery:"获取模型需要 API key。",baseUrlRequired:"Base URL 必填。",baseUrlHttpsRequired:"请使用 http:// 或 https:// 协议。",baseUrlInvalid:"请输入有效的 Base URL,包含 https://。",discoveryFailedManualFallback:"无法获取模型。你仍可以手动输入模型名称。",completeRequiredProviderFields:"保存前请补全必填 provider 字段。",fetchingModels:"正在获取模型……",recommendedModel:"推荐:{model}。",useRecommendedModel:"使用此模型。",modelsDiscovered:"已发现 {count} 个模型。字段为空时会自动选择推荐模型。",remove:"移除",testSuccess:"测试完成",testTextRequired:"测试前请输入文本。",keyMissingForTest:"测试此提供方前请先添加 API key。",testing:"测试中……",transcribing:"转写中……",browserSttTestHint:"浏览器 STT 请在聊天输入框麦克风中测试。",sttEmptyAudio:"未录到音频,请重试。",sttTestSuccess:"转写完成",sttRecordingHint:"正在录音……点击停止后转写。",keepStoredKeyPlaceholder:"留空则保留已存储 key",apiKeyPlaceholder:"输入 API key",lastTest:"最近测试",notTested:"—",recording:"录音中",testFailedShort:"失败",testFailedSummary:"测试失败,请检查 provider 设置后重试。",showDetails:"显示详情",hideDetails:"隐藏详情",moreActions:"更多",moreActionsFor:"{provider} 的更多操作",addTtsApi:"添加 TTS API",addSttApi:"添加 STT API",active:"当前",builtin:"内置",connected:"已连接",disconnected:"未连接",source:"来源",model:"模型",voice:"音色",doubaoVoiceHint:"选择 Seed TTS 2.0 音色;资源字段会自动更新。",apiKey:"API key",confirmDeleteSecret:"确认删除这个语音 API 已存储的 API key?",ttsTitle:"文字转语音",ttsSaved:"TTS 设置已保存到服务端",ttsSaveFailed:"保存 TTS 设置失败",ttsTestSaved:"试听成功,TTS 设置已保存到服务端",ttsTestSaving:"正在保存 TTS 配置后再试听…",ttsMissingBaseUrl:"试听前需要填写基础 URL。请输入服务商 endpoint 后再测试。",ttsMissingApiKey:"试听前需要 API key。请粘贴 key,或先保存服务端已存 key。",ttsCleared:"已清除服务端 TTS 密钥",ttsClearFailed:"清除服务端 TTS 密钥失败",storedBaseUrlsTitle:"已存 Base URLs",storedBaseUrlsHint:"这里集中管理已保存的语音 provider endpoint。上方输入框只清除当前值,删除已存 URL 在这里操作。",storedBaseUrlsEmpty:"服务端还没有保存自定义语音 Base URL。",storedBaseUrlDelete:"删除 URL",storedApiKeysTitle:"已存 API keys",storedApiKeysHint:"这里列出服务端已保存的语音 API key,只显示用途和来源,不显示完整 key。",storedApiKeysEmpty:"服务端还没有保存语音 API key。",storedKeyKindTts:"TTS",storedKeyKindStt:"STT",storedApiKeyMasked:"[已存储]",storedApiKeyDelete:"删除 key",baseUrlPresetClear:"清除 URL",baseUrlPresetCleared:"已清除当前 Base URL。",baseUrlPresetDelete:"删除 URL",baseUrlPresetDeleted:"已从保存列表删除基础 URL。",baseUrlPresetDeleteFailed:"删除已保存基础 URL 失败。",ttsPendingSecret:"将保存新密钥",ttsStoredSecret:"服务端已有储密钥:{value}",ttsClearKey:"清除已存储密钥",sttTitle:"语音转文字",sttProvider:"STT 提供方",sttProviderHint:"选择语音输入的转写方式",sttProviderBrowser:"浏览器",sttProviderOpenai:"OpenAI 兼容",sttProviderCustom:"自定义",sttBrowserHint:"可用时使用浏览器内置语音识别。",sttApiKey:"API Key",sttApiKeyHint:"仅在服务端保存,用于需要鉴权的 STT 提供方。",sttStoredSecret:"服务端已存储密钥:{value}",sttPendingSecret:"服务端已存储密钥:保存后更新",sttClearKey:"清除已存储密钥",sttModel:"模型",sttModelHint:"用于语音转文字的模型。",sttLanguage:"语言",sttLanguageHint:"可选语言提示,例如 en 或 zh。",sttPrompt:"提示词",sttPromptHint:"可选转写提示词。",sttAudioTranscode:"音频转码",sttAudioTranscodeNone:"发送原始音频",sttAudioTranscodeFfmpeg:"使用 ffmpeg 转为 WAV",sttBaseUrl:"基础 URL",sttBaseUrlHint:"自定义 OpenAI 兼容语音转文字端点。",sttSave:"保存 STT 设置",sttSaved:"STT 设置已保存到服务端。",sttSaveFailed:"保存 STT 设置失败。",sttCleared:"服务端已存储的 STT 密钥已清除。",sttClearFailed:"清除服务端已存储的 STT 密钥失败。",sttActiveSaved:"当前 STT 提供方已保存到服务端。",sttSaveActive:"保存当前 STT 提供方",sttEndpointHint:"最终转写 endpoint:{endpoint}",sttTestTitle:"测试语音转文字",sttTestButton:"测试 STT API",sttTestStopButton:"停止并转写",sttTestBackendOnly:"STT API 测试仅适用于 OpenAI 兼容和自定义提供方。",sttTestRecording:"正在录制测试音频……录完后点击停止并转写。",sttTestTranscribing:"正在转写测试音频……",sttTestEmpty:"没有录到可用于 STT 测试的音频。",sttTestSucceeded:"STT 测试成功。",sttTestFailed:"STT 测试失败:{error} —— {hint}",sttFailureHintMissingConfig:"请确认已保存 provider 的 Base URL、模型和 API key 后再测试。",sttFailureHintAuth:"请检查 API key;如果页面显示已储存 key,请重新粘贴当前 key 并保存后再测。",sttFailureHintForbidden:"key 已到达供应商但没有该 STT 模型/账号权限,请检查 provider 权限、额度或 billing。",sttFailureHintEndpointModel:"请检查 Base URL 和模型。Groq 建议使用 {endpoint},模型用 whisper-large-v3-turbo 或其他 Groq STT 模型。",sttFailureHintModel:"请检查所选 STT 模型是否存在,并且当前账号有权限使用。",sttFailureHintQuota:"供应商返回额度、billing 或限流问题,请检查账号额度/billing,或稍后重试。",sttFailureHintNetworkCustom:"Web UI server 无法访问 custom STT endpoint。请确认 {endpoint} 可从服务器访问,并兼容 OpenAI audio/transcriptions。",sttFailureHintNetwork:"Web UI server 无法访问 STT provider,请检查网络、代理或防火墙后重试。",sttFailureHintAudio:"录音为空或音频格式被拒绝。请允许麦克风权限,录一段清晰短句,或换 Chrome 重试。",sttFailureHintGenericCustom:"请检查 API key、Base URL、模型,以及最终 endpoint {endpoint}。",sttFailureHintGeneric:"请检查 API key、模型和 provider 账号权限后重试。",sttTestRecordFailed:"无法开始麦克风录音:{error}",sttTestTranscript:"转写结果:{text}",ttsProvider:"TTS 提供者",ttsProviderHint:"选择消息朗读使用的语音引擎",providerWebSpeech:"WebSpeech API(浏览器内置)",providerOpenai:"OpenAI TTS",providerCustom:"自定义端点(兼容 OpenAI)",providerEdge:"Edge TTS(免费,无需 API Key)",webspeechVoice:"音色",webspeechVoiceHint:"从浏览器或系统提供的语音中选择",webspeechVoicePlaceholder:"自动(默认语音)",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:"不需要则留空",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}",providerMimo:"MiMo TTS",mimoHint:"小米 MiMo TTS,支持预置音色、音色设计、音色复刻三种模式",mimoApiKey:"API Key",mimoApiKeyHint:"在 platform.xiaomimimo.com 获取",mimoApiKeyPlaceholder:"MiMo API Key",mimoAuthMode:"认证方式",mimoAuthModeHint:"所选 MiMo 端点要求的鉴权请求头格式",mimoAuthModeBearer:"Bearer Token(Authorization)",mimoAuthModeApiKey:"API Key 请求头(api-key)",mimoAuthModeBoth:"同时发送两种请求头",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 provider 的仓库任务流程。",copyCommand:"复制",commandCopied:"命令已复制",commandCopyFailed:"复制失败",refresh:"刷新",checking:"检测中",installStatus:"安装情况",installed:"已安装",notInstalled:"未安装",installRequired:"{agent} 未安装,请先安装后再创建会话。",installNow:"一键安装",installing:"安装中",installSuccess:"安装完成",installFailed:"安装失败",installFailedHermesHint:"安装失败,请让 Hermes 帮你安装。",installFailureReason:"错误原因",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 启动失败。",clearCredentials:"清除凭证",clearCredentialsConfirm:"确定清除“{name}”已保存的频道凭证吗?频道行为和访问控制会保留。",credentialsCleared:"频道凭证已清除",clearCredentialsFailed:"清除频道凭证失败",clearCredentialsUnsaved:"请先保存或放弃未保存的频道改动,再清除凭证。",clearCredentialsGatewayRestartFailed:"凭证已清除,但 gateway 无法自动重启。",clearCredentialsGatewayRestartDisabled:"凭证已清除,但 gateway 自动重启已禁用。请手动重启 gateway 使改动生效。",botToken:"Bot Token",botTokenHint:"开发者门户获取的 Bot Token",proxyUrl:"代理 URL",proxyUrlHint:"可选的平台专用代理,支持 http://、https:// 和 socks5://",accessToken:"Access Token",accessTokenHint:"Matrix Access Token",homeserver:"Homeserver URL",homeserverHint:"Matrix 服务器地址",matrixUserId:"Matrix 用户 ID",matrixUserIdHint:"密码登录必填;Access Token 登录可选",matrixPassword:"Matrix 密码",matrixPasswordHint:"可替代 Access Token 的登录密码",appId:"App ID",appIdHint:"飞书 App ID",appSecret:"App Secret",appSecretHint:"飞书 App Secret",encryptKey:"加密密钥",encryptKeyHint:"飞书加密密钥",verificationToken:"验证令牌",verificationTokenHint:"飞书验证令牌",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:"通过二维码配对启用 WhatsApp",weixinToken:"微信 Token",weixinTokenHint:"通过 weixin CLI 扫码登录获取 (hermes weixin)",accountId:"Account ID",accountIdHint:"微信 Account ID",qrLogin:"扫码登录",qrRelogin:"重新登录",qrFetching:"正在获取二维码...",qrScanHint:"使用微信扫描二维码登录",qrScanedHint:"已扫描,请在手机上确认...",qqAppId:"App ID",qqAppIdHint:"QQ 开放平台机器人 App ID",qqAppSecret:"App Secret",qqAppSecretHint:"QQ 开放平台机器人 App Secret",qqMarkdown:"Markdown 支持",qqMarkdownHint:"启用 Markdown 格式消息(部分客户端可能不支持)",qqSandbox:"沙箱模式",qqSandboxHint:"启用沙箱环境(测试用)",qqQrScanHint:"使用 QQ 扫描上方二维码,或在手机上打开链接完成绑定"},gateways:{title:"网关",running:"运行中",stopped:"已停止",started:"已启动",startFailed:"启动失败",stopFailed:"停止失败"},language:{label:"语言",zh:"中文",en:"English"},terminal:{sessions:"会话",newTab:"新建终端",closeSession:"关闭此会话?",sessionExited:"已退出",processExited:"进程已退出,代码 {code}",noSessions:"暂无终端会话",connectionFailed:"终端服务连接失败",connectionClosed:"终端连接已关闭",connectionError:"终端连接错误"},groupChat:{agentLinkButton:"带自己的 Agent 入群",agentOwner:"归属人:{name}",agentLinkTitle:"把你的 Agent 加入房间",agentLinkDescription:"连接你自己的 Hermes 服务。服务会主动建立加密的出站连接,群聊不会获得你的登录凭据,也不能浏览你的本地工作区。",agentLinkTargetUrl:"你的 Hermes 服务地址",agentLinkTargetPlaceholder:"http://127.0.0.1:8748 或 https://your-hermes.example.com",agentLinkTargetRequired:"请输入 Hermes 服务地址。",agentLinkInvalidTarget:"请输入不含账号、路径、查询参数或片段的 HTTP/HTTPS 服务地址。",agentLinkOpenTarget:"登录并选择 Agent",agentLinkPopupBlocked:"授权窗口被浏览器拦截了,请允许此页面弹出窗口后重试。",agentLinkParentUnavailable:"授权窗口已与邀请页面断开,请关闭窗口后重新发起。",agentLinkParentUnconfirmed:"邀请页面未确认这次申请,请保持邀请页打开并重新发起授权。",agentLinkIncompleteConfiguration:"请选择完整的 Profile、服务商和模型后再申请接入。",agentLinkWaitingApproval:"正在等待群主批准这个 Agent…",agentLinkApproved:"群主已批准,正在连接你的 Agent…",agentLinkConnected:"你的 Agent 已连接到房间。",agentLinkError:"无法连接这个 Agent。",agentLinkRejected:"群主拒绝了这个 Agent 的接入请求。",agentLinkExpired:"Agent 接入请求已过期,请重新发起。",agentLinkPairingCode:"手动配对码",agentLinkPairingCodeHint:"如果授权窗口无法与当前页面通信,请把这个短时有效的配对码粘贴到授权窗口。",agentLinkCopyCode:"复制配对码",agentLinkAuthorizeTitle:"授权群聊 Agent",agentLinkAuthorizeDescription:"选择要连接的本地 Agent。群聊可以向它发送消息,但不能浏览你的本地工作区。",agentLinkSelectAgent:"Agent",agentLinkRequestConnection:"申请接入",agentLinkOrPairingCode:"或者使用手动配对码",agentLinkPairingCodePlaceholder:"粘贴 HGC1 配对码",agentLinkConnect:"连接 Agent",agentLinkSecurityHint:"只批准你认识的群聊。配对票据只能使用一次,并会很快过期。",agentLinkLoadFailed:"无法读取本地 Agent。",agentLinkConnectFailed:"无法连接所选 Agent。",agentLinkInvalidPairingCode:"配对码无效。",agentLinkClose:"关闭",agentLinkApprovalMismatch:"连接请求在你确认后发生了变化,请重新检查 Agent 后再试。",guestAgentsDisabled:"群主尚未开启“访客自带 Agent”。",guestAgentSettings:"访客 Agent 接入",allowGuestAgents:"允许成员带自己的 Agent 入群",maxGuestAgentsPerMember:"每位成员最多接入 Agent 数",ownerApprovalHint:"每个 Agent 仍然必须经过群主明确批准。",allowRemoteWorkspaceAccess:"允许远程 Agent 读写群聊工作区",remoteWorkspaceAccessHint:"开启后,已批准的远程 Agent 会在每次运行期间获得短期访问权限;敏感文件和群聊工作区以外的路径仍会被拦截。",agentPairingRequestTitle:"Agent 接入申请",agentPairingRequestDescription:"{user} 想从 {origin} 接入一个 Agent。",approveAgent:"批准 Agent",rejectAgent:"拒绝",agentPairingApproved:"已批准 Agent 接入",agentPairingRejected:"已拒绝 Agent 接入",title:"群聊",refactorNoticeTitle:"群聊升级说明",refactorNoticeMessage:"群聊已完成重大重构。如果遇到无法聊天的情况,请重新创建房间。",emptyState:"开始群聊对话",createRoom:"创建房间",joinByCode:"通过邀请码加入",shareTitle:"加入群聊",shareSubtitle:"输入邀请码即可进入,无需登录账号。",shareCodeHint:"该邀请码仅允许访问对应的群聊房间。",shareInvalidCode:"邀请码无效或已更新,请向分享者获取新的链接。",shareJoining:"正在进入群聊…",shareNameSubtitle:"进入房间前,请先设置你的姓名。",shareNameConflict:"该姓名已被房间内的用户或 Agent 使用,请更换一个姓名。",shareNameReserved:"该姓名为系统保留名称,请更换一个姓名。",shareEnterRoom:"进入房间",roomName:"房间名称",roomNamePlaceholder:"输入房间名称",inviteCode:"邀请码",inviteCodeSettings:"邀请码设置",inviteCodePlaceholder:"输入新的邀请码",generateInviteCode:"生成邀请码",inviteCodeRotateHint:"更新后旧邀请码将无法用于新成员加入。",inviteCodeUpdated:"邀请码已更新",inviteCodeUpdateFailed:"邀请码更新失败",autoGenerate:"自动生成",noRooms:"暂无房间",localRooms:"本地",remoteRooms:"远程",remoteRoomOffline:"远程连接已离线。",renameRemoteRoom:"重命名远程房间",renameRemoteRoomHint:"仅修改该房间在本机上的显示名称,不会修改远程房间名称。",remoteRoomRenamed:"远程房间显示名称已更新",remoteRoomRenameFailed:"更新远程房间显示名称失败",leaveRemoteRoom:"退出房间",leaveRemoteRoomConfirm:"确定退出“{name}”吗?本机接入该远程房间的所有 Agent 都会被移除,并删除对应的本地连接记录。",remoteRoomLeft:"已退出远程房间",remoteRoomLeaveFailed:"退出远程房间失败",remoteRoomLeavePartial:"本地记录已删除,但远程房间处于离线状态,有 {count} 个 Agent 连接未能收到退出通知。",selectOrCreate:"选择或创建一个房间开始聊天",agents:"智能体",allAgents:"所有 Agent",addAgent:"添加智能体",agentType:"Agent 类型",agentTypes:{hermes:"Hermes",ekko:"Ekko",codex:"Codex",claude:"Claude"},selectProfile:"选择一个配置",agentAdded:"智能体已添加",selectRoomFirst:"请先选择一个群组",agentAlreadyInRoom:"该智能体已在房间中",agentAddFailedCount:"{count} 个智能体未添加:{details}",editAgentTitle:"编辑 {name}",removeMember:"移出群聊",memberRemoved:"已将 {name} 移出群聊",memberRemovedNotice:"你已被群主移出群聊。邀请码仍有效时可以重新进入。",noAgents:"当前房间暂无智能体",members:"{count} 成员",roomCreated:"房间已创建",roomDeleted:"房间已删除",roomCloned:"房间已克隆",cloneRoom:"克隆房间",copyRoomLink:"复制房间链接",manualCopyRoomLinkHint:"浏览器无法自动复制,请选中链接后手动复制。",deleteRoomConfirm:"确定删除这个房间吗?",clearContext:"清理上下文",clearContextConfirm:"确定清理当前房间上下文吗?消息和压缩快照会被删除,智能体和成员会保留。",contextCleared:"上下文已清理",you:"你",joined:"已加入房间",joinFailed:"加入房间失败",inputPlaceholder:"输入消息... (Enter 发送)",messageDisplayLimit:"群聊最多展示 600 条消息",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:"压缩配置已保存",roomSettings:"房间设置",saveCompression:"保存压缩设置",compressNow:"立即压缩",compressingInProgress:"正在压缩中,请稍后",summarySettings:"滚动总结",summarySettingsDesc:"由无工具、无技能、无记忆的裸 Ekko Agent 按固定真人对话轮数维护房间共享总结。",summaryProvider:"总结 Provider",summaryProviderPlaceholder:"选择 Provider",summaryModel:"总结 Model",summaryModelPlaceholder:"选择 Model",summaryApiMode:"API Mode",summaryEveryTurns:"每 N 轮总结",summaryEveryTurnsDesc:"一轮等于一条真人消息;房间总结和锚点提交后,Agent 才会开始下一轮运行。",summaryConfigSaved:"总结设置已保存",summaryConfigurationRequired:"该群聊尚未配置总结器,请先选择 Profile、Provider、Model 和 API Mode 并保存。",summaryConfigurationOwnerRequired:"该群聊尚未配置总结器,请联系房间管理员完成配置后再发送消息。",saveSummaryConfig:"保存总结设置",currentSummary:"当前总结",summaryStatus:{idle:"待总结",summarizing:"正在总结",success:"总结成功",failed:"总结失败"},summaryUpdatedAt:"最后更新",summarizedTurns:"已总结轮数",summaryAnchor:"总结锚点",summaryMessagesAbove:"以上已总结",summaryNoAnchor:"尚无锚点",summaryContent:"总结内容",summaryEmpty:"尚未生成总结",summaryEditKeepsAnchor:"手动修改只更新总结正文,不会移动当前锚点。",saveSummary:"保存总结",summaryUpdated:"总结已更新",summaryNever:"从未",summaryLoadFailed:"加载房间总结失败"},usage:{title:"用量统计",refresh:"刷新",totalTokens:"总 Token 数",inputTokens:"输入",outputTokens:"输出",totalSessions:"总会话数",avgPerDay:"日均 ~{n}",estimatedCost:"预估费用",cacheHitRate:"缓存命中率",modelBreakdown:"模型分布",agentBreakdown:"Agent 分布",agents:{hermes:"Hermes Agent",claudeCode:"Claude Code",codex:"Codex",ekkoAgent:"Ekko Agent",unknown:"未知"},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:"复制路径",attachToChat:"添加到输入框",attachFailed:"添加文件失败",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:"保存",previewMode:"预览",sourceMode:"源码",tableMode:"表格",worksheet:"工作表",htmlPreviewTitle:"受限 HTML 预览",previewLoading:"正在加载预览...",previewFailed:"无法预览",previewMimeMismatch:"文件类型与请求的预览格式不一致。",downloadInstead:"改为下载",previousPage:"上一页",nextPage:"下一页",pageStatus:"第 {page} 页,共 {total} 页",zoom:"缩放",pdfPageLimit:"仅预览前 {count} 页。",tableTruncated:"为保持界面流畅,表格预览已截断。请下载文件查看全部行列。"},download:{downloading:"正在下载...",downloadFailed:"下载失败",fileNotFound:"文件不存在或已被删除",fileTooLarge:"文件过大(超过限制)",backendError:"文件读取失败,远程环境可能不可用",backendTimeout:"文件读取超时",unsupportedBackend:"当前 terminal backend 暂不支持文件下载",invalidPath:"无效的文件路径",contentDisplay:"内容展示",download:"下载",downloadFile:"下载文件"},changelog:{new_0_6_40_1:"本版本涵盖 v0.6.39 之后合并的全部 40 个 PR,涉及安全远程群聊、本地语音识别、Workflow 调度、全局审批、Chat Run Webhook、MCU 与 Coding Agent 稳定性",new_0_6_40_2:"群聊新增安全共享房间与远程 Agent,稳定 Agent 交接、在线状态与撤销流程,保留离线归属人头像,并在剪贴板不可用时提供房间链接手动复制(#2408、#2410、#2411、#2415、#2423)",new_0_6_40_3:"远程 Agent 支持文件传输与云端 workspace 上传;非归属人请求受更严格的 workspace、敏感信息和个人隐私记忆边界保护,同时修正归属与审批路由(#2413、#2430、#2433、#2435)",new_0_6_40_4:"群聊停止迁移旧版 Agent Link,并在列表中区分可折叠的本地与远程房间,支持远程房间别名、分享页入口和退出清理(#2424、#2459)",new_0_6_40_5:"群聊历史不再自动裁剪,工具结果可可靠保留 mention 文本并限制持久化消息 ID;悬空工具、审批对齐、审批路由和高负载 token 统计也得到修复(#2390、#2420、#2426、#2427、#2429、#2445)",new_0_6_40_6:"最近会话和群聊活动反馈更及时,工具面板展开加入平滑动画(#2389、#2414)",new_0_6_40_7:"全局审批现在可接管已存在的提示,展示更清晰的命令预览,并通过系统通知提醒待处理操作(#2406、#2425、#2432)",new_0_6_40_8:"新增基于 sherpa-onnx 的中英双语本地流式 STT,补足尾部静音以保留最后词语,并兼容 macOS 与 Windows Electron 的普通音频缓冲(#2447、#2448、#2461)",new_0_6_40_9:"Workflow 新增持久化定时运行与完整的调度管理界面,可创建、编辑、启停和删除计划(#2434、#2441)",new_0_6_40_10:"Chat Run 新增生命周期 Webhook 并移除未使用的旧端点;服务器同时提供轻量存活检查接口(#2422、#2452、#2453)",new_0_6_40_11:"MCU 可在 Ekko 与 Hermes Agent 之间选择运行时,Global Agent 头像与 MCU 状态显示也更准确(#2438、#2442)",new_0_6_40_12:"Coding Agent 强制使用执行身份,修正 Windows 运行持久化隔离、MCP 超时、跨模型 reasoning 回放、上下文用量估算和重复 Studio 指引(#2387、#2392、#2395、#2396、#2398、#2416)",new_0_6_40_13:"MoA 预设可为每个模型配置推理强度;图片生成关闭 Responses 远端存储,减少不必要的数据保留(#2439、#2449)",new_0_6_39_1:"Ekko Agent 新增显式初始化、受控 Node.js/Python 代码执行与工具授权,并能在前台运行中使用现有交互卡片提问,接收选择或文本后继续(#2362、#2368)",new_0_6_39_2:"群聊会等待房间加入确认后再发送,修复重连窗口偶发的“Not in room”;输入状态改为节流心跳,只有其他成员头像显示无文字呼吸灯(#2373)",new_0_6_39_3:"单聊和群聊中的 Coding Agent 工具事件现在由原生 CLI 生命周期统一驱动,工具参数完成后只发送一次开始事件,消除重复或悬空工具卡和大型群聊中工具 JSON 逐字刷新的卡顿(#2366、#2372)",new_0_6_39_4:"Coding Agent 提示词改走 stdin,保留多行及图片输入并绕过 Windows 命令长度限制;群聊也不再用固定两分钟上限中断仍在工作的 Codex、Claude Code 或 Ekko(#2354、#2357)",new_0_6_39_5:"Codex 在 Provider 代理流可恢复断开时,以原生 JSONL 和进程退出作为最终状态,避免任务已经完成却在群聊中被误报失败(#2375)",new_0_6_39_6:"版本管理会验证 Runtime 完整性并显示桌面端回退原因;无效 Runtime 不能激活,Web UI 下载与切换入口已隐藏,更新继续随桌面安装包提供(#2353)",new_0_6_39_7:"群聊运行标题现在只保留 Agent 名称,减少重复说明并让消息分组更简洁(#2352)",new_0_6_39_8:"ESP32-C3 远程连接现在会在设备发现时保持 Socket.IO 在线、复用固定上限的语音缓冲、使用退避重连,并在 Studio 短暂断线时保留登录,让远程扫描和语音交互更快、更稳定(#2383)",new_0_6_38_1:"Windows 桌面端启动时会自动修复 Agent 更新后缓存 Runtime 中失效的 Python 相对路径,恢复更新、Runtime 切换或存储迁移后的 CLI、日志与 Gateway",new_0_6_38_2:"官网兼容版本列表重新识别 Hermes 0.19.0,确保对应桌面端下载和兼容性检查继续可用(#2348)",new_0_6_37_1:"本次涵盖 14 个 PR 的版本以群聊全面重构为核心:每个 Agent 可独立选择 Profile、Provider、模型、API 模式、推理强度、身份和 workspace(#2334)",new_0_6_37_2:"群聊房间现在使用全新隔离运行,将每条回复与其 reasoning 和工具过程归组展示,并新增共享可编辑滚动摘要、摘要状态与边界、Agent mention、房间及 workspace 抽屉和旧房间迁移提示。语音自动播放会提前生成不同 Profile 的 TTS,同一 Profile 保持单并发,并严格按消息顺序播放,新回复不会覆盖正在播放的语音(#2334)",new_0_6_37_3:"MiniMax Coding Plan OAuth 现已支持 Global 与中国区,Codex、xAI、Anthropic、Nous 和 MiniMax 的授权凭证会通过持久 Runtime Bridge 自动刷新(#2337)",new_0_6_37_4:"ESP32-C3 v1 和 v2 新增可选自动聆听模式,支持本地 VAD、预录音、静音结束、播放抑制,并保留按键说话控制(#2338)",new_0_6_37_5:"MCU Global Agent 现使用简洁的 Ekko 语音模式,可委派安全的后台任务,保留会话历史和 workspace,并不再向设备转发过大的工具结果(#2326)",new_0_6_37_6:"自定义及 OpenAI 兼容 TTS 会自动重试 Provider 支持的音频格式,并将非 MP3 输出转换为 Hermes 可播放格式(#2328)",new_0_6_37_7:"Profile 导入与导出最长可运行 10 分钟,超时提示更明确,并支持并发归档隔离、文件名清理和临时文件回收(#2310、#2324)",new_0_6_37_8:"Hermes Agent Bridge 现会应用模型专属的默认推理强度,同时保留单次运行显式覆盖和旧 Runtime 回退逻辑(#2325)",new_0_6_37_9:"版本管理会分别显示真实安装的 Hermes Agent 版本和 Runtime 路径,并明确 CLI 更新范围与完全退出 Studio 的要求(#2323)",new_0_6_37_10:"Workspace 文件树缩小了层级缩进,让深层目录名称保持可见(#2340)",new_0_6_37_11:"桌面端默认升级到 Hermes Agent 0.20.0,使用固定源码和便携 Node/npm,支持 Windows 更新后重建的启动器、无系统 Python 更新,并保持托管 Gateway 隐藏运行(#2321、#2344)",new_0_6_37_12:"Windows Runtime 存储迁移现在无需管理员权限即可处理更新产生的链接,同时重定向 Python、支持 Unicode 自定义路径,并在首次重启时刷新 CLI 与 MCP shim(#2345)",new_0_6_37_13:"macOS 桌面签名改用显式临时 keychain,ARM64 与 x64 均兼容 macOS 26 runner 的严格模式(#2315)",new_0_6_36_1:"本版本涵盖 0.6.35 之后合并的全部 28 个 PR,涉及语音、阿拉伯语与 RTL、App Relay、Agent 稳定性、聊天体验、看板、Journey、MCU 字幕和 Ekko 请求日志",new_0_6_36_2:"语音设置已统一到“模型”页面,Hermes 原生与 Web UI Provider 可协同使用;自定义 TTS 支持选择 voice,Edge TTS 支持任意 voice ID 和阿拉伯语选项(#2260、#2265、#2267)",new_0_6_36_3:"阿拉伯语与端到端 RTL 支持现已覆盖文档流、Naive UI、聊天、群聊、Workflow、浮层、抽屉、逐内容块文本方向,并修正了 Profile 文案(#2269、#2270、#2271、#2273、#2277、#2294、#2303)",new_0_6_36_4:"活跃的后台委派任务会让 Agent Bridge 会话保持存活直至任务结束,避免空闲回收中断长时间运行的任务(#2254)",new_0_6_36_5:"桌面端群聊 Agent 列表已恢复点击操作,主窗口也可缩小至 769 像素而不会进入移动端布局(#2259、#2263)",new_0_6_36_6:"Codex、Claude Code 和 Ekko 产生的 workspace diff 现在只会显示在对应的助手消息中,并统一适用于实时、恢复和群聊场景(#2264)",new_0_6_36_7:"中英文 README 已更新为当前产品与 CLI 能力,官网中过时且绑定 0.6.12 版本的手册已移除(#2268)",new_0_6_36_8:"新增独立的无界面 App Relay,通过安全配对和认证访问白名单本地 API 与聊天流,无需将 Studio 直接暴露到公网(#2275)",new_0_6_36_9:"Desktop Agent Browser 现在可以安全分页读取较长的无障碍文本,并操作 snapshot 引用落在可见文本上的控件(#2278)",new_0_6_36_10:"聊天体验新增固定位置的 Provider 控件、按消息恢复滚动位置、紧凑的工具与终端侧栏、全尺寸预览和全宽 workspace diff(#2279、#2282、#2283、#2293)",new_0_6_36_11:"新的 Ekko 会话会获得按 Profile 隔离的默认 workspace,现有 workspace 和用户明确选择的目录保持不变(#2289)",new_0_6_36_12:"Memory 和 Skill 审批结果改为结构化并串行执行,避免显示错误的成功提示及同一 Profile 内的并发写入(#2295)",new_0_6_36_13:"看板新增可靠的任务归档和可平移画布,Journey 则升级为紧凑、确定性的 Memory 到 Skill 关系图(#2296、#2297)",new_0_6_36_14:"实时 reasoning 在工具边界间保持稳定,完成后归属到正确的消息或工具,也不再产生空的子 Agent 气泡(#2299)",new_0_6_36_15:"MCU 语音现在可在 ESP32-C3 v1 和 v2 上同步显示分页 GB2312 字幕,同时保持音频流畅播放(#2305)",new_0_6_36_16:"Ekko 现在为每次模型尝试写入一条紧凑的 model.request 日志,覆盖上下文压缩,并在没有工具时彻底省略 tool_choice(#2311)",new_0_6_35_1:"Ekko Agent 持久记忆现已在生产环境启用,支持按 Profile 隔离的 SQLite 存储、4000 Token 自动召回预算、更完善的全库相关性检索,以及更安全的模型请求处理(#2246)",new_0_6_34_1:"本版本涵盖 0.6.33 之后合并的全部 21 个 PR,聚焦用户自定义主题、Ekko 与 Coding Agent 增强、桌面和浏览器体验、自动化能力及可靠性修复",new_0_6_34_2:"用户可按账号自定义文字大小、文字与选中颜色和工作区背景,并在各页面获得一致的透明主题效果;Windows 窗口和浏览器设置同步跟随主题,Ekko 浏览器命令也可在 Windows 正常启动(#2242、#2243、#2244)",new_0_6_34_3:"Ekko 已在生产环境开放,支持按需发现 Skill 和多模态输入;受保护的 Skill 演进、Profile 隔离日志、协议持久化及 Responses 推理摘要进一步提升安全性与能力(#2215、#2236)",new_0_6_34_4:"Ekko 记忆新增偏好、关系、习惯、长期目标等可确定查询的结构化类型;长对话现已接入共享的快照式上下文压缩生命周期(#2229、#2230)",new_0_6_34_5:"Coding Agent 可在 Codex、Claude Code 和作用域 Provider 协议间完整保留图片输入,自动截断 Responses 超大工具输出,并按会话隔离运行配置和迟到事件(#2222、#2232、#2238)",new_0_6_34_6:"Hermes Workflow 能力预检不再因缺少 API 模式元数据而拒绝有效目标;Kanban 已适配 Hermes Agent 0.19 的任务语义和附件预览,Cron 的立即运行改为安全后台启动并加强创建校验(#2239、#2216、#2228)",new_0_6_34_7:"桌面端新增专注的独立聊天窗口,浏览器自动化可操作密码、支付和文件输入框,群聊中每个房间的人类成员名称与描述也会独立保存(#2209、#2210、#2212)",new_0_6_34_8:"可用会话级 /yolo 命令切换免审批模式,Agent 最大轮数移除 200 轮界面上限,Markdown 保留 ASCII 直引号,pt-BR 语言包也恢复缺失的变音符号(#2223、#2225、#2234、#2221)",new_0_6_34_9:"ESP32-C3 新增可配置的联网待机,在保持 Wi-Fi、登录、Profile 和 Socket.IO 状态的同时降低空闲功耗,并支持即时唤醒与持久化超时设置(#2218)",new_0_6_33_1:"本版本涵盖 0.6.32 之后合并的全部 16 个 PR,聚焦桌面 Agent Browser、Workflow 运行证据与时限、文件和聊天交互、Provider 模型刷新及可靠性修复",new_0_6_33_2:"桌面端新增可见的多标签 Agent Browser,支持隔离 Profile、代理/存储/下载管理、加密持久化 Cookie、受保护的 Agent 操作和延迟 MCP 工具发现(#2177、#2182)",new_0_6_33_3:"单聊/群聊链接和需鉴权的 HTML 预览可在内嵌浏览器打开;同时优化权限操作间距、跨平台导航图标,以及 Windows 侧栏与标题栏联动(#2191、#2194、#2198)",new_0_6_33_4:"Workflow 运行会保留启动时不可变的可视快照,可为 Run/Rerun 设置统一总时限并显示已用/剩余时间证据,历史与详情也改为按真实消费路径分页展示(#2171、#2173、#2180)",new_0_6_33_5:"可把任意文件直接粘贴到单聊/群聊,或从 workspace 右键菜单添加到聊天;更紧凑的文件元数据列为文件名留出更多空间(#2175、#2176)",new_0_6_33_6:"每个已配置 Provider 均可单独刷新模型目录,在删除前确认、保留不可用默认模型并支持一次恢复;同时覆盖 OAuth Provider、完整多语言和表单自动填充行为(#2115)",new_0_6_33_7:"中止/暂停状态按聊天会话隔离,后台会话不再影响当前会话的停止按钮;桌面端选中文字和输入框也新增原生右键操作(#2203、#2204)",new_0_6_33_8:"桌面退出、更新和安装采用有时限的优雅关闭,仅在清理超时后强制终止剩余 Agent Bridge、MCP、浏览器和 Web UI 进程树(#2193)",new_0_6_33_9:"MCU 语音会话隔离前台与后台结果;MiniMax 兼容的 MCP 工具名也保持在 Provider 长度限制内,并继续兼容旧调用方(#2181、#2169)",new_0_6_32_1:"本版本涵盖 0.6.31 之后合并的全部 14 个 PR,聚焦会话分类与压缩、群聊、Workflow 路由、Skill Bundle、Ekko 记忆、Hermes 0.19 和桌面窗口界面",new_0_6_32_2:"群聊 {'@'}mention 现在可在 CJK 文本、Emoji 和标点后正常触发;房主也可在房间设置中查看、生成和轮换邀请码(#2133、#2141)",new_0_6_32_3:"Workflow 在 handoff 和重新连接过程中会保留每次 Hermes Bridge 运行的来源;Scoped Codex 和 Claude Code 节点也可为有效 API Key 目标使用 launcher 支持的协议(#2137、#2154)",new_0_6_32_4:"会话新增全局分类、更准确的 Markdown 感知搜索排序,以及在编辑、分支和并发运行中保持正确并限制历史范围的游标压缩;完整压缩方案也已形成文档(#2139、#2143、#2145、#2146)",new_0_6_32_5:"现在可直接在聊天中创建、浏览、运行和删除 Profile 级 Skill Bundle,并清楚查看其中包含的 Skill(#2156)",new_0_6_32_6:"Ekko 记忆改用 Profile 隔离的单一规范模型,支持 revision 校验的精确修改、更完整的来源审计和更严格的相关性过滤(#2159)",new_0_6_32_7:"Hermes 0.19 的助手中间消息会以独立气泡实时显示并保存;普通单聊也可异步投递持久化的后台委派结果(#2160)",new_0_6_32_8:"新的桌面 Runtime 构建、后备路径和 Windows CLI shim 现在默认使用 Hermes Agent 0.19.0(#2161)",new_0_6_32_9:"桌面窗口控件已融入页面框架:macOS 红绿灯位于侧边栏,Windows 控件位于主内容上方,Linux 继续使用原生窗口装饰(#2162)",new_0_6_32_10:"开发文档现在同时支持直接使用当前 checkout,并可按需采用隔离的 Git worktree(#2155)"}};export{e as default};
1
+ var e={browser:{title:"浏览器",settings:"浏览器设置",desktopOnly:"内置浏览器仅在 Hermes Studio 桌面端可用。",newTab:"新标签页",back:"后退",forward:"前进",reload:"刷新",stop:"停止",addressPlaceholder:"搜索或输入网址",selectElement:"选择元素",selectRegion:"框选区域",annotationPlaceholder:"描述希望 Agent 检查或修改的内容…",selectionData:"浏览器选区数据",annotationAdded:"截图已添加到对话输入框",annotationCount:"已标注 {count} 处",annotationLabel:"标注 {index}",clearAnnotations:"清除标注",finishAnnotation:"完成",agent:"Agent",agentControlling:"{agent} 正在控制此标签页",agentWaiting:"{agent} 正在等待你的确认",takeOver:"接管",tabCrashed:"此标签页已崩溃。",recoverTab:"重新加载",profiles:"配置档案",profileName:"配置名称",addProfile:"添加配置",currentProfile:"当前使用",switchProfile:"切换使用",editProfile:"编辑配置",profileDirectory:"Profile 数据目录",downloadDirectory:"下载目录",profileRootDirectory:"配置根目录",chooseProfileRootDirectory:"选择空目录",profileRootDirectoryHint:"请选择空目录。浏览器数据使用 {data},下载文件使用 {download}。",proxy:"代理",proxyMode:"代理模式",proxyDirect:"直连",proxySystem:"系统代理",proxyCustom:"自定义代理",proxyServer:"代理服务器",proxyServerPlaceholder:"例如:http://127.0.0.1:7890 或 socks5://127.0.0.1:1080",askBeforeDownload:"每次下载前询问保存位置",downloadConflictPolicy:"文件重名处理",uniquifyDownloads:"自动生成唯一文件名",askOnConflict:"文件已存在时询问",downloads:"下载记录",downloadStateProgressing:"下载中",downloadStateCompleted:"已完成",downloadStateCancelled:"已取消",downloadStateInterrupted:"已中断",downloadStateBlocked:"已阻止",permissions:"网站权限",permissionsHint:"远程页面权限默认全部拒绝,并在此处保留审计记录。",blocked:"已阻止",profileSwitchTitle:"切换浏览器 Profile?",profileSwitchWarning:"可能中断 {agents} 个 Agent 操作、{downloads} 个下载任务和 {annotations} 个批注任务。",deleteProfileTitle:"删除浏览器 Profile?",deleteProfileWarning:"托管的 Profile 数据将移入系统废纸篓,自定义目录不会被删除。",clearCache:"清除缓存",clearPermissionAudit:"清除权限记录",clearSiteData:"清除站点数据",clearSiteDataWarning:"这会退出所选 Profile 中的网站登录,并清除 Cookie 和本地存储。",dataCleared:"浏览器数据已清除",loadFailed:"内置浏览器启动失败"},login:{title:"Hermes Studio",description:"输入用户名和密码以继续。",placeholder:"访问令牌",submit:"登录",tokenRequired:"请输入访问令牌",invalidToken:"令牌无效",connectionFailed:"无法连接到服务器",passwordLogin:"密码登录",tokenLogin:"令牌登录",usernamePlaceholder:"用户名",passwordPlaceholder:"密码",defaultCredentialsHint:"默认登录名:admin,默认密码:123456",credentialsRequired:"请输入用户名和密码",invalidCredentials:"用户名或密码错误",tooManyAttempts:"登录失败次数过多,请稍后重试",lockResetHint:"如果这是你的服务器,可以执行以下命令清除登录锁定:",defaultLoginResetHint:"如需重置默认 admin 密码,可以执行:",desktopLockResetHint:"登录失败次数过多。请打开系统托盘菜单,选择“重置登录”来重置密码。",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:"重试",reset:"重置",edit:"编辑",save:"保存",saved:"已保存",saveFailed:"保存失败",deleteFailed:"删除失败",ok:"确定",copied:"已复制",copy:"复制",update:"更新",create:"创建",noData:"暂无数据",expired:"已过期",fetch:"获取",add:"添加",enable:"启用",disable:"禁用",configured:"已配置",notConfigured:"未配置",confirm:"确定",expand:"展开",collapse:"收起",start:"启动",stop:"停止"},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:"对话",backToChat:"返回",search:"搜索",apiRelay:"饲料",history:"历史",jobs:"任务",kanban:"看板",workflow:"工作流",models:"模型",profiles:"配置",plugins:"插件",mcp:"MCP",petdex:"宠物",skills:"技能",memory:"记忆",logs:"日志",usage:"用量",performance:"性能监控",journey:"学习轨迹",skillsUsage:"技能用量",channels:"频道",gateways:"网关",terminal:"终端",browser:"浏览器",singleChat:"单聊",globalAgent:"全局",groupChat:"群聊",files:"文件",devices:"设备",groupConversation:"对话",groupConversationShort:"对话",groupPlatform:"平台",groupAgent:"助手",groupAgentShort:"助手",groupSystem:"系统",groupSystemShort:"系统",groupMonitoring:"监控",groupMonitoringShort:"监控",groupTools:"工具",groupToolsShort:"工具",codingAgents:"编程工具",versionPreview:"版本预览",theme:"主题",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:"暂无更新日志",versionManagement:"版本管理",updateAvailableLabel:"(有新版)",dockerUpdateTitle:"Docker 升级",dockerUpdateGuide:"当前运行在 Docker 环境中,请拉取最新镜像并重建容器来升级:",dockerUpdateNote:"数据会持续保留,重建容器不会丢失数据。"},runtimeVersions:{title:"版本管理",runtimeTitle:"Hermes Runtime",currentHermesAgentVersion:"当前 Hermes Agent 版本",activeRuntimeDirectory:"当前 Runtime 路径",cliUpdateDescription:"Hermes Runtime 0.19.1 及以上版本支持通过以下命令单独升级内置的 Hermes Agent;该命令不会升级 Hermes Studio 桌面端或 Web UI。执行前请先完全退出 Hermes Studio:",webUiTitle:"Web UI",platform:"平台",currentWebUi:"当前 Web UI",activeVersion:"当前启用版本",runtimeDirectory:"Runtime 存储目录",chooseRuntimeDirectory:"选择目录",resetRuntimeDirectory:"恢复系统默认",runtimeDirectoryHint:"下次重启时会在本地服务启动前复制并校验当前 Runtime,旧目录会保留;后续 Runtime 下载也会保存在这里。",runtimeDirectorySaved:"Runtime 迁移已安排,重启 Hermes Studio 后执行。",runtimeMigrationPending:"待迁移到:{directory}",runtimeMigrationFailed:"存储目录迁移失败,已继续使用原目录",runtimeActivationFailed:"所选 Runtime 无法启动,Hermes Studio 已改用其他已安装版本",active:"已启用",installed:"已安装",download:"下载",downloadGithub:"GitHub 下载",downloadCf:"Cloudflare 下载",github:"GitHub",cf:"Cloudflare",useVersion:"下次启动使用",deleteVersion:"删除",deleteRuntimeConfirm:"删除 Hermes Runtime {version}?",deleteWebUiConfirm:"删除 Web UI {version}?",deleteRuntimeSuccess:"Runtime 已删除",deleteWebUiSuccess:"Web UI 已删除",refresh:"刷新",noVersions:"暂无可用版本",remoteLoadFailed:"远程版本加载失败",downloadTasks:"下载任务",downloadStarted:"已开始下载",activateSuccess:"版本选择已保存,重启 Hermes Studio 后生效。",jobStatus:{queued:"排队中",running:"下载中",completed:"已完成",failed:"失败"},jobStageStatus:{queued:"排队中",resolve:"解析中",download:"下载中",verify:"校验中",extract:"解压中",install:"安装中",completed:"已完成",failed:"失败"},jobStage:{queued:"排队中",download:"下载中",resolveRuntime:"正在解析 Runtime 包",verifyRuntime:"正在校验 Runtime 压缩包",extractRuntime:"正在解压 Runtime 压缩包",installRuntime:"正在安装 Runtime",resolveWebUi:"正在解析 Web UI 包",verifyWebUi:"正在校验 Web UI 压缩包",extractWebUi:"正在解压 Web UI 压缩包",installWebUi:"正在安装 Web UI",completed:"已完成",failed:"失败"}},mcuDevices:{title:"小方盒",subtitle:"查看设备链接状态",name:"名称",nameOptional:"名称可为空",deviceCode:"设备码",deviceCodePlaceholder:"请输入设备码",deviceCodeRequired:"请输入设备码",channel:"渠道",official:"官方",unofficial:"非官方",createdAt:"添加时间",lanStatus:"局域网",remoteStatus:"远程",connected:"已连接",disconnected:"未连接",remoteConnect:"远程连接",remoteConnected:"远程已连接",remoteConnectFailed:"远程连接失败",remoteDisconnect:"断开连接",remoteDisconnected:"远程已断开",remoteDisconnectFailed:"远程断开失败",actions:"操作",add:"添加",addTitle:"添加 MCU 设备",added:"MCU 设备已添加",addFailed:"添加 MCU 设备失败",purchase:"购买",edit:"编辑",editNameTitle:"编辑名称",nameUpdated:"名称已更新",nameUpdateFailed:"更新名称失败",delete:"删除",deleteTitle:"删除 MCU 设备",deleteConfirm:"确定删除「{name}」吗?",deleted:"MCU 设备已删除",deleteFailed:"删除 MCU 设备失败",loadFailed:"加载 MCU 设备失败",close:"关闭"},devices:{title:"设备",count:"{count} 台设备",lastScanned:"上次扫描:{time}",refresh:"刷新",empty:"暂无设备",computer:"电脑",endpointLabel:"端",statusLabel:"状态",online:"在线",offline:"离线",address:"地址",os:"系统",agentVersion:"Agent",webUiVersion:"Web UI",responseMs:"延迟",lastSeen:"最后发现",open:"打开",never:"从未",unknown:"未知",loadFailed:"加载设备失败",scanFailed:"扫描设备失败",updateFailed:"更新设备失败",duplicateRequest:"已存在待处理的配对申请",manualPairing:"远程配对",copyPairingLink:"复制配对链接",manualUrlPlaceholder:"https://device.example.com",manualUrlRequired:"请输入设备链接",manualRequestSent:"配对申请已发送",manualRequestFailed:"远程配对申请失败",pairingLinkCopied:"配对链接已复制",pairingLinkCopyFailed:"复制配对链接失败",pairingCodeTitle:"输入配对码",pairingCodePlaceholder:"配对码",pairingCodeRequired:"请输入配对码",submitPairingRequest:"提交申请",processed:"已处理",unprocessed:"未处理",deleteHistory:"删除记录",deleteHistoryConfirm:"确认删除这条申请记录并撤销该设备连接权限?",requests:"申请列表",requestsWithCount:"申请列表({count})",noRequests:"暂无申请",requestPairing:"申请配对",paired:"已配对",approve:"通过",reject:"拒绝",block:"拉黑",unblock:"解除拉黑",inboundStatus:{none:"允许申请",pending:"待处理",approved:"已通过",rejected:"已拒绝",blocked:"黑名单"},outboundStatus:{none:"未配对",pending:"已申请",approved:"已配对",rejected:"已拒绝",blocked:"被拉黑"},endpoint:{web:"Web 端",desktop:"桌面端",custom:"自定义"}},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:"暂无活跃会话"},journey:{title:"学习轨迹",play:"播放学习轨迹",pause:"暂停学习轨迹",refresh:"刷新",categorySelection:"分类选择",nodeKinds:"节点类型",description:"描述",canvasInstructions:"使用方向键预览节点,按 Enter 打开详情,按 Escape 清除选择。",loadFailed:"学习轨迹加载失败",nodes:"节点",edges:"关系",skills:"技能",memories:"记忆",clusters:"分组",profile:"Profile",source:"来源",learnedSkills:"已学习技能",memorySkillEdges:"记忆关联",allKinds:"全部类型",allCategories:"全部分组",searchPlaceholder:"搜索节点",noClusters:"暂无分组",noNodes:"暂无学习轨迹节点",noCategory:"未分组",category:"分组",useCount:"使用次数",createdBy:"创建来源",timestamp:"时间",pinned:"已固定"},drawer:{terminal:"终端",files:"工作区"},subagent:{title:"后台子任务",noGoal:"未命名后台子任务",open:"打开后台子任务实时输出",close:"关闭后台子任务输出",waiting:"正在等待实时输出…",tool:"工具",tools:"{count} 次工具调用",tokens:"输入 {input} · 输出 {output}",started:"已启动",running:"执行中",completed:"已完成",failed:"执行失败",cancelled:"已取消",interrupted:"已停止"},realtimeVoice:{title:"实时语音",mode:"语音模式",open:"进入实时语音",back:"返回对话",connected:"语音链路就绪",turnMode:"实时预览 · 逐轮模式",browserStt:"浏览器",browserTts:"浏览器",untitledSession:"未命名对话",sessionMissing:"当前对话不可用。",backendStreamRequired:"手机端和桌面端实时语音需要先配置后端语音转写服务。",networkUnavailableNoFallback:"浏览器语音识别网络不可用,且当前没有配置可用的备用 STT。",liveTranscript:"实时转写",transcriptPlaceholder:"轻触语音核心,然后开始说话",recentTurns:"最近对话",you:"你",mute:"静音输出",unmute:"恢复声音",finishTurn:"结束本轮",speak:"开始说话",end:"结束",status:{idle:"准备就绪",paused:"麦克风已关闭",listening:"正在聆听",processing:"正在转写",thinking:"{agent} 正在思考",speaking:"{agent} 正在回答",error:"语音链路中断"},hint:{idle:"轻触中央区域开始一轮语音",paused:"准备好后重新打开麦克风",listening:"自然停顿后自动发送,也可以轻触结束",listeningManual:"正在录音,再次轻触中央区域结束并转写",processing:"正在将你的语音转换为文字",thinking:"消息已发送到当前对话",speaking:"你可以随时打断回答",error:"轻触中央区域重试"}},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 对话",emptyStateAgent:"开始与 {agent} 对话",viewOlderInHistory:"前面的消息请到历史记录查看",scrollToBottom:"滚动到底部",forkedFrom:"Fork 来源",previousLastMessage:"上一段对话的最后一条消息",cliEmptyState:"开始 CLI 对话",outlineTitle:"会话大纲",outlineEmpty:"暂无会话内容",outlineUserQuestion:"用户问题",inputPlaceholder:"输入消息... (Enter 发送,Shift+Enter 换行)",inputHeightResizeHint:"拖拽调整聊天输入框高度,双击恢复自动高度。",slashCommandArgs:{message:"<消息>",title:"<标题>",text:"<文本>"},slashCommands:{usage:"计算当前会话用量",status:"查看会话状态和队列",yolo:"切换当前会话 YOLO 模式并跳过危险命令审批",abort:"停止当前 Bridge 运行",queue:"把消息加入当前运行后的队列",learn:"从描述的来源学习可复用技能",plan:"生成一份 Markdown 实施计划",moa:"用默认组合模型运行一次性提示",goal:"设置一个跨轮次持续推进的目标",goalStatus:"查看当前目标状态",goalPause:"暂停当前目标循环",goalResume:"继续已暂停的目标循环",goalDone:"完成并清除当前目标",goalClear:"清除当前目标",subgoal:"为当前目标追加验收条件",clear:"清空当前显示内容",clearHistory:"删除当前会话已入库的消息历史",title:"重命名当前会话",compress:"空闲时触发上下文压缩",fork:"将当前空闲会话 fork 成一个新的关联对话",steer:"向当前 Bridge 运行发送引导文本",destroy:"释放当前会话的 Bridge Agent",reloadMcp:"重载 MCP 服务器",reloadSkills:"重载技能命令",bundles:"查看 Skill Bundle",bundlesCreate:"创建 Skill Bundle"},bundlePicker:{title:"Skill Bundles",create:"创建 Bundle",searchPlaceholder:"搜索 Bundle...",skillCount:"{count} 个 Skills",skillsLabel:"包含 Skills",noSkills:"未配置 Skill",deleteBundle:"删除 {name}",deleteTitle:"删除 Bundle",deleteConfirm:"确定从当前 Profile 删除“{name}”吗?此操作无法撤销。",deleteFailed:"删除 Bundle 失败",deleted:"Bundle 已删除",noBundles:"还没有 Bundle,可创建一个来组合多个 Skills。",noMatch:"没有匹配的 Bundle"},bundleCreator:{title:"创建 Skill Bundle",name:"名称",namePlaceholder:"例如:PR Review Team",nameHint:"仅允许英文字母、数字、空格、连字符和下划线。",description:"描述",descriptionPlaceholder:"这个 Bundle 适合处理什么任务?",skills:"Skills",skillsPlaceholder:"选择一个或多个 Skills",nameRequired:"请输入 Bundle 名称",nameInvalid:"请输入至少包含一个英文字母的英文名称",skillsRequired:"请至少选择一个 Skill",skillsLoadFailed:"加载 Skills 失败",createFailed:"创建 Bundle 失败",created:"Bundle 已创建"},attachFiles:"添加附件",reasoningEffort:{tooltip:"推理强度",defaultLabel:"默认",options:{default:"默认 (config.yaml)",none:"无",minimal:"极低",low:"低",medium:"中",high:"高",max:"Max",xhigh:"超高",ultra:"极致"}},autoPlaySpeech:"自动播放语音",voiceInput:{startCapture:"开始语音输入",stopCaptureAndInsert:"停止语音输入并插入到输入框",cancelCapture:"取消语音输入",statusLabel:"状态:{status}",transcriptLabel:"转写:{text}",errorLabel:"错误:{error}",recentEvents:"最近事件",status:{idle:"空闲",capturing:"正在聆听",transcribing:"正在转写",sending:"正在插入输入框",error:"错误"},browserSpeechUnsupported:"当前浏览器不支持内置语音识别。",browserSpeechFailed:"浏览器语音识别失败。",browserSpeechFailedWithReason:"浏览器语音识别失败:{error}。",microphoneUnsupported:"当前浏览器不支持麦克风录音。",microphoneRecordingFailed:"麦克风录音失败。"},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:"暂无会话",recent:"最近",recentCount:"最近会话数量",loadMoreSessions:"加载更多会话",searchTitle:"搜索会话",searchSubtitle:"按标题或消息内容搜索",searchScope:"搜索范围:仅 Web UI 本地会话库;不包含只读 Hermes 历史会话。",searchHint:"Cmd/Ctrl+K",searchPlaceholder:"搜索会话...",searchEmpty:"最近会话",searchRecent:"最近会话",searchNoResults:"没有匹配的会话",searchNoSnippet:"没有可显示的摘要",searchEnterHint:"Enter 打开 · Esc 关闭",searchFailed:"搜索会话失败",newChat:"新建对话",category:"分类",uncategorized:"未分类",categoryPlaceholder:"选择或新建分类",categoryCreateHint:"选择已有分类,或输入新分类名称后按 Enter 创建。",categoryCreated:"已创建分类“{name}”",categoryCreateFailed:"创建分类失败",categoryLoadFailed:"加载分类失败",moveToCategory:"移动到分类",categoryUpdated:"分类已更新",categoryUpdateFailed:"更新分类失败",renameCategory:"重命名分类",deleteCategory:"删除分类",enterCategoryName:"输入分类名称",confirmDeleteCategory:"确定删除“{name}”吗?其中的会话将移至“未分类”。",categoryRenamed:"分类已重命名",categoryRenameFailed:"重命名分类失败",categoryDeleted:"分类已删除",categoryDeleteFailed:"删除分类失败",agent:"Agent",approvalKicker:"工具调用授权",toolResultUnavailable:"执行已中断,未收到工具结果",approvalCommand:"待执行命令",approvalTitle:"运行前请确认工具调用",approvalAgree:"同意",approvalAllowOnce:"仅本次允许",approvalAllowSession:"本会话允许",approvalAlways:"始终允许",approvalDeny:"拒绝",clarifyKicker:"Agent 需要确认",clarifyTitle:"Agent 有一个问题需要您回答",clarifyPlaceholder:"输入你的回答...",clarifySubmit:"回复",clarifyDismiss:"忽略",newCliChat:"新建 CLI",deleteSession:"确定删除此会话?",sessionDeleted:"会话已删除",toggleBatchMode:"批量选择",selectAll:"全选",confirmBatchDelete:"确定删除选中的 {count} 个会话?",batchDeleteSuccess:"已删除 {count} 个会话",batchDeletePartial:"{failed} 个会话删除失败",batchDeleteFailed:"批量删除失败",importToWebUi:"导入到 Web UI",importSessionSuccess:"会话已导入 Web UI",importSessionAlreadyExists:"会话已存在于 Web UI",importSessionFailed:"导入会话失败",rename:"重命名",archiveSession:"归档",unarchiveSession:"取消归档",pin:"置顶",unpin:"取消置顶",pinned:"已置顶",chatMode:"聊天",liveMode:"实时",liveSessions:"实时会话",recentBadge:"最近",linkedSessions:"关联 {count} 个会话",noVisibleMessages:"没有人类可见消息。",monitorRoleUser:"用户",monitorRoleAssistant:"助手",copySessionLink:"复制会话链接",openSessionInNewTab:"在新标签页打开",openSessionInNewWindow:"在新窗口打开",sessionLinkCopied:"Session link copied",copySessionId:"复制会话 ID",export:"导出",exportFull:"全量导出 (JSON)",exportCompressed:"压缩导出 (TXT)",exportCompressing:"正在压缩上下文,请稍候...",exportSuccess:"会话已导出",exportFailed:"导出失败",renamed:"已重命名",renameFailed:"重命名失败",sessionArchived:"会话已归档",archiveSessionFailed:"归档会话失败",sessionUnarchived:"已取消归档",unarchiveSessionFailed:"取消归档失败",renameSession:"重命名会话",sessionNotFound:"会话未找到",enterNewTitle:"输入新标题",workspace:"工作区",workspaceDefault:"默认",workspaceDefaultTooltip:"此工作区已设为默认,新建对话时自动填充",workspacePin:"设为默认工作区",workspaceUnpin:"取消默认工作区",workspaceRecent:"最近使用",defaultWorkspace:"默认工作区",more:"更多",setWorkspace:"设置工作区",setWorkspaceTitle:"设置会话工作区",workspacePlaceholder:"输入项目路径,例如 /home/user/project",folderPickerEmpty:"(空)",folderPickerNoFolders:"暂无工作区文件夹",folderPickerSelected:"已选择:",workspaceSet:"工作区已设置",workspaceSetFailed:"设置工作区失败",setModel:"设置模型",setModelTitle:"设置会话模型",standardModels:"普通模型",moaPresets:"MoA 组合",noMoaPresets:"暂无可用的 MoA 组合",modelType:"模型类型",modelSet:"模型已设置",modelSwitching:"正在切换模型...",modelSetFailed:"设置模型失败",other:"其他",runFailed:"运行失败",error:"错误",tool:"工具",arguments:"参数",result:"结果",workspaceChanges:"工作区变更",changedFiles:"{files} 个文件已更改",changesThisTurn:"本轮修改",diffUnavailable:"无法显示 diff",binaryFileDiffUnavailable:"二进制文件无法显示 diff",truncated:"... (已截断)",unchangedLines:"{count} 行未修改",executionDuration:"执行时长",thinkingLabel:"思考过程",thinkingInProgress:"正在思考",thinkingShow:"展开思考过程",thinkingHide:"收起思考过程",thinkingDuration:"已观察 {duration}",thinkingChars:"{count} 字",copyBubble:"复制消息",copiedBubble:"已复制",copyFailed:"复制失败",referenceMessage:"引用消息",cancelReference:"取消引用",playSpeech:"播放语音",pauseSpeech:"暂停",resumeSpeech:"继续",stopSpeech:"停止",speechNotSupported:"此浏览器不支持语音播放"},workflow:{title:"工作流",profile:"配置",namePlaceholder:"工作流名称",canvasAriaLabel:"工作流画布",workspace:{title:"选择工作区",select:"选择工作区",clear:"清空工作区"},actions:{newWorkflow:"新建工作流",addNode:"添加节点",createWorkflowFirst:"请先创建工作流",reset:"重置",startExecution:"开始执行",executionPending:"工作流执行功能待接入",executionStarted:"工作流已开始执行",executionCompleted:"工作流执行完成",executionFailed:"工作流执行失败",rerunDownstreamKeepNode:"保留此节点消息向下执行",rerunDownstreamClearNode:"清除此节点消息向下运行",rerunDownstreamStarted:"已开始向下重跑",rerunFromNodeStarted:"已开始从此节点重跑",rerunFailed:"工作流重跑失败",deleteNode:"删除节点",deleteEdge:"删除连接线",editEdge:"编辑连接线",undo:"撤销",importWorkflow:"导入 Workflow",exportWorkflow:"导出 Workflow",imported:"Workflow 导入成功",exported:"Workflow 导出成功",importFailed:"Workflow 导入失败",exportFailed:"Workflow 导出失败"},budget:{runTitle:"选择 Run 时间预算",rerunTitle:"选择 Rerun 时间预算",totalLabel:"整条 Run 总预算",customMinutes:"自定义分钟数",customPlaceholder:"分钟",invalidCustom:"自定义 Run 预算必须介于 0.1 到 1440 分钟",help:"这是整条 Run 共用的绝对截止时间。每个节点只获得当时的剩余时间,循环不会重置预算。",options:{unlimited:"不设截止时间",30:"30 分钟",60:"60 分钟",90:"90 分钟",custom:"自定义"},unlimitedSummary:"不设截止时间",unlimitedHelp:"本次 Run 没有配置时间截止点。",summary:"总预算 {total} · 已用 {elapsed} · 剩余 {remaining}",deadline:"截止时间:{deadline}",nodeStartRemaining:"节点启动时剩余 {remaining}"},schedule:{title:"工作流定时计划",manage:"管理定时计划",createTitle:"创建定时计划",editTitle:"编辑定时计划",create:"创建定时计划",save:"保存定时计划",edit:"编辑定时计划",delete:"删除定时计划",deleteConfirm:"要删除此定时计划吗?",deleted:"定时计划已删除",enable:"启用定时计划",disable:"停用定时计划",enabled:"已启用",disabled:"已停用",empty:"暂无定时计划",cron:"Cron 表达式",cronPlaceholder:"例如:0 9 * * * 或 {'@'}daily",timezone:"时区",timezonePlaceholder:"IANA 时区,例如 Asia/Shanghai",initialInput:"初始输入",initialInputPlaceholder:"每次定时运行可选的输入内容",startNodes:"起始节点",startNodesPlaceholder:"默认使用工作流起始节点",timeout:"总超时(分钟)",timeoutPlaceholder:"不设截止时间",policies:"并发:跳过 · 错过运行:跳过",lastScheduled:"上次计划时间",nextRun:"下次运行",lastRun:"上次运行",never:"从未",loadFailed:"加载定时计划失败",saveFailed:"保存定时计划失败",saved:"定时计划已保存",deleteFailed:"删除定时计划失败",required:"必须填写 Cron 表达式和时区",reset:"重置",presets:{hourly:"每小时",daily:"每天",weekly:"每周",monthly:"每月"}},evidence:{historyPage:"运行历史",detailsPage:"运行详情",backToRuns:"返回运行历史",resultStatus:"状态",duration:"耗时",budgetLabel:"预算",actualExecution:"实际执行",otherJudgments:"其他判断",loopEvents:"循环事件",evaluatedNotExecuted:"已判断,未执行",ariaLabel:"Workflow 执行详情",title:"执行详情",count:"{count} 条",intro:"展示本次执行的路径选择、循环轮次和异常节点。",empty:"暂无执行详情",loadFailed:"读取持久化执行详情失败",summaryTitle:"运行结论",blockedAt:"卡在 {gate}",actualPath:"实际执行路径",noActualPath:"本次未采用任何路径",pathChecks:"路径判断",selectedPaths:"已采用路径",otherPaths:"其他判断与事件",selectedCount:"已采用 {count} 条",otherCount:"未采用 {count} 条",eventCount:"事件 {count} 条",showOtherPaths:"查看其他详情({count})",hideOtherPaths:"收起其他详情",runDetails:"运行详情",actualPathSteps:"实际路径步骤",nodeBudgetDetails:"时间预算详情",condition:"条件",conditionMatched:"已匹配",conditionNotMatched:"未匹配",sourceOutcome:"节点结果",sourceReturned:"正常返回",sourceFailed:"执行失败",sourceSkippedStatus:"未执行",checkedData:"检查的数据",entireReplyText:"完整回复文本",errorText:"错误文本",jsonFieldValue:"单个 JSON 字段值",advancedPathValue:"高级路径的值",comparison:"比较方式",textToFind:"要查找的文字",expectedFieldValue:"期望的字段值",parsedBusinessDecision:"解析出的业务结论",failedGateLabel:"失败环节(failed_gate 字段的值)",failedGateValue:"失败环节(failed_gate 字段的值):{gate}",decisions:{blocked:"已阻塞",released:"已发布",verified:"已验证",skipped:"无需处理"},node:"异常节点",edge:"执行路径",loop:"循环",unknownNode:"未知节点",pathTitle:"{source} → {target}",loopPass:"循环第 {count} 轮",exceptionalNode:"该节点未正常完成。",loopPassNamed:"{node} · 第 {count} 轮",technical:"技术信息",recordId:"记录 ID",sequence:"执行顺序",rawStatus:"原始状态",rawRoute:"路由",rawReason:"原因",iterationPath:"循环路径",expectedValue:"需要的结果",actualValue:"上游实际结果",judgmentDetails:"连线判断",connectionResult:"本次是否经过",appliesWhen:"什么情况下经过",explanation:"具体原因",technicalStatus:{pathUsed:"本次经过了这条连线",pathNotUsed:"本次没有经过这条连线"},technicalRoute:{success:"仅当上游节点正常返回时",failure:"仅当上游节点执行失败时",always:"无论上游节点正常返回还是执行失败"},technicalReason:{conditionNotMatched:"上游回复没有满足这条连线设置的条件。"},statuses:{taken:"已采用",notTaken:"未采用",evaluationFailed:"判断失败",timedOut:"已超时",blocked:"已阻塞"},routes:{success:"成功后继续",failure:"失败后进入处理",always:"无论成功或失败均继续"},reasons:{evaluationFailed:"路径判断失败",conditionNotMatched:"条件不满足",iterationLimitReached:"已达到最大循环轮次",routeNotMatched:"当前结果不匹配此路径",pathSelected:"本次已采用这条路径。",pathEvaluatedNotUsed:"调度器评估了这条候选连线,但没有目标节点实际消费它。",sourceSkipped:"上游节点未执行,因此本次不经过这条路径。",failureRouteAfterSuccess:"上游节点已正常返回;这条路径只在节点执行失败时采用。",successRouteAfterFailure:"上游节点执行失败;这条路径只在节点正常返回时采用。",businessBlocked:"“{source}”已阻止继续执行({decision}):{reason}。因此没有执行“{target}”。",businessBlockedWithCondition:"“{source}”已阻止继续执行({decision}):{reason}。继续执行需要“{expected}”,但上游实际结果是“{actual}”,因此没有执行“{target}”。",conditionMismatchDetail:"继续执行需要“{expected}”,但上游实际结果是“{actual}”,因此没有执行“{target}”。"},loopOutcomes:{continued:"条件满足,继续下一轮",iterationLimitReached:"达到最大轮次后停止",conditionNotMatched:"条件不满足,循环结束",finished:"循环已结束"}},edgeEditor:{title:"编辑连接线",guideIntro:"先选择上游节点必须达到的执行结果;再选择不检查回复、按字面检查完整文本,或比较解析后的某个 JSON 字段值。",connectionSummary:"{source} → {target}",selfLoopDescription:"“{node}”会重新执行自身。",continueAfter:"上游结果",optionalCheck:"可选内容检查",runTarget:"然后",runTargetAction:"执行“{target}”",noContentCheck:"不检查回复内容",sourceResultStep:"1. 上游节点结果",replyDataStep:"2. 要检查的回复数据",nextStep:"3. 然后",replyDataQuestion:"要检查回复中的哪类数据?",requiredSourceResult:"上游必须达到的结果",loopSummary:"返回“{target}”",loopScope:"循环节点:{nodes}",historyLabel:"历史记录名称(可选)",advancedSettings:"高级设置",historyNode:"历史记录节点",historyNodePlaceholder:"选择节点名称",continueWhen:"何时继续",compareUsing:"如何比较",expectedType:"期望值按什么类型理解",expectedValue:"期望值",routeChoices:{success:"上游正常返回",failure:"上游执行失败",always:"任一结果"},operatorChoices:{equals:"等于",not_equals:"不等于",contains:"包含",not_contains:"不包含",exists:"存在",not_exists:"不存在",greater_than:"大于",greater_than_or_equal:"大于等于",less_than:"小于",less_than_or_equal:"小于等于",in:"属于列表",not_in:"不属于列表"},loopMissingForwardPath:"这条回连没有可循环的正向路径。",loopNotNatural:"这个循环还有其他入口路径,无法保证按预期重复执行。",loopDuplicateScope:"两条回连定义了相同的循环节点。",loopPartialOverlap:"多个循环可以互不相交或完整嵌套,但不能部分重叠。",loopDuplicateHistoryLabel:"每个循环的历史记录名称必须唯一。",route:"路由",routes:{success:"成功时(success)",failure:"失败时(failure)",always:"无论成功失败(always)"},routeHelp:"先判断上游节点结果:success 仅成功时;failure 仅失败时;always 成功或失败都可。设置条件后还必须同时满足条件。",routeExample:"示例:正常流程用 success,错误处理用 failure,最后清理用 always。",conditionPath:"这条连接要检查什么?",conditionPathPlaceholder:"高级路径,例如 output",conditionPathOptions:{routeOnly:"不检查回复内容",outputRecommended:"完整成功回复文本(output,推荐)",output:"完整成功回复文本(output)",outputJson:"单个 JSON 字段值(outputJson.*)",errorRecommended:"完整失败错误文本(error,推荐)",error:"完整失败错误文本(error)",custom:"高级数据路径"},structuredOutputPathPlaceholder:"JSON 字段路径,例如 outputJson.route_token",structuredOutputHelp:"解析完整 JSON 回复或唯一一个 fenced json 代码块。JSON 缺失、格式错误或存在多个代码块时,outputJson 不可用,条件不会匹配。",conditionPathHelp:{success:"成功路由推荐检查 output;如果不需要检查回复内容,选择“只判断路由”。",failure:"失败路由推荐检查 error;如果不需要检查错误文本,选择“只判断路由”。",always:"成功回复选 output,失败错误选 error;选择“只判断路由”则不检查内容。"},operator:"操作符",operators:{equals:"等于(equals)",not_equals:"不等于(not_equals)",contains:"包含(contains)",not_contains:"不包含(not_contains)",exists:"存在(exists)",not_exists:"不存在(not_exists)",greater_than:"大于(greater_than)",greater_than_or_equal:"大于等于(greater_than_or_equal)",less_than:"小于(less_than)",less_than_or_equal:"小于等于(less_than_or_equal)",in:"属于列表(in)",not_in:"不属于列表(not_in)"},operatorHelp:{equals:'类型和值都必须完全相同。示例:output equals "APPROVED"。',not_equals:'类型或值不同即匹配。示例:output not_equals "REJECTED"。',contains:'文本包含子文本,或数组包含某一项。示例:output contains "PASS"。',not_contains:"文本不含子文本,或数组不含某一项。",exists:"条件路径存在即匹配,不需要填写“值”。",not_exists:"条件路径不存在即匹配,不需要填写“值”。",greater_than:"实际值和“值”都必须是 JSON 数字;实际值更大时匹配。",greater_than_or_equal:"两边都必须是 JSON 数字;实际值大于等于设定值时匹配。",less_than:"两边都必须是 JSON 数字;实际值更小时匹配。",less_than_or_equal:"两边都必须是 JSON 数字;实际值小于等于设定值时匹配。",in:"“值”必须是 JSON 数组;数组包含实际值时匹配。",not_in:"“值”必须是 JSON 数组;数组不包含实际值时匹配。"},value:"值",invalidConditionValue:"条件值必须是有效的 JSON",conditionValuePlaceholder:'JSON:"文本"、42、true、["a"]',valueType:"值类型",valueTypes:{string:"字符串",number:"数字",boolean:"布尔值",null:"空值",array:"数组",object:"对象"},valueTypeHelp:"选择“值”的解析和校验类型。系统会从已保存的 JSON 值自动识别;该类型只辅助编辑,不会单独保存。",conditionValuePlaceholders:{string:"文本,例如 APPROVED",number:"数字,例如 42",boolean:"true 或 false",null:"null",array:'JSON 数组,例如 ["a", 2]',object:`JSON 对象,例如 {'{'}"status":"ready"{'}'}`},invalidValueTypes:{string:"值必须是字符串。",number:"值必须是有效数字。",boolean:"值必须是 true 或 false。",null:"值必须是 null。",array:"值必须是有效数组。",object:"值必须是有效对象。"},valueHelp:"请输入与所选类型一致的值。对象和数组使用 JSON;字符串直接输入,不需要 JSON 双引号。",expectedReplyText:"要查找的文字",expectedFieldValue:"期望的字段值",rawTextValueHelp:"这里按字面检查完整回复文本。选择“包含”时,文字可以出现在 JSON 的 key 或 value 中;系统不会按 JSON 字段取值。",jsonFieldValueHelp:"这里比较指定 outputJson 路径对应的字段值,而不是字段名。例如:outputJson.failed_gate 等于 quality-container-setup。",canvasLabel:{withValue:"{subject}{operator}「{value}」",withoutValue:"{subject}{operator}",join:"{route} · {condition}"},conditionSemantics:"实际检查规则",rawTextComparisonHelp:"当前选择“{operator}”。检查对象是整段完整回复文本,不读取单个 JSON 字段。包含/不包含时,文字出现在 JSON key 或 value 中都算;等于时,整段回复必须与设定值完全相同;不等于时,整段回复必须与设定值不同。",jsonFieldComparisonHelp:"这里读取 {path} 对应的字段值。{operator}比较的是这个字段的 value 与“{value}”,不会比较字段名。",rawTextExistenceHelp:"这里只检查完整回复文本是否存在,不代表某个 JSON key 存在。",jsonFieldExistenceHelp:"这里只检查 {path} 对应的 JSON 字段是否存在,不比较字段值。",rawTextOperatorHelp:{equals:"只有整段完整回复文本与“{value}”完全相同时才匹配。这里不会读取或比较某个 JSON 字段的 value。",not_equals:"只有整段完整回复文本与“{value}”不同时才匹配。这里不会读取或比较某个 JSON 字段的 value。",contains:"在整段完整回复文本的任意位置查找“{value}”。该文字出现在 JSON key 或 JSON value 中都能匹配;这不是 JSON 字段查询。",not_contains:"只有整段完整回复文本中完全没有“{value}”时才匹配;无论它原本会出现在 JSON key 还是 JSON value 中。这不是 JSON 字段查询。",exists:"完整回复文本存在时匹配。这里不判断任何 JSON key 是否存在。",not_exists:"没有完整回复文本时匹配。这里不判断某个 JSON key 是否缺失。"},jsonFieldOperatorHelp:{equals:"读取 {path} 对应的字段 value。只有该字段值与“{value}”完全相同时才匹配;不会比较字段名。",not_equals:"读取 {path} 对应的字段 value。只有该字段值与“{value}”不同时才匹配;不会比较字段名。",contains:"读取 {path} 对应的字段 value,并检查这个值是否包含“{value}”;不会搜索字段名。",not_contains:"读取 {path} 对应的字段 value。只有这个值不包含“{value}”时才匹配;不会搜索字段名。",exists:"{path} 对应的 JSON 字段存在时匹配,不比较字段 value。",not_exists:"{path} 对应的 JSON 字段缺失时匹配,不比较字段 value。"},feedback:"反馈循环",feedbackHelp:"把这条回连标记为有界循环。只有路由和条件都满足时才继续下一轮,并在达到“最大迭代次数”时强制停止。",maxIterations:"最大迭代次数",maxIterationsHelp:"循环体最多执行的总轮数,可填 1~100;整个 Run 还受全局执行预算保护。",invalidIterations:"最大迭代次数必须是 1 到 100 的整数",loopId:"循环标识",loopIdPlaceholder:"选择自动生成,或输入自定义 ID",loopIdAutomatic:"自动生成(推荐)· {id}",loopIdHelp:"它只用于在执行历史中标记这个循环,不影响循环何时运行。普通用户保持“自动生成”即可;只有多循环等高级设计才需要自定义。",invalidLoopId:"循环 ID 必须以字母或数字开头,且只能包含字母、数字、点、下划线、冒号或连字符"},batch:{toggle:"批量选择",selectAll:"全选",confirmDelete:"确定删除选中的 {count} 个工作流?",deleteSuccess:"已删除 {count} 个工作流",deletePartial:"{failed} 个工作流删除失败",deleteFailed:"批量删除失败"},validation:{nodesRequired:"请至少添加一个节点",nodeNameRequired:"节点 {node} 需要填写名称",providerRequired:"节点 {node} 需要选择 Provider",modelRequired:"节点 {node} 需要选择模型",apiModeRequired:"节点 {node} 需要选择 API 模式",inputRequired:"节点 {node} 需要填写输入内容",invalidEdge:"连接线引用了不存在的节点",invalidConnectionDirection:"连接线只能从右侧输出连接到左侧输入",orphanNode:"节点 {node} 没有连接到流程",disconnectedFlow:"流程不能拆成多条互不连接的链路",cycle:"流程中存在循环连接,请调整后再保存"},node:{title:"节点名称",agent:"Agent",model:"模型",apiMode:"API 模式",input:"输入",approvalRequired:"完成后审批",join:"汇合策略",joinAll:"全部入口",joinAny:"任一入口",joinAllHelp:"所有入线都生效才执行;只要一条不匹配,本节点就跳过。示例:同时等待代码检查和安全检查。",joinAnyHelp:"任一入线生效就执行一次;只有全部都不匹配才跳过。示例:任一审核人批准后继续。",promptPlaceholder:"描述这个 Agent 要做什么...",skillsPlaceholder:"技能,按 Enter 添加",uploadImages:"上传图片"},status:{idle:"空闲",queued:"排队中",running:"运行中",pending_approval:"待审批",completed:"已完成",skipped:"已跳过",failed:"失败",approval_rejected:"审批拒绝",canceled:"已取消"},runs:{title:"执行记录",refresh:"刷新",empty:"暂无执行记录",startNodes:"{count} 个起始节点",snapshotIndicator:"本次运行启动时的冻结快照",show:"显示执行记录",hide:"隐藏执行记录",nodeSessionTitle:"节点会话 - {node}",noNodeSession:"该节点暂无会话记录",loadNodeSessionFailed:"加载节点会话失败",stop:"停止执行",stopRequested:"已请求停止执行",stopFailed:"停止执行失败",delete:"删除记录",deleteSuccess:"执行记录已删除"},inspector:{selected:"选中节点",none:"未选择节点"},stats:{nodes:"节点",edges:"连线"},agents:{planner:"规划",researcher:"研究",builder:"执行",reviewer:"审查"},models:{default:"默认模型",fast:"快速模型",reasoning:"推理模型"},initialNodes:{node1:"节点 1",node2:"节点 2",node3:"节点 3",plan:"规划",execute:"执行",review:"审查"},initialPrompts:{node1:"输入这个节点的内容。",node2:"输入这个节点的内容。",node3:"输入这个节点的内容。",plan:"把需求拆成可执行步骤。",execute:"执行实现步骤并产出结果。",review:"审查产出质量并识别后续工作。"},newNodeTitle:"节点 {count}"},kanban:{title:"看板",createTask:"新建任务",noTasks:"暂无任务",allStatuses:"全部状态",allAssignees:"全部负责人",board:{create:"新建看板",archive:"归档看板",slugPlaceholder:"看板标识,例如 project-a",namePlaceholder:"显示名称(可选)",slugRequired:"看板标识不能为空",created:"看板已创建",archived:"看板已归档",archiveConfirm:"确定归档当前看板?",defaultArchiveUnavailable:"默认看板不能归档"},columns:{triage:"待分拣",todo:"待办",scheduled:"已调度",ready:"就绪",running:"进行中",blocked:"阻塞",review:"待审查",done:"已完成",archived:"已归档"},form:{title:"标题",titlePlaceholder:"任务标题",titleRequired:"标题不能为空",body:"描述",bodyPlaceholder:"任务描述(可选)",assignee:"负责人",selectAssignee:"选择负责人...",priority:"优先级",selectPriority:"选择优先级...",tenant:"租户",tenantPlaceholder:"租户(可选)",workspace:"工作区",workspaceScratch:"临时工作区",workspaceDir:"使用目录",workspaceWorktree:"使用 worktree",workspacePath:"工作区路径",workspacePathPlaceholder:"绝对路径(可选)",branch:"分支",branchPlaceholder:"Worktree 分支",skills:"技能",skillsPlaceholder:"选择技能...",triage:"创建到分拣状态",goalMode:"目标模式",maxRuntime:"最长运行时间",maxRuntimePlaceholder:"例如 30m、2h",maxRetries:"最大重试次数",maxRetriesPlaceholder:"重试次数",goalMaxTurns:"目标最大轮次",goalMaxTurnsPlaceholder:"最大轮次"},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:"关键信息",noLog:"未找到该任务的日志。",addComment:"添加评论",commentPlaceholder:"输入任务评论...",operations:"操作"},action:{title:"操作",complete:"完成",completeSummary:"完成摘要(可选)",block:"阻塞",blockReason:"阻塞原因",unblock:"解除阻塞",archive:"归档任务",archiveConfirm:"确定归档这个已完成任务?",assign:"分配",assignTo:"分配给...",dispatch:"调度",recoveryReason:"恢复原因(可选)",reclaim:"回收",reassign:"重新分配",specify:"细化",loadLog:"加载日志",loadDiagnostics:"加载诊断"},message:{taskCreated:"任务已创建",taskCompleted:"任务已完成",taskBlocked:"任务已阻塞",taskUnblocked:"任务已解除阻塞",taskArchived:"任务已归档",taskAssigned:"任务已分配",dispatchNudged:"已触发调度器",commentAdded:"评论已添加",taskReclaimed:"任务已回收",taskReassigned:"任务已重新分配",taskSpecified:"任务已细化",loadFailed:"加载任务失败"},stats:{total:"总计",tasks:"任务数"}},jobs:{title:"定时任务",createJob:"创建任务",editJob:"编辑任务",noJobs:"暂无定时任务,创建一个开始吧。",sortBy:"排序",sortByName:"名称排序",sortByTime:"时间排序",sortByNameHint:"点击按名称排序",sortByTimeHint:"点击按时间排序",sortAsc:"升序",sortDesc:"降序",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:"要执行的内容",skills:"技能",skillsPlaceholder:"选择技能...",provider:"服务商",model:"模型",defaultProvider:"默认服务商",defaultModel:"默认模型",deliverTarget:"投递目标",origin:"来源",local:"本地",repeatCount:"重复次数(可选)",modelPlaceholder:"选择模型",repeatPlaceholder:"留空表示无限重复",jobCreated:"任务已创建",jobUpdated:"任务已更新",nameRequired:"名称为必填项",scheduleRequired:"调度表达式为必填项",promptRequired:"提示词为必填项",loadFailed:"加载任务失败",jobPaused:"任务已暂停",jobResumed:"任务已恢复",jobTriggered:"任务已触发",modelUpdated:"模型已更新",jobDeleted:"任务已删除",status:{running:"运行中",paused:"已暂停",disabled:"已禁用",scheduled:"已调度"},info:{model:"模型",provider:"服务商",schedule:"调度",lastRun:"上次运行",nextRun:"下次运行",deliver:"投递",repeat:"重复"},action:{pause:"暂停",pauseJob:"暂停任务",resume:"恢复",resumeJob:"恢复任务",runNow:"立即运行",triggerImmediately:"立即触发"},runHistory:{title:"运行历史",runs:"次运行",noRuns:"暂无运行历史。"}},skills:{title:"技能",targetFilter:"运行时",targets:{hermes:"Hermes",claude:"Claude",codex:"Codex"},searchPlaceholder:"搜索技能...",noMatch:"没有匹配的技能",noSkills:"暂无技能",backTo:"返回",attachedFiles:"附件文件",loadFailed:"加载技能失败",fileLoadFailed:"加载文件失败",modified:"用户已修改",archived:"已归档",pinned:"已置顶",pin:"置顶技能",unpin:"取消置顶",pinFailed:"更改置顶状态失败",edit:"编辑",saving:"保存中...",editorLabel:"技能编辑器",saveSuccess:"技能已保存",saveFailed:"保存技能失败",toggleFailed:"切换技能状态失败",source:{builtin:"内置",hub:"Hub 安装",local:"本地安装",external:"外部目录"},delete:"删除",deleteConfirm:'确定要删除技能 "{name}" 吗?此操作不可撤销。',deleteSuccess:"已删除技能",deleteFailed:"删除失败",import:"导入",importTitle:"导入技能",importModeZip:"Zip 包",importModeFolder:"文件夹",importHintZip:"上传 .zip 包,应包含含 SKILL.md 的目录",importHintFolder:"选择本地技能文件夹(需含 SKILL.md)",importTargetCategory:"目标分类(可选)",importTargetCategoryPlaceholder:"留空则平铺到 misc",importSelectFile:"选择 .zip 文件",importSelectFolder:"选择文件夹",importInvalidFile:"仅支持 .zip 包",importFileCount:"个文件",importNoSelection:"请先选择文件或文件夹",importSuccess:"已导入技能",importFailed:"导入失败",path:{local:"本地",external:"外部"},externalDirs:{manage:"外部目录",title:"外部目录管理",hint:"在此管理 config.skills.external_dirs。支持 ~ 和 $VAR;不存在的路径会被标灰。",add:"添加外部目录",placeholder:"/path/to/skills 或 ~/my-skills",empty:"暂无外部目录",missing:"目录不存在",notDir:"不是目录",saveSuccess:"外部目录已保存",saveFailed:"保存失败",loadFailed:"加载外部目录失败",removeRow:"移除"},pathCopied:"路径已复制",pathCopyFailed:"复制路径失败",reloadHint:"活跃会话请执行 /reload-skills;新会话会自动加载。",writeApprovalButton:"待审核 {count}",writeApprovalTitle:"待审核写入",writeApprovalDescription:"批准或拒绝 Hermes Agent 暂存的记忆和技能写入。",writeApprovalRefresh:"刷新",writeApprovalEmpty:"暂无待审核写入。",writeApprovalUnsupported:"当前 Hermes Agent 版本不支持写入审核。请升级 Hermes Agent 后再使用。",writeApprovalMemory:"记忆",writeApprovalSkills:"技能",writeApprovalViewDiff:"查看",writeApprovalHideDiff:"收起",writeApprovalNoDiff:"没有可显示的差异。",writeApprovalLoadFailed:"待审核写入加载失败",writeApprovalDiffFailed:"写入详情加载失败",writeApprovalActionFailed:"待审核写入处理失败",writeApprovalApproved:"已批准写入",writeApprovalRejected:"已拒绝写入",writeApprovalApprove:"批准",writeApprovalReject:"拒绝",writeApprovalPendingMemoryWrite:"待审核记忆写入",writeApprovalCurrentFile:"当前 {file}",writeApprovalProposedFile:"批准后 {file}",writeApprovalDiffSection:"差异",writeApprovalPatchOldStringMissing:"当前文件 {file} 中没有找到这次补丁的 old_string,批准后的文件内容不会变化。",writeApprovalRequestedOldString:"本次请求匹配的 old_string",writeApprovalCurrentReadFailed:"当前文件 {file} 无法按 UTF-8 文本读取。",writeApprovalDeleteSkill:"这次审批会删除技能 {skill}。",writeApprovalRemoveFile:"这次审批会从技能 {skill} 中移除文件 {file}。"},plugins:{title:"插件",refresh:"刷新",notice:"展示可发现的 Hermes 插件 manifest。发现元数据读取不会加载插件代码。可在此启用或禁用 standalone 用户插件,新 Hermes 会话生效。",loadFailed:"加载插件失败",updateFailed:"更新插件失败",enableSuccess:"已启用 {name}",disableSuccess:"已禁用 {name}",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:"路径 / 入口",manage:"管理"},capabilities:{tools:"{count} 个工具",hooks:"{count} 个 hook",env:"{count} 个环境变量"},metadata:{agentRoot:"Agent 根目录",python:"Python",scanCwd:"扫描 cwd",projectPlugins:"项目插件"}},petdex:{title:"Petdex 宠物",subtitle:"浏览 Hermes 桌宠使用的 petdex 公共图库。",refresh:"刷新",adopt:"领取",active:"使用中",adopted:"已领取 {name}",adoptFailed:"领取宠物失败",loadFailed:"加载 petdex 图库失败",searchPlaceholder:"按名称、slug、作者或类型搜索",kindFilter:"类型",spritesheet:"精灵图",submittedBy:"作者 {name}",empty:"没有符合当前筛选的宠物。",showMore:"再显示 {count} 个",summary:{total:"图库总数",visible:"匹配数量",kinds:"类型数",generatedAt:"生成时间"}},memory:{title:"记忆",refresh:"刷新",loadFailed:"加载记忆失败",myNotes:"我的笔记",noNotes:"暂无笔记。",notesPlaceholder:"输入笔记内容...",userProfile:"用户画像",noProfile:"暂无画像。",profilePlaceholder:"输入用户画像...",soul:"灵魂",noSoul:"暂无灵魂配置。",soulPlaceholder:"输入灵魂配置..."},models:{title:"模型",searchPlaceholder:"搜索模型...",noResults:"无结果",noModels:"无模型",addProvider:"添加 Provider",noProviderPromptTitle:"当前 Profile 未配置大模型",noProviderPromptMessage:"当前 Profile“{profile}”未配置任何大模型 Provider,是否进入模型设置页面?",noProviderPromptLater:"稍等",noProviderPromptAction:"去设置",refreshModelCache:"刷新模型缓存",refreshModelCacheLoading:"正在刷新模型缓存...",refreshModelCacheSuccess:"模型缓存已刷新",refreshModelCacheFailed:"刷新模型缓存失败",refreshModels:"刷新模型",restoreModels:"恢复上一份列表",refreshModelsConfirmTitle:"确认更新模型列表",refreshModelsConfirmContent:"本次刷新将删除 {removed} 个模型、新增 {added} 个。将删除:{removedList}",refreshModelsConfirmAction:"覆盖模型列表",refreshModelsSuccess:"模型列表已更新(共 {count} 个,不可用 {unavailable} 个)",refreshModelsFailed:"刷新 Provider 模型失败",restoreModelsSuccess:"已恢复上一份模型列表(共 {count} 个)",restoreModelsFailed:"恢复上一份模型列表失败",editProviderTitle:"编辑 {name}",providerEditorLoadFailed:"加载 Provider 设置失败",providerEditorSaved:"Provider 设置已保存",providerEditorSaveFailed:"保存 Provider 设置失败",providerEditorConflict:"该 Provider 已被其他操作修改,现已重新加载最新设置。",providerEditorRequired:"显示名称、Base URL 和首选模型不能为空。",providerInternalId:"Provider 内部 ID",providerDisplayName:"显示名称",providerIdStableHint:"内部 Provider ID 保持不变,已有引用不会失效。",providerPreferredModel:"Provider 首选模型",providerPreferredModelHint:"此项不会修改当前 Profile 的全局默认模型。",selectOrEnterModel:"选择或输入模型 ID...",unverifiedModelWarning:"该模型不在当前目录中,尚未验证是否可用。",credentialConfigured:"已配置",credentialNotConfigured:"未配置",leaveBlankKeepCredential:"留空则保持当前 Key 不变",enterCredential:"输入新的 Provider 凭据",credentialNeverDisplayedHint:"已保存的 Key 不会回显;只有输入新值时才会替换。",providerCredentialMissingHint:"该 Provider 现已不可运行,重新配置凭据后才能使用。",providerAdvancedSettings:"Provider 高级设置",discoverModels:"允许从 Provider 自动发现模型",rateLimitDelay:"限流等待时间(秒)",requestTimeoutSeconds:"请求超时(秒)",staleTimeoutSeconds:"过期请求超时(秒)",extraBodyHint:"可选 JSON 对象,会合并到 Provider 请求体;留空表示删除。",extraBodyInvalid:"extra_body 必须是有效的 JSON 对象。",providerTestUnsupported:"当前 API Mode 不支持连接测试。",perModelContextLengths:"逐模型上下文长度",contextLengthInheritHint:"清空数值即继承 Provider 或系统默认值。",inheritDefault:"继承默认值",providerReconnectHint:"修改只对新运行生效;现有聊天或 Coding Agent 会话需要重新连接。",testConnection:"测试连接",providerTestSuccess:"连接成功,共发现 {count} 个模型",providerTestFailed:"Provider 连接测试失败",providerTestFailedTitle:"连接测试失败",providerSaveAnywayHint:"你仍可明确选择保存,但该 Provider 可能暂时不可用。",saveAnyway:"仍然保存",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 已删除",providerCredentialsCleared:"Provider 凭据已清除",clearProviderCredentials:"清除凭据",clearCredentialsConfirm:'确定清除 "{name}" 的已保存凭据吗?这是内置 Provider,条目会继续显示,重新配置凭据后仍可使用。',disableProvider:"禁用 Provider",disableProviderConfirm:'确定禁用内置 Provider "{name}" 吗?该 Provider 仍是内置项,之后可以重新启用。',providerDisabled:"Provider 已禁用",defaultProviderUpdated:"默认 Provider 已更新",defaultProviderUpdateFailed:"更新默认 Provider 失败",defaultModelUpdated:"默认模型已更新",defaultModelUpdateFailed:"更新默认模型失败",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 插件的登录。",xaiLoginTitle:"xAI Grok OAuth 登录",xaiWaiting:"请在打开的 xAI 页面完成授权。授权完成后窗口会自动关闭。",xaiOpenLink:"打开 xAI 授权页",xaiCopyLink:"复制授权链接",xaiApproved:"登录成功!",xaiExpired:"授权链接已过期,请重试。",anthropicLoginTitle:"Claude 授权登录",anthropicWaiting:"请在 Claude 授权页完成授权,然后把返回的授权代码粘贴到这里。",anthropicOpenLink:"打开 Claude 授权页",anthropicCopyLink:"复制授权链接",anthropicCodePlaceholder:"粘贴授权代码...",anthropicSubmitCode:"提交代码",anthropicApproved:"登录成功!",anthropicExpired:"授权已过期,请重试。",minimaxLoginTitle:"MiniMax Coding Plan 登录",minimaxRegionHint:"请选择 Coding Plan 账号所属的 MiniMax 区域。",minimaxGlobal:"国际站",minimaxChina:"中国站",minimaxStart:"开始授权",minimaxWaiting:"请打开 MiniMax 授权页并输入此代码。授权完成后窗口会自动关闭。",minimaxOpenLink:"打开 MiniMax 授权页",minimaxApproved:"登录成功!",minimaxExpired:"授权已过期,请重试。",customBadge:"自定义",previewBadge:"预览",disabledBadge:"不可用",disabledTooltip:"此模型当前账号不可用",customModelPlaceholder:"未列出的模型 ID",customModelHint:"仅用于 provider 支持但未返回的模型;不是重命名。按回车加载。",removeCustomModel:"移除这个未列出的模型",refresh:"刷新模型列表(重新加载 config.yaml)",noProviders:"暂无 Provider,添加一个开始吧。",models:"模型列表",count:"个模型",more:"个更多",aliasEdit:"重命名",aliasTitle:"模型显示名",aliasTitleFor:"{model} 的显示名",aliasPlaceholder:"留空则使用原始模型 ID",aliasHint:"仅修改 Web UI 显示名,发送给 Hermes 的仍是原始模型 ID。",aliasCanonical:"原始 ID:{model}",aliasUseOriginal:"恢复原始 ID",aliasManage:"显示名",aliasManageFor:"{provider} 的显示名",aliasSaveFailed:"保存显示名失败",manageVisibleModels:"管理可见模型",manageVisibleModelsFor:"管理 {name} 可见模型",visibilityHint:"仅影响 Web UI 的模型选择器和模型页展示,不会改写 Hermes CLI 的 provider/model 配置。实际调用仍使用原始模型 ID。",visibilitySelectOne:"至少保留一个可见模型",visibilitySaved:"可见模型已保存",visibilitySaveFailed:"保存可见模型失败",showAllModels:"显示全部模型",clearVisibleModels:"取消全选",generalTitle:"通用模型",auxiliaryTitle:"辅助模型",auxiliarySubtitle:"为压缩、视觉、审批、MCP 和后台维护等辅助任务单独指定模型。",combinationTitle:"组合模型",combinationSubtitle:"配置 MoA 预设:多个参考模型先给出视角,再由一个汇总模型负责最终回复和工具调用。",combinationPreset:"预设",combinationName:"名称",combinationAddModel:"添加组合模型",combinationEditModel:"编辑组合模型",combinationNewPreset:"新预设",combinationPresetPlaceholder:"例如 review",combinationAddPreset:"添加预设",combinationSetDefault:"设为默认",combinationEnabled:"启用参考模型",combinationReferenceModels:"参考模型",combinationReferenceModel:"参考模型",combinationAddReference:"添加参考模型",combinationAggregator:"汇总模型",combinationReferenceTemperature:"参考温度",combinationAggregatorTemperature:"汇总温度",combinationMaxTokens:"最大 Token",combinationNotSet:"未设置",combinationSaved:"组合模型已保存",combinationLoadFailed:"加载组合模型失败",combinationSaveFailed:"保存组合模型失败",combinationPresetExists:"预设已存在",combinationNameRequired:"请输入组合模型名称",combinationNameInvalid:"名称只能包含字母、数字、下划线、短横线和点",combinationReferenceRequired:"至少添加一个参考模型",combinationAggregatorRequired:"请选择汇总模型",auxiliaryRefresh:"刷新",auxiliaryTask:"任务",auxiliaryTimeout:"超时",auxiliaryDownloadTimeout:"下载超时",auxiliaryActions:"操作",auxiliaryDefault:"默认",auxiliaryCustomEndpoint:"自定义端点",auxiliaryProviderAuto:"自动",auxiliaryProviderMain:"主模型",auxiliaryProviderPlaceholder:"auto、main 或 provider key",auxiliaryDownloadShort:"下载",auxiliaryExtraBody:"Extra body JSON",auxiliaryClear:"清除",auxiliarySaved:"辅助模型已保存",auxiliaryLoadFailed:"加载辅助模型失败",auxiliarySaveFailed:"保存辅助模型失败",auxiliaryInvalidExtraBody:"Extra body 必须是 JSON 对象",auxiliaryTaskCompression:"压缩",auxiliaryTaskVision:"视觉",auxiliaryTaskWebExtract:"网页提取",auxiliaryTaskSkillsHub:"技能中心",auxiliaryTaskApproval:"审批",auxiliaryTaskMcp:"MCP",auxiliaryTaskTitleGeneration:"标题生成",auxiliaryTaskTriageSpecifier:"Triage 扩写",auxiliaryTaskKanbanDecomposer:"看板拆解",auxiliaryTaskProfileDescriber:"Profile 描述",auxiliaryTaskCurator:"策展",auxiliaryTaskSessionSearch:"会话搜索",auxiliaryTaskFlushMemories:"写入记忆",currentDefault:"当前默认",defaultShort:"默认",setDefaultProvider:"设为默认 Provider",setDefault:"设为默认",builtIn:"内置",customType:"自定义",provider:"Provider",contextLength:"上下文长度",contextLengthPlaceholder:"例如 256000(可选)",apiMode:"API 模式",local:"本地 ({host})",selectProviderRequired:"请选择 Provider",baseUrlRequired:"Base URL 为必填项",apiKeyRequired:"API Key 为必填项",modelRequired:"默认模型为必填项",enterBaseUrl:"请先输入 Base URL",unexpectedFormat:"响应格式异常",foundModels:"找到 {count} 个模型",fetchFailed:"获取模型失败"},profiles:{title:"配置",create:"创建配置",import:"导入",export:"导出",rename:"重命名",delete:"删除",editConfig:"编辑配置文件",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:"导出配置失败",exportTimeout:"导出超时。该配置体积过大,无法打包 —— 通常是 workspace 下的缓存和虚拟环境把它撑大的。",importTimeout:"服务器解包归档时导入超时。请换用更快的存储后重试,或通过 Hermes CLI 导入。",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:"暂无日志"},theme:{title:"主题",saved:"主题已保存",saveFailed:"主题保存失败",reset:"恢复默认",resetSuccess:"已恢复默认主题",appearance:"外观",appearanceHint:"修改会实时预览到整个界面",mode:"明暗模式",modeHint:"选择浅色或深色配色",modeSystem:"跟随系统",modeLight:"浅色",modeDark:"深色",style:"风格",styleHint:"选择界面的视觉风格",styleInk:"水墨",styleComic:"漫画",fontSize:"文字大小",fontSizeHint:"界面和对话内容的基础字号",textColor:"文字颜色",textColorHint:"次要文字色会自动生成",accentColor:"选中颜色",accentColorHint:"用于激活项、文字选中和主要按钮",background:"背景图片",backgroundHint:"上传个人工作区背景",backgroundTypeError:"请使用 PNG、JPEG、WebP 或 GIF 图片",backgroundSizeError:"背景图片不能超过 10 MB",backgroundUploaded:"背景图片已更新",backgroundUploadFailed:"背景图片上传失败",backgroundRemoved:"背景图片已移除",backgroundRemoveFailed:"背景图片移除失败",backgroundReplace:"更换图片",backgroundUpload:"上传图片",backgroundRemove:"移除",backgroundEmpty:"尚未设置背景图片",backgroundNote:"图片随账号保存,并通过本地缓存避免加载时闪烁。",preview:"预览",previewTitle:"打造属于你的工作空间",previewText:"文字和选中颜色会同步应用到整个界面。",previewAction:"选中操作"},settings:{title:"设置",saved:"已保存",saveFailed:"保存失败",tabs:{display:"显示",account:"当前账户",users:"账户管理",webhooks:"Webhook",agent:"网关",proxy:"代理",memory:"记忆",compression:"上下文压缩",session:"会话",privacy:"隐私",apiServer:"API 服务器",models:"模型",voice:"语音"},webhooks:{title:"Webhook",description:"把 Chat Run 生命周期事件发送到外部系统,不阻塞聊天执行。",deliveryNote:"投递使用有界内存队列:不同 Webhook 并行,同一 Webhook 按事件顺序投递。服务重启后,尚未投递的任务不会保留。",createTitle:"添加 Webhook",editTitle:"编辑 Webhook",allProfiles:"全部 Profile",queued:"队列 {count}",deleteConfirm:"确认删除这个 Webhook?它尚未投递的任务也会被丢弃。",localInboxTitle:"本机测试收件箱",localInboxDescription:"内置测试接收器最近收到的 {count} 条事件。仅保存在内存中,服务重启后自动清空。",localInboxEmpty:"还没有收到本机测试事件。",localInboxPayloadTitle:"收到的 Webhook Payload",clearInboxConfirm:"确认清空本机测试收件箱中的所有事件?",columns:{name:"名称",url:"URL",events:"事件",profiles:"Profile",status:"状态",actions:"操作",receivedAt:"接收时间",event:"事件",eventId:"Event ID",deliveryId:"Delivery ID"},events:{messageCreated:"用户消息已创建",runQueued:"运行已排队",runStarted:"运行已开始",toolStarted:"工具已开始",toolCompleted:"工具已完成",toolFailed:"工具执行失败",approvalRequested:"请求授权",approvalResolved:"授权已处理",clarificationRequested:"请求澄清",clarificationResolved:"澄清已处理",completed:"运行完成",failed:"运行失败"},status:{enabled:"已启用",disabled:"已停用"},runtime:{idle:"空闲",delivering:"投递中",retrying:"等待重试",success:"已送达",failed:"投递失败",dropped:"已丢弃"},actions:{add:"添加 Webhook",localTest:"使用本机测试接收器",test:"测试",enable:"启用",disable:"停用",refresh:"刷新",clear:"清空",view:"查看"},form:{name:"名称",localTestName:"本机 Webhook 测试",namePlaceholder:"例如:运营通知",url:"接收地址",secret:"签名密钥",secretPlaceholder:"可选,用于 HMAC-SHA256 签名",secretKeepPlaceholder:"留空则保留现有密钥",clearSecret:"删除已保存的密钥",events:"事件",profiles:"Profile",profilesPlaceholder:"留空接收所有 Profile",maxRetries:"首次失败后的重试次数(0–10)",includeContent:"包含助手最终文本",includeContentHint:"最终回复可能包含敏感信息。推理过程、系统提示词和工具参数永远不会发送。",includeUserContent:"包含用户消息文本",includeUserContentHint:"用户消息可能包含敏感信息,默认关闭。系统提示词、推理过程、工具参数和工具结果不会随此开关发送。",allowPrivateNetwork:"允许私网或本机地址",allowPrivateNetworkHint:"仅对可信的内部接收端开启;每次投递前都会重新检查 DNS。",enabled:"启用"},messages:{required:"名称和 URL 不能为空",eventRequired:"请至少选择一个事件",loadFailed:"加载 Webhook 失败",saved:"Webhook 已保存",saveFailed:"保存 Webhook 失败",deleted:"Webhook 已删除",deleteFailed:"删除 Webhook 失败",testSucceeded:"测试投递成功",testFailed:"测试投递失败",localTestFailed:"创建本机测试接收器失败",inboxLoadFailed:"加载本机测试事件失败",inboxCleared:"本机测试事件已清空",inboxClearFailed:"清空本机测试事件失败"}},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 回复完成时播放提示音",approvalBell:"审批提示音",approvalBellHint:"出现新的待处理审批或澄清时播放提示音",notifyOnComplete:"完成弹窗通知",notifyOnApproval:"审批桌面通知",notifyOnApprovalHint:"Hermes Studio 不在前台时,出现新的审批或澄清会发送系统通知;通知不显示敏感详情",notifyOnApprovalTest:"审批桌面通知已启用。",notifyOnApprovalTestButton:"测试",notifyOnApprovalTestSent:"审批通知已发送",notifyOnApprovalTestFailed:"审批通知发送失败",approvalNotificationTitle:"需要审批",approvalNotificationClarifyTitle:"需要澄清",approvalNotificationBody:"打开 Hermes Studio 查看并处理。",notifyOnCompleteHint:"AI 回复完成时显示系统通知",notifyOnCompleteMacHint:"macOS 需要在系统设置里允许浏览器通知。",notifyOnCompleteDenied:"通知权限已被拒绝",notifyOnCompleteInsecure:"浏览器通知需要 HTTPS 或 localhost",notifyOnCompleteUnsupported:"当前浏览器不支持通知",notifyOnCompleteTest:"通知已开启。",notifyOnCompleteTestButton:"测试",notifyOnCompleteTesting:"正在发送测试通知...",notifyOnCompleteTestSent:"测试通知已发送",notifyOnCompleteTestFailed:"测试通知发送失败",busyInputMode:"忙碌输入模式",busyInputModeHint:"AI 处理中仍可输入",theme:"主题",themeHint:"选择浅色、暗色或跟随系统",themeLight:"浅色",themeDark:"暗色",themeSystem:"跟随系统",chatInputHeight:"聊天输入框高度",chatInputHeightHint:"桌面端聊天输入框默认高度(像素)。移动端保持自动高度。"},agent:{maxTurns:"最大轮次",maxTurnsHint:"单次对话最大交互轮数",gatewayTimeout:"网关超时",gatewayTimeoutHint:"单次请求无活动超时时间(秒),0 表示无限制",restartDrainTimeout:"重启排空超时",restartDrainTimeoutHint:"重启前排空请求的超时时间(秒)",toolEnforcement:"工具执行策略",toolEnforcementHint:"控制工具调用的执行模式",auto:"自动",always:"始终",never:"从不"},gatewayAutoStart:{title:"Gateway 自动启动",description:"控制 Web UI 启动时自动拉起哪些本地 Hermes profile gateway。该项写入 Web UI 配置,不写入 profile config.yaml。",enabled:"自动启动 gateway",enabledHint:"关闭后,启动期不会自动拉起任何 profile gateway。",management:"统一 gateway",managementHint:"需要 Hermes Agent 0.17.0 及以上版本。开启后会写入 multiplex_profiles,让 default gateway 服务所有 profiles;其他 profile 不能单独配置飞书、微信、QQBot 等通讯工具入口。关闭后会移除该配置。",managementAuto:"自动",managementPerProfile:"每个 profile 一个 gateway",managementUnified:"统一 default gateway",mode:"Profile 策略",modeHint:"启动所有发现到的 profiles,或只启动白名单内的 profiles。",modeAll:"所有发现到的 profiles",modeInclude:"仅白名单 profiles",include:"白名单 profiles",includeHint:"逗号分隔 profile 名。白名单模式下留空表示不自动启动任何 profile。",exclude:"排除 profiles",excludeHint:"逗号分隔 profile 名;会在白名单/全量策略之后再排除。",profileListPlaceholder:"default, reviewer"},proxy:{title:"Gateway 代理",description:"为当前 profile gateway 设置代理环境变量。保存后会重启 gateway,让通讯平台使用新的网络配置。",httpsProxy:"HTTPS_PROXY",httpsProxyHint:"HTTPS 请求代理,通常优先配置这一项。",httpProxy:"HTTP_PROXY",httpProxyHint:"普通 HTTP 请求代理。",allProxy:"ALL_PROXY",allProxyHint:"未设置协议专用代理时使用的兜底代理。",noProxy:"NO_PROXY",noProxyHint:"不走代理的主机或域名,使用逗号分隔。",save:"保存代理设置"},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:"修改会话操作是否授权",memoryWriteApproval:"记忆写入审核",memoryWriteApprovalHint:"Hermes Agent 写入 MEMORY.md / USER.md 前先进入待审核队列。",skillsWriteApproval:"技能写入审核",skillsWriteApprovalHint:"Hermes Agent 创建或修改技能前先进入待审核队列。",writeApprovalTitle:"待审核写入",writeApprovalDescription:"批准或拒绝 Hermes Agent 暂存的记忆和技能写入。",writeApprovalRefresh:"刷新",writeApprovalEmpty:"暂无待审核写入。",writeApprovalMemory:"记忆",writeApprovalSkills:"技能",writeApprovalViewDiff:"查看",writeApprovalHideDiff:"收起",writeApprovalNoDiff:"没有可显示的差异。",writeApprovalLoadFailed:"待审核写入加载失败",writeApprovalDiffFailed:"写入详情加载失败",writeApprovalActionFailed:"待审核写入处理失败",writeApprovalApproved:"已批准写入",writeApprovalRejected:"已拒绝写入",writeApprovalApprove:"批准",writeApprovalReject:"拒绝",writeApprovalPendingMemoryWrite:"待审核记忆写入",writeApprovalCurrentFile:"当前 {file}",writeApprovalProposedFile:"批准后 {file}",writeApprovalDiffSection:"差异",writeApprovalPatchOldStringMissing:"当前文件 {file} 中没有找到这次补丁的 old_string,批准后的文件内容不会变化。",writeApprovalRequestedOldString:"本次请求匹配的 old_string",writeApprovalCurrentReadFailed:"当前文件 {file} 无法按 UTF-8 文本读取。",writeApprovalDeleteSkill:"这次审批会删除技能 {skill}。",writeApprovalRemoveFile:"这次审批会从技能 {skill} 中移除文件 {file}。"},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",type:{password:"密码",token:"API Token",pairing:"设备配对"}},userAvatar:{title:"用户头像",upload:"上传图片",random:"随机生成",reset:"恢复默认",hint:"支持 PNG、JPEG、WebP,最大 1MB,会自动压缩到 500KB 以下",invalidType:"请选择 PNG、JPEG 或 WebP 图片",tooLarge:"头像图片不能超过 1MB",saveSuccess:"头像已保存",saveFailed:"保存头像失败",resetSuccess:"已恢复默认头像",resetFailed:"恢复默认头像失败"},voice:{activeTtsApi:"当前 TTS API",activeSttApi:"当前 STT API",ttsProvidersTitle:"TTS 提供方",ttsProvidersDescription:"管理用于播放助手回复和语音预览的文字转语音集成。",sttProvidersTitle:"STT 提供方",sttProvidersDescription:"管理用于麦克风和语音输入流程的语音转文字集成。",localSttModelTitle:"本地中英双语 STT",localSttModelDescription:"在本机完成隐私优先的语音识别,音频无需上传到云端。",localSttModelUnavailable:"请先下载并验证本地 STT 模型,再将它设为当前默认。",localSttModelReady:"可用",localSttModelDownloading:"下载中",localSttModelNotInstalled:"未安装",localSttLanguages:"语言",localSttLanguagesValue:"中文 + 英文",localSttDownloadSize:"下载大小",localSttRuntime:"运行时",localSttDownloadCf:"Cloudflare 下载",localSttDownloadGithub:"GitHub 下载",localSttBackgroundHint:"下载、校验、解压和模型可用性验证均在后台执行,不会阻塞页面。",localSttDownloadFailed:"本地 STT 模型下载失败:{error}",localSttStage:{queued:"等待下载……",resolve:"正在准备下载……",download:"正在下载模型……",verify:"正在校验文件……",extract:"正在解压模型……",validate:"正在验证模型可用性……",install:"正在安装模型……",completed:"模型已可用",failed:"下载失败"},hermesConfigTitle:"Hermes Agent 配置",hermesConfigDescription:"Hermes profile 中原有的原生提供商会继续保留;Web UI 管理的提供商对 Hermes 统一显示为 Hermes Studio。",hermesActiveProvider:"当前提供商",hermesConfiguredProviders:"已配置提供商",hermesStudioProvider:"Hermes Studio",providerSpeed:"语速",providerSampleRate:"采样率",providerBitRate:"比特率",providerGroupId:"Group ID",providerVolume:"音量",providerEmotion:"情感",providerDiarize:"说话人分离",providerFormatText:"格式化转写文本",providerTagAudioEvents:"标注音频事件",optionEnabled:"启用",optionDisabled:"停用",nativeProvider:"Hermes 原生提供商",selectNativeProvider:"选择 Hermes 原生提供商",useHermesStudioProvider:"使用 Hermes Studio 提供商",presetElevenLabsTtsLabel:"ElevenLabs TTS",presetGeminiTtsLabel:"Gemini TTS",presetXaiTtsLabel:"xAI TTS",presetMistralTtsLabel:"Mistral TTS",presetMinimaxTtsLabel:"MiniMax TTS",presetDeepInfraTtsLabel:"DeepInfra TTS",presetMistralSttLabel:"Mistral STT",presetXaiSttLabel:"xAI STT",presetElevenLabsSttLabel:"ElevenLabs STT",presetDeepInfraSttLabel:"DeepInfra STT",noneSelected:"未选择",keyStored:"已存储",keyMissing:"未配置",customApi:"API",localBuiltin:"本地内置",ttsCardHint:"语音合成提供方",sttCardHint:"语音转写提供方",setActive:"设为当前",testAction:"测试",connect:"连接",presetEdgeTtsLabel:"Edge TTS",presetEdgeTtsDescription:"Microsoft Edge 提供的免费高质量云端音色。",presetOpenaiTtsLabel:"OpenAI TTS",presetMimoTtsLabel:"MiMo TTS",presetDoubaoTtsLabel:"Volcengine Doubao TTS",presetCustomTtsLabel:"自定义 TTS",presetBrowserSttLabel:"浏览器 STT",presetBrowserSttDescription:"浏览器原生语音识别 API。",presetOpenaiWhisperLabel:"OpenAI Whisper",presetGroqSttLabel:"Groq STT",presetDoubaoSttLabel:"Volcengine Doubao STT",presetCustomSttLabel:"自定义 STT",apiCompatibility:"API 兼容性",openaiCompatible:"OpenAI 兼容",manualCustomEndpoint:"手动自定义端点",connectionStep:"连接",discoveryManualHint:"已选择手动自定义端点,无法自动发现模型;请手动输入模型名称。",discoveryCredentialHint:"输入 Base URL 和 API key 后,点击连接获取可用模型。",discoveryNoAutoProbeHint:"输入过程中不会发送请求;凭据准备好后点击连接。",apiKeyConnectPlaceholder:"粘贴 API key 后连接;已存储的 key 不会显示",connectFetchModels:"连接并获取模型",modelRecommendedSuffix:"推荐",modelConnectManualHint:"连接后自动填充,或手动输入。",modelRequiredConnectManual:"模型必填。请连接后自动填充,或手动输入。",apiKeyRequired:"API key 必填。",apiKeyRequiredForDiscovery:"获取模型需要 API key。",baseUrlRequired:"Base URL 必填。",baseUrlHttpsRequired:"请使用 http:// 或 https:// 协议。",baseUrlInvalid:"请输入有效的 Base URL,包含 https://。",discoveryFailedManualFallback:"无法获取模型。你仍可以手动输入模型名称。",completeRequiredProviderFields:"保存前请补全必填 provider 字段。",fetchingModels:"正在获取模型……",recommendedModel:"推荐:{model}。",useRecommendedModel:"使用此模型。",modelsDiscovered:"已发现 {count} 个模型。字段为空时会自动选择推荐模型。",remove:"移除",testSuccess:"测试完成",testTextRequired:"测试前请输入文本。",keyMissingForTest:"测试此提供方前请先添加 API key。",testing:"测试中……",transcribing:"转写中……",browserSttTestHint:"浏览器 STT 请在聊天输入框麦克风中测试。",sttEmptyAudio:"未录到音频,请重试。",sttTestSuccess:"转写完成",sttRecordingHint:"正在录音……点击停止后转写。",keepStoredKeyPlaceholder:"留空则保留已存储 key",apiKeyPlaceholder:"输入 API key",lastTest:"最近测试",notTested:"—",recording:"录音中",testFailedShort:"失败",testFailedSummary:"测试失败,请检查 provider 设置后重试。",showDetails:"显示详情",hideDetails:"隐藏详情",moreActions:"更多",moreActionsFor:"{provider} 的更多操作",addTtsApi:"添加 TTS API",addSttApi:"添加 STT API",active:"当前",builtin:"内置",connected:"已连接",disconnected:"未连接",source:"来源",model:"模型",voice:"音色",doubaoVoiceHint:"选择 Seed TTS 2.0 音色;资源字段会自动更新。",apiKey:"API key",confirmDeleteSecret:"确认删除这个语音 API 已存储的 API key?",ttsTitle:"文字转语音",ttsSaved:"TTS 设置已保存到服务端",ttsSaveFailed:"保存 TTS 设置失败",ttsTestSaved:"试听成功,TTS 设置已保存到服务端",ttsTestSaving:"正在保存 TTS 配置后再试听…",ttsMissingBaseUrl:"试听前需要填写基础 URL。请输入服务商 endpoint 后再测试。",ttsMissingApiKey:"试听前需要 API key。请粘贴 key,或先保存服务端已存 key。",ttsCleared:"已清除服务端 TTS 密钥",ttsClearFailed:"清除服务端 TTS 密钥失败",storedBaseUrlsTitle:"已存 Base URLs",storedBaseUrlsHint:"这里集中管理已保存的语音 provider endpoint。上方输入框只清除当前值,删除已存 URL 在这里操作。",storedBaseUrlsEmpty:"服务端还没有保存自定义语音 Base URL。",storedBaseUrlDelete:"删除 URL",storedApiKeysTitle:"已存 API keys",storedApiKeysHint:"这里列出服务端已保存的语音 API key,只显示用途和来源,不显示完整 key。",storedApiKeysEmpty:"服务端还没有保存语音 API key。",storedKeyKindTts:"TTS",storedKeyKindStt:"STT",storedApiKeyMasked:"[已存储]",storedApiKeyDelete:"删除 key",baseUrlPresetClear:"清除 URL",baseUrlPresetCleared:"已清除当前 Base URL。",baseUrlPresetDelete:"删除 URL",baseUrlPresetDeleted:"已从保存列表删除基础 URL。",baseUrlPresetDeleteFailed:"删除已保存基础 URL 失败。",ttsPendingSecret:"将保存新密钥",ttsStoredSecret:"服务端已有储密钥:{value}",ttsClearKey:"清除已存储密钥",sttTitle:"语音转文字",sttProvider:"STT 提供方",sttProviderHint:"选择语音输入的转写方式",sttProviderBrowser:"浏览器",sttProviderOpenai:"OpenAI 兼容",sttProviderCustom:"自定义",sttBrowserHint:"可用时使用浏览器内置语音识别。",sttApiKey:"API Key",sttApiKeyHint:"仅在服务端保存,用于需要鉴权的 STT 提供方。",sttStoredSecret:"服务端已存储密钥:{value}",sttPendingSecret:"服务端已存储密钥:保存后更新",sttClearKey:"清除已存储密钥",sttModel:"模型",sttModelHint:"用于语音转文字的模型。",sttLanguage:"语言",sttLanguageHint:"可选语言提示,例如 en 或 zh。",sttPrompt:"提示词",sttPromptHint:"可选转写提示词。",sttAudioTranscode:"音频转码",sttAudioTranscodeNone:"发送原始音频",sttAudioTranscodeFfmpeg:"使用 ffmpeg 转为 WAV",sttBaseUrl:"基础 URL",sttBaseUrlHint:"自定义 OpenAI 兼容语音转文字端点。",sttSave:"保存 STT 设置",sttSaved:"STT 设置已保存到服务端。",sttSaveFailed:"保存 STT 设置失败。",sttCleared:"服务端已存储的 STT 密钥已清除。",sttClearFailed:"清除服务端已存储的 STT 密钥失败。",sttActiveSaved:"当前 STT 提供方已保存到服务端。",sttSaveActive:"保存当前 STT 提供方",sttEndpointHint:"最终转写 endpoint:{endpoint}",sttTestTitle:"测试语音转文字",sttTestButton:"测试 STT API",sttTestStopButton:"停止并转写",sttTestBackendOnly:"STT API 测试仅适用于 OpenAI 兼容和自定义提供方。",sttTestRecording:"正在录制测试音频……录完后点击停止并转写。",sttTestTranscribing:"正在转写测试音频……",sttTestEmpty:"没有录到可用于 STT 测试的音频。",sttTestSucceeded:"STT 测试成功。",sttTestFailed:"STT 测试失败:{error} —— {hint}",sttFailureHintMissingConfig:"请确认已保存 provider 的 Base URL、模型和 API key 后再测试。",sttFailureHintAuth:"请检查 API key;如果页面显示已储存 key,请重新粘贴当前 key 并保存后再测。",sttFailureHintForbidden:"key 已到达供应商但没有该 STT 模型/账号权限,请检查 provider 权限、额度或 billing。",sttFailureHintEndpointModel:"请检查 Base URL 和模型。Groq 建议使用 {endpoint},模型用 whisper-large-v3-turbo 或其他 Groq STT 模型。",sttFailureHintModel:"请检查所选 STT 模型是否存在,并且当前账号有权限使用。",sttFailureHintQuota:"供应商返回额度、billing 或限流问题,请检查账号额度/billing,或稍后重试。",sttFailureHintNetworkCustom:"Web UI server 无法访问 custom STT endpoint。请确认 {endpoint} 可从服务器访问,并兼容 OpenAI audio/transcriptions。",sttFailureHintNetwork:"Web UI server 无法访问 STT provider,请检查网络、代理或防火墙后重试。",sttFailureHintAudio:"录音为空或音频格式被拒绝。请允许麦克风权限,录一段清晰短句,或换 Chrome 重试。",sttFailureHintGenericCustom:"请检查 API key、Base URL、模型,以及最终 endpoint {endpoint}。",sttFailureHintGeneric:"请检查 API key、模型和 provider 账号权限后重试。",sttTestRecordFailed:"无法开始麦克风录音:{error}",sttTestTranscript:"转写结果:{text}",ttsProvider:"TTS 提供者",ttsProviderHint:"选择消息朗读使用的语音引擎",providerWebSpeech:"WebSpeech API(浏览器内置)",providerOpenai:"OpenAI TTS",providerCustom:"自定义端点(兼容 OpenAI)",providerEdge:"Edge TTS(免费,无需 API Key)",webspeechVoice:"音色",webspeechVoiceHint:"从浏览器或系统提供的语音中选择",webspeechVoicePlaceholder:"自动(默认语音)",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:"不需要则留空",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}",providerMimo:"MiMo TTS",mimoHint:"小米 MiMo TTS,支持预置音色、音色设计、音色复刻三种模式",mimoApiKey:"API Key",mimoApiKeyHint:"在 platform.xiaomimimo.com 获取",mimoApiKeyPlaceholder:"MiMo API Key",mimoAuthMode:"认证方式",mimoAuthModeHint:"所选 MiMo 端点要求的鉴权请求头格式",mimoAuthModeBearer:"Bearer Token(Authorization)",mimoAuthModeApiKey:"API Key 请求头(api-key)",mimoAuthModeBoth:"同时发送两种请求头",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 provider 的仓库任务流程。",copyCommand:"复制",commandCopied:"命令已复制",commandCopyFailed:"复制失败",refresh:"刷新",checking:"检测中",installStatus:"安装情况",installed:"已安装",notInstalled:"未安装",installRequired:"{agent} 未安装,请先安装后再创建会话。",installNow:"一键安装",installing:"安装中",installSuccess:"安装完成",installFailed:"安装失败",installFailedHermesHint:"安装失败,请让 Hermes 帮你安装。",installFailureReason:"错误原因",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 启动失败。",clearCredentials:"清除凭证",clearCredentialsConfirm:"确定清除“{name}”已保存的频道凭证吗?频道行为和访问控制会保留。",credentialsCleared:"频道凭证已清除",clearCredentialsFailed:"清除频道凭证失败",clearCredentialsUnsaved:"请先保存或放弃未保存的频道改动,再清除凭证。",clearCredentialsGatewayRestartFailed:"凭证已清除,但 gateway 无法自动重启。",clearCredentialsGatewayRestartDisabled:"凭证已清除,但 gateway 自动重启已禁用。请手动重启 gateway 使改动生效。",botToken:"Bot Token",botTokenHint:"开发者门户获取的 Bot Token",proxyUrl:"代理 URL",proxyUrlHint:"可选的平台专用代理,支持 http://、https:// 和 socks5://",accessToken:"Access Token",accessTokenHint:"Matrix Access Token",homeserver:"Homeserver URL",homeserverHint:"Matrix 服务器地址",matrixUserId:"Matrix 用户 ID",matrixUserIdHint:"密码登录必填;Access Token 登录可选",matrixPassword:"Matrix 密码",matrixPasswordHint:"可替代 Access Token 的登录密码",appId:"App ID",appIdHint:"飞书 App ID",appSecret:"App Secret",appSecretHint:"飞书 App Secret",encryptKey:"加密密钥",encryptKeyHint:"飞书加密密钥",verificationToken:"验证令牌",verificationTokenHint:"飞书验证令牌",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:"通过二维码配对启用 WhatsApp",weixinToken:"微信 Token",weixinTokenHint:"通过 weixin CLI 扫码登录获取 (hermes weixin)",accountId:"Account ID",accountIdHint:"微信 Account ID",qrLogin:"扫码登录",qrRelogin:"重新登录",qrFetching:"正在获取二维码...",qrScanHint:"使用微信扫描二维码登录",qrScanedHint:"已扫描,请在手机上确认...",qqAppId:"App ID",qqAppIdHint:"QQ 开放平台机器人 App ID",qqAppSecret:"App Secret",qqAppSecretHint:"QQ 开放平台机器人 App Secret",qqMarkdown:"Markdown 支持",qqMarkdownHint:"启用 Markdown 格式消息(部分客户端可能不支持)",qqSandbox:"沙箱模式",qqSandboxHint:"启用沙箱环境(测试用)",qqQrScanHint:"使用 QQ 扫描上方二维码,或在手机上打开链接完成绑定"},gateways:{title:"网关",running:"运行中",stopped:"已停止",started:"已启动",startFailed:"启动失败",stopFailed:"停止失败"},language:{label:"语言",zh:"中文",en:"English"},terminal:{sessions:"会话",newTab:"新建终端",closeSession:"关闭此会话?",sessionExited:"已退出",processExited:"进程已退出,代码 {code}",noSessions:"暂无终端会话",connectionFailed:"终端服务连接失败",connectionClosed:"终端连接已关闭",connectionError:"终端连接错误"},groupChat:{agentLinkButton:"带自己的 Agent 入群",agentOwner:"归属人:{name}",agentLinkTitle:"把你的 Agent 加入房间",agentLinkDescription:"连接你自己的 Hermes 服务。服务会主动建立加密的出站连接,群聊不会获得你的登录凭据,也不能浏览你的本地工作区。",agentLinkTargetUrl:"你的 Hermes 服务地址",agentLinkTargetPlaceholder:"http://127.0.0.1:8748 或 https://your-hermes.example.com",agentLinkTargetRequired:"请输入 Hermes 服务地址。",agentLinkInvalidTarget:"请输入不含账号、路径、查询参数或片段的 HTTP/HTTPS 服务地址。",agentLinkOpenTarget:"登录并选择 Agent",agentLinkPopupBlocked:"授权窗口被浏览器拦截了,请允许此页面弹出窗口后重试。",agentLinkParentUnavailable:"授权窗口已与邀请页面断开,请关闭窗口后重新发起。",agentLinkParentUnconfirmed:"邀请页面未确认这次申请,请保持邀请页打开并重新发起授权。",agentLinkIncompleteConfiguration:"请选择完整的 Profile、服务商和模型后再申请接入。",agentLinkWaitingApproval:"正在等待群主批准这个 Agent…",agentLinkApproved:"群主已批准,正在连接你的 Agent…",agentLinkConnected:"你的 Agent 已连接到房间。",agentLinkError:"无法连接这个 Agent。",agentLinkRejected:"群主拒绝了这个 Agent 的接入请求。",agentLinkExpired:"Agent 接入请求已过期,请重新发起。",agentLinkPairingCode:"手动配对码",agentLinkPairingCodeHint:"如果授权窗口无法与当前页面通信,请把这个短时有效的配对码粘贴到授权窗口。",agentLinkCopyCode:"复制配对码",agentLinkAuthorizeTitle:"授权群聊 Agent",agentLinkAuthorizeDescription:"选择要连接的本地 Agent。群聊可以向它发送消息,但不能浏览你的本地工作区。",agentLinkSelectAgent:"Agent",agentLinkRequestConnection:"申请接入",agentLinkOrPairingCode:"或者使用手动配对码",agentLinkPairingCodePlaceholder:"粘贴 HGC1 配对码",agentLinkConnect:"连接 Agent",agentLinkSecurityHint:"只批准你认识的群聊。配对票据只能使用一次,并会很快过期。",agentLinkLoadFailed:"无法读取本地 Agent。",agentLinkConnectFailed:"无法连接所选 Agent。",agentLinkInvalidPairingCode:"配对码无效。",agentLinkClose:"关闭",agentLinkApprovalMismatch:"连接请求在你确认后发生了变化,请重新检查 Agent 后再试。",guestAgentsDisabled:"群主尚未开启“访客自带 Agent”。",guestAgentSettings:"访客 Agent 接入",allowGuestAgents:"允许成员带自己的 Agent 入群",maxGuestAgentsPerMember:"每位成员最多接入 Agent 数",ownerApprovalHint:"每个 Agent 仍然必须经过群主明确批准。",allowRemoteWorkspaceAccess:"允许远程 Agent 读写群聊工作区",remoteWorkspaceAccessHint:"开启后,已批准的远程 Agent 会在每次运行期间获得短期访问权限;敏感文件和群聊工作区以外的路径仍会被拦截。",agentPairingRequestTitle:"Agent 接入申请",agentPairingRequestDescription:"{user} 想从 {origin} 接入一个 Agent。",approveAgent:"批准 Agent",rejectAgent:"拒绝",agentPairingApproved:"已批准 Agent 接入",agentPairingRejected:"已拒绝 Agent 接入",title:"群聊",refactorNoticeTitle:"群聊升级说明",refactorNoticeMessage:"群聊已完成重大重构。如果遇到无法聊天的情况,请重新创建房间。",emptyState:"开始群聊对话",createRoom:"创建房间",joinByCode:"通过邀请码加入",shareTitle:"加入群聊",shareSubtitle:"输入邀请码即可进入,无需登录账号。",shareCodeHint:"该邀请码仅允许访问对应的群聊房间。",shareInvalidCode:"邀请码无效或已更新,请向分享者获取新的链接。",shareJoining:"正在进入群聊…",shareNameSubtitle:"进入房间前,请先设置你的姓名。",shareNameConflict:"该姓名已被房间内的用户或 Agent 使用,请更换一个姓名。",shareNameReserved:"该姓名为系统保留名称,请更换一个姓名。",shareEnterRoom:"进入房间",roomName:"房间名称",roomNamePlaceholder:"输入房间名称",inviteCode:"邀请码",inviteCodeSettings:"邀请码设置",inviteCodePlaceholder:"输入新的邀请码",generateInviteCode:"生成邀请码",inviteCodeRotateHint:"更新后旧邀请码将无法用于新成员加入。",inviteCodeUpdated:"邀请码已更新",inviteCodeUpdateFailed:"邀请码更新失败",autoGenerate:"自动生成",noRooms:"暂无房间",localRooms:"本地",remoteRooms:"远程",remoteRoomOffline:"远程连接已离线。",renameRemoteRoom:"重命名远程房间",renameRemoteRoomHint:"仅修改该房间在本机上的显示名称,不会修改远程房间名称。",remoteRoomRenamed:"远程房间显示名称已更新",remoteRoomRenameFailed:"更新远程房间显示名称失败",leaveRemoteRoom:"退出房间",leaveRemoteRoomConfirm:"确定退出“{name}”吗?本机接入该远程房间的所有 Agent 都会被移除,并删除对应的本地连接记录。",remoteRoomLeft:"已退出远程房间",remoteRoomLeaveFailed:"退出远程房间失败",remoteRoomLeavePartial:"本地记录已删除,但远程房间处于离线状态,有 {count} 个 Agent 连接未能收到退出通知。",selectOrCreate:"选择或创建一个房间开始聊天",agents:"智能体",allAgents:"所有 Agent",addAgent:"添加智能体",agentType:"Agent 类型",agentTypes:{hermes:"Hermes",ekko:"Ekko",codex:"Codex",claude:"Claude"},selectProfile:"选择一个配置",agentAdded:"智能体已添加",selectRoomFirst:"请先选择一个群组",agentAlreadyInRoom:"该智能体已在房间中",agentAddFailedCount:"{count} 个智能体未添加:{details}",editAgentTitle:"编辑 {name}",removeMember:"移出群聊",memberRemoved:"已将 {name} 移出群聊",memberRemovedNotice:"你已被群主移出群聊。邀请码仍有效时可以重新进入。",noAgents:"当前房间暂无智能体",members:"{count} 成员",roomCreated:"房间已创建",roomDeleted:"房间已删除",roomCloned:"房间已克隆",cloneRoom:"克隆房间",copyRoomLink:"复制房间链接",manualCopyRoomLinkHint:"浏览器无法自动复制,请选中链接后手动复制。",deleteRoomConfirm:"确定删除这个房间吗?",clearContext:"清理上下文",clearContextConfirm:"确定清理当前房间上下文吗?消息和压缩快照会被删除,智能体和成员会保留。",contextCleared:"上下文已清理",you:"你",joined:"已加入房间",joinFailed:"加入房间失败",inputPlaceholder:"输入消息... (Enter 发送)",messageDisplayLimit:"群聊最多展示 600 条消息",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:"压缩配置已保存",roomSettings:"房间设置",saveCompression:"保存压缩设置",compressNow:"立即压缩",compressingInProgress:"正在压缩中,请稍后",summarySettings:"滚动总结",summarySettingsDesc:"由无工具、无技能、无记忆的裸 Ekko Agent 按固定真人对话轮数维护房间共享总结。",summaryProvider:"总结 Provider",summaryProviderPlaceholder:"选择 Provider",summaryModel:"总结 Model",summaryModelPlaceholder:"选择 Model",summaryApiMode:"API Mode",summaryEveryTurns:"每 N 轮总结",summaryEveryTurnsDesc:"一轮等于一条真人消息;房间总结和锚点提交后,Agent 才会开始下一轮运行。",summaryConfigSaved:"总结设置已保存",summaryConfigurationRequired:"该群聊尚未配置总结器,请先选择 Profile、Provider、Model 和 API Mode 并保存。",summaryConfigurationOwnerRequired:"该群聊尚未配置总结器,请联系房间管理员完成配置后再发送消息。",saveSummaryConfig:"保存总结设置",currentSummary:"当前总结",summaryStatus:{idle:"待总结",summarizing:"正在总结",success:"总结成功",failed:"总结失败"},summaryUpdatedAt:"最后更新",summarizedTurns:"已总结轮数",summaryAnchor:"总结锚点",summaryMessagesAbove:"以上已总结",summaryNoAnchor:"尚无锚点",summaryContent:"总结内容",summaryEmpty:"尚未生成总结",summaryEditKeepsAnchor:"手动修改只更新总结正文,不会移动当前锚点。",saveSummary:"保存总结",summaryUpdated:"总结已更新",summaryNever:"从未",summaryLoadFailed:"加载房间总结失败"},usage:{title:"用量统计",refresh:"刷新",totalTokens:"总 Token 数",inputTokens:"输入",outputTokens:"输出",totalSessions:"总会话数",avgPerDay:"日均 ~{n}",estimatedCost:"预估费用",cacheHitRate:"缓存命中率",modelBreakdown:"模型分布",agentBreakdown:"Agent 分布",agents:{hermes:"Hermes Agent",claudeCode:"Claude Code",codex:"Codex",ekkoAgent:"Ekko Agent",unknown:"未知"},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:"复制路径",attachToChat:"添加到输入框",attachFailed:"添加文件失败",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:"保存",previewMode:"预览",sourceMode:"源码",tableMode:"表格",worksheet:"工作表",htmlPreviewTitle:"受限 HTML 预览",previewLoading:"正在加载预览...",previewFailed:"无法预览",previewMimeMismatch:"文件类型与请求的预览格式不一致。",downloadInstead:"改为下载",previousPage:"上一页",nextPage:"下一页",pageStatus:"第 {page} 页,共 {total} 页",zoom:"缩放",pdfPageLimit:"仅预览前 {count} 页。",tableTruncated:"为保持界面流畅,表格预览已截断。请下载文件查看全部行列。"},download:{downloading:"正在下载...",downloadFailed:"下载失败",fileNotFound:"文件不存在或已被删除",fileTooLarge:"文件过大(超过限制)",backendError:"文件读取失败,远程环境可能不可用",backendTimeout:"文件读取超时",unsupportedBackend:"当前 terminal backend 暂不支持文件下载",invalidPath:"无效的文件路径",contentDisplay:"内容展示",download:"下载",downloadFile:"下载文件"},changelog:{new_0_6_41_1:"修复通过 npm 安装 Hermes Web UI 后本地 STT 无法可靠识别的问题:在 macOS、Windows 和 Linux 上将 sherpa-onnx 原生运行时固定为与 Node.js 封装相同的版本(#2464)",new_0_6_40_1:"本版本涵盖 v0.6.39 之后合并的全部 40 个 PR,涉及安全远程群聊、本地语音识别、Workflow 调度、全局审批、Chat Run Webhook、MCU 与 Coding Agent 稳定性",new_0_6_40_2:"群聊新增安全共享房间与远程 Agent,稳定 Agent 交接、在线状态与撤销流程,保留离线归属人头像,并在剪贴板不可用时提供房间链接手动复制(#2408、#2410、#2411、#2415、#2423)",new_0_6_40_3:"远程 Agent 支持文件传输与云端 workspace 上传;非归属人请求受更严格的 workspace、敏感信息和个人隐私记忆边界保护,同时修正归属与审批路由(#2413、#2430、#2433、#2435)",new_0_6_40_4:"群聊停止迁移旧版 Agent Link,并在列表中区分可折叠的本地与远程房间,支持远程房间别名、分享页入口和退出清理(#2424、#2459)",new_0_6_40_5:"群聊历史不再自动裁剪,工具结果可可靠保留 mention 文本并限制持久化消息 ID;悬空工具、审批对齐、审批路由和高负载 token 统计也得到修复(#2390、#2420、#2426、#2427、#2429、#2445)",new_0_6_40_6:"最近会话和群聊活动反馈更及时,工具面板展开加入平滑动画(#2389、#2414)",new_0_6_40_7:"全局审批现在可接管已存在的提示,展示更清晰的命令预览,并通过系统通知提醒待处理操作(#2406、#2425、#2432)",new_0_6_40_8:"新增基于 sherpa-onnx 的中英双语本地流式 STT,补足尾部静音以保留最后词语,并兼容 macOS 与 Windows Electron 的普通音频缓冲(#2447、#2448、#2461)",new_0_6_40_9:"Workflow 新增持久化定时运行与完整的调度管理界面,可创建、编辑、启停和删除计划(#2434、#2441)",new_0_6_40_10:"Chat Run 新增生命周期 Webhook 并移除未使用的旧端点;服务器同时提供轻量存活检查接口(#2422、#2452、#2453)",new_0_6_40_11:"MCU 可在 Ekko 与 Hermes Agent 之间选择运行时,Global Agent 头像与 MCU 状态显示也更准确(#2438、#2442)",new_0_6_40_12:"Coding Agent 强制使用执行身份,修正 Windows 运行持久化隔离、MCP 超时、跨模型 reasoning 回放、上下文用量估算和重复 Studio 指引(#2387、#2392、#2395、#2396、#2398、#2416)",new_0_6_40_13:"MoA 预设可为每个模型配置推理强度;图片生成关闭 Responses 远端存储,减少不必要的数据保留(#2439、#2449)",new_0_6_39_1:"Ekko Agent 新增显式初始化、受控 Node.js/Python 代码执行与工具授权,并能在前台运行中使用现有交互卡片提问,接收选择或文本后继续(#2362、#2368)",new_0_6_39_2:"群聊会等待房间加入确认后再发送,修复重连窗口偶发的“Not in room”;输入状态改为节流心跳,只有其他成员头像显示无文字呼吸灯(#2373)",new_0_6_39_3:"单聊和群聊中的 Coding Agent 工具事件现在由原生 CLI 生命周期统一驱动,工具参数完成后只发送一次开始事件,消除重复或悬空工具卡和大型群聊中工具 JSON 逐字刷新的卡顿(#2366、#2372)",new_0_6_39_4:"Coding Agent 提示词改走 stdin,保留多行及图片输入并绕过 Windows 命令长度限制;群聊也不再用固定两分钟上限中断仍在工作的 Codex、Claude Code 或 Ekko(#2354、#2357)",new_0_6_39_5:"Codex 在 Provider 代理流可恢复断开时,以原生 JSONL 和进程退出作为最终状态,避免任务已经完成却在群聊中被误报失败(#2375)",new_0_6_39_6:"版本管理会验证 Runtime 完整性并显示桌面端回退原因;无效 Runtime 不能激活,Web UI 下载与切换入口已隐藏,更新继续随桌面安装包提供(#2353)",new_0_6_39_7:"群聊运行标题现在只保留 Agent 名称,减少重复说明并让消息分组更简洁(#2352)",new_0_6_39_8:"ESP32-C3 远程连接现在会在设备发现时保持 Socket.IO 在线、复用固定上限的语音缓冲、使用退避重连,并在 Studio 短暂断线时保留登录,让远程扫描和语音交互更快、更稳定(#2383)",new_0_6_38_1:"Windows 桌面端启动时会自动修复 Agent 更新后缓存 Runtime 中失效的 Python 相对路径,恢复更新、Runtime 切换或存储迁移后的 CLI、日志与 Gateway",new_0_6_38_2:"官网兼容版本列表重新识别 Hermes 0.19.0,确保对应桌面端下载和兼容性检查继续可用(#2348)",new_0_6_37_1:"本次涵盖 14 个 PR 的版本以群聊全面重构为核心:每个 Agent 可独立选择 Profile、Provider、模型、API 模式、推理强度、身份和 workspace(#2334)",new_0_6_37_2:"群聊房间现在使用全新隔离运行,将每条回复与其 reasoning 和工具过程归组展示,并新增共享可编辑滚动摘要、摘要状态与边界、Agent mention、房间及 workspace 抽屉和旧房间迁移提示。语音自动播放会提前生成不同 Profile 的 TTS,同一 Profile 保持单并发,并严格按消息顺序播放,新回复不会覆盖正在播放的语音(#2334)",new_0_6_37_3:"MiniMax Coding Plan OAuth 现已支持 Global 与中国区,Codex、xAI、Anthropic、Nous 和 MiniMax 的授权凭证会通过持久 Runtime Bridge 自动刷新(#2337)",new_0_6_37_4:"ESP32-C3 v1 和 v2 新增可选自动聆听模式,支持本地 VAD、预录音、静音结束、播放抑制,并保留按键说话控制(#2338)",new_0_6_37_5:"MCU Global Agent 现使用简洁的 Ekko 语音模式,可委派安全的后台任务,保留会话历史和 workspace,并不再向设备转发过大的工具结果(#2326)",new_0_6_37_6:"自定义及 OpenAI 兼容 TTS 会自动重试 Provider 支持的音频格式,并将非 MP3 输出转换为 Hermes 可播放格式(#2328)",new_0_6_37_7:"Profile 导入与导出最长可运行 10 分钟,超时提示更明确,并支持并发归档隔离、文件名清理和临时文件回收(#2310、#2324)",new_0_6_37_8:"Hermes Agent Bridge 现会应用模型专属的默认推理强度,同时保留单次运行显式覆盖和旧 Runtime 回退逻辑(#2325)",new_0_6_37_9:"版本管理会分别显示真实安装的 Hermes Agent 版本和 Runtime 路径,并明确 CLI 更新范围与完全退出 Studio 的要求(#2323)",new_0_6_37_10:"Workspace 文件树缩小了层级缩进,让深层目录名称保持可见(#2340)",new_0_6_37_11:"桌面端默认升级到 Hermes Agent 0.20.0,使用固定源码和便携 Node/npm,支持 Windows 更新后重建的启动器、无系统 Python 更新,并保持托管 Gateway 隐藏运行(#2321、#2344)",new_0_6_37_12:"Windows Runtime 存储迁移现在无需管理员权限即可处理更新产生的链接,同时重定向 Python、支持 Unicode 自定义路径,并在首次重启时刷新 CLI 与 MCP shim(#2345)",new_0_6_37_13:"macOS 桌面签名改用显式临时 keychain,ARM64 与 x64 均兼容 macOS 26 runner 的严格模式(#2315)",new_0_6_36_1:"本版本涵盖 0.6.35 之后合并的全部 28 个 PR,涉及语音、阿拉伯语与 RTL、App Relay、Agent 稳定性、聊天体验、看板、Journey、MCU 字幕和 Ekko 请求日志",new_0_6_36_2:"语音设置已统一到“模型”页面,Hermes 原生与 Web UI Provider 可协同使用;自定义 TTS 支持选择 voice,Edge TTS 支持任意 voice ID 和阿拉伯语选项(#2260、#2265、#2267)",new_0_6_36_3:"阿拉伯语与端到端 RTL 支持现已覆盖文档流、Naive UI、聊天、群聊、Workflow、浮层、抽屉、逐内容块文本方向,并修正了 Profile 文案(#2269、#2270、#2271、#2273、#2277、#2294、#2303)",new_0_6_36_4:"活跃的后台委派任务会让 Agent Bridge 会话保持存活直至任务结束,避免空闲回收中断长时间运行的任务(#2254)",new_0_6_36_5:"桌面端群聊 Agent 列表已恢复点击操作,主窗口也可缩小至 769 像素而不会进入移动端布局(#2259、#2263)",new_0_6_36_6:"Codex、Claude Code 和 Ekko 产生的 workspace diff 现在只会显示在对应的助手消息中,并统一适用于实时、恢复和群聊场景(#2264)",new_0_6_36_7:"中英文 README 已更新为当前产品与 CLI 能力,官网中过时且绑定 0.6.12 版本的手册已移除(#2268)",new_0_6_36_8:"新增独立的无界面 App Relay,通过安全配对和认证访问白名单本地 API 与聊天流,无需将 Studio 直接暴露到公网(#2275)",new_0_6_36_9:"Desktop Agent Browser 现在可以安全分页读取较长的无障碍文本,并操作 snapshot 引用落在可见文本上的控件(#2278)",new_0_6_36_10:"聊天体验新增固定位置的 Provider 控件、按消息恢复滚动位置、紧凑的工具与终端侧栏、全尺寸预览和全宽 workspace diff(#2279、#2282、#2283、#2293)",new_0_6_36_11:"新的 Ekko 会话会获得按 Profile 隔离的默认 workspace,现有 workspace 和用户明确选择的目录保持不变(#2289)",new_0_6_36_12:"Memory 和 Skill 审批结果改为结构化并串行执行,避免显示错误的成功提示及同一 Profile 内的并发写入(#2295)",new_0_6_36_13:"看板新增可靠的任务归档和可平移画布,Journey 则升级为紧凑、确定性的 Memory 到 Skill 关系图(#2296、#2297)",new_0_6_36_14:"实时 reasoning 在工具边界间保持稳定,完成后归属到正确的消息或工具,也不再产生空的子 Agent 气泡(#2299)",new_0_6_36_15:"MCU 语音现在可在 ESP32-C3 v1 和 v2 上同步显示分页 GB2312 字幕,同时保持音频流畅播放(#2305)",new_0_6_36_16:"Ekko 现在为每次模型尝试写入一条紧凑的 model.request 日志,覆盖上下文压缩,并在没有工具时彻底省略 tool_choice(#2311)",new_0_6_35_1:"Ekko Agent 持久记忆现已在生产环境启用,支持按 Profile 隔离的 SQLite 存储、4000 Token 自动召回预算、更完善的全库相关性检索,以及更安全的模型请求处理(#2246)",new_0_6_34_1:"本版本涵盖 0.6.33 之后合并的全部 21 个 PR,聚焦用户自定义主题、Ekko 与 Coding Agent 增强、桌面和浏览器体验、自动化能力及可靠性修复",new_0_6_34_2:"用户可按账号自定义文字大小、文字与选中颜色和工作区背景,并在各页面获得一致的透明主题效果;Windows 窗口和浏览器设置同步跟随主题,Ekko 浏览器命令也可在 Windows 正常启动(#2242、#2243、#2244)",new_0_6_34_3:"Ekko 已在生产环境开放,支持按需发现 Skill 和多模态输入;受保护的 Skill 演进、Profile 隔离日志、协议持久化及 Responses 推理摘要进一步提升安全性与能力(#2215、#2236)",new_0_6_34_4:"Ekko 记忆新增偏好、关系、习惯、长期目标等可确定查询的结构化类型;长对话现已接入共享的快照式上下文压缩生命周期(#2229、#2230)",new_0_6_34_5:"Coding Agent 可在 Codex、Claude Code 和作用域 Provider 协议间完整保留图片输入,自动截断 Responses 超大工具输出,并按会话隔离运行配置和迟到事件(#2222、#2232、#2238)",new_0_6_34_6:"Hermes Workflow 能力预检不再因缺少 API 模式元数据而拒绝有效目标;Kanban 已适配 Hermes Agent 0.19 的任务语义和附件预览,Cron 的立即运行改为安全后台启动并加强创建校验(#2239、#2216、#2228)",new_0_6_34_7:"桌面端新增专注的独立聊天窗口,浏览器自动化可操作密码、支付和文件输入框,群聊中每个房间的人类成员名称与描述也会独立保存(#2209、#2210、#2212)",new_0_6_34_8:"可用会话级 /yolo 命令切换免审批模式,Agent 最大轮数移除 200 轮界面上限,Markdown 保留 ASCII 直引号,pt-BR 语言包也恢复缺失的变音符号(#2223、#2225、#2234、#2221)",new_0_6_34_9:"ESP32-C3 新增可配置的联网待机,在保持 Wi-Fi、登录、Profile 和 Socket.IO 状态的同时降低空闲功耗,并支持即时唤醒与持久化超时设置(#2218)",new_0_6_33_1:"本版本涵盖 0.6.32 之后合并的全部 16 个 PR,聚焦桌面 Agent Browser、Workflow 运行证据与时限、文件和聊天交互、Provider 模型刷新及可靠性修复",new_0_6_33_2:"桌面端新增可见的多标签 Agent Browser,支持隔离 Profile、代理/存储/下载管理、加密持久化 Cookie、受保护的 Agent 操作和延迟 MCP 工具发现(#2177、#2182)",new_0_6_33_3:"单聊/群聊链接和需鉴权的 HTML 预览可在内嵌浏览器打开;同时优化权限操作间距、跨平台导航图标,以及 Windows 侧栏与标题栏联动(#2191、#2194、#2198)",new_0_6_33_4:"Workflow 运行会保留启动时不可变的可视快照,可为 Run/Rerun 设置统一总时限并显示已用/剩余时间证据,历史与详情也改为按真实消费路径分页展示(#2171、#2173、#2180)",new_0_6_33_5:"可把任意文件直接粘贴到单聊/群聊,或从 workspace 右键菜单添加到聊天;更紧凑的文件元数据列为文件名留出更多空间(#2175、#2176)",new_0_6_33_6:"每个已配置 Provider 均可单独刷新模型目录,在删除前确认、保留不可用默认模型并支持一次恢复;同时覆盖 OAuth Provider、完整多语言和表单自动填充行为(#2115)",new_0_6_33_7:"中止/暂停状态按聊天会话隔离,后台会话不再影响当前会话的停止按钮;桌面端选中文字和输入框也新增原生右键操作(#2203、#2204)",new_0_6_33_8:"桌面退出、更新和安装采用有时限的优雅关闭,仅在清理超时后强制终止剩余 Agent Bridge、MCP、浏览器和 Web UI 进程树(#2193)",new_0_6_33_9:"MCU 语音会话隔离前台与后台结果;MiniMax 兼容的 MCP 工具名也保持在 Provider 长度限制内,并继续兼容旧调用方(#2181、#2169)",new_0_6_32_1:"本版本涵盖 0.6.31 之后合并的全部 14 个 PR,聚焦会话分类与压缩、群聊、Workflow 路由、Skill Bundle、Ekko 记忆、Hermes 0.19 和桌面窗口界面",new_0_6_32_2:"群聊 {'@'}mention 现在可在 CJK 文本、Emoji 和标点后正常触发;房主也可在房间设置中查看、生成和轮换邀请码(#2133、#2141)",new_0_6_32_3:"Workflow 在 handoff 和重新连接过程中会保留每次 Hermes Bridge 运行的来源;Scoped Codex 和 Claude Code 节点也可为有效 API Key 目标使用 launcher 支持的协议(#2137、#2154)",new_0_6_32_4:"会话新增全局分类、更准确的 Markdown 感知搜索排序,以及在编辑、分支和并发运行中保持正确并限制历史范围的游标压缩;完整压缩方案也已形成文档(#2139、#2143、#2145、#2146)",new_0_6_32_5:"现在可直接在聊天中创建、浏览、运行和删除 Profile 级 Skill Bundle,并清楚查看其中包含的 Skill(#2156)",new_0_6_32_6:"Ekko 记忆改用 Profile 隔离的单一规范模型,支持 revision 校验的精确修改、更完整的来源审计和更严格的相关性过滤(#2159)",new_0_6_32_7:"Hermes 0.19 的助手中间消息会以独立气泡实时显示并保存;普通单聊也可异步投递持久化的后台委派结果(#2160)",new_0_6_32_8:"新的桌面 Runtime 构建、后备路径和 Windows CLI shim 现在默认使用 Hermes Agent 0.19.0(#2161)",new_0_6_32_9:"桌面窗口控件已融入页面框架:macOS 红绿灯位于侧边栏,Windows 控件位于主内容上方,Linux 继续使用原生窗口装饰(#2162)",new_0_6_32_10:"开发文档现在同时支持直接使用当前 checkout,并可按需采用隔离的 Git worktree(#2155)"}};export{e as default};