@clawpump/claw-agent 0.1.8 → 0.1.9

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 (60) hide show
  1. package/agent/.mailmap +4 -0
  2. package/agent/apps/desktop/README.md +3 -3
  3. package/agent/apps/desktop/assets/icon.icns +0 -0
  4. package/agent/apps/desktop/assets/icon.ico +0 -0
  5. package/agent/apps/desktop/assets/icon.png +0 -0
  6. package/agent/apps/desktop/electron/backend-ready.cjs +2 -2
  7. package/agent/apps/desktop/electron/dashboard-token.cjs +3 -3
  8. package/agent/apps/desktop/electron/hardening.cjs +1 -1
  9. package/agent/apps/desktop/electron/main.cjs +65 -65
  10. package/agent/apps/desktop/index.html +1 -1
  11. package/agent/apps/desktop/package.json +11 -11
  12. package/agent/apps/desktop/public/apple-touch-icon.png +0 -0
  13. package/agent/apps/desktop/public/claw-mark.png +0 -0
  14. package/agent/apps/desktop/scripts/set-exe-identity.cjs +2 -2
  15. package/agent/apps/desktop/src/app/chat/composer/controls.tsx +2 -0
  16. package/agent/apps/desktop/src/app/chat/composer/index.tsx +10 -0
  17. package/agent/apps/desktop/src/app/chat/composer/pod-credits.tsx +49 -0
  18. package/agent/apps/desktop/src/app/chat/index.tsx +1 -1
  19. package/agent/apps/desktop/src/app/chat/sidebar/index.tsx +4 -2
  20. package/agent/apps/desktop/src/app/desktop-controller.tsx +18 -0
  21. package/agent/apps/desktop/src/app/gateway/hooks/use-gateway-request.ts +1 -1
  22. package/agent/apps/desktop/src/app/messaging/index.tsx +5 -5
  23. package/agent/apps/desktop/src/app/routes.ts +9 -1
  24. package/agent/apps/desktop/src/app/session/hooks/use-message-stream.ts +3 -3
  25. package/agent/apps/desktop/src/app/settings/constants.ts +5 -5
  26. package/agent/apps/desktop/src/app/settings/model-settings.tsx +1 -1
  27. package/agent/apps/desktop/src/app/settings/providers-settings.tsx +46 -1
  28. package/agent/apps/desktop/src/app/settings/uninstall-section.tsx +5 -5
  29. package/agent/apps/desktop/src/app/types.ts +9 -1
  30. package/agent/apps/desktop/src/app/wallet/index.tsx +244 -0
  31. package/agent/apps/desktop/src/app/x402/index.tsx +162 -0
  32. package/agent/apps/desktop/src/components/assistant-ui/thread.tsx +1 -1
  33. package/agent/apps/desktop/src/components/brand-mark.tsx +2 -2
  34. package/agent/apps/desktop/src/components/chat/intro-copy.jsonl +6 -6
  35. package/agent/apps/desktop/src/components/chat/intro.tsx +4 -4
  36. package/agent/apps/desktop/src/components/model-picker.tsx +64 -4
  37. package/agent/apps/desktop/src/components/pod-setup-dialog.tsx +227 -0
  38. package/agent/apps/desktop/src/hermes.ts +109 -3
  39. package/agent/apps/desktop/src/i18n/en.ts +80 -78
  40. package/agent/apps/desktop/src/i18n/ja.ts +82 -82
  41. package/agent/apps/desktop/src/i18n/runtime.test.ts +2 -2
  42. package/agent/apps/desktop/src/i18n/zh-hant.ts +82 -82
  43. package/agent/apps/desktop/src/i18n/zh.ts +87 -87
  44. package/agent/apps/desktop/src/lib/desktop-fs.ts +1 -1
  45. package/agent/apps/desktop/src/lib/desktop-slash-commands.ts +4 -4
  46. package/agent/apps/desktop/src/store/composer.ts +7 -0
  47. package/agent/apps/desktop/src/store/onboarding.ts +5 -5
  48. package/agent/apps/desktop/src/themes/presets.ts +54 -54
  49. package/agent/cli.py +184 -10
  50. package/agent/hermes_cli/distribution.py +188 -8
  51. package/agent/hermes_cli/providers.py +29 -0
  52. package/agent/hermes_cli/web_server.py +180 -2
  53. package/agent/plugins/model-providers/usepod/__init__.py +7 -1
  54. package/agent/scripts/release.py +1 -0
  55. package/agent/web/src/components/ChatSidebar.tsx +5 -0
  56. package/agent/web/src/components/ModelPickerDialog.tsx +28 -1
  57. package/agent/web/src/components/PodCredits.tsx +57 -0
  58. package/agent/web/src/components/PodSetupDialog.tsx +240 -0
  59. package/agent/web/src/lib/api.ts +23 -0
  60. package/package.json +1 -1
@@ -43,25 +43,25 @@ export const zh: Translations = {
43
43
  },
44
44
 
45
45
  boot: {
46
- ready: 'Hermes 桌面版已就绪',
46
+ ready: 'Claw Agent 桌面版已就绪',
47
47
  desktopBootFailedWithMessage: message => `桌面启动失败:${message}`,
48
48
  steps: {
49
49
  connectingGateway: '正在连接桌面网关',
50
- loadingSettings: '正在加载 Hermes 设置',
50
+ loadingSettings: '正在加载 Claw Agent 设置',
51
51
  loadingSessions: '正在加载最近会话',
52
52
  startingDesktopConnection: '正在启动桌面连接',
53
- startingHermesDesktop: '正在启动 Hermes 桌面版…'
53
+ startingHermesDesktop: '正在启动 Claw Agent 桌面版…'
54
54
  },
55
55
  errors: {
56
- backgroundExited: 'Hermes 后台进程已退出。',
57
- backgroundExitedDuringStartup: 'Hermes 后台进程在启动期间退出。',
56
+ backgroundExited: 'Claw Agent 后台进程已退出。',
57
+ backgroundExitedDuringStartup: 'Claw Agent 后台进程在启动期间退出。',
58
58
  backendStopped: '后端已停止',
59
59
  desktopBootFailed: '桌面启动失败',
60
60
  gatewaySignInRequired: '需要登录网关',
61
61
  ipcBridgeUnavailable: '桌面 IPC 桥不可用。'
62
62
  },
63
63
  failure: {
64
- title: 'Hermes 无法启动',
64
+ title: 'Claw Agent 无法启动',
65
65
  description: '后台网关没有启动。请尝试下面的恢复步骤;这里不会删除你的对话或设置。',
66
66
  remoteTitle: '需要重新登录远程网关',
67
67
  remoteDescription: '你的远程网关会话已过期。请重新登录以恢复连接。这些操作不会删除你的对话或设置。',
@@ -95,15 +95,15 @@ export const zh: Translations = {
95
95
  copyDetail: '复制详情',
96
96
  copyDetailFailed: '无法复制通知详情',
97
97
  backendOutOfDateTitle: '后端版本过旧',
98
- backendOutOfDateMessage: '你的 Hermes 后端早于当前桌面构建,可能无法正常工作。请更新以保持一致。',
99
- updateHermes: '更新 Hermes',
98
+ backendOutOfDateMessage: '你的 Claw Agent 后端早于当前桌面构建,可能无法正常工作。请更新以保持一致。',
99
+ updateHermes: '更新 Claw Agent',
100
100
  updateReadyTitle: '有可用更新',
101
101
  updateReadyMessage: count => `有 ${count} 项新更改可用。`,
102
102
  seeWhatsNew: '查看更新内容',
103
103
  errors: {
104
104
  elevenLabsNeedsKey: 'ElevenLabs STT 需要 ELEVENLABS_API_KEY。',
105
105
  elevenLabsRejectedKey: 'ElevenLabs 拒绝了该 API key (401)。',
106
- methodNotAllowed: '桌面后端拒绝了该请求 (405 Method Not Allowed)。请尝试重启 Hermes Desktop。',
106
+ methodNotAllowed: '桌面后端拒绝了该请求 (405 Method Not Allowed)。请尝试重启 Claw Agent Desktop。',
107
107
  microphonePermission: '麦克风权限已被拒绝。',
108
108
  openaiRejectedApiKey: 'OpenAI 拒绝了该 API key。',
109
109
  openaiRejectedApiKeyWithStatus: status => `OpenAI 拒绝了该 API key (${status} invalid_api_key)。`,
@@ -133,8 +133,8 @@ export const zh: Translations = {
133
133
  approveAction: '批准',
134
134
  rejectAction: '拒绝',
135
135
  inputTitle: '需要输入',
136
- inputBody: 'Hermes 正在等待你的回应。',
137
- turnDoneTitle: 'Hermes 已完成',
136
+ inputBody: 'Claw Agent 正在等待你的回应。',
137
+ turnDoneTitle: 'Claw Agent 已完成',
138
138
  turnDoneBody: '回复已就绪。',
139
139
  turnErrorTitle: '本轮失败',
140
140
  backgroundDoneTitle: '后台任务已完成',
@@ -259,7 +259,7 @@ export const zh: Translations = {
259
259
  exportConfig: '导出配置',
260
260
  importConfig: '导入配置',
261
261
  resetToDefaults: '恢复默认',
262
- resetConfirm: '将所有设置恢复为 Hermes 默认值?',
262
+ resetConfirm: '将所有设置恢复为 Claw Agent 默认值?',
263
263
  exportFailed: '导出失败',
264
264
  resetFailed: '重置失败',
265
265
  nav: {
@@ -280,7 +280,7 @@ export const zh: Translations = {
280
280
  intro: '原生桌面通知,区别于应用内提示。设置按设备保存,每台电脑各自独立。',
281
281
  enableAll: '启用通知',
282
282
  enableAllDesc: '总开关。关闭后将静音下方所有通知。',
283
- focusedHint: '完成提醒仅在 Hermes 处于后台时触发。',
283
+ focusedHint: '完成提醒仅在 Claw Agent 处于后台时触发。',
284
284
  kinds: {
285
285
  approval: {
286
286
  label: '需要批准',
@@ -288,11 +288,11 @@ export const zh: Translations = {
288
288
  },
289
289
  input: {
290
290
  label: '需要输入',
291
- description: 'Hermes 提出了问题,或需要密码或密钥。'
291
+ description: 'Claw Agent 提出了问题,或需要密码或密钥。'
292
292
  },
293
293
  turnDone: {
294
294
  label: '回复就绪',
295
- description: 'Hermes 在后台时完成了一轮对话。'
295
+ description: 'Claw Agent 在后台时完成了一轮对话。'
296
296
  },
297
297
  turnError: {
298
298
  label: '本轮失败',
@@ -304,7 +304,7 @@ export const zh: Translations = {
304
304
  }
305
305
  },
306
306
  test: '发送测试通知',
307
- testTitle: 'Hermes',
307
+ testTitle: 'Claw Agent',
308
308
  testBody: '通知工作正常。',
309
309
  testSent: '测试已发送。如果没有出现,请检查系统通知权限和专注模式/勿扰模式。',
310
310
  testUnsupported: '此系统不支持原生通知。',
@@ -323,7 +323,7 @@ export const zh: Translations = {
323
323
  advanced: '高级'
324
324
  },
325
325
  searchPlaceholder: {
326
- about: '关于 Hermes Desktop',
326
+ about: '关于 Claw Agent Desktop',
327
327
  config: '搜索设置…',
328
328
  gateway: '网关连接…',
329
329
  keys: '搜索 API 密钥…',
@@ -339,7 +339,7 @@ export const zh: Translations = {
339
339
  title: '外观',
340
340
  intro: '这些是仅桌面端的显示偏好。模式控制明暗;主题控制强调色与对话界面样式。',
341
341
  colorMode: '颜色模式',
342
- colorModeDesc: '选择固定模式,或让 Hermes 跟随系统设置。',
342
+ colorModeDesc: '选择固定模式,或让 Claw Agent 跟随系统设置。',
343
343
  toolViewTitle: '工具调用显示',
344
344
  toolViewDesc: '产品模式隐藏原始工具数据;技术模式显示完整输入/输出。',
345
345
  translucencyTitle: '窗口透明',
@@ -521,10 +521,10 @@ export const zh: Translations = {
521
521
  personality: '新会话的默认助手风格。',
522
522
  showReasoning: '当后端提供推理内容时予以显示。'
523
523
  },
524
- timezone: '当 Hermes 需要本地时间上下文时使用。留空则使用系统时区。',
524
+ timezone: '当 Claw Agent 需要本地时间上下文时使用。留空则使用系统时区。',
525
525
  agent: {
526
526
  imageInputMode: '控制图片附件如何发送给模型。',
527
- maxTurns: 'Hermes 停止一次运行前工具调用轮次的上限。'
527
+ maxTurns: 'Claw Agent 停止一次运行前工具调用轮次的上限。'
528
528
  },
529
529
  terminal: {
530
530
  cwd: '工具与终端操作的默认项目目录。',
@@ -534,9 +534,9 @@ export const zh: Translations = {
534
534
  codeExecution: {
535
535
  mode: '代码执行被限定到当前项目的严格程度。'
536
536
  },
537
- fileReadMaxChars: 'Hermes 单次文件读取可读取的最大字符数。',
537
+ fileReadMaxChars: 'Claw Agent 单次文件读取可读取的最大字符数。',
538
538
  approvals: {
539
- mode: 'Hermes 如何处理需要显式审批的命令。',
539
+ mode: 'Claw Agent 如何处理需要显式审批的命令。',
540
540
  timeout: '审批提示在超时前等待的时长。'
541
541
  },
542
542
  security: {
@@ -566,11 +566,11 @@ export const zh: Translations = {
566
566
  },
567
567
  updates: {
568
568
  nonInteractiveLocalChanges:
569
- 'Hermes 从应用内更新时(无终端提示),保留本地源码修改(暂存)或丢弃(放弃)。通过终端更新时始终会询问。'
569
+ 'Claw Agent 从应用内更新时(无终端提示),保留本地源码修改(暂存)或丢弃(放弃)。通过终端更新时始终会询问。'
570
570
  }
571
571
  }),
572
572
  about: {
573
- heading: 'Hermes Desktop',
573
+ heading: 'Claw Agent Desktop',
574
574
  version: value => `版本 ${value}`,
575
575
  versionUnavailable: '版本不可用',
576
576
  updates: '更新',
@@ -587,7 +587,7 @@ export const zh: Translations = {
587
587
  lastChecked: age => `上次检查:${age}`,
588
588
  justNowSuffix: ' · 刚刚',
589
589
  automaticUpdates: '自动更新',
590
- automaticUpdatesDesc: 'Hermes 会在后台自动检查更新,并在有可用更新时通知你。',
590
+ automaticUpdatesDesc: 'Claw Agent 会在后台自动检查更新,并在有可用更新时通知你。',
591
591
  branchCommit: (branch, commit) => `分支 ${branch} · 提交 ${commit}`,
592
592
  never: '从未',
593
593
  justNow: '刚刚',
@@ -600,7 +600,7 @@ export const zh: Translations = {
600
600
  noneParen: '(无)',
601
601
  notSet: '未设置',
602
602
  commaSeparated: '逗号分隔的值',
603
- loading: '正在加载 Hermes 配置...',
603
+ loading: '正在加载 Claw Agent 配置...',
604
604
  emptyTitle: '无可配置项',
605
605
  emptyDesc: '此分区没有可调整的设置。',
606
606
  failedLoad: '设置加载失败',
@@ -637,7 +637,7 @@ export const zh: Translations = {
637
637
  title: '网关连接',
638
638
  envOverride: '环境变量覆盖',
639
639
  intro:
640
- 'Hermes Desktop 默认会启动自己的本地网关。当你希望此应用控制另一台机器上或可信代理后的现有 Hermes 后端时,可以使用远程网关。下面可按 profile 指定各自的远程主机。',
640
+ 'Claw Agent Desktop 默认会启动自己的本地网关。当你希望此应用控制另一台机器上或可信代理后的现有 Claw Agent 后端时,可以使用远程网关。下面可按 profile 指定各自的远程主机。',
641
641
  appliesTo: '应用于',
642
642
  allProfiles: '所有 profile',
643
643
  defaultConnection: '默认连接会用于所有没有自定义覆盖的 profile。',
@@ -645,10 +645,10 @@ export const zh: Translations = {
645
645
  envOverrideTitle: '环境变量正在控制此桌面会话。',
646
646
  envOverrideDesc: '取消设置 HERMES_DESKTOP_REMOTE_URL 和 HERMES_DESKTOP_REMOTE_TOKEN 后才会使用下面保存的设置。',
647
647
  localTitle: '本地网关',
648
- localDesc: '在 localhost 启动私有 Hermes 后端。这是默认方式,并且可离线工作。',
648
+ localDesc: '在 localhost 启动私有 Claw Agent 后端。这是默认方式,并且可离线工作。',
649
649
  remoteTitle: '远程网关',
650
650
  remoteDesc:
651
- '将此桌面外壳连接到远程 Hermes 后端。托管网关使用 OAuth 或用户名密码;自托管网关也可能使用会话 token。',
651
+ '将此桌面外壳连接到远程 Claw Agent 后端。托管网关使用 OAuth 或用户名密码;自托管网关也可能使用会话 token。',
652
652
  remoteUrlTitle: '远程 URL',
653
653
  remoteUrlDesc: '远程 dashboard 后端的基础 URL。支持路径前缀,例如 /hermes。',
654
654
  probing: '正在检查此网关的认证方式…',
@@ -681,9 +681,9 @@ export const zh: Translations = {
681
681
  enterUrlFirst: '请先输入远程 URL。',
682
682
  restartingTitle: '网关连接正在重启',
683
683
  savedTitle: '网关设置已保存',
684
- restartingMessage: 'Hermes Desktop 将使用已保存设置重新连接。',
684
+ restartingMessage: 'Claw Agent Desktop 将使用已保存设置重新连接。',
685
685
  savedMessage: '已保存,下一次重启生效。',
686
- connectedTo: (baseUrl, version) => `已连接到 ${baseUrl}${version ? ` · Hermes ${version}` : ''}`,
686
+ connectedTo: (baseUrl, version) => `已连接到 ${baseUrl}${version ? ` · Claw Agent ${version}` : ''}`,
687
687
  reachableTitle: '远程网关可访问',
688
688
  signedOutTitle: '已退出登录',
689
689
  signedOutMessage: '已清除远程网关会话。',
@@ -758,7 +758,7 @@ export const zh: Translations = {
758
758
  providers: {
759
759
  connectAccount: '连接账号',
760
760
  haveApiKey: '改用 API 密钥?',
761
- intro: '使用订阅登录,无需复制 API 密钥。Hermes 会在应用中为你完成浏览器登录。',
761
+ intro: '使用订阅登录,无需复制 API 密钥。Claw Agent 会在应用中为你完成浏览器登录。',
762
762
  connected: '已连接',
763
763
  collapse: '收起',
764
764
  connectAnother: '连接其他提供方',
@@ -930,7 +930,7 @@ export const zh: Translations = {
930
930
  },
931
931
  nav: {
932
932
  newChat: { title: '新建会话', detail: '开始一个新会话' },
933
- settings: { title: '设置', detail: '配置 Hermes 桌面端' },
933
+ settings: { title: '设置', detail: '配置 Claw Agent 桌面端' },
934
934
  skills: { title: '技能与工具', detail: '启用技能、工具集与提供方' },
935
935
  messaging: { title: '消息平台', detail: '配置 Telegram、Slack、Discord 等' },
936
936
  artifacts: { title: '产物', detail: '浏览生成的输出' }
@@ -952,10 +952,10 @@ export const zh: Translations = {
952
952
  noSessions: '暂无会话。',
953
953
  gatewayRunning: '消息网关运行中',
954
954
  gatewayStopped: '消息网关已停止',
955
- hermesActiveSessions: (version, count) => `Hermes ${version} · 活跃会话 ${count}`,
955
+ hermesActiveSessions: (version, count) => `Claw Agent ${version} · 活跃会话 ${count}`,
956
956
  restartGateway: '重启网关',
957
957
  gatewayRestartFailed: '网关重启失败。',
958
- updateHermes: '更新 Hermes',
958
+ updateHermes: '更新 Claw Agent',
959
959
  actionRunning: '运行中',
960
960
  actionDone: '完成',
961
961
  actionFailed: '失败',
@@ -1094,10 +1094,10 @@ export const zh: Translations = {
1094
1094
  slack: '创建 Slack 应用,启用 Socket Mode,安装到你的工作区,然后复制 bot 令牌和 app 级令牌。',
1095
1095
  mattermost: '在你的 Mattermost 服务器上,创建机器人账户或个人访问令牌,然后在此粘贴服务器 URL 和令牌。',
1096
1096
  matrix: '用机器人账户登录你的 homeserver,然后复制访问令牌、用户 ID 和 homeserver URL。',
1097
- signal: '在可访问的位置运行 signal-cli REST 桥接,然后把 Hermes 指向该 URL 和已注册的电话号码。',
1098
- whatsapp: '启动 Hermes 自带的 WhatsApp 桥接,首次运行时扫描二维码,然后启用该平台。',
1097
+ signal: '在可访问的位置运行 signal-cli REST 桥接,然后把 Claw Agent 指向该 URL 和已注册的电话号码。',
1098
+ whatsapp: '启动 Claw Agent 自带的 WhatsApp 桥接,首次运行时扫描二维码,然后启用该平台。',
1099
1099
  bluebubbles:
1100
- '在装有 iMessage 的 Mac 上运行 BlueBubbles Server,暴露其 API,然后用服务器密码把 Hermes 指向该 URL。',
1100
+ '在装有 iMessage 的 Mac 上运行 BlueBubbles Server,暴露其 API,然后用服务器密码把 Claw Agent 指向该 URL。',
1101
1101
  homeassistant: '在 Home Assistant 中打开你的个人资料并创建长期访问令牌。把它连同你的 HA URL 一起粘贴到这里。',
1102
1102
  email: '使用专用邮箱。对于 Gmail/Workspace,创建应用专用密码并使用 imap.gmail.com / smtp.gmail.com。',
1103
1103
  sms: '从 Twilio 控制台获取你的 Account SID 和 Auth Token,以及一个可发送短信的电话号码。',
@@ -1106,10 +1106,10 @@ export const zh: Translations = {
1106
1106
  wecom: '在企业微信中添加群机器人,复制其 webhook key 作为 WECOM_BOT_ID。仅可发送——双向请用企业微信 (应用) 选项。',
1107
1107
  wecom_callback: '设置一个企业微信自建应用,暴露其回调 URL,并提供 corp ID、secret、agent ID 和 AES key。',
1108
1108
  weixin:
1109
- '运行 `hermes gateway setup`,选择 Weixin,然后使用个人微信账号扫描并确认二维码。Hermes 会通过腾讯 iLink Bot API 连接并保存凭据。',
1109
+ '运行 `hermes gateway setup`,选择 Weixin,然后使用个人微信账号扫描并确认二维码。Claw Agent 会通过腾讯 iLink Bot API 连接并保存凭据。',
1110
1110
  qqbot: '在 QQ 开放平台 (q.qq.com) 注册一个应用,复制 App ID 和 Client Secret。',
1111
1111
  api_server:
1112
- '把 Hermes 暴露为兼容 OpenAI 的 API。设置一个鉴权密钥,然后把 Open WebUI / LobeChat 等指向 host:port。',
1112
+ '把 Claw Agent 暴露为兼容 OpenAI 的 API。设置一个鉴权密钥,然后把 Open WebUI / LobeChat 等指向 host:port。',
1113
1113
  webhook: '运行一个 HTTP 服务器,供其他工具 (GitHub、GitLab、自定义应用)POST。用 secret 验证签名。'
1114
1114
  }
1115
1115
  },
@@ -1159,7 +1159,7 @@ export const zh: Translations = {
1159
1159
  deleteDescMid: ' 并移除其 ',
1160
1160
  deleteDescSuffix: ' 目录。此操作无法撤销。',
1161
1161
  deleting: '删除中…',
1162
- createDesc: '配置档案是相互独立的 Hermes 环境:各自拥有独立的配置、技能和 SOUL.md。',
1162
+ createDesc: '配置档案是相互独立的 Claw Agent 环境:各自拥有独立的配置、技能和 SOUL.md。',
1163
1163
  nameLabel: '名称',
1164
1164
  cloneFrom: '克隆来源',
1165
1165
  cloneFromNone: '无(空白)',
@@ -1245,7 +1245,7 @@ export const zh: Translations = {
1245
1245
  topOfHour: '每个整点',
1246
1246
  everyHourAt: minute => `每小时的 :${minute}`,
1247
1247
  newCron: '新建定时任务',
1248
- emptyDescNew: '按 cron 表达式排程一个提示词。Hermes 会运行它,并把结果发送到你选择的目的地。',
1248
+ emptyDescNew: '按 cron 表达式排程一个提示词。Claw Agent 会运行它,并把结果发送到你选择的目的地。',
1249
1249
  emptyDescSearch: '尝试更宽泛的搜索词。',
1250
1250
  emptyTitleNew: '暂无排程任务',
1251
1251
  emptyTitleSearch: '无匹配项',
@@ -1391,12 +1391,12 @@ export const zh: Translations = {
1391
1391
  composer: {
1392
1392
  message: '消息',
1393
1393
  wakingProfile: profile => `正在唤醒 ${profile}…`,
1394
- placeholderStarting: '正在启动 Hermes…',
1395
- placeholderReconnecting: '正在重新连接 Hermes…',
1394
+ placeholderStarting: '正在启动 Claw Agent…',
1395
+ placeholderReconnecting: '正在重新连接 Claw Agent…',
1396
1396
  placeholderFollowUp: '发送后续消息',
1397
1397
  newSessionPlaceholders: [
1398
1398
  '我们要构建什么?',
1399
- '给 Hermes 一个任务',
1399
+ '给 Claw Agent 一个任务',
1400
1400
  '你在想什么?',
1401
1401
  '描述你需要什么',
1402
1402
  '我们该处理什么?',
@@ -1457,7 +1457,7 @@ export const zh: Translations = {
1457
1457
  'composer.history': '循环弹窗 / 历史'
1458
1458
  },
1459
1459
  attachUrlTitle: '附加 URL',
1460
- attachUrlDesc: 'Hermes 将抓取该页面并作为本回合的上下文。',
1460
+ attachUrlDesc: 'Claw Agent 将抓取该页面并作为本回合的上下文。',
1461
1461
  urlPlaceholder: 'https://example.com/post',
1462
1462
  urlHintPre: '请包含完整 URL,例如 ',
1463
1463
  attach: '附加',
@@ -1535,7 +1535,7 @@ export const zh: Translations = {
1535
1535
  fetch: '下载中…',
1536
1536
  pull: '马上完成…',
1537
1537
  pydeps: '收尾中…',
1538
- restart: '正在重启 Hermes…',
1538
+ restart: '正在重启 Claw Agent…',
1539
1539
  manual: '从终端更新',
1540
1540
  error: '更新已暂停'
1541
1541
  },
@@ -1543,28 +1543,28 @@ export const zh: Translations = {
1543
1543
  checkFailedTitle: '无法检查更新',
1544
1544
  tryAgain: '重试',
1545
1545
  notAvailableTitle: '更新不可用',
1546
- unsupportedMessage: '此版本的 Hermes 无法在应用内自行更新。',
1546
+ unsupportedMessage: '此版本的 Claw Agent 无法在应用内自行更新。',
1547
1547
  connectionRetry: '请检查网络连接后重试。',
1548
1548
  latestBody: '你正在运行最新版本。',
1549
1549
  latestBodyBackend: '后端正在运行最新版本。',
1550
1550
  allSetTitle: '已是最新',
1551
1551
  availableTitle: '有可用更新',
1552
- availableBody: '新版 Hermes 已可安装。',
1552
+ availableBody: '新版 Claw Agent 已可安装。',
1553
1553
  availableTitleBackend: '后端有可用更新',
1554
- availableBodyBackend: '已连接的 Hermes 后端有新版本可安装。',
1554
+ availableBodyBackend: '已连接的 Claw Agent 后端有新版本可安装。',
1555
1555
  availableBodyNoChangelog: '已有新版本可用。此安装方式无法显示更新日志。',
1556
1556
  updateNow: '立即更新',
1557
1557
  maybeLater: '稍后再说',
1558
1558
  moreChanges: count => `另有 ${count} 项更改。`,
1559
1559
  manualTitle: '从终端更新',
1560
- manualBody: '你是从命令行安装的 Hermes,因此更新也需要在那里运行。请将此命令粘贴到终端:',
1561
- manualPickedUp: '下次启动 Hermes 时会使用新版本。',
1560
+ manualBody: '你是从命令行安装的 Claw Agent,因此更新也需要在那里运行。请将此命令粘贴到终端:',
1561
+ manualPickedUp: '下次启动 Claw Agent 时会使用新版本。',
1562
1562
  copy: '复制',
1563
1563
  copied: '已复制',
1564
1564
  done: '完成',
1565
- applyingBody: 'Hermes 更新器会在自己的窗口中接管,并在完成后重新打开 Hermes。',
1566
- applyingBodyBackend: '远程后端正在应用更新并将重启。恢复后 Hermes 会自动重新连接。',
1567
- applyingClose: 'Hermes 将关闭以应用更新。',
1565
+ applyingBody: 'Claw Agent 更新器会在自己的窗口中接管,并在完成后重新打开 Claw Agent。',
1566
+ applyingBodyBackend: '远程后端正在应用更新并将重启。恢复后 Claw Agent 会自动重新连接。',
1567
+ applyingClose: 'Claw Agent 将关闭以应用更新。',
1568
1568
  errorTitle: '更新未完成',
1569
1569
  errorBody: '没有数据丢失。你可以现在重试。',
1570
1570
  notNow: '暂不',
@@ -1586,7 +1586,7 @@ export const zh: Translations = {
1586
1586
  skipped: '已跳过',
1587
1587
  failed: '失败'
1588
1588
  },
1589
- oneTimeTitle: 'Hermes 需要一次性安装',
1589
+ oneTimeTitle: 'Claw Agent 需要一次性安装',
1590
1590
  unsupportedDesc: platform =>
1591
1591
  `${platform} 暂不支持自动首次启动安装。请打开终端并运行下面的命令,然后重新启动此应用。之后启动会跳过此步骤。`,
1592
1592
  installCommand: '安装命令',
@@ -1595,11 +1595,11 @@ export const zh: Translations = {
1595
1595
  installTo: '将安装到',
1596
1596
  retryAfterRun: '我已运行 -- 重试',
1597
1597
  failedTitle: '安装失败',
1598
- settingUpTitle: '正在设置 Hermes Agent',
1598
+ settingUpTitle: '正在设置 Claw Agent',
1599
1599
  finishingTitle: '正在收尾',
1600
1600
  failedDesc:
1601
- '某个安装步骤失败。在 Windows 上,如果另一个 Hermes CLI 或桌面实例正在运行,可能会出现这种情况。请停止正在运行的 Hermes 实例后重试。可查看下面的详情或 desktop 日志中的完整记录。',
1602
- activeDesc: '这是一次性设置。Hermes 安装器正在下载依赖并配置你的机器。之后启动会跳过此步骤。',
1601
+ '某个安装步骤失败。在 Windows 上,如果另一个 Claw Agent CLI 或桌面实例正在运行,可能会出现这种情况。请停止正在运行的 Claw Agent 实例后重试。可查看下面的详情或 desktop 日志中的完整记录。',
1602
+ activeDesc: '这是一次性设置。Claw Agent 安装器正在下载依赖并配置你的机器。之后启动会跳过此步骤。',
1603
1603
  progress: (completed, total) => `${completed}/${total} 个步骤已完成`,
1604
1604
  currentStage: stage => ` -- 当前:${stage}`,
1605
1605
  fetchingManifest: '正在获取安装器 manifest...',
@@ -1617,10 +1617,10 @@ export const zh: Translations = {
1617
1617
  },
1618
1618
 
1619
1619
  onboarding: {
1620
- headerTitle: '开始设置 Hermes Agent',
1620
+ headerTitle: '开始设置 Claw Agent',
1621
1621
  headerDesc: '连接模型提供方即可开始对话。大多数选项只需一次点击。',
1622
- preparingInstall: 'Hermes 正在完成安装。首次运行通常不到一分钟。',
1623
- starting: '正在启动 Hermes…',
1622
+ preparingInstall: 'Claw Agent 正在完成安装。首次运行通常不到一分钟。',
1623
+ starting: '正在启动 Claw Agent…',
1624
1624
  lookingUpProviders: '正在查找提供方...',
1625
1625
  collapse: '收起',
1626
1626
  otherProviders: '其他提供方',
@@ -1628,7 +1628,7 @@ export const zh: Translations = {
1628
1628
  chooseLater: '稍后再选择提供方',
1629
1629
  recommended: '推荐',
1630
1630
  connected: '已连接',
1631
- featuredPitch: '一个订阅,300+ 前沿模型 — 运行 Hermes 的推荐方式',
1631
+ featuredPitch: '一个订阅,300+ 前沿模型 — 运行 Claw Agent 的推荐方式',
1632
1632
  openRouterPitch: '一个密钥,数百个模型 — 稳妥的默认选择',
1633
1633
  apiKeyOptions: {
1634
1634
  openrouter: { short: '一个密钥,多个模型', description: '用一个密钥访问数百个模型。适合新安装的默认选择。' },
@@ -1637,7 +1637,7 @@ export const zh: Translations = {
1637
1637
  xai: { short: 'Grok 模型', description: '直接访问 xAI Grok 模型。' },
1638
1638
  local: {
1639
1639
  short: '自托管',
1640
- description: '将 Hermes 指向本地或自托管的 OpenAI 兼容端点 (vLLM、llama.cpp、Ollama 等)。'
1640
+ description: '将 Claw Agent 指向本地或自托管的 OpenAI 兼容端点 (vLLM、llama.cpp、Ollama 等)。'
1641
1641
  }
1642
1642
  },
1643
1643
  backToSignIn: '返回登录',
@@ -1650,8 +1650,8 @@ export const zh: Translations = {
1650
1650
  update: '更新',
1651
1651
  flowSubtitles: {
1652
1652
  pkce: '打开浏览器登录,然后回到这里继续',
1653
- device_code: '在浏览器中打开验证页面 — Hermes 会自动连接',
1654
- loopback: '打开浏览器登录 — Hermes 会自动连接',
1653
+ device_code: '在浏览器中打开验证页面 — Claw Agent 会自动连接',
1654
+ loopback: '打开浏览器登录 — Claw Agent 会自动连接',
1655
1655
  external: '先在终端登录一次,然后回来继续对话'
1656
1656
  },
1657
1657
  startingSignIn: provider => `正在为 ${provider} 启动登录...`,
@@ -1662,11 +1662,11 @@ export const zh: Translations = {
1662
1662
  pickDifferentProvider: '选择其他提供方',
1663
1663
  signInWith: provider => `使用 ${provider} 登录`,
1664
1664
  openedBrowser: provider => `已在浏览器中打开 ${provider}。`,
1665
- authorizeThere: '请在那里授权 Hermes。',
1665
+ authorizeThere: '请在那里授权 Claw Agent。',
1666
1666
  copyAuthCode: '复制授权码并粘贴到下面。',
1667
1667
  pasteAuthCode: '粘贴授权码',
1668
1668
  reopenAuthPage: '重新打开授权页面',
1669
- autoBrowser: provider => `已在浏览器中打开 ${provider}。请在那里授权 Hermes,连接会自动完成,无需复制或粘贴。`,
1669
+ autoBrowser: provider => `已在浏览器中打开 ${provider}。请在那里授权 Claw Agent,连接会自动完成,无需复制或粘贴。`,
1670
1670
  reopenSignInPage: '重新打开登录页面',
1671
1671
  waitingAuthorize: '等待你授权...',
1672
1672
  externalPending: provider => `${provider} 通过自己的 CLI 登录。请在终端运行此命令,然后回来选择“我已登录”:`,
@@ -1754,7 +1754,7 @@ export const zh: Translations = {
1754
1754
  update: '更新',
1755
1755
  updateInProgress: '正在更新',
1756
1756
  commitsBehind: (count, branch) => `落后 ${branch} ${count} 个提交`,
1757
- desktopVersion: version => `Hermes Desktop v${version}`,
1757
+ desktopVersion: version => `Claw Agent Desktop v${version}`,
1758
1758
  backendVersion: version => `后端 v${version}`,
1759
1759
  clientLabel: version => `客户端 v${version}`,
1760
1760
  backendLabel: version => `后端 v${version}`,
@@ -1771,7 +1771,7 @@ export const zh: Translations = {
1771
1771
  gatewayConnecting: '连接中',
1772
1772
  gatewayOffline: '离线',
1773
1773
  gatewayRestarting: '重启中…',
1774
- gatewayTitle: 'Hermes 推理网关状态',
1774
+ gatewayTitle: 'Claw Agent 推理网关状态',
1775
1775
  agents: '代理',
1776
1776
  closeAgents: '关闭代理',
1777
1777
  openAgents: '打开代理',
@@ -1843,7 +1843,7 @@ export const zh: Translations = {
1843
1843
  binaryTitle: '这看起来像二进制文件',
1844
1844
  binaryBody: label => `预览 ${label} 可能会显示不可读文本。`,
1845
1845
  largeTitle: '此文件较大',
1846
- largeBody: (label, size) => `${label} 大小为 ${size}。Hermes 只会显示前 512 KB。`,
1846
+ largeBody: (label, size) => `${label} 大小为 ${size}。Claw Agent 只会显示前 512 KB。`,
1847
1847
  previewAnyway: '仍然预览',
1848
1848
  truncated: '显示前 512 KB。',
1849
1849
  noInlineTitle: '没有内联预览',
@@ -1873,25 +1873,25 @@ export const zh: Translations = {
1873
1873
  serverNotFound: '未找到服务器',
1874
1874
  failedToLoad: '预览加载失败',
1875
1875
  tryAgain: '重试',
1876
- restarting: 'Hermes 正在重启...',
1877
- askRestart: '让 Hermes 重启服务器',
1878
- lookingRestart: taskId => `Hermes 正在查找要重启的预览服务器 (${taskId})`,
1876
+ restarting: 'Claw Agent 正在重启...',
1877
+ askRestart: '让 Claw Agent 重启服务器',
1878
+ lookingRestart: taskId => `Claw Agent 正在查找要重启的预览服务器 (${taskId})`,
1879
1879
  restartingTitle: '正在重启预览服务器',
1880
- restartingMessage: 'Hermes 正在后台工作。可在预览控制台查看进度。',
1880
+ restartingMessage: 'Claw Agent 正在后台工作。可在预览控制台查看进度。',
1881
1881
  startRestartFailed: message => `无法启动服务器重启:${message}`,
1882
1882
  restartFailed: '服务器重启失败',
1883
1883
  hideConsole: '隐藏预览控制台',
1884
1884
  showConsole: '显示预览控制台',
1885
1885
  hideDevTools: '隐藏预览 DevTools',
1886
1886
  openDevTools: '打开预览 DevTools',
1887
- finishedRestarting: message => `Hermes 已完成预览服务器重启${message ? `: ${message}` : ''}`,
1887
+ finishedRestarting: message => `Claw Agent 已完成预览服务器重启${message ? `: ${message}` : ''}`,
1888
1888
  failedRestarting: message => `服务器重启失败:${message}`,
1889
1889
  unknownError: '未知错误',
1890
1890
  restartedTitle: '预览服务器已重启',
1891
1891
  reloadingNow: '正在重新加载预览。',
1892
1892
  restartFailedTitle: '预览重启失败',
1893
- restartFailedMessage: 'Hermes 无法重启服务器。',
1894
- stillWorking: 'Hermes 仍在工作,但还没有收到重启结果。服务器命令可能正在前台运行。',
1893
+ restartFailedMessage: 'Claw Agent 无法重启服务器。',
1894
+ stillWorking: 'Claw Agent 仍在工作,但还没有收到重启结果。服务器命令可能正在前台运行。',
1895
1895
  workspaceReloading: '工作区已变更,正在重新加载预览',
1896
1896
  fileChanged: url => `文件已变更,正在重新加载预览:${url}`,
1897
1897
  filesChanged: (count, url) => `${count} 个文件变更,正在重新加载预览:${url}`,
@@ -1909,7 +1909,7 @@ export const zh: Translations = {
1909
1909
  thread: {
1910
1910
  loadingSession: '正在加载会话',
1911
1911
  showEarlier: '显示更早的消息',
1912
- loadingResponse: 'Hermes 正在加载回复',
1912
+ loadingResponse: 'Claw Agent 正在加载回复',
1913
1913
  thinking: '思考中',
1914
1914
  today: time => `今天,${time}`,
1915
1915
  yesterday: time => `昨天,${time}`,
@@ -1937,7 +1937,7 @@ export const zh: Translations = {
1937
1937
  attachingFile: '正在附加…'
1938
1938
  },
1939
1939
  approval: {
1940
- gatewayDisconnected: 'Hermes 网关未连接',
1940
+ gatewayDisconnected: 'Claw Agent 网关未连接',
1941
1941
  sendFailed: '无法发送审批响应',
1942
1942
  run: '运行',
1943
1943
  command: '命令',
@@ -1948,12 +1948,12 @@ export const zh: Translations = {
1948
1948
  reject: '拒绝',
1949
1949
  alwaysTitle: '始终允许此命令?',
1950
1950
  alwaysDescription: pattern =>
1951
- `这会将“${pattern}”模式加入永久允许列表 (~/.hermes/config.yaml)。Hermes 对类似命令将不再询问,包括当前会话和未来会话。`,
1951
+ `这会将“${pattern}”模式加入永久允许列表 (~/.hermes/config.yaml)。Claw Agent 对类似命令将不再询问,包括当前会话和未来会话。`,
1952
1952
  alwaysAllow: '始终允许'
1953
1953
  },
1954
1954
  clarify: {
1955
1955
  notReady: '澄清请求尚未就绪',
1956
- gatewayDisconnected: 'Hermes 网关未连接',
1956
+ gatewayDisconnected: 'Claw Agent 网关未连接',
1957
1957
  sendFailed: '无法发送澄清响应',
1958
1958
  loadingQuestion: '正在加载问题…',
1959
1959
  other: '其他 (输入你的答案)',
@@ -1990,14 +1990,14 @@ export const zh: Translations = {
1990
1990
  },
1991
1991
 
1992
1992
  prompts: {
1993
- gatewayDisconnected: 'Hermes 网关未连接',
1993
+ gatewayDisconnected: 'Claw Agent 网关未连接',
1994
1994
  sudoSendFailed: '无法发送 sudo 密码',
1995
1995
  secretSendFailed: '无法发送密钥',
1996
1996
  sudoTitle: '管理员密码',
1997
- sudoDesc: 'Hermes 需要你的 sudo 密码来运行特权命令。它只会发送给你的本地 agent。',
1997
+ sudoDesc: 'Claw Agent 需要你的 sudo 密码来运行特权命令。它只会发送给你的本地 agent。',
1998
1998
  sudoPlaceholder: 'sudo 密码',
1999
1999
  secretTitle: '需要密钥',
2000
- secretDesc: 'Hermes 需要一个凭据才能继续。',
2000
+ secretDesc: 'Claw Agent 需要一个凭据才能继续。',
2001
2001
  secretPlaceholder: '密钥值'
2002
2002
  },
2003
2003
 
@@ -2047,8 +2047,8 @@ export const zh: Translations = {
2047
2047
  sessionExportFailed: '无法导出会话',
2048
2048
  imageSaved: '图片已保存',
2049
2049
  downloadStarted: '下载已开始',
2050
- restartToUseSaveImage: '重启 Hermes 桌面版后可使用保存图片。',
2051
- restartToSaveImages: '重启 Hermes 桌面版以保存图片',
2050
+ restartToUseSaveImage: '重启 Claw Agent 桌面版后可使用保存图片。',
2051
+ restartToSaveImages: '重启 Claw Agent 桌面版以保存图片',
2052
2052
  imageDownloadFailed: '图片下载失败',
2053
2053
  openImage: '打开图片',
2054
2054
  downloadImage: '下载图片',
@@ -39,7 +39,7 @@ function fsPath(endpoint: string, filePath: string) {
39
39
  function bridge() {
40
40
  const desktop = window.hermesDesktop
41
41
  if (!desktop) {
42
- throw new Error('Hermes Desktop bridge is unavailable')
42
+ throw new Error('Claw Agent Desktop bridge is unavailable')
43
43
  }
44
44
  return desktop
45
45
  }
@@ -42,7 +42,7 @@ export type DesktopActionId =
42
42
  /** A command fulfilled by opening a desktop overlay picker. */
43
43
  export type DesktopPickerId = 'model' | 'session'
44
44
 
45
- /** Why a known Hermes command has no desktop UI surface. */
45
+ /** Why a known Claw Agent command has no desktop UI surface. */
46
46
  export type DesktopUnavailableReason = 'advanced' | 'messaging' | 'settings' | 'terminal'
47
47
 
48
48
  /**
@@ -100,7 +100,7 @@ const DESKTOP_COMMAND_SPECS: readonly DesktopCommandSpec[] = [
100
100
  { name: '/branch', description: 'Branch the latest message into a new chat', aliases: ['/fork'], surface: action('branch') },
101
101
  { name: '/yolo', description: 'Toggle YOLO — auto-approve dangerous commands', surface: action('yolo') },
102
102
  { name: '/handoff', description: 'Hand off this session to a messaging platform', surface: action('handoff'), args: true },
103
- { name: '/profile', description: 'Switch the active Hermes profile', surface: action('profile') },
103
+ { name: '/profile', description: 'Switch the active Claw Agent profile', surface: action('profile') },
104
104
  { name: '/skin', description: 'Switch desktop theme or cycle to the next one', surface: action('skin'), args: true },
105
105
  { name: '/title', description: 'Rename the current session', surface: action('title') },
106
106
  { name: '/help', description: 'Show desktop slash commands', aliases: ['/commands'], surface: action('help') },
@@ -138,7 +138,7 @@ const DESKTOP_COMMAND_SPECS: readonly DesktopCommandSpec[] = [
138
138
  { name: '/tools', description: 'List or toggle tools available to the agent', surface: exec(), args: true },
139
139
  { name: '/undo', description: 'Remove the last user/assistant exchange', surface: exec() },
140
140
  { name: '/usage', description: 'Show token usage for this session', surface: exec() },
141
- { name: '/version', description: 'Show Hermes Agent version', surface: exec() },
141
+ { name: '/version', description: 'Show Claw Agent version', surface: exec() },
142
142
 
143
143
  // No desktop surface, but carry an alias (underscore spelling variants).
144
144
  { name: '/reload-mcp', aliases: ['/reload_mcp'], surface: unavailable('advanced') },
@@ -211,7 +211,7 @@ function isKnownHermesSlashCommand(command: string): boolean {
211
211
 
212
212
  /**
213
213
  * An "extension" command is anything the backend surfaces that is NOT one of
214
- * Hermes' built-in slash commands — i.e. skill commands (`/gif-search`,
214
+ * Claw Agent' built-in slash commands — i.e. skill commands (`/gif-search`,
215
215
  * `/codex`, …) and user-defined quick commands. These are user-activated, so
216
216
  * they appear in the desktop slash palette and execute when typed.
217
217
  */
@@ -21,6 +21,13 @@ export const $composerDraft = atom('')
21
21
  export const $composerAttachments = atom<ComposerAttachment[]>([])
22
22
  export const $composerTerminalSelections = atom<Record<string, string>>({})
23
23
 
24
+ // A one-shot prompt to drop into the main composer once it's ready. Set by
25
+ // "send to chat" flows that navigate to a fresh chat (e.g. x402 "Use in chat",
26
+ // wallet "Tokenize") — navigating + an immediate insert event races the
27
+ // composer mount, so the composer drains this atom when it becomes ready
28
+ // instead. Cleared on drain so it fires exactly once.
29
+ export const $pendingChatPrompt = atom<string | null>(null)
30
+
24
31
  // Per-thread draft stash for the decoupled composer. Session lifecycle never
25
32
  // touches this — only ChatBar's scope swap reads/writes it. Text mirrors to
26
33
  // localStorage; attachments are memory-only (blobs, upload state).