取得 AX Code · 免費文件

本頁譯自英文文件。指令、識別名稱與範例保持原樣。執行環境 7.24.4 · SDK 2.6.7。 英文原文

音訊通知

狀態:現行 範圍:AX Code TUI 的音效與語音提示 上次審閱:2026-09-12 負責人:AX Code runtime 維護者

TUI 可在 AX Code 需要你注意時播放系統音效,或說出一段簡短的範本文句:

  • 權限請求 — 有工具正在等待你核准。
  • Agent 提問 — agent 向你提出問題。
  • 回合完成 — 此次執行已結束(預設關閉)。
  • 工作階段錯誤 — 此回合失敗。

音訊與終端機通知使用相同的觸發條件(OSC 9 桌面通知;不支援 OSC 9 時改為終端機鈴響),並受同一個 notifications.enabled 開關控制。它預設關閉;啟用它不會改變通知的其他行為。

設定

設定 notifications.sound,位置在 tui.json:

{
  "notifications": {
    "enabled": true,
    "sound": "chime",
    "events": {
      "permission": true,
      "question": true,
      "complete": false,
      "error": true
    }
  }
}
欄位 值 預設 意義
enabled 布林 true 終端機通知與音訊的總開關。
sound "off"、"chime"、"speak" "off" chime 播放系統音效;speak 合成語音。
voice 字串 "" 平台語音名稱(macOS 上為 say -v '?');空白表示預設。
rate 整數 0 支援時的語速(macOS 為每分鐘字數,1–500);0 表示預設。
events.permission 布林 true 權限請求時提示。
events.question 布林 true agent 提問時提示。
events.complete 布林 false 回合完成時提示。
events.error 布林 true 工作階段錯誤時提示。

無效值會逐欄捨棄:錯誤的 sound 值會回到 "off",不影響其他設定。

平台支援

平台 提示音 語音 需求
macOS afplay(系統音效) say 內建。
Windows System.Media.SoundPlayer System.Speech 內建(PowerShell)。
Linux paplay,備援 canberra-gtk-play spd-say,備援 espeak-ng 安裝 PulseAudio/libcanberra 及/或 speech-dispatcher/espeak-ng。

執行時會探測是否可用。沒有可用後端時,音訊步驟會安靜略過,並以終端機通知作為備援。播放會序列化(一次一個音效,重複會合併),每個事件最多提示一次,介面也不會等待播放完成。無頭執行(ax-code run)絕不播放音訊。

會說出的內容

語音只用四個固定範本:Approval required: <tool>、Question: <first question>、Session idle: <session title> 與 AX Code error。文字會截斷並移除控制字元。工具引數、承載中的檔案路徑、模型輸出與錯誤訊息都不會被說出——在這些限制內,適合共用空間。

透過 hooks 自訂音效

若要完全掌控(自己的音效檔、不同文字、額外事件),可透過生命週期 hooks 接上任何播放器——即使停用音訊通知也能使用。以 AX_CODE_TRUST_PROJECT_CONFIG=1 選擇加入後,建立 .ax-code/hooks.json:

{
  "hooks": [
    { "event": "Stop", "command": "afplay /System/Library/Sounds/Glass.aiff" },
    { "event": "PreToolUse", "matcher": "bash|edit|write", "command": "say 'AX Code needs approval'" }
  ]
}

使用平台的播放器(macOS 為 afplay,Linux 為 paplay,Windows 為 PowerShell 的 [System.Media])。Hook 指令是 shell 片段——請讓它們發射後即忘,以免延遲生命週期路徑。

打造外部通知程式

外部工具(狀態列、行動推播、桌面應用程式)可訂閱伺服器的事件串流,並對 permission.asked、question.asked、session.status 與 session.error 做出反應——見 HTTP 與 OpenAPI 相容性。