@silicaclaw/cli 2026.3.20-2 → 2026.3.20-21

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 (145) hide show
  1. package/CHANGELOG.md +108 -0
  2. package/INSTALL.md +13 -7
  3. package/README.md +60 -12
  4. package/VERSION +1 -1
  5. package/apps/local-console/dist/apps/local-console/src/server.d.ts +139 -3
  6. package/apps/local-console/dist/apps/local-console/src/server.js +1029 -92
  7. package/apps/local-console/dist/packages/core/src/index.d.ts +2 -0
  8. package/apps/local-console/dist/packages/core/src/index.js +2 -0
  9. package/apps/local-console/dist/packages/core/src/privateCrypto.d.ts +17 -0
  10. package/apps/local-console/dist/packages/core/src/privateCrypto.js +40 -0
  11. package/apps/local-console/dist/packages/core/src/privateMessage.d.ts +23 -0
  12. package/apps/local-console/dist/packages/core/src/privateMessage.js +74 -0
  13. package/apps/local-console/dist/packages/core/src/profile.js +2 -0
  14. package/apps/local-console/dist/packages/core/src/publicProfileSummary.d.ts +4 -0
  15. package/apps/local-console/dist/packages/core/src/publicProfileSummary.js +3 -0
  16. package/apps/local-console/dist/packages/core/src/types.d.ts +40 -0
  17. package/apps/local-console/dist/packages/network/src/relayPreview.d.ts +12 -0
  18. package/apps/local-console/dist/packages/network/src/relayPreview.js +108 -8
  19. package/apps/local-console/dist/packages/network/src/types.d.ts +4 -0
  20. package/apps/local-console/dist/packages/storage/src/repos.d.ts +27 -1
  21. package/apps/local-console/dist/packages/storage/src/repos.js +35 -1
  22. package/apps/local-console/public/app/app.js +502 -11
  23. package/apps/local-console/public/app/events.js +21 -0
  24. package/apps/local-console/public/app/network.js +144 -32
  25. package/apps/local-console/public/app/overview.js +57 -27
  26. package/apps/local-console/public/app/social.js +342 -105
  27. package/apps/local-console/public/app/styles.css +149 -43
  28. package/apps/local-console/public/app/template.js +196 -100
  29. package/apps/local-console/public/app/translations.js +438 -316
  30. package/apps/local-console/src/server.ts +1177 -90
  31. package/apps/public-explorer/public/app/template.js +2 -2
  32. package/apps/public-explorer/public/app/translations.js +36 -36
  33. package/docs/NEW_USER_OPERATIONS.md +5 -5
  34. package/docs/OPENCLAW_BRIDGE.md +7 -7
  35. package/docs/OPENCLAW_BRIDGE_ZH.md +6 -6
  36. package/node_modules/@silicaclaw/core/dist/packages/core/src/index.d.ts +2 -0
  37. package/node_modules/@silicaclaw/core/dist/packages/core/src/index.js +2 -0
  38. package/node_modules/@silicaclaw/core/dist/packages/core/src/privateCrypto.d.ts +17 -0
  39. package/node_modules/@silicaclaw/core/dist/packages/core/src/privateCrypto.js +40 -0
  40. package/node_modules/@silicaclaw/core/dist/packages/core/src/privateMessage.d.ts +23 -0
  41. package/node_modules/@silicaclaw/core/dist/packages/core/src/privateMessage.js +74 -0
  42. package/node_modules/@silicaclaw/core/dist/packages/core/src/profile.js +2 -0
  43. package/node_modules/@silicaclaw/core/dist/packages/core/src/publicProfileSummary.d.ts +4 -0
  44. package/node_modules/@silicaclaw/core/dist/packages/core/src/publicProfileSummary.js +3 -0
  45. package/node_modules/@silicaclaw/core/dist/packages/core/src/types.d.ts +40 -0
  46. package/node_modules/@silicaclaw/core/package.json +2 -2
  47. package/node_modules/@silicaclaw/core/src/index.ts +2 -0
  48. package/node_modules/@silicaclaw/core/src/privateCrypto.ts +57 -0
  49. package/node_modules/@silicaclaw/core/src/privateMessage.ts +101 -0
  50. package/node_modules/@silicaclaw/core/src/profile.ts +2 -0
  51. package/node_modules/@silicaclaw/core/src/publicProfileSummary.ts +7 -0
  52. package/node_modules/@silicaclaw/core/src/types.ts +44 -0
  53. package/node_modules/@silicaclaw/network/dist/packages/network/src/relayPreview.d.ts +12 -0
  54. package/node_modules/@silicaclaw/network/dist/packages/network/src/relayPreview.js +108 -8
  55. package/node_modules/@silicaclaw/network/dist/packages/network/src/types.d.ts +4 -0
  56. package/node_modules/@silicaclaw/network/src/relayPreview.ts +120 -10
  57. package/node_modules/@silicaclaw/network/src/types.ts +2 -0
  58. package/node_modules/@silicaclaw/storage/dist/packages/core/src/index.d.ts +2 -0
  59. package/node_modules/@silicaclaw/storage/dist/packages/core/src/index.js +2 -0
  60. package/node_modules/@silicaclaw/storage/dist/packages/core/src/privateCrypto.d.ts +17 -0
  61. package/node_modules/@silicaclaw/storage/dist/packages/core/src/privateCrypto.js +40 -0
  62. package/node_modules/@silicaclaw/storage/dist/packages/core/src/privateMessage.d.ts +23 -0
  63. package/node_modules/@silicaclaw/storage/dist/packages/core/src/privateMessage.js +74 -0
  64. package/node_modules/@silicaclaw/storage/dist/packages/core/src/profile.js +2 -0
  65. package/node_modules/@silicaclaw/storage/dist/packages/core/src/publicProfileSummary.d.ts +4 -0
  66. package/node_modules/@silicaclaw/storage/dist/packages/core/src/publicProfileSummary.js +3 -0
  67. package/node_modules/@silicaclaw/storage/dist/packages/core/src/types.d.ts +40 -0
  68. package/node_modules/@silicaclaw/storage/dist/packages/storage/src/repos.d.ts +27 -1
  69. package/node_modules/@silicaclaw/storage/dist/packages/storage/src/repos.js +35 -1
  70. package/node_modules/@silicaclaw/storage/package.json +2 -2
  71. package/node_modules/@silicaclaw/storage/src/repos.ts +59 -1
  72. package/openclaw-skills/silicaclaw-bridge-setup/SKILL.md +18 -0
  73. package/openclaw-skills/silicaclaw-bridge-setup/VERSION +1 -1
  74. package/openclaw-skills/silicaclaw-bridge-setup/manifest.json +2 -2
  75. package/openclaw-skills/silicaclaw-broadcast/SKILL.md +18 -0
  76. package/openclaw-skills/silicaclaw-broadcast/VERSION +1 -1
  77. package/openclaw-skills/silicaclaw-broadcast/manifest.json +2 -2
  78. package/openclaw-skills/silicaclaw-network-config/SKILL.md +158 -0
  79. package/openclaw-skills/silicaclaw-network-config/VERSION +1 -0
  80. package/openclaw-skills/silicaclaw-network-config/agents/openai.yaml +6 -0
  81. package/openclaw-skills/silicaclaw-network-config/manifest.json +27 -0
  82. package/openclaw-skills/silicaclaw-network-config/references/network-modes.md +22 -0
  83. package/openclaw-skills/silicaclaw-network-config/references/owner-dialogue-cheatsheet-zh.md +47 -0
  84. package/openclaw-skills/silicaclaw-network-config/references/public-discovery.md +22 -0
  85. package/openclaw-skills/silicaclaw-owner-push/SKILL.md +18 -0
  86. package/openclaw-skills/silicaclaw-owner-push/VERSION +1 -1
  87. package/openclaw-skills/silicaclaw-owner-push/manifest.json +2 -2
  88. package/openclaw-skills/silicaclaw-owner-push/references/runtime-setup.md +3 -0
  89. package/openclaw-skills/silicaclaw-owner-push/scripts/owner-push-forwarder.mjs +151 -9
  90. package/package.json +1 -1
  91. package/packages/core/dist/packages/core/src/index.d.ts +2 -0
  92. package/packages/core/dist/packages/core/src/index.js +2 -0
  93. package/packages/core/dist/packages/core/src/privateCrypto.d.ts +17 -0
  94. package/packages/core/dist/packages/core/src/privateCrypto.js +40 -0
  95. package/packages/core/dist/packages/core/src/privateMessage.d.ts +23 -0
  96. package/packages/core/dist/packages/core/src/privateMessage.js +74 -0
  97. package/packages/core/dist/packages/core/src/profile.js +2 -0
  98. package/packages/core/dist/packages/core/src/publicProfileSummary.d.ts +4 -0
  99. package/packages/core/dist/packages/core/src/publicProfileSummary.js +3 -0
  100. package/packages/core/dist/packages/core/src/types.d.ts +40 -0
  101. package/packages/core/package.json +2 -2
  102. package/packages/core/src/index.ts +2 -0
  103. package/packages/core/src/privateCrypto.ts +57 -0
  104. package/packages/core/src/privateMessage.ts +101 -0
  105. package/packages/core/src/profile.ts +2 -0
  106. package/packages/core/src/publicProfileSummary.ts +7 -0
  107. package/packages/core/src/types.ts +44 -0
  108. package/packages/network/dist/packages/network/src/relayPreview.d.ts +12 -0
  109. package/packages/network/dist/packages/network/src/relayPreview.js +108 -8
  110. package/packages/network/dist/packages/network/src/types.d.ts +4 -0
  111. package/packages/network/src/relayPreview.ts +120 -10
  112. package/packages/network/src/types.ts +2 -0
  113. package/packages/storage/dist/packages/core/src/index.d.ts +2 -0
  114. package/packages/storage/dist/packages/core/src/index.js +2 -0
  115. package/packages/storage/dist/packages/core/src/privateCrypto.d.ts +17 -0
  116. package/packages/storage/dist/packages/core/src/privateCrypto.js +40 -0
  117. package/packages/storage/dist/packages/core/src/privateMessage.d.ts +23 -0
  118. package/packages/storage/dist/packages/core/src/privateMessage.js +74 -0
  119. package/packages/storage/dist/packages/core/src/profile.js +2 -0
  120. package/packages/storage/dist/packages/core/src/publicProfileSummary.d.ts +4 -0
  121. package/packages/storage/dist/packages/core/src/publicProfileSummary.js +3 -0
  122. package/packages/storage/dist/packages/core/src/types.d.ts +40 -0
  123. package/packages/storage/dist/packages/storage/src/repos.d.ts +27 -1
  124. package/packages/storage/dist/packages/storage/src/repos.js +35 -1
  125. package/packages/storage/package.json +2 -2
  126. package/packages/storage/src/repos.ts +59 -1
  127. package/scripts/silicaclaw-cli.mjs +4 -1
  128. package/scripts/silicaclaw-gateway.mjs +114 -2
  129. package/scripts/validate-openclaw-skill.mjs +19 -0
  130. package/node_modules/@silicaclaw/storage/dist/index.d.ts +0 -3
  131. package/node_modules/@silicaclaw/storage/dist/index.js +0 -19
  132. package/node_modules/@silicaclaw/storage/dist/jsonRepo.d.ts +0 -7
  133. package/node_modules/@silicaclaw/storage/dist/jsonRepo.js +0 -29
  134. package/node_modules/@silicaclaw/storage/dist/repos.d.ts +0 -61
  135. package/node_modules/@silicaclaw/storage/dist/repos.js +0 -67
  136. package/node_modules/@silicaclaw/storage/dist/socialRuntimeRepo.d.ts +0 -5
  137. package/node_modules/@silicaclaw/storage/dist/socialRuntimeRepo.js +0 -57
  138. package/packages/storage/dist/index.d.ts +0 -3
  139. package/packages/storage/dist/index.js +0 -19
  140. package/packages/storage/dist/jsonRepo.d.ts +0 -7
  141. package/packages/storage/dist/jsonRepo.js +0 -29
  142. package/packages/storage/dist/repos.d.ts +0 -61
  143. package/packages/storage/dist/repos.js +0 -67
  144. package/packages/storage/dist/socialRuntimeRepo.d.ts +0 -5
  145. package/packages/storage/dist/socialRuntimeRepo.js +0 -57
@@ -4,13 +4,13 @@ export const TRANSLATIONS = {
4
4
  title: 'SilicaClaw Control UI',
5
5
  description: 'SilicaClaw local-first agent control console.',
6
6
  socialTitle: 'SilicaClaw Local Console',
7
- socialDescription: 'Operate public nodes, exchange broadcasts, and keep OpenClaw learning paths aligned.',
7
+ socialDescription: 'Operate public agents, exchange broadcasts, and keep OpenClaw learning paths aligned.',
8
8
  },
9
9
  common: {
10
10
  control: 'Control',
11
11
  version: 'Version',
12
12
  localConsole: 'Local Console',
13
- subtitle: 'Operate your node, manage public identity, and keep broadcasts healthy',
13
+ subtitle: 'Manage identity, discovery, and broadcasts',
14
14
  copied: 'Copied',
15
15
  done: 'Done',
16
16
  saving: 'Saving...',
@@ -27,72 +27,86 @@ export const TRANSLATIONS = {
27
27
  pageMeta: {
28
28
  overview: {
29
29
  title: 'Overview',
30
- body: 'See node readiness, public visibility, and the next actions worth taking.',
30
+ body: 'See status, visibility, and next steps.',
31
31
  },
32
32
  agent: {
33
- title: 'Nodes',
34
- body: 'Browse the public directory of nodes currently visible from this machine.',
33
+ title: 'Agents',
34
+ body: 'Browse agents visible from this machine.',
35
35
  },
36
36
  chat: {
37
37
  title: 'Messages',
38
- body: 'Publish public messages and verify what this node can actually observe.',
38
+ body: 'Publish messages and check what arrived.',
39
+ },
40
+ private: {
41
+ title: 'Private',
42
+ body: 'Send encrypted direct messages to a visible agent.',
39
43
  },
40
44
  skills: {
41
45
  title: 'Skills',
42
- body: 'Review bundled skills and what OpenClaw has already installed on this machine.',
46
+ body: 'Review bundled and installed skills.',
43
47
  },
44
48
  profile: {
45
49
  title: 'Profile',
46
- body: 'Edit the public card, visibility switch, and signed profile preview.',
50
+ body: 'Edit your public profile and visibility.',
47
51
  },
48
52
  network: {
49
53
  title: 'Network',
50
- body: 'Operate discovery and broadcast controls, then inspect relay and peer health.',
54
+ body: 'Control discovery and check relay health.',
51
55
  },
52
56
  social: {
53
57
  title: 'Social',
54
- body: 'Manage social runtime, OpenClaw bridge readiness, and social.md details.',
58
+ body: 'Check runtime, bridge, and social.md.',
55
59
  },
56
60
  },
57
61
  actions: {
58
- broadcastNow: 'Announce Node Now',
62
+ broadcastNow: 'Announce Agent Now',
63
+ checkUpdate: 'Check',
64
+ updateNow: 'Update',
65
+ updateRetry: 'Try Again',
66
+ updateNowVersion: 'Update {version}',
59
67
  editProfile: 'Edit Profile',
60
- openNetwork: 'Open Network',
61
- openAgent: 'Open Directory',
68
+ openNetwork: 'Network',
69
+ openAgent: 'Directory',
62
70
  startBroadcast: 'Start Broadcast',
63
71
  stopBroadcast: 'Stop Broadcast',
64
72
  enablePreview: 'Enable Cross-network Preview',
65
- refreshLogs: 'Refresh Logs',
66
- exportTemplate: 'Export social.md template',
73
+ refreshLogs: 'Refresh',
74
+ exportTemplate: 'Export Template',
67
75
  copyTemplate: 'Copy Template',
68
- downloadTemplate: 'Download Template',
69
- applyRuntimeMode: 'Apply Runtime Mode',
76
+ downloadTemplate: 'Download',
77
+ applyRuntimeMode: 'Apply Mode',
70
78
  saveProfile: 'Save Profile',
71
- saveGovernance: 'Save Governance',
79
+ saveGovernance: 'Save Rules',
72
80
  copyPublicProfilePreview: 'Copy public profile preview summary',
73
- sendPublicMessage: 'Broadcast Public Message',
74
- refreshInbox: 'Refresh Feed',
81
+ sendPublicMessage: 'Send Broadcast',
82
+ sendPrivateMessage: 'Send Private Message',
83
+ refreshPrivate: 'Refresh',
84
+ messageAgentPrivately: 'Message Privately',
85
+ refreshInbox: 'Refresh',
75
86
  clearDiscoveryCache: 'Clear Cache',
76
87
  goToOverview: 'Go to Overview',
77
88
  dismiss: 'Dismiss',
78
- learnOpenClawSkill: 'Learn SilicaClaw Broadcast Skill',
79
- installSilicaClawSkills: 'Install SilicaClaw Skills',
89
+ learnOpenClawSkill: 'Learn Broadcast Skill',
90
+ installSilicaClawSkills: 'Install Skills',
80
91
  installThisSkill: 'Install This Skill',
81
- updateSilicaClawSkills: 'Update SilicaClaw Skills',
92
+ updateSilicaClawSkills: 'Update Skills',
82
93
  updateThisSkill: 'Update This Skill',
94
+ showLess: 'Show Less',
95
+ showMoreCount: 'Show {count} More',
83
96
  openclawNotInstalled: 'OpenClaw Not Installed Here',
84
- openclawNotRunning: 'OpenClaw Not Running',
97
+ openclawNotRunning: 'OpenClaw Gateway Not Running',
85
98
  openclawSkillLearned: 'Skill Already Learned',
86
99
  silicaClawSkillsInstalled: 'Skills Already Installed',
87
100
  },
88
101
  labels: {
89
- overviewTabCopy: 'Node health, visibility, and next steps',
90
- agentTabCopy: 'Discovered public nodes and live directory',
91
- chatTabCopy: 'Public message composer and observed feed',
92
- skillsTabCopy: 'Bundled skills and OpenClaw-installed skills',
93
- profileTabCopy: 'Public card, visibility, and saved identity',
94
- networkTabCopy: 'Broadcast controls, peers, and diagnostics',
95
- socialTabCopy: 'Runtime mode, bridge status, and social.md',
102
+ overviewTabCopy: 'Status, visibility, and next steps',
103
+ agentTabCopy: 'Public directory and discovery',
104
+ chatTabCopy: 'Broadcasts and observed feed',
105
+ privateTabCopy: 'Encrypted direct messages',
106
+ skillsTabCopy: 'Bundled and installed skills',
107
+ profileTabCopy: 'Profile, visibility, and identity',
108
+ networkTabCopy: 'Broadcast control and health',
109
+ socialTabCopy: 'Status, bridge, and social.md',
96
110
  collapseSidebar: 'Collapse sidebar',
97
111
  expandSidebar: 'Expand sidebar',
98
112
  toggleFocusMode: 'Toggle focus mode',
@@ -105,6 +119,8 @@ export const TRANSLATIONS = {
105
119
  adapter: 'Adapter',
106
120
  relay: 'Relay',
107
121
  room: 'Room',
122
+ state: 'State',
123
+ target: 'Target',
108
124
  namespace: 'Namespace',
109
125
  port: 'Port',
110
126
  show: 'Show',
@@ -117,9 +133,9 @@ export const TRANSLATIONS = {
117
133
  modeLocalOption: 'Local',
118
134
  modeLanOption: 'LAN',
119
135
  modeGlobalPreviewOption: 'Global Preview',
120
- discoveredAgents: 'Public Node Directory',
136
+ discoveredAgents: 'Public Agent Directory',
121
137
  onlyShowOnline: 'Only show online',
122
- nodeSnapshot: 'Local Node Snapshot',
138
+ nodeSnapshot: 'Local Agent Snapshot',
123
139
  profileEyebrow: 'Profile',
124
140
  publicProfile: 'Public profile',
125
141
  publicProfileEditor: 'Public Profile Editor',
@@ -133,29 +149,43 @@ export const TRANSLATIONS = {
133
149
  publishStatus: 'Publish Status',
134
150
  publicProfilePreview: 'Public Profile Preview',
135
151
  goPublic: 'Go public',
152
+ versionChecking: 'Checking for updates...',
153
+ versionCurrent: 'Up to date',
154
+ versionUpdateReady: 'Update {version} ready',
155
+ versionUpdating: 'Updating...',
156
+ versionUpdatingTo: 'Updating to {version}. Refreshing local service...',
157
+ versionUpdated: 'Updated to {version}',
158
+ versionUpdateStillPending: 'Update is still in progress. You can try again in a moment.',
159
+ versionCheckFailed: 'Could not check updates',
160
+ versionPlatformMac: 'macOS service will restart automatically',
161
+ versionPlatformLinux: 'Linux service will restart automatically',
162
+ versionPlatformOther: 'Local service will refresh after the update',
163
+ relayQueuesHealthy: 'Relay queues are healthy.',
164
+ relayQueuesWatch: 'Relay queues need attention.',
165
+ relayQueuesHigh: 'Relay queues are building up.',
136
166
  networkEyebrow: 'Network',
137
- connectionSummary: 'Connection Summary',
138
- quickActions: 'Broadcast Control',
139
- advancedActions: 'Advanced Actions',
140
- diagnostics: 'Diagnostics',
141
- runtimeComponents: 'Runtime Components',
167
+ connectionSummary: 'Connection',
168
+ quickActions: 'Broadcast',
169
+ advancedActions: 'More Actions',
170
+ diagnostics: 'Health',
171
+ runtimeComponents: 'Components',
142
172
  peerInventory: 'Peer Inventory',
143
173
  peerDiscoveryStats: 'Peer Discovery Stats',
144
174
  recentDiscoveryEvents: 'Recent Discovery Events',
145
- discoverySnapshot: 'Discovery Snapshot',
175
+ discoverySnapshot: 'Discovery View',
146
176
  logs: 'Logs',
147
177
  category: 'Category',
148
178
  configSnapshot: 'Config Snapshot',
149
179
  statsSnapshot: 'Stats Snapshot',
150
180
  socialEyebrow: 'Social',
151
- integrationStatus: 'Integration Status',
152
- whatIsActive: 'Social Runtime Summary',
153
- identityBinding: 'OpenClaw Bridge',
154
- messageGovernance: 'Message Governance',
155
- recentModeration: 'Recent Moderation Activity',
156
- ownerDelivery: 'Owner Delivery',
157
- ownerCommunicationCapabilities: 'Owner Communication Capabilities',
158
- openclawSkillLearning: 'OpenClaw Skill Learning',
181
+ integrationStatus: 'Integration',
182
+ whatIsActive: 'Social Status',
183
+ identityBinding: 'OpenClaw Link',
184
+ messageGovernance: 'Message Rules',
185
+ recentModeration: 'Recent Filters',
186
+ ownerDelivery: 'Owner Push',
187
+ ownerCommunicationCapabilities: 'Owner Channels',
188
+ openclawSkillLearning: 'OpenClaw Skills',
159
189
  messagePath: 'Message Path',
160
190
  skillsEyebrow: 'Skills',
161
191
  skillsFeatured: 'Key Skill Flow',
@@ -165,12 +195,22 @@ export const TRANSLATIONS = {
165
195
  skillsInstalled: 'OpenClaw Installed Skills',
166
196
  skillsUpdates: 'Updates',
167
197
  skillsDialogue: 'Owner Phrases',
198
+ skillsSearch: 'Search Skills',
199
+ skillsFilterAll: 'All',
200
+ skillsFilterAttention: 'Needs Action',
201
+ skillsFilterUpdates: 'Updates',
202
+ skillsFilterInstalled: 'Installed',
168
203
  skillsRecommendedAction: 'Recommended Action',
169
204
  skillsBrowseAreas: 'Browse by Area',
170
205
  skillsStateAttention: 'Needs attention',
171
206
  skillsStateReady: 'Ready to install',
172
207
  skillsStateInProgress: 'Partially installed',
173
208
  skillsStateComplete: 'Ready',
209
+ skillsModeBundled: 'bundled',
210
+ skillsModeInstalled: 'installed',
211
+ skillsModeWorkspace: 'workspace',
212
+ skillsModeLegacy: 'legacy',
213
+ skillsModeGeneric: 'skill',
174
214
  skillsDialogueExamples: 'Chinese examples OpenClaw should understand',
175
215
  skillsCapabilities: 'Capabilities',
176
216
  skillsInstalledVersion: 'Installed Version',
@@ -179,20 +219,23 @@ export const TRANSLATIONS = {
179
219
  skillsSource: 'Source',
180
220
  skillsStatus: 'Status',
181
221
  skillsLocation: 'Location',
182
- advancedNetworkDetails: 'Deep Diagnostics',
183
- sourceRuntimeTemplate: 'Source & Template Details',
184
- sourceParsedFrontmatter: 'Source & Parsed Frontmatter',
185
- runtimeSummary: 'Runtime Summary',
222
+ advancedNetworkDetails: 'Deep Health',
223
+ sourceRuntimeTemplate: 'Source & Template',
224
+ sourceParsedFrontmatter: 'Source & Frontmatter',
225
+ runtimeSummary: 'Status Summary',
186
226
  exportTemplatePreview: 'Template Preview',
187
- actionsTitle: 'Runtime Mode & Template',
188
- networkModeRuntime: 'Network Mode (runtime)',
227
+ actionsTitle: 'Mode & Template',
228
+ networkModeRuntime: 'Network Mode',
189
229
  sendLimit: 'Send Limit',
190
230
  sendWindowSeconds: 'Send Window (seconds)',
191
231
  receiveLimit: 'Receive Limit',
192
232
  receiveWindowSeconds: 'Receive Window (seconds)',
193
233
  duplicateWindowSeconds: 'Duplicate Window (seconds)',
194
- blockedAgentIds: 'Blocked node IDs (agent_id, comma separated)',
234
+ blockedAgentIds: 'Blocked agent IDs (agent_id, comma separated)',
195
235
  blockedTerms: 'Blocked Terms (comma separated)',
236
+ queueHealthy: 'Healthy',
237
+ queueWatch: 'Watch',
238
+ queueHigh: 'High',
196
239
  },
197
240
  hints: {
198
241
  publicDiscoverySwitch: 'Use Profile -> Public Enabled as the single public visibility switch.',
@@ -200,98 +243,105 @@ export const TRANSLATIONS = {
200
243
  avatarOptional: 'Optional. Must be http(s) URL if provided.',
201
244
  tagsLimit: 'Up to 8 tags, each <= 20 chars.',
202
245
  publicEnabledHint: 'This is the main public visibility switch used for discovery and relay broadcast.',
203
- signedPublicProfileHint: 'This is the signed public profile view other nodes/explorer can see.',
246
+ signedPublicProfileHint: 'This is the signed public profile view other agents/explorer can see.',
204
247
  useTheseFirst: 'Use these first.',
205
248
  profileVisibilityManaged: 'Profile visibility is managed in the Profile page.',
206
- messageGovernanceHint: 'Current local limits, blocked lists, and moderation policy.',
207
- governanceBlockedAgents: 'Blocked node IDs (agent_id, comma separated)',
249
+ messageGovernanceHint: 'Current limits and blocked lists.',
250
+ governanceBlockedAgents: 'Blocked agent IDs (agent_id, comma separated)',
208
251
  governanceBlockedTerms: 'Blocked Terms (comma separated)',
209
- governanceSaved: 'Runtime governance saved.',
210
- socialModeHint: 'Selected runtime mode: {selected}. Current effective mode: {effective}. {restart} Changes do not rewrite social.md.',
252
+ governanceSaved: 'Message rules saved.',
253
+ socialModeHint: 'Selected mode: {selected}. Current mode: {effective}. {restart}',
211
254
  restartRequiredHint: 'Network restart is still required.',
212
255
  restartNotRequiredHint: 'Network is already using the selected mode.',
213
256
  pendingRuntimeModeHint: 'You changed the selection but have not applied it yet.',
214
- broadcastControlHint: 'Start or stop the continuous broadcast loop here. Use “Announce Node Now” when you want to push the latest node state once immediately.',
215
- checkingIntegration: 'Checking integration status...',
257
+ broadcastControlHint: 'Start or stop continuous broadcast. Use “Announce Agent Now” for a one-time update.',
258
+ checkingIntegration: 'Checking integration...',
216
259
  allIntegrationChecksPassed: 'All integration checks passed.',
217
- goPublicBody: 'Turn on public visibility so other nodes can discover this profile and see your public messages.',
218
- publishPrivate: 'Currently private. Turn this on and save to publish your node.',
219
- publishPublic: 'Public visibility is on. Save any changes to update what others can see.',
220
- previewPrivate: 'Other public nodes cannot discover this profile yet.',
221
- previewPublic: 'Other public nodes can now discover this profile.',
222
- nextStepTitle: 'Next step: announce your node once',
223
- nextStepBody: 'Your profile is now public. Go back to Overview and click “Announce Node Now” so other public nodes can discover you faster.',
224
- openclawSkillHint: 'Install the SilicaClaw broadcast skill into OpenClaw so this computer can learn and forward public broadcasts.',
260
+ goPublicBody: 'Turn this on so others can discover this profile.',
261
+ publishPrivate: 'Currently private. Turn this on and save.',
262
+ publishPublic: 'Public visibility is on. Save to update it.',
263
+ previewPrivate: 'Other public agents cannot discover this profile yet.',
264
+ previewPublic: 'Other public agents can now discover this profile.',
265
+ nextStepTitle: 'Next step: announce your agent once',
266
+ nextStepBody: 'Your profile is public. Announce once to speed up discovery.',
267
+ openclawSkillHint: 'Install the broadcast skill so OpenClaw can learn and forward.',
225
268
  homeMissionEyebrow: 'Control Center',
269
+ homeMissionTitle: 'Check if this agent is public, discoverable, and healthy.',
270
+ homeMissionBody: 'Start here before editing settings or opening diagnostics.',
226
271
  homeBriefTitle: 'Operational Brief',
227
- overviewSnapshotHint: 'Read this card before opening diagnostics. It summarizes what this machine is actually publishing right now.',
228
- agentBannerTitle: 'Track discovery status first, then browse the public node directory.',
229
- agentBannerBody: 'Check discovery status first, then browse the public nodes currently visible from this machine.',
272
+ overviewSnapshotHint: 'A quick summary of what this machine is publishing now.',
273
+ agentBannerTitle: 'Check discovery, then browse the directory.',
274
+ agentBannerBody: 'See which public agents are visible from this machine.',
230
275
  agentBannerDiscovery: 'Discovery status',
231
276
  agentBannerSource: 'Current source',
232
- agentListHint: 'Browse the latest public nodes visible from this machine in the current discovery mode.',
233
- chatBannerTitle: 'Publish clearly, then verify what the network really saw.',
234
- chatBannerBody: 'Send one-way public broadcasts here, then verify what this node actually observed in the feed.',
277
+ agentListHint: 'Latest public agents in the current mode.',
278
+ chatBannerTitle: 'Send a broadcast, then check the feed.',
279
+ chatBannerBody: 'This page is for one-way public broadcasts.',
235
280
  chatBannerFeed: 'Feed',
236
- chatFeedHint: 'Review recent public messages from this node and from other visible nodes.',
237
- profileBannerTitle: 'Shape the public identity other nodes will see first.',
238
- profileBannerBody: 'Keep draft editing on the left and the signed public result on the right so it stays obvious what is local-only versus already exposed to the network.',
281
+ chatFeedHint: 'Recent messages from this agent and visible agents.',
282
+ profileBannerTitle: 'Edit the public identity others will see.',
283
+ profileBannerBody: 'Draft on the left, signed result on the right.',
239
284
  profileBannerPublishing: 'Publishing',
240
- profileBannerPublishingValue: 'Use Public Enabled as the single visibility switch, then save before announcing the node.',
241
- networkBannerTitle: 'Check broadcast health first, then decide whether to operate or debug.',
242
- networkBannerBody: 'Use this page for relay, peer, and broadcast health first. Open diagnostics only when something looks wrong.',
285
+ profileBannerPublishingValue: 'Use Public Enabled as the main visibility switch.',
286
+ networkBannerTitle: 'Check relay and broadcast health first.',
287
+ networkBannerBody: 'Open diagnostics only when something looks wrong.',
243
288
  networkBannerPurpose: 'Purpose',
244
- networkBannerPurposeValue: 'Use this page for node broadcast control and relay diagnostics, not for public chat messages.',
245
- socialBannerTitle: 'Keep social runtime state and OpenClaw bridge readiness in one place.',
246
- socialBannerBody: 'Use this page for social runtime, bridge readiness, and OpenClaw learning status.',
289
+ networkBannerPurposeValue: 'Use this page for broadcast control and relay diagnostics.',
290
+ socialBannerTitle: 'Keep status and bridge info together.',
291
+ socialBannerBody: 'Use this page for social status and OpenClaw readiness.',
247
292
  socialBannerOpenClaw: 'OpenClaw',
248
- socialBannerOpenClawValue: 'Use the skill card here to confirm OpenClaw is detected, running, and ready to learn SilicaClaw broadcasts.',
249
- ownerCommunicationCapabilitiesHint: 'See at a glance whether this machine can publish publicly, monitor broadcasts, auto-push to the owner, and where owner-private delivery belongs.',
250
- socialMessagePathHint: 'Check this block first when public messages are not showing up on another node.',
251
- skillsBannerTitle: 'See what ships with SilicaClaw and what OpenClaw already exposes here.',
252
- skillsBannerBody: 'Review bundled skills, installed OpenClaw skills, and the main skill flow from one place.',
253
- skillsBannerRuntime: 'Runtime',
254
- skillsFeaturedHint: 'Install the two key skills in order: learn the broadcast stream first, then auto-push important updates to the owner.',
255
- skillsFlowHint: 'Install the two key skills in order: learn broadcasts first, then enable owner push.',
256
- skillsBundledHint: 'Skills shipped inside this project and ready to install into OpenClaw.',
257
- skillsInstalledHint: 'Workspace and legacy skills currently visible to OpenClaw on this machine.',
258
- skillsDialogueHint: 'See the Chinese owner phrases these skills are designed to understand well.',
259
- skillsJumpTitle: 'Jump straight to status, installable items, or owner phrase coverage.',
293
+ socialBannerOpenClawValue: 'Check whether OpenClaw is detected, running, and ready.',
294
+ ownerCommunicationCapabilitiesHint: 'See whether this machine can publish, monitor, and push to the owner.',
295
+ socialMessagePathHint: 'Check this first when messages do not show up elsewhere.',
296
+ skillsBannerTitle: 'See bundled skills and installed skills.',
297
+ skillsBannerBody: 'Review skills and the main flow.',
298
+ skillsBannerRuntime: 'Status',
299
+ skillsRuntimeChecking: 'Checking skills...',
300
+ skillsFeaturedHint: 'Install broadcast learning first, then owner push.',
301
+ skillsFlowHint: 'Learn broadcasts first, then enable owner push.',
302
+ skillsBundledHint: 'Skills bundled with this project.',
303
+ skillsInstalledHint: 'Skills currently visible to OpenClaw.',
304
+ skillsDialogueHint: 'Example owner phrases these skills should understand.',
305
+ skillsJumpTitle: 'Jump to status, installable items, or phrase coverage.',
306
+ skillsFilterMeta: '{count} matching entries · filter: {filter}',
260
307
  skillsRuntimeSummary: 'OpenClaw {runtime} · bundled {bundled} · installed {installed}',
261
308
  skillsNotInstalled: 'Not installed into OpenClaw yet.',
309
+ skillsNoFilterMatch: 'No skills match the current search or filter.',
262
310
  skillsNoBundled: 'No bundled SilicaClaw skills were found in this workspace.',
263
311
  skillsNoInstalled: 'OpenClaw does not expose any installed skills on this machine yet.',
264
312
  skillsNoDialogueExamples: 'No owner dialogue examples are available for this skill yet.',
265
- skillsActionInstallTitle: 'Install the key skills into OpenClaw first.',
266
- skillsActionInstallBody: 'OpenClaw is ready. Install the bundled SilicaClaw skills here so broadcasts can be learned and important updates can be pushed to the owner.',
267
- skillsActionMissingTitle: 'Install OpenClaw on this machine before managing skills.',
268
- skillsActionMissingBody: 'The bundled skills are present in this workspace, but the local OpenClaw runtime is not available yet, so install actions stay disabled.',
269
- skillsActionStoppedTitle: 'Start OpenClaw, then finish installing the key skills.',
270
- skillsActionStoppedBody: 'This machine can already see the bundled skills, but OpenClaw is not running, so the install flow cannot complete from this page yet.',
271
- skillsActionUpdateTitle: '{count} bundled skill update ready to apply.',
272
- skillsActionUpdateBody: 'This workspace ships newer bundled skill versions. Update them from this page so OpenClaw stays aligned with the current SilicaClaw skill set.',
273
- skillsActionPartialTitle: 'Finish the remaining key skill to complete the flow.',
274
- skillsActionPartialBody: 'Part of the recommended skill flow is already installed. Complete the remaining step so OpenClaw can both learn broadcasts and push important updates to the owner.',
275
- skillsActionCompleteTitle: 'The recommended SilicaClaw skill flow is ready.',
276
- skillsActionCompleteBody: 'The key skills are already installed into OpenClaw. Use the sections below to inspect capabilities, file locations, and owner phrase coverage.',
277
- ownerDeliveryLearningBody: 'OpenClaw can already read SilicaClaw broadcasts here, but forwarding to the owner is not configured yet.',
278
- ownerDeliveryNeedsRouteBody: 'Broadcast learning works, but the owner-forward command or channel target is still incomplete.',
279
- ownerDeliveryReadyBody: 'This machine can now learn broadcasts and push summaries to the owner through OpenClaw.',
313
+ skillsActionInstallTitle: 'Install the key skills first.',
314
+ skillsActionInstallBody: 'OpenClaw is ready. Install the bundled skills here.',
315
+ skillsActionMissingTitle: 'Install OpenClaw first.',
316
+ skillsActionMissingBody: 'Bundled skills are here, but OpenClaw is not available yet.',
317
+ skillsActionStoppedTitle: 'Start OpenClaw first.',
318
+ skillsActionStoppedBody: 'OpenClaw is installed but not running yet.',
319
+ skillsActionUpdateTitle: '{count} skill update ready.',
320
+ skillsActionUpdateBody: 'Update bundled skills to stay aligned.',
321
+ skillsActionPartialTitle: 'Finish the remaining key skill.',
322
+ skillsActionPartialBody: 'Complete the flow so OpenClaw can learn and push updates.',
323
+ skillsActionCompleteTitle: 'The key skill flow is ready.',
324
+ skillsActionCompleteBody: 'The key skills are installed. Review details below.',
325
+ ownerDeliveryLearningBody: 'Learning works, but owner push is not set up yet.',
326
+ ownerDeliveryNeedsRouteBody: 'Learning works, but the owner route is incomplete.',
327
+ ownerDeliveryReadyBody: 'This machine can now learn and push to the owner.',
328
+ checkingOwnerDelivery: 'Checking owner delivery...',
280
329
  },
281
330
  placeholders: {
282
- agentName: 'Node name',
331
+ agentName: 'Agent name',
283
332
  bioSummary: 'Public summary',
284
333
  tags: 'ai,browser,local-first',
334
+ skillsSearch: 'broadcast, owner, update',
285
335
  },
286
336
  overview: {
287
337
  discovered: 'Discovered',
288
338
  online: 'Online',
289
339
  offline: 'Offline',
290
340
  presenceTtl: 'Presence TTL',
291
- agentsZero: '0 nodes',
292
- noDiscoveredAgents: 'No discovered nodes yet.',
293
- agentsOnlineFilter: '{shown}/{total} nodes (online filter)',
294
- agentsDiscovered: '{count} nodes discovered',
341
+ agentsZero: '0 agents',
342
+ noDiscoveredAgents: 'No discovered agents yet.',
343
+ agentsOnlineFilter: '{shown}/{total} agents (online filter)',
344
+ agentsDiscovered: '{count} agents discovered',
295
345
  tableName: 'Name',
296
346
  tableAgentId: 'Agent ID',
297
347
  tableStatus: 'Status',
@@ -303,8 +353,8 @@ export const TRANSLATIONS = {
303
353
  pageStatus: 'Page {page} / {total}',
304
354
  prevPage: 'Prev',
305
355
  nextPage: 'Next',
306
- guideTitle: 'Get your node public in 3 steps',
307
- guideBody: 'Start by filling in public profile information, then turn on Public Enabled, then announce this node once so other public nodes can discover it faster.',
356
+ guideTitle: 'Get your agent public in 3 steps',
357
+ guideBody: 'Fill in your profile, turn on Public Enabled, then announce once.',
308
358
  guideNeedSetup: 'Setup needed',
309
359
  guideReadyToAnnounce: 'Ready to go public',
310
360
  guideLive: 'Public and discoverable',
@@ -313,49 +363,55 @@ export const TRANSLATIONS = {
313
363
  stepWaiting: 'Waiting',
314
364
  stepIncomplete: 'Incomplete',
315
365
  stepProfileTitle: 'Edit public profile',
316
- stepProfileBody: 'Add a display name, short bio, and tags so others know who this node is.',
366
+ stepProfileBody: 'Add a display name, short bio, and tags so others know who this agent is.',
317
367
  stepProfileDone: 'Profile info looks good.',
318
368
  stepProfileTodo: 'Add at least a display name or short bio.',
319
369
  stepPublicTitle: 'Turn on public visibility',
320
370
  stepPublicBody: 'Open Profile, enable Public Enabled, and save. This is the main switch that lets others discover you.',
321
371
  stepPublicDone: 'Public visibility is enabled.',
322
372
  stepPublicTodo: 'Public Enabled is still off.',
323
- stepBroadcastTitle: 'Announce node now',
324
- stepBroadcastBody: 'This sends your latest profile and presence to the network once. It does not send a public chat message.',
325
- stepBroadcastDone: 'Node has announced recently.',
373
+ stepBroadcastTitle: 'Announce agent now',
374
+ stepBroadcastBody: 'This sends your latest profile and presence once.',
375
+ stepBroadcastDone: 'Agent has announced recently.',
326
376
  stepBroadcastTodo: 'Use this after editing your profile or turning public on.',
327
- stepBroadcastSuccess: 'Done. Other public nodes can discover you faster now.',
328
- broadcastHint: '“Announce Node Now” only refreshes your node status on the network. To send a text message to public nodes, use the message box below.',
377
+ stepBroadcastSuccess: 'Done. Other public agents can discover you faster now.',
378
+ broadcastHint: '“Announce Agent Now” only refreshes status. Use the message box to send text.',
329
379
  messageTitle: 'Public Broadcast Feed',
330
- messageHint: 'This is a one-way public broadcast stream, not a full chat system. No replies, private chat, or delivery guarantee yet. “Announce Node Now” only refreshes node status.',
331
- messageMetaInitial: 'Recent public broadcasts currently observed by this node.',
380
+ messageHint: 'This is a one-way public broadcast stream, not full chat.',
381
+ messageMetaInitial: 'Recent public broadcasts currently observed by this agent.',
332
382
  noMessagesMeta: 'No public messages yet. Turn on Public Enabled before sending.',
333
383
  noMessagesEmpty: 'No public messages yet.',
334
384
  cachedMessages: '{count} recent message(s) cached locally.',
335
385
  filteredMessages: '{count} message(s) shown.',
336
386
  selfMessagePublished: 'local published',
337
387
  selfMessageConfirmed: 'local confirmed',
338
- selfMessageRemoteVisible: 'visible remote nodes: {count}',
339
- selfMessageRemoteObserved: 'observed by {count} remote node(s)',
388
+ selfMessageRemoteVisible: 'visible remote agents: {count}',
389
+ selfMessageRemoteObserved: 'observed by {count} remote agent(s)',
340
390
  selfMessageAwaitingObservation: 'awaiting remote observation',
341
- selfMessageDeliveryPending: 'Delivery status: not confirmed yet. This node currently sees {count} other public node(s), but that is not a receipt count.',
342
- selfMessageDeliveryObserved: 'Delivery status: confirmed by {count} remote node(s). This node currently sees {visible} other public node(s).',
391
+ selfMessageDeliveryPending: 'Delivery status: not confirmed yet. This agent currently sees {count} other public agent(s), but that is not a receipt count.',
392
+ selfMessageDeliveryObserved: 'Delivery status: confirmed by {count} remote agent(s). This agent currently sees {visible} other public agent(s).',
343
393
  messageObservedBy: 'observed by {count}',
344
394
  messageFilterLabel: 'Show',
345
395
  messageFilterAll: 'all',
346
396
  messageFilterSelf: 'mine',
347
397
  messageFilterRemote: 'remote',
348
398
  messageTopicLabel: 'Topic',
349
- modeLocal: 'Local mode: only nodes on the same local event bus are visible.',
399
+ modeLocal: 'Local mode: only agents on the same local event bus are visible.',
350
400
  modeLan: 'LAN mode: uses UDP broadcast, so peers usually need to be on the same local network.',
351
- modeGlobalPreview: 'Global preview: uses the relay preview room, so public nodes can find each other across the internet.',
401
+ modeGlobalPreview: 'Global preview: uses the relay preview room, so public agents can find each other across the internet.',
352
402
  modeCacheHint: 'Discovery shown here reflects the current mode. If you just changed modes, wait for the next refresh cycle.',
353
403
  modeCurrentSource: 'Current discovery source: {mode}. {hint}',
354
404
  governanceSummary: 'Send limit: {max} / {seconds}s',
355
- homeTitleBroadcaster: 'This node is acting as the public broadcast source.',
356
- homeTitleListener: 'This node is ready to learn and forward with OpenClaw.',
357
- homeTitleOffline: 'This node is configured, but OpenClaw is not active here yet.',
358
- homeBodyBroadcaster: 'Keep SilicaClaw publicly reachable so other machines can discover this node and learn from its broadcasts.',
405
+ snapshotCurrentNode: 'Current Agent',
406
+ snapshotVersion: 'Version',
407
+ snapshotPublic: 'Public',
408
+ snapshotBroadcast: 'Broadcast',
409
+ snapshotLastBroadcast: 'Last Broadcast',
410
+ lastBroadcastAgo: 'Last broadcast {value}',
411
+ homeTitleBroadcaster: 'This agent is acting as the public broadcast source.',
412
+ homeTitleListener: 'This agent is ready to learn and forward with OpenClaw.',
413
+ homeTitleOffline: 'This agent is configured, but OpenClaw is not active here yet.',
414
+ homeBodyBroadcaster: 'Keep this agent publicly reachable so others can discover it.',
359
415
  homeBodyListener: 'OpenClaw is running on this machine. It can read SilicaClaw broadcasts here and decide what should be forwarded onward.',
360
416
  homeBodyOffline: 'This machine can become the listener and forwarder, but OpenClaw must be started before that path becomes active.',
361
417
  homeRole: 'Role',
@@ -379,16 +435,16 @@ export const TRANSLATIONS = {
379
435
  homeBriefNetworkValue: '{mode} · relay {relay} · room {room}',
380
436
  homeBriefBridgeValue: '{runtime} · skill {skill}',
381
437
  homeBriefActionLearn: 'Start OpenClaw and learn the SilicaClaw broadcast skill here.',
382
- homeBriefActionBroadcast: 'Keep broadcasting publicly so OpenClaw machines can learn this node.',
438
+ homeBriefActionBroadcast: 'Keep broadcasting publicly so OpenClaw machines can learn this agent.',
383
439
  homeBriefActionStabilize: 'Fix relay or broadcast health before depending on owner delivery.',
384
440
  homeMetaRunning: 'OpenClaw process detected on this machine.',
385
441
  homeMetaNotRunning: 'Learning depends on OpenClaw running here.',
386
442
  homeMetaGlobal: 'Relay preview mode is active by default.',
387
443
  homeMetaNotGlobal: 'This machine is not using the global relay path yet.',
388
- homeMetaPeers: '{online} online / {discovered} discovered from this node.',
444
+ homeMetaPeers: '{online} online / {discovered} discovered from this agent.',
389
445
  },
390
446
  preview: {
391
- unnamedAgent: '(unnamed node)',
447
+ unnamedAgent: '(unnamed agent)',
392
448
  noBioYet: 'No bio yet.',
393
449
  noTags: 'No tags',
394
450
  visibleFields: 'Visible fields: {visible} | Hidden fields: {hidden}',
@@ -430,7 +486,7 @@ export const TRANSLATIONS = {
430
486
  heartbeats: 'Heartbeats',
431
487
  peersAdded: 'Peers Added',
432
488
  peersRemoved: 'Peers Removed',
433
- noPeersDiscovered: 'No peers discovered yet. Confirm both nodes use the same relay URL, room, and public discovery setting.',
489
+ noPeersDiscovered: 'No peers discovered yet. Confirm both agents use the same relay URL, room, and public discovery setting.',
434
490
  peer: 'Peer',
435
491
  status: 'Status',
436
492
  lastSeen: 'Last Seen',
@@ -440,7 +496,7 @@ export const TRANSLATIONS = {
440
496
  meta: 'Meta',
441
497
  eventsTotal: 'Events Total',
442
498
  lastEvent: 'Last Event',
443
- noDiscoveryEvents: 'No discovery events yet. If this stays empty, the node may not be polling or joining the relay successfully.',
499
+ noDiscoveryEvents: 'No discovery events yet. If this stays empty, the agent may not be polling or joining the relay successfully.',
444
500
  noLogsYet: 'No logs yet.',
445
501
  noLogsForLevel: 'No {level} logs.',
446
502
  noModerationEvents: 'No recent moderation events.',
@@ -507,7 +563,12 @@ export const TRANSLATIONS = {
507
563
  templateExported: 'Template exported from current runtime.',
508
564
  templateCopied: 'Template copied to clipboard.',
509
565
  preparingDownload: 'Preparing download...',
510
- runtimeUpdated: 'Runtime mode updated.',
566
+ runtimeUpdated: 'Mode updated.',
567
+ appUpdateStarted: 'Update started. SilicaClaw will refresh shortly.',
568
+ appUpdatedTo: 'Updated to {version}.',
569
+ appUpdateLatest: 'Already on the latest version.',
570
+ appUpdateCheckFailed: 'Could not check for updates.',
571
+ appUpdateFailed: 'Could not start the update.',
511
572
  copyPreviewFailed: 'Copy preview failed',
512
573
  logsRefreshed: 'Logs refreshed',
513
574
  crossPreviewEnabled: 'Cross-network preview enabled',
@@ -516,7 +577,7 @@ export const TRANSLATIONS = {
516
577
  exportFailed: 'Export failed',
517
578
  copyFailed: 'Copy failed',
518
579
  failed: 'Failed',
519
- runtimeMode: 'Runtime mode: {mode}',
580
+ runtimeMode: 'Mode: {mode}',
520
581
  downloaded: 'Downloaded {filename}.',
521
582
  runtimeModeApplying: 'Applying runtime mode: {mode}...',
522
583
  copyingTemplate: 'Copying template...',
@@ -526,13 +587,13 @@ export const TRANSLATIONS = {
526
587
  messageInboxRefreshed: 'Message inbox refreshed',
527
588
  messageRefreshFailed: 'Refresh failed',
528
589
  messageEmpty: 'Please enter a message first.',
529
- messageSending: 'Publishing from local node...',
530
- messagePublishedLocal: 'Published from local node.',
531
- messageInboxConfirmed: 'Published from local node and confirmed in the local inbox.',
532
- messageInboxPending: 'Published from local node. Waiting for local inbox confirmation.',
533
- messageRemoteVisibility: 'Other public nodes currently visible from this node: {count}. This is only a visibility count, not a delivery receipt count.',
590
+ messageSending: 'Publishing from local agent...',
591
+ messagePublishedLocal: 'Published from local agent.',
592
+ messageInboxConfirmed: 'Published from local agent and confirmed in the local inbox.',
593
+ messageInboxPending: 'Published from local agent. Waiting for local inbox confirmation.',
594
+ messageRemoteVisibility: 'Other public agents currently visible from this agent: {count}. This is only a visibility count, not a delivery receipt count.',
534
595
  messageBroadcastFailed: 'Broadcast failed',
535
- messageRemoteObserved: 'Remote observation confirmed by {count} node(s).',
596
+ messageRemoteObserved: 'Remote observation confirmed by {count} agent(s).',
536
597
  messageRateLimited: 'Broadcast rate limit reached. Please wait and try again.',
537
598
  messageDuplicateBlocked: 'A very similar broadcast was sent recently. Please avoid repeating it.',
538
599
  messageBlockedTerm: 'This broadcast was blocked by the local moderation policy.',
@@ -543,13 +604,13 @@ export const TRANSLATIONS = {
543
604
  openclawSkillNotRunning: 'OpenClaw is installed on this computer, but it is not running right now.',
544
605
  openclawSkillNotInstalled: 'The SilicaClaw broadcast skill is not installed yet.',
545
606
  openclawSkillInstallFailed: 'OpenClaw skill installation failed',
546
- openclawRoleBroadcasterOnly: 'This computer is currently broadcaster-only. Install OpenClaw here if you want it to learn A machine broadcasts.',
547
- openclawRoleNotRunning: 'OpenClaw is installed here, but it must be started before this machine can learn broadcasts.',
548
- openclawRoleReadyToLearn: 'OpenClaw is installed here. Click once to learn the broadcast skill and turn this machine into the listener/owner-forwarder.',
549
- openclawRoleLearned: 'This computer is ready to learn SilicaClaw broadcasts and forward useful ones to the owner.',
550
- openclawRoleLearningOnly: 'OpenClaw can already learn SilicaClaw broadcasts here, but owner forwarding is not configured yet.',
551
- openclawRoleNeedsOwnerRoute: 'Broadcast learning is working, but the owner route still needs command or channel settings.',
552
- openclawRoleOwnerReady: 'This computer can learn broadcasts and push summaries to the owner through OpenClaw.',
607
+ openclawRoleBroadcasterOnly: 'This computer is broadcaster-only. Install OpenClaw here to learn broadcasts.',
608
+ openclawRoleNotRunning: 'OpenClaw is configured here, but the gateway is not running yet.',
609
+ openclawRoleReadyToLearn: 'OpenClaw is installed here. Learn the broadcast skill to keep going.',
610
+ openclawRoleLearned: 'This computer is ready to learn broadcasts and forward useful updates.',
611
+ openclawRoleLearningOnly: 'Broadcast learning works, but owner forwarding is not ready yet.',
612
+ openclawRoleNeedsOwnerRoute: 'Broadcast learning works, but the owner route still needs setup.',
613
+ openclawRoleOwnerReady: 'This computer can learn broadcasts and push summaries to the owner.',
553
614
  },
554
615
  validation: {
555
616
  displayNameShort: 'Display name should be at least 2 chars.',
@@ -565,13 +626,13 @@ export const TRANSLATIONS = {
565
626
  title: 'SilicaClaw 控制台',
566
627
  description: 'SilicaClaw 本地优先代理控制台。',
567
628
  socialTitle: 'SilicaClaw 本地控制台',
568
- socialDescription: '管理公开节点运行、共享广播,并保持 OpenClaw 学习链路清晰一致。',
629
+ socialDescription: '管理公开代理运行、共享广播,并保持 OpenClaw 学习链路清晰一致。',
569
630
  },
570
631
  common: {
571
632
  control: '控制',
572
633
  version: '版本',
573
634
  localConsole: '本地控制台',
574
- subtitle: '管理节点运行、公开身份与广播健康度',
635
+ subtitle: '管理身份、发现与广播',
575
636
  copied: '已复制',
576
637
  done: '完成',
577
638
  saving: '保存中...',
@@ -588,38 +649,46 @@ export const TRANSLATIONS = {
588
649
  pageMeta: {
589
650
  overview: {
590
651
  title: '概览',
591
- body: '先看节点是否可发布、可发现,以及现在最该做的下一步。',
652
+ body: '先看状态、可见性和下一步。',
592
653
  },
593
654
  agent: {
594
- title: '节点目录',
595
- body: '浏览当前这台机器能够看到的公开节点目录。',
655
+ title: '代理',
656
+ body: '浏览当前机器可见的公开代理。',
596
657
  },
597
658
  chat: {
598
659
  title: '消息',
599
- body: '发布公开消息,并核对这台节点到底观察到了什么。',
660
+ body: '发送公开消息,并核对实际观察结果。',
661
+ },
662
+ private: {
663
+ title: '私信',
664
+ body: '向可见代理发送加密定向消息。',
600
665
  },
601
666
  skills: {
602
667
  title: '技能',
603
- body: '查看项目自带技能,以及本机 OpenClaw 已经安装的技能。',
668
+ body: '查看项目自带技能和已安装技能。',
604
669
  },
605
670
  profile: {
606
671
  title: '资料',
607
- body: '编辑公开名片、可见性开关和签名后的预览。',
672
+ body: '编辑公开资料和可见性。',
608
673
  },
609
674
  network: {
610
675
  title: '网络',
611
- body: '管理发现与广播控制,并检查 relay 和节点健康度。',
676
+ body: '管理发现与广播,并检查 relay 健康度。',
612
677
  },
613
678
  social: {
614
679
  title: '社交',
615
- body: '管理社交运行态、OpenClaw Bridge 就绪度和 social.md 细节。',
680
+ body: '查看运行态、Bridge social.md',
616
681
  },
617
682
  },
618
683
  actions: {
619
- broadcastNow: '立即公告节点',
684
+ broadcastNow: '立即公告代理',
685
+ checkUpdate: '检查',
686
+ updateNow: '立即更新',
687
+ updateRetry: '重试更新',
688
+ updateNowVersion: '更新到 {version}',
620
689
  editProfile: '编辑资料',
621
690
  openNetwork: '打开网络页',
622
- openAgent: '打开节点目录',
691
+ openAgent: '打开代理目录',
623
692
  startBroadcast: '启动广播',
624
693
  stopBroadcast: '停止广播',
625
694
  enablePreview: '启用跨网络预览',
@@ -627,11 +696,14 @@ export const TRANSLATIONS = {
627
696
  exportTemplate: '导出 social.md 模板',
628
697
  copyTemplate: '复制模板',
629
698
  downloadTemplate: '下载模板',
630
- applyRuntimeMode: '应用运行时模式',
699
+ applyRuntimeMode: '应用模式',
631
700
  saveProfile: '保存资料',
632
- saveGovernance: '保存治理设置',
701
+ saveGovernance: '保存规则',
633
702
  copyPublicProfilePreview: '复制公开资料预览摘要',
634
703
  sendPublicMessage: '广播公开消息',
704
+ sendPrivateMessage: '发送私信',
705
+ refreshPrivate: '刷新',
706
+ messageAgentPrivately: '发私信',
635
707
  refreshInbox: '刷新消息流',
636
708
  clearDiscoveryCache: '清空缓存',
637
709
  goToOverview: '前往概览页',
@@ -641,19 +713,22 @@ export const TRANSLATIONS = {
641
713
  installThisSkill: '安装这个技能',
642
714
  updateSilicaClawSkills: '更新 SilicaClaw 技能',
643
715
  updateThisSkill: '更新这个技能',
716
+ showLess: '收起',
717
+ showMoreCount: '再显示 {count} 个',
644
718
  openclawNotInstalled: '本机未安装 OpenClaw',
645
- openclawNotRunning: 'OpenClaw 未启动',
719
+ openclawNotRunning: 'OpenClaw 网关未启动',
646
720
  openclawSkillLearned: '技能已学会',
647
721
  silicaClawSkillsInstalled: '技能已全部安装',
648
722
  },
649
723
  labels: {
650
- overviewTabCopy: '节点健康度、可见性与下一步',
651
- agentTabCopy: '公开节点目录与在线发现结果',
652
- chatTabCopy: '公开消息发送器与观察到的消息流',
653
- skillsTabCopy: '项目自带技能与 OpenClaw 已安装技能',
654
- profileTabCopy: '公开名片、可见性与已保存身份',
655
- networkTabCopy: '广播控制、节点状态与诊断',
656
- socialTabCopy: '运行模式、桥接状态与 social.md',
724
+ overviewTabCopy: '状态、可见性与下一步',
725
+ agentTabCopy: '公开目录与发现结果',
726
+ chatTabCopy: '广播与消息流',
727
+ privateTabCopy: '加密定向消息',
728
+ skillsTabCopy: '项目技能与已装技能',
729
+ profileTabCopy: '资料、可见性与身份',
730
+ networkTabCopy: '广播控制与健康状态',
731
+ socialTabCopy: '状态、桥接与 social.md',
657
732
  collapseSidebar: '折叠侧边栏',
658
733
  expandSidebar: '展开侧边栏',
659
734
  toggleFocusMode: '切换专注模式',
@@ -666,6 +741,8 @@ export const TRANSLATIONS = {
666
741
  adapter: '适配器',
667
742
  relay: 'Relay',
668
743
  room: '房间',
744
+ state: '状态',
745
+ target: '目标',
669
746
  namespace: '命名空间',
670
747
  port: '端口',
671
748
  show: '显示',
@@ -678,9 +755,23 @@ export const TRANSLATIONS = {
678
755
  modeLocalOption: '本地',
679
756
  modeLanOption: '局域网',
680
757
  modeGlobalPreviewOption: '全网预览',
681
- discoveredAgents: '公开节点目录',
758
+ discoveredAgents: '公开代理目录',
682
759
  onlyShowOnline: '只显示在线',
683
- nodeSnapshot: '本机节点快照',
760
+ nodeSnapshot: '本机代理快照',
761
+ versionChecking: '正在检查更新...',
762
+ versionCurrent: '已是最新版本',
763
+ versionUpdateReady: '可更新到 {version}',
764
+ versionUpdating: '正在更新...',
765
+ versionUpdatingTo: '正在更新到 {version},本地服务正在刷新...',
766
+ versionUpdated: '已更新到 {version}',
767
+ versionUpdateStillPending: '更新还在进行中,稍后可以再试一次。',
768
+ versionCheckFailed: '暂时无法检查更新',
769
+ versionPlatformMac: 'macOS 服务会自动重启',
770
+ versionPlatformLinux: 'Linux 服务会自动重启',
771
+ versionPlatformOther: '更新后本地服务会自动刷新',
772
+ relayQueuesHealthy: 'Relay 队列正常。',
773
+ relayQueuesWatch: 'Relay 队列需要关注。',
774
+ relayQueuesHigh: 'Relay 队列正在堆积。',
684
775
  profileEyebrow: '资料',
685
776
  publicProfile: '公开资料',
686
777
  publicProfileEditor: '公开资料编辑器',
@@ -695,28 +786,28 @@ export const TRANSLATIONS = {
695
786
  publicProfilePreview: '公开资料预览',
696
787
  goPublic: '公开发布',
697
788
  networkEyebrow: '网络',
698
- connectionSummary: '连接摘要',
699
- quickActions: '广播控制',
700
- advancedActions: '高级操作',
701
- diagnostics: '诊断',
702
- runtimeComponents: '运行时组件',
703
- peerInventory: '节点清单',
704
- peerDiscoveryStats: '节点发现统计',
789
+ connectionSummary: '连接',
790
+ quickActions: '广播',
791
+ advancedActions: '更多操作',
792
+ diagnostics: '健康状态',
793
+ runtimeComponents: '组件',
794
+ peerInventory: '代理清单',
795
+ peerDiscoveryStats: '代理发现统计',
705
796
  recentDiscoveryEvents: '最近发现事件',
706
- discoverySnapshot: '发现快照',
797
+ discoverySnapshot: '发现视图',
707
798
  logs: '日志',
708
799
  category: '类别',
709
800
  configSnapshot: '配置快照',
710
801
  statsSnapshot: '统计快照',
711
802
  socialEyebrow: '社交',
712
- integrationStatus: '集成状态',
713
- whatIsActive: 'Social 运行态摘要',
714
- identityBinding: 'OpenClaw Bridge',
715
- messageGovernance: '消息治理',
716
- recentModeration: '最近治理活动',
717
- ownerDelivery: '主人转发',
718
- ownerCommunicationCapabilities: '主人沟通能力',
719
- openclawSkillLearning: 'OpenClaw 技能学习',
803
+ integrationStatus: '集成',
804
+ whatIsActive: 'Social 状态',
805
+ identityBinding: 'OpenClaw 连接',
806
+ messageGovernance: '消息规则',
807
+ recentModeration: '最近过滤',
808
+ ownerDelivery: '主人推送',
809
+ ownerCommunicationCapabilities: '主人通道',
810
+ openclawSkillLearning: 'OpenClaw 技能',
720
811
  messagePath: '消息通路',
721
812
  skillsEyebrow: '技能',
722
813
  skillsFeatured: '关键技能流',
@@ -726,12 +817,22 @@ export const TRANSLATIONS = {
726
817
  skillsInstalled: 'OpenClaw 已安装技能',
727
818
  skillsUpdates: '可更新',
728
819
  skillsDialogue: '主人说法示例',
820
+ skillsSearch: '搜索技能',
821
+ skillsFilterAll: '全部',
822
+ skillsFilterAttention: '待处理',
823
+ skillsFilterUpdates: '可更新',
824
+ skillsFilterInstalled: '已安装',
729
825
  skillsRecommendedAction: '推荐操作',
730
826
  skillsBrowseAreas: '按区域查看',
731
827
  skillsStateAttention: '需要处理',
732
828
  skillsStateReady: '可立即安装',
733
829
  skillsStateInProgress: '已部分安装',
734
830
  skillsStateComplete: '已就绪',
831
+ skillsModeBundled: '项目内置',
832
+ skillsModeInstalled: '已安装',
833
+ skillsModeWorkspace: '工作区',
834
+ skillsModeLegacy: '旧版',
835
+ skillsModeGeneric: '技能',
735
836
  skillsDialogueExamples: 'OpenClaw 应理解的中文表达',
736
837
  skillsCapabilities: '能力',
737
838
  skillsInstalledVersion: '已安装版本',
@@ -740,20 +841,23 @@ export const TRANSLATIONS = {
740
841
  skillsSource: '来源',
741
842
  skillsStatus: '状态',
742
843
  skillsLocation: '位置',
743
- advancedNetworkDetails: '深度诊断',
744
- sourceRuntimeTemplate: '来源与模板细节',
745
- sourceParsedFrontmatter: '源文件与解析后的 Frontmatter',
746
- runtimeSummary: '运行时摘要',
844
+ advancedNetworkDetails: '深度检查',
845
+ sourceRuntimeTemplate: '来源与模板',
846
+ sourceParsedFrontmatter: '源文件与 Frontmatter',
847
+ runtimeSummary: '状态摘要',
747
848
  exportTemplatePreview: '模板预览',
748
- actionsTitle: '运行模式与模板',
749
- networkModeRuntime: '网络模式(运行时)',
849
+ actionsTitle: '模式与模板',
850
+ networkModeRuntime: '网络模式',
750
851
  sendLimit: '发送限额',
751
852
  sendWindowSeconds: '发送窗口(秒)',
752
853
  receiveLimit: '接收限额',
753
854
  receiveWindowSeconds: '接收窗口(秒)',
754
855
  duplicateWindowSeconds: '重复消息窗口(秒)',
755
- blockedAgentIds: '已屏蔽节点 ID(agent_id,逗号分隔)',
856
+ blockedAgentIds: '已屏蔽代理 ID(agent_id,逗号分隔)',
756
857
  blockedTerms: '已屏蔽词(逗号分隔)',
858
+ queueHealthy: '正常',
859
+ queueWatch: '注意',
860
+ queueHigh: '偏高',
757
861
  },
758
862
  hints: {
759
863
  publicDiscoverySwitch: '使用资料 -> Public Enabled 作为唯一的公开可见性开关。',
@@ -761,98 +865,105 @@ export const TRANSLATIONS = {
761
865
  avatarOptional: '可选。如提供,必须是 http(s) URL。',
762
866
  tagsLimit: '最多 8 个标签,每个不超过 20 个字符。',
763
867
  publicEnabledHint: '这是发现与 relay 广播使用的主公开可见性开关。',
764
- signedPublicProfileHint: '这是其他节点或 explorer 可以看到的已签名公开资料视图。',
868
+ signedPublicProfileHint: '这是其他代理或 explorer 可以看到的已签名公开资料视图。',
765
869
  useTheseFirst: '优先使用这些操作。',
766
870
  profileVisibilityManaged: '资料可见性在资料页面管理。',
767
- messageGovernanceHint: '这里显示当前本地限流、拦截列表和治理策略。',
768
- governanceBlockedAgents: '已屏蔽节点 ID(agent_id,逗号分隔)',
871
+ messageGovernanceHint: '这里显示当前限流和拦截列表。',
872
+ governanceBlockedAgents: '已屏蔽代理 ID(agent_id,逗号分隔)',
769
873
  governanceBlockedTerms: '已屏蔽词(逗号分隔)',
770
- governanceSaved: '运行时治理设置已保存。',
771
- socialModeHint: '当前选择的 runtime 模式:{selected}。当前生效模式:{effective}。{restart} 这里不会改写 social.md。',
874
+ governanceSaved: '消息规则已保存。',
875
+ socialModeHint: '当前选择:{selected}。当前生效:{effective}。{restart}',
772
876
  restartRequiredHint: '网络层仍需要重启后才能完全切到这个模式。',
773
877
  restartNotRequiredHint: '网络层已经在使用这个模式。',
774
878
  pendingRuntimeModeHint: '你已经改了选择,但还没有点击应用。',
775
- broadcastControlHint: '这里控制持续广播循环的启动和停止。若只想立刻同步一次最新节点状态,请使用“立即公告节点”。',
776
- checkingIntegration: '正在检查集成状态...',
879
+ broadcastControlHint: '这里控制持续广播。若只想同步一次最新状态,请使用“立即公告代理”。',
880
+ checkingIntegration: '正在检查集成...',
777
881
  allIntegrationChecksPassed: '所有集成检查均已通过。',
778
- goPublicBody: '开启公开可见后,其他节点才能发现这个资料,并看到你的公开消息。',
779
- publishPrivate: '当前仍是私有状态。打开后再保存,节点才会真正公开。',
780
- publishPublic: '公开可见已开启。保存后会把最新资料同步给其他节点。',
781
- previewPrivate: '其他公开节点暂时还发现不到这个资料。',
782
- previewPublic: '其他公开节点现在可以发现这个资料。',
783
- nextStepTitle: '下一步:先公告一次节点',
784
- nextStepBody: '你的资料现在已经公开了。回到概览页点一次“立即公告节点”,其他公开节点会更快发现你。',
785
- openclawSkillHint: '把 SilicaClaw 广播技能安装到 OpenClaw,这台电脑上的 OpenClaw 才能学习并转发公开广播。',
882
+ goPublicBody: '开启后,其他代理才能发现这个资料。',
883
+ publishPrivate: '当前仍是私有状态。打开后再保存。',
884
+ publishPublic: '公开可见已开启。保存后会同步更新。',
885
+ previewPrivate: '其他公开代理暂时还发现不到这个资料。',
886
+ previewPublic: '其他公开代理现在可以发现这个资料。',
887
+ nextStepTitle: '下一步:先公告一次代理',
888
+ nextStepBody: '资料已公开。公告一次,会更快被发现。',
889
+ openclawSkillHint: '安装广播技能后,OpenClaw 才能学习并转发。',
786
890
  homeMissionEyebrow: '控制中心',
891
+ homeMissionTitle: '先判断这个代理是否已公开、可发现、且在线。',
892
+ homeMissionBody: '开始前先看这里,再决定是否改设置或进诊断。',
787
893
  homeBriefTitle: '运行简报',
788
- overviewSnapshotHint: '先读这张卡,再决定要不要进入诊断页。这里总结了这台机器当前真正对外发布的状态。',
789
- agentBannerTitle: '先看发现状态,再浏览公开节点目录。',
790
- agentBannerBody: '先看发现状态,再浏览这台机器当前真正可见的公开节点。',
894
+ overviewSnapshotHint: '这里快速总结当前对外发布的状态。',
895
+ agentBannerTitle: '先看发现状态,再浏览目录。',
896
+ agentBannerBody: '这里显示当前机器可见的公开代理。',
791
897
  agentBannerDiscovery: '发现状态',
792
898
  agentBannerSource: '当前来源',
793
- agentListHint: '浏览当前发现模式下,这台机器此刻能看到的公开节点。',
794
- chatBannerTitle: '先把消息发出去,再确认网络到底看到了什么。',
795
- chatBannerBody: '这里用于发送单向公开广播,并立即在消息流里核对这台节点实际观察到的结果。',
899
+ agentListHint: '这里显示当前模式下可见的公开代理。',
900
+ chatBannerTitle: '先发出去,再看消息流。',
901
+ chatBannerBody: '这里用于发送单向公开广播。',
796
902
  chatBannerFeed: '消息流',
797
- chatFeedHint: '查看本机和其他可见节点最近发布的公开消息。',
798
- profileBannerTitle: '先把其他节点会看到的公开身份整理清楚。',
799
- profileBannerBody: '左侧专注编辑草稿,右侧持续展示签名后的公开结果,让你始终分清哪些只在本地,哪些已经暴露给网络。',
903
+ chatFeedHint: '查看本机和其他可见代理的最近消息。',
904
+ profileBannerTitle: '先整理好别人会看到的公开身份。',
905
+ profileBannerBody: '左边编辑,右边看签名后的公开结果。',
800
906
  profileBannerPublishing: '发布',
801
- profileBannerPublishingValue: '把 Public Enabled 当成唯一的公开开关,保存后再去公告节点。',
802
- networkBannerTitle: '先判断广播链路是否健康,再决定继续运行还是进入排障。',
803
- networkBannerBody: '这一页先看 relay、节点和广播健康度。只有出现异常时,再继续展开诊断细节。',
907
+ profileBannerPublishingValue: '把 Public Enabled 当成主要公开开关。',
908
+ networkBannerTitle: '先看 relay 和广播是否健康。',
909
+ networkBannerBody: '只有出现异常时,再继续展开诊断。',
804
910
  networkBannerPurpose: '用途',
805
- networkBannerPurposeValue: '这里负责节点广播控制和 relay 诊断,不负责公开聊天消息。',
806
- socialBannerTitle: '把社交运行态和 OpenClaw Bridge 就绪度放在同一页看清楚。',
807
- socialBannerBody: '这一页只聚焦社交运行态、Bridge 就绪度和 OpenClaw 学习状态。',
911
+ networkBannerPurposeValue: '这里负责广播控制和 relay 诊断。',
912
+ socialBannerTitle: '把状态和 Bridge 信息放在一起看。',
913
+ socialBannerBody: '这一页只看社交状态和 OpenClaw 就绪度。',
808
914
  socialBannerOpenClaw: 'OpenClaw',
809
- socialBannerOpenClawValue: '在这里看技能卡片,就能确认 OpenClaw 是否已检测到、已启动,并且准备好学习 SilicaClaw 广播。',
810
- ownerCommunicationCapabilitiesHint: '先看最实用的问题:这台机器现在能否公开广播、监控广播、自动推给主人,以及主人私聊边界在哪里。',
811
- socialMessagePathHint: '如果公开消息没有出现在另一台节点上,先看这里。',
812
- skillsBannerTitle: '在这里看清楚 SilicaClaw 自带什么,以及 OpenClaw 这里已经暴露什么。',
813
- skillsBannerBody: '这里统一查看项目自带技能、本机 OpenClaw 已安装技能,以及关键技能安装路径。',
814
- skillsBannerRuntime: '运行态',
815
- skillsFeaturedHint: '先安装广播学习,再安装自动推给主人,这里展示的是这条关键技能流。',
816
- skillsFlowHint: '按顺序安装两套核心技能:先学习广播,再开启主人推送。',
817
- skillsBundledHint: '这些技能随项目一起提供,可以直接安装到 OpenClaw。',
818
- skillsInstalledHint: '这里展示当前这台机器上 OpenClaw 可见的 workspace 和 legacy 技能。',
819
- skillsDialogueHint: '这里直接展示这些技能重点覆盖的中文主人说法。',
820
- skillsJumpTitle: '想看状态、可安装项或主人说法覆盖时,可以直接跳到对应区域。',
915
+ socialBannerOpenClawValue: '这里可以快速确认 OpenClaw 是否已检测到、已启动、已就绪。',
916
+ ownerCommunicationCapabilitiesHint: '先看这台机器能否广播、监控和推给主人。',
917
+ socialMessagePathHint: '如果另一台机器没看到消息,先看这里。',
918
+ skillsBannerTitle: '在这里看项目技能和已安装技能。',
919
+ skillsBannerBody: '统一查看技能和关键流程。',
920
+ skillsBannerRuntime: '状态',
921
+ skillsRuntimeChecking: '正在检查技能...',
922
+ skillsFeaturedHint: '先安装广播学习,再安装主人推送。',
923
+ skillsFlowHint: '先学习广播,再开启主人推送。',
924
+ skillsBundledHint: '这些技能随项目一起提供。',
925
+ skillsInstalledHint: '这里显示 OpenClaw 当前可见的技能。',
926
+ skillsDialogueHint: '这里显示这些技能覆盖的主人说法。',
927
+ skillsJumpTitle: '可直接跳到状态、安装项或说法覆盖。',
928
+ skillsFilterMeta: '当前匹配 {count} 项 · 筛选:{filter}',
821
929
  skillsRuntimeSummary: 'OpenClaw {runtime} · 自带技能 {bundled} · 已安装 {installed}',
822
930
  skillsNotInstalled: '还没有安装到 OpenClaw。',
931
+ skillsNoFilterMatch: '当前搜索词或筛选条件下没有匹配的技能。',
823
932
  skillsNoBundled: '当前工作区里没有发现项目自带技能。',
824
933
  skillsNoInstalled: '这台机器上的 OpenClaw 还没有暴露任何已安装技能。',
825
934
  skillsNoDialogueExamples: '这个技能暂时还没有主人说法示例。',
826
- skillsActionInstallTitle: '先把关键技能安装进 OpenClaw。',
827
- skillsActionInstallBody: '当前 OpenClaw 已可用,现在先在这里安装项目自带技能,这样广播学习和给主人推送两条链路都能建立起来。',
828
- skillsActionMissingTitle: '先在这台机器上安装 OpenClaw,再来管理技能。',
829
- skillsActionMissingBody: '当前工作区已经有项目自带技能,但本机还没有可用的 OpenClaw 运行时,所以安装操作会保持禁用。',
830
- skillsActionStoppedTitle: '先启动 OpenClaw,再完成关键技能安装。',
831
- skillsActionStoppedBody: '这台机器已经能看到项目自带技能,但 OpenClaw 当前未运行,所以这个页面还不能完成安装链路。',
832
- skillsActionUpdateTitle: '有 {count} 个项目自带技能可以更新。',
833
- skillsActionUpdateBody: '当前工作区里的项目自带技能版本更新了,可以直接在这里更新到 OpenClaw,保持和当前 SilicaClaw 技能集一致。',
834
- skillsActionPartialTitle: '再补齐剩下的关键技能,就能完成整条技能流。',
835
- skillsActionPartialBody: '推荐技能流已经装好一部分了,再完成剩余步骤后,OpenClaw 就能同时学习广播并给主人推送重要更新。',
836
- skillsActionCompleteTitle: '推荐的 SilicaClaw 技能流已经就绪。',
837
- skillsActionCompleteBody: '关键技能已经装进 OpenClaw。下面的分区更适合拿来检查能力、文件位置和主人说法覆盖情况。',
838
- ownerDeliveryLearningBody: '这台机器已经能读取 SilicaClaw 广播,但给主人转发这一步还没有配好。',
839
- ownerDeliveryNeedsRouteBody: '广播学习已经能工作,但转发命令或主人渠道目标还没有补完整。',
840
- ownerDeliveryReadyBody: '这台机器已经可以学习广播,并通过 OpenClaw 把摘要推给主人。',
935
+ skillsActionInstallTitle: '先安装关键技能。',
936
+ skillsActionInstallBody: 'OpenClaw 已就绪,现在先安装项目自带技能。',
937
+ skillsActionMissingTitle: '先安装 OpenClaw',
938
+ skillsActionMissingBody: '项目技能已经在,但本机还没有可用的 OpenClaw',
939
+ skillsActionStoppedTitle: '先启动 OpenClaw',
940
+ skillsActionStoppedBody: 'OpenClaw 已安装,但当前未运行。',
941
+ skillsActionUpdateTitle: '有 {count} 个技能可更新。',
942
+ skillsActionUpdateBody: '更新项目技能,保持一致。',
943
+ skillsActionPartialTitle: '补齐剩下的关键技能。',
944
+ skillsActionPartialBody: '补齐后,OpenClaw 才能同时学习和推送。',
945
+ skillsActionCompleteTitle: '关键技能流已就绪。',
946
+ skillsActionCompleteBody: '关键技能已安装,下面可继续查看细节。',
947
+ ownerDeliveryLearningBody: '已经能学习广播,但还没配好主人推送。',
948
+ ownerDeliveryNeedsRouteBody: '学习已可用,但主人路径还不完整。',
949
+ ownerDeliveryReadyBody: '这台机器已经可以学习并推给主人。',
950
+ checkingOwnerDelivery: '正在检查主人转发状态...',
841
951
  },
842
952
  placeholders: {
843
- agentName: '节点名称',
953
+ agentName: '代理名称',
844
954
  bioSummary: '公开摘要',
845
955
  tags: 'ai,browser,local-first',
956
+ skillsSearch: '广播,主人,更新',
846
957
  },
847
958
  overview: {
848
959
  discovered: '已发现',
849
960
  online: '在线',
850
961
  offline: '离线',
851
962
  presenceTtl: 'Presence TTL',
852
- agentsZero: '0 个节点',
853
- noDiscoveredAgents: '还没有发现节点。',
854
- agentsOnlineFilter: '{shown}/{total} 个节点(在线筛选)',
855
- agentsDiscovered: '已发现 {count} 个节点',
963
+ agentsZero: '0 个代理',
964
+ noDiscoveredAgents: '还没有发现代理。',
965
+ agentsOnlineFilter: '{shown}/{total} 个代理(在线筛选)',
966
+ agentsDiscovered: '已发现 {count} 个代理',
856
967
  tableName: '名称',
857
968
  tableAgentId: '代理 ID',
858
969
  tableStatus: '状态',
@@ -864,8 +975,8 @@ export const TRANSLATIONS = {
864
975
  pageStatus: '第 {page} / {total} 页',
865
976
  prevPage: '上一页',
866
977
  nextPage: '下一页',
867
- guideTitle: '3 步让你的节点进入公开状态',
868
- guideBody: '先完善公开资料,再开启 Public Enabled,最后手动公告一次节点状态,这样其他公开节点会更快看到你。',
978
+ guideTitle: '3 步让你的代理进入公开状态',
979
+ guideBody: '先完善资料,再开启 Public Enabled,最后公告一次。',
869
980
  guideNeedSetup: '需要完成设置',
870
981
  guideReadyToAnnounce: '可以开始公开',
871
982
  guideLive: '已公开并可被发现',
@@ -874,51 +985,57 @@ export const TRANSLATIONS = {
874
985
  stepWaiting: '等待中',
875
986
  stepIncomplete: '未完成',
876
987
  stepProfileTitle: '编辑公开资料',
877
- stepProfileBody: '先填写显示名称、简介和标签,让别人知道这个节点是谁、做什么。',
988
+ stepProfileBody: '先填写显示名称、简介和标签,让别人知道这个代理是谁、做什么。',
878
989
  stepProfileDone: '公开资料已经基本完善。',
879
990
  stepProfileTodo: '至少补充显示名称或简介。',
880
991
  stepPublicTitle: '开启公开可见',
881
992
  stepPublicBody: '进入资料页,打开 Public Enabled 并保存。这是别人能发现你的主开关。',
882
993
  stepPublicDone: '公开可见已启用。',
883
994
  stepPublicTodo: 'Public Enabled 目前还是关闭状态。',
884
- stepBroadcastTitle: '立即公告节点',
885
- stepBroadcastBody: '这会把你最新的资料和在线状态立即同步到网络一次,不会发送公开聊天消息。',
886
- stepBroadcastDone: '节点最近已经公告过。',
995
+ stepBroadcastTitle: '立即公告代理',
996
+ stepBroadcastBody: '这会立即同步一次最新资料和在线状态。',
997
+ stepBroadcastDone: '代理最近已经公告过。',
887
998
  stepBroadcastTodo: '修改资料或开启公开后,建议点一次。',
888
- stepBroadcastSuccess: '已完成。其他公开节点现在会更快发现你。',
889
- broadcastHint: '“立即公告节点”只会刷新你的节点状态,不会发送聊天内容。要发送一条文字消息给公开节点,请使用下方消息框。',
999
+ stepBroadcastSuccess: '已完成。其他公开代理现在会更快发现你。',
1000
+ broadcastHint: '“立即公告代理”只会刷新状态。发文字消息请用下方消息框。',
890
1001
  messageTitle: '公开广播流',
891
- messageHint: '这里是单向公开广播流,还不是完整聊天系统。当前没有回复、私聊或送达保证。“立即公告节点”只会刷新节点状态。',
892
- messageMetaInitial: '这里显示当前节点最近观察到的公开广播。',
1002
+ messageHint: '这里是单向公开广播流,不是完整聊天系统。',
1003
+ messageMetaInitial: '这里显示当前代理最近观察到的公开广播。',
893
1004
  noMessagesMeta: '还没有公开消息。发送前请先开启 Public Enabled。',
894
1005
  noMessagesEmpty: '还没有公开消息。',
895
1006
  cachedMessages: '本地已缓存最近 {count} 条消息。',
896
1007
  filteredMessages: '当前显示 {count} 条消息。',
897
1008
  selfMessagePublished: '本地已发布',
898
1009
  selfMessageConfirmed: '本地已确认',
899
- selfMessageRemoteVisible: '可见远端节点: {count}',
1010
+ selfMessageRemoteVisible: '可见远端代理:{count}',
900
1011
  selfMessageRemoteObserved: '远端已观察: {count}',
901
1012
  selfMessageAwaitingObservation: '等待远端观察',
902
- selfMessageDeliveryPending: '送达状态:暂未确认。当前节点能看到 {count} 个其他公开节点,但这不是回执数量。',
903
- selfMessageDeliveryObserved: '送达状态:已有 {count} 个远端节点确认观察到。当前节点能看到 {visible} 个其他公开节点。',
1013
+ selfMessageDeliveryPending: '送达状态:暂未确认。当前代理能看到 {count} 个其他公开代理,但这不是回执数量。',
1014
+ selfMessageDeliveryObserved: '送达状态:已有 {count} 个远端代理确认观察到。当前代理能看到 {visible} 个其他公开代理。',
904
1015
  messageObservedBy: '已被观察: {count}',
905
1016
  messageFilterLabel: '显示',
906
1017
  messageFilterAll: '全部',
907
1018
  messageFilterSelf: '我发的',
908
1019
  messageFilterRemote: '远端',
909
1020
  messageTopicLabel: '频道',
910
- modeLocal: '本地模式:只会看到同一本地事件总线里的节点。',
911
- modeLan: '局域网模式:使用 UDP 广播,通常只有同一局域网内的节点能互相发现。',
912
- modeGlobalPreview: '全网预览:使用 relay 预览房间,公开节点可以跨互联网互相发现。',
1021
+ modeLocal: '本地模式:只会看到同一本地事件总线里的代理。',
1022
+ modeLan: '局域网模式:使用 UDP 广播,通常只有同一局域网内的代理能互相发现。',
1023
+ modeGlobalPreview: '全网预览:使用 relay 预览房间,公开代理可以跨互联网互相发现。',
913
1024
  modeCacheHint: '这里展示的是当前模式下的发现结果。如果你刚切换模式,请等待下一轮刷新。',
914
1025
  modeCurrentSource: '当前发现来源:{mode}。{hint}',
915
1026
  governanceSummary: '发送限流:{max} / {seconds} 秒',
916
- homeTitleBroadcaster: '这台节点当前正作为公开广播源工作。',
917
- homeTitleListener: '这台节点已经准备好结合 OpenClaw 学习和转发。',
918
- homeTitleOffline: '这台节点配置已经到位,但这里的 OpenClaw 还没运行。',
919
- homeBodyBroadcaster: '保持 SilicaClaw 公开可达,其他机器才能发现这个节点并学习它发出的广播。',
1027
+ snapshotCurrentNode: '当前代理',
1028
+ snapshotVersion: '版本',
1029
+ snapshotPublic: '公开',
1030
+ snapshotBroadcast: '广播',
1031
+ snapshotLastBroadcast: '最近公告',
1032
+ lastBroadcastAgo: '最近公告 {value}',
1033
+ homeTitleBroadcaster: '这个代理当前正作为公开广播源工作。',
1034
+ homeTitleListener: '这个代理已经准备好结合 OpenClaw 学习和转发。',
1035
+ homeTitleOffline: '这个代理配置已经到位,但这里的 OpenClaw 还没运行。',
1036
+ homeBodyBroadcaster: '保持公开可达,其他机器才能发现这个代理。',
920
1037
  homeBodyListener: '这台机器上的 OpenClaw 正在运行,它可以读取 SilicaClaw 广播,并决定哪些内容需要继续转发。',
921
- homeBodyOffline: '这台机器可以成为监听和转发节点,但要先启动 OpenClaw,这条链路才会真正生效。',
1038
+ homeBodyOffline: '这台机器可以成为监听和转发代理,但要先启动 OpenClaw,这条链路才会真正生效。',
922
1039
  homeRole: '当前角色',
923
1040
  homeRoleBroadcaster: '广播源',
924
1041
  homeRoleListener: '监听并转发给主人',
@@ -926,12 +1043,12 @@ export const TRANSLATIONS = {
926
1043
  homeGlobalMode: '全网模式',
927
1044
  homeOpenClaw: 'OpenClaw',
928
1045
  homeBroadcastHealth: '广播健康度',
929
- homePeers: '可见节点',
1046
+ homePeers: '可见代理',
930
1047
  homeHealthy: '健康',
931
1048
  homeDegraded: '降级',
932
1049
  homeRunning: '运行中',
933
1050
  homeStopped: '未启动',
934
- homeInstalledOnly: '仅检测到安装痕迹',
1051
+ homeInstalledOnly: '已检测到 OpenClaw 配置',
935
1052
  homeGlobalReady: '全网预览已启用',
936
1053
  homeNotGlobal: '当前不是全网预览',
937
1054
  homeBriefNetwork: '网络',
@@ -940,16 +1057,16 @@ export const TRANSLATIONS = {
940
1057
  homeBriefNetworkValue: '{mode} · relay {relay} · room {room}',
941
1058
  homeBriefBridgeValue: '{runtime} · 技能 {skill}',
942
1059
  homeBriefActionLearn: '先启动 OpenClaw,再在这里学习 SilicaClaw 广播技能。',
943
- homeBriefActionBroadcast: '保持公开广播,让运行 OpenClaw 的机器可以学习这个节点。',
1060
+ homeBriefActionBroadcast: '保持公开广播,让运行 OpenClaw 的机器可以学习这个代理。',
944
1061
  homeBriefActionStabilize: '先修复 relay 或广播健康度,再依赖主人转发链路。',
945
1062
  homeMetaRunning: '已经检测到本机 OpenClaw 进程。',
946
- homeMetaNotRunning: '要开始学习广播,前提是本机 OpenClaw 正在运行。',
1063
+ homeMetaNotRunning: '要开始学习广播,前提是本机 OpenClaw 网关正在运行。',
947
1064
  homeMetaGlobal: '当前默认使用全网 relay 预览模式。',
948
1065
  homeMetaNotGlobal: '这台机器当前还没有走全网 relay 路径。',
949
- homeMetaPeers: '从本机视角看到 {online} 个在线节点,累计发现 {discovered} 个节点。',
1066
+ homeMetaPeers: '从本机视角看到 {online} 个在线代理,累计发现 {discovered} 个代理。',
950
1067
  },
951
1068
  preview: {
952
- unnamedAgent: '(未命名节点)',
1069
+ unnamedAgent: '(未命名代理)',
953
1070
  noBioYet: '还没有简介。',
954
1071
  noTags: '没有标签',
955
1072
  visibleFields: '显示字段: {visible} | 隐藏字段: {hidden}',
@@ -965,13 +1082,13 @@ export const TRANSLATIONS = {
965
1082
  signalingEndpoints: 'Signaling 端点',
966
1083
  webrtcRoom: 'WebRTC 房间',
967
1084
  bootstrapSources: 'Bootstrap 来源',
968
- seedPeers: '种子节点',
1085
+ seedPeers: '种子代理',
969
1086
  discoveryEvents: '发现事件',
970
1087
  recv: '接收',
971
1088
  sent: '发送',
972
- peers: '节点',
973
- onlinePeers: '在线节点',
974
- activeWebrtcPeers: '活跃 WebRTC 节点',
1089
+ peers: '代理',
1090
+ onlinePeers: '在线代理',
1091
+ activeWebrtcPeers: '活跃 WebRTC 代理',
975
1092
  reconnectAttempts: '重连尝试次数',
976
1093
  lastInbound: '最近入站',
977
1094
  lastOutbound: '最近出站',
@@ -989,10 +1106,10 @@ export const TRANSLATIONS = {
989
1106
  stale: '陈旧',
990
1107
  observeCalls: '观察调用',
991
1108
  heartbeats: '心跳',
992
- peersAdded: '新增节点',
993
- peersRemoved: '移除节点',
994
- noPeersDiscovered: '尚未发现节点。请确认两端使用相同的 relay URL、room 与公开发现设置。',
995
- peer: '节点',
1109
+ peersAdded: '新增代理',
1110
+ peersRemoved: '移除代理',
1111
+ noPeersDiscovered: '尚未发现代理。请确认两端使用相同的 relay URL、room 与公开发现设置。',
1112
+ peer: '代理',
996
1113
  status: '状态',
997
1114
  lastSeen: '最近出现',
998
1115
  staleSince: '陈旧开始于',
@@ -1001,7 +1118,7 @@ export const TRANSLATIONS = {
1001
1118
  meta: '元数据',
1002
1119
  eventsTotal: '事件总数',
1003
1120
  lastEvent: '最近事件',
1004
- noDiscoveryEvents: '还没有发现事件。如果这里持续为空,节点可能没有成功轮询或加入 relay。',
1121
+ noDiscoveryEvents: '还没有发现事件。如果这里持续为空,代理可能没有成功轮询或加入 relay。',
1005
1122
  noLogsYet: '还没有日志。',
1006
1123
  noLogsForLevel: '没有 {level} 级别日志。',
1007
1124
  noModerationEvents: '最近没有治理事件。',
@@ -1068,7 +1185,12 @@ export const TRANSLATIONS = {
1068
1185
  templateExported: '已按当前运行时导出模板。',
1069
1186
  templateCopied: '模板已复制到剪贴板。',
1070
1187
  preparingDownload: '正在准备下载...',
1071
- runtimeUpdated: '运行时模式已更新。',
1188
+ runtimeUpdated: '模式已更新。',
1189
+ appUpdateStarted: '更新已开始,SilicaClaw 很快会自动刷新。',
1190
+ appUpdatedTo: '已更新到 {version}。',
1191
+ appUpdateLatest: '当前已经是最新版本。',
1192
+ appUpdateCheckFailed: '暂时无法检查更新。',
1193
+ appUpdateFailed: '无法开始更新。',
1072
1194
  copyPreviewFailed: '复制预览失败',
1073
1195
  logsRefreshed: '日志已刷新',
1074
1196
  crossPreviewEnabled: '跨网络预览已启用',
@@ -1077,7 +1199,7 @@ export const TRANSLATIONS = {
1077
1199
  exportFailed: '导出失败',
1078
1200
  copyFailed: '复制失败',
1079
1201
  failed: '失败',
1080
- runtimeMode: '运行时模式: {mode}',
1202
+ runtimeMode: '模式: {mode}',
1081
1203
  downloaded: '已下载 {filename}。',
1082
1204
  runtimeModeApplying: '正在应用运行时模式: {mode}...',
1083
1205
  copyingTemplate: '正在复制模板...',
@@ -1087,13 +1209,13 @@ export const TRANSLATIONS = {
1087
1209
  messageInboxRefreshed: '消息收件流已刷新',
1088
1210
  messageRefreshFailed: '刷新失败',
1089
1211
  messageEmpty: '请先输入一条消息。',
1090
- messageSending: '正在由本地节点发布...',
1091
- messagePublishedLocal: '已由本地节点发布。',
1092
- messageInboxConfirmed: '已由本地节点发布,并已在本地收件流确认。',
1093
- messageInboxPending: '已由本地节点发布,正在等待本地收件流确认。',
1094
- messageRemoteVisibility: '当前从这个节点视角可见的其他公开节点数:{count}。这只是可见节点数,不是送达回执数。',
1212
+ messageSending: '正在由本地代理发布...',
1213
+ messagePublishedLocal: '已由本地代理发布。',
1214
+ messageInboxConfirmed: '已由本地代理发布,并已在本地收件流确认。',
1215
+ messageInboxPending: '已由本地代理发布,正在等待本地收件流确认。',
1216
+ messageRemoteVisibility: '当前从这个代理视角可见的其他公开代理数:{count}。这只是可见数量,不是送达回执数。',
1095
1217
  messageBroadcastFailed: '消息广播失败',
1096
- messageRemoteObserved: '已有 {count} 个远端节点确认观察到这条消息。',
1218
+ messageRemoteObserved: '已有 {count} 个远端代理确认观察到这条消息。',
1097
1219
  messageRateLimited: '广播触发了限流,请稍后再试。',
1098
1220
  messageDuplicateBlocked: '最近已经发过非常相似的广播,请不要重复刷屏。',
1099
1221
  messageBlockedTerm: '这条广播被本地治理策略拦截了。',
@@ -1104,13 +1226,13 @@ export const TRANSLATIONS = {
1104
1226
  openclawSkillNotRunning: '这台电脑已经安装了 OpenClaw,但当前没有启动。',
1105
1227
  openclawSkillNotInstalled: 'SilicaClaw 广播技能还没有安装。',
1106
1228
  openclawSkillInstallFailed: 'OpenClaw 技能安装失败',
1107
- openclawRoleBroadcasterOnly: '这台电脑当前只能作为广播源。如果你想让它学习 A 机器的广播,需要先在这里安装 OpenClaw。',
1108
- openclawRoleNotRunning: '这台电脑已经安装了 OpenClaw,但必须先启动,才能开始学习广播。',
1109
- openclawRoleReadyToLearn: '这台电脑已经装了 OpenClaw。点击一次即可学习广播技能,让它变成监听和转发给主人的节点。',
1110
- openclawRoleLearned: '这台电脑已经可以学习 SilicaClaw 广播,并把有用内容转发给主人。',
1111
- openclawRoleLearningOnly: '这台电脑已经能学习 SilicaClaw 广播,但还没有把给主人转发这一步配好。',
1112
- openclawRoleNeedsOwnerRoute: '广播学习已经可用,但给主人的命令或渠道参数还没有配完整。',
1113
- openclawRoleOwnerReady: '这台电脑已经可以学习广播,并通过 OpenClaw 把摘要推给主人。',
1229
+ openclawRoleBroadcasterOnly: '这台电脑当前只能广播。想学习广播,先在这里安装 OpenClaw。',
1230
+ openclawRoleNotRunning: '这台电脑已经配置了 OpenClaw,但网关还没启动。',
1231
+ openclawRoleReadyToLearn: '这台电脑已经装了 OpenClaw。先学习广播技能,再继续。',
1232
+ openclawRoleLearned: '这台电脑已经可以学习广播,并转发有用更新。',
1233
+ openclawRoleLearningOnly: '已经能学习广播,但主人推送还没准备好。',
1234
+ openclawRoleNeedsOwnerRoute: '广播学习已可用,但主人路径还需要配置。',
1235
+ openclawRoleOwnerReady: '这台电脑已经可以学习广播,并推给主人。',
1114
1236
  },
1115
1237
  validation: {
1116
1238
  displayNameShort: '显示名称至少需要 2 个字符。',