Writing

SwiftChat:讓 ChatGPT 在 Mac 上聊得更順手

telegram.png

我為何寫了 SwiftChat

因為 ChatGPT Classic 進入不維護狀態了。我的原始工作風格被打斷了。

SwiftChat 是我正在開發的 macOS AI 聊天應用。它把 ChatGPT Web、其他模型服務和 Mac 的原生操作介面放在一起,讓你整理對話、寫問題,也能帶入其他 app 裡正在處理的文字。

為何不用 ChatGPT Web

ChatGPT Web 做得一塌糊塗。而且,我需要一個迷你的窗口,傳統的 ChatGPT Client 體驗。

所以,我只能自己寫一個。

輸入框支持什麼?

輸入框支持:

  1. @ 符號引用內容;
  2. Shift-Enter 換行;
  3. Enter 送出。
  4. 附件和 Hidden message(Work with apps)

用 ChatGPT,或接上自己的模型服務

SwiftChat 提供兩種使用方式。

ChatGPT 使用你原本的 ChatGPT 帳號。安裝後,在設定的 Accounts & Services 選擇 Sign In to ChatGPT,即可開啟網站登入介面。這條路徑不需要另外填 API Key,帳號與訂閱仍由 ChatGPT 管理,對話歷史也由 ChatGPT 網站保存。

AIChat 用來連接其他受支援的模型服務。如果你有自己的 API 服務,可以新增自訂服務,填入 Base URL、API Key 和模型資料。目前自訂服務可選 OpenAI Chat Completions、OpenAI Responses 或 Anthropic Messages 格式。

AIChat 的對話記錄保存在本機,服務憑證存入 macOS Keychain;發送的訊息與附件則交給你選擇的服務處理。ChatGPT 帳號登入和 AIChat 的服務設定分開管理。

特色功能

work with apps

Work with Apps 可以把其他 app 裡的文字帶進對話,當作 AI 回答問題的參考資料。目前可連接 Safari 的目前分頁、Terminal、TextEdit、Notes、Xcode,以及 Codex 對話摘錄和 macOS 原生版 Telegram 的近期聊天文字。

例如,你可以連接 Telegram,請 AI 整理最近討論的重點和待辦;也可以帶入 Terminal 的錯誤輸出,接著追問原因。來源可以預覽並選擇可用的擷取範圍,送出前會再讀取一次,輸入框則保留你自己寫的問題。

這些附帶文字會傳給目前選擇的 AI 服務,並可能留在對話歷史裡。Telegram 以本機已同步的快取訊息為準,媒體檔案不會一併讀取;Terminal 等來源需要「輔助使用」權限,Safari 另需要「自動化」權限及允許 Apple Events 執行 JavaScript。

CLM Harness

CLM Harness 是 AIChat 的任務執行與上下文管理層。模型可以在 SwiftChat 提供的工作目錄中搜尋、讀寫檔案,搭配瀏覽器工具分步處理任務;需要時,也可以在對話裡生成計算器、比較介面等互動內容。

當長對話累積了大量工具輸出,模型可以整理自己的工作上下文,把過時的過程改寫成摘要,保留繼續任務需要的資料。SwiftChat 會提供上下文用量估算與容量提醒,整理後的版本用於後續模型請求;原始對話與完整工具結果仍會保留。

這項能力用在 AIChat,所選模型需要支援工具呼叫,並提供上下文容量與最大輸出長度資訊。

In-app Browser

SwiftChat 內建多分頁瀏覽器,可以在獨立視窗中開啟網頁,和聊天視窗並排使用,方便一邊查資料、一邊繼續對話。

在 AIChat 中,支援工具呼叫的模型還能操作這個瀏覽器:開啟或切換分頁、讀取頁面、點擊連結、填入文字,以及取得頁面截圖。你看到的頁面,就是模型正在操作的頁面。例如請 AI 打開幾個產品頁,讀取規格後整理比較;工具取得的頁面文字和截圖會進入目前對話的上下文。

下載 macOS Alpha

SwiftChat 目前提供 macOS Alpha 下載,需要 macOS 26 或以上版本。Alpha 還在持續調整,暫時沒有定價計劃。ChatGPT 或其他模型服務本身的費用,仍依你使用的帳號與方案計算。

SwiftChat 是獨立開發的應用,與 OpenAI 沒有隸屬關係。應用本體目前閉源,ChatGPT Web adapter 則以 MIT 授權公開,可以查看它的整合實作。