更新 OAR 0.9.2 新增
OAR 不會在背景自行更新。中繼可以尋找較新的版本、在 Settings(設定)中告訴你,並在你按下 Update(更新)或執行 oar update 時安裝它。沒有你,什麼都不會被安裝,而找出新版本的檢查在你開啟之前都是關閉的。
更新檢查 #
檢查預設為關閉。從未被告知要檢查的中繼,不會傳送任何東西給 oar.sh。
- 開啟 Settings → General(設定 → 一般)。
- 開啟 Check for updates automatically(自動檢查更新)。
開啟後,中繼大約每天兩次向 oar.sh 詢問最新版本:每 12 小時一次,前後最多相差一小時,讓許多中繼不會同時詢問。你開啟開關時它也會詢問一次,之後在開關開啟的情況下,中繼每次啟動時也會詢問一次。關閉開關就會停止詢問。
Check for updates(檢查更新)按鈕會檢查一次,不管開關怎麼設定。旁邊的那行文字會顯示 Last checked <date and time> 或 Never checked.
檢查會請求什麼 #
中繼只請求一個檔案,也就是 manifest https://:一個單純的 GET,帶有 Accept: application/ 標頭;有過回應之後,還會帶上存放上次回應標記的 If- 標頭,讓沒有變更的 manifest 不必重新下載。請求不帶任何版本、token、帳戶或機器資訊。它最多等待 5 秒。除此之外不會和 oar.sh 有任何聯繫。安裝更新時連絡的是 npm registry,而不是 oar.sh。
manifest 為每個通道各有一個項目,包含最新版本、它的發布日期、版本說明的連結,以及旗標 critical:
{
"schemaVersion": 1,
"channels": {
"stable": {
"version": "0.9.19",
"publishedAt": "2026-10-27T06:23:15.940Z",
"notesUrl": "https://github.com/oar-sh/oar/releases/tag/v0.9.19",
"minNode": "22.13",
"critical": false
}
}
}
中繼讀取自己通道的項目(見通道),自己的通道沒有項目時則讀取 stable 的項目。min 指出該版本能執行的最舊 Node.js;中繼和安裝程式都不會讀取它。
自動檢查失敗時(沒有網路、逾時、回應有誤),它不會顯示任何訊息,並在下一個間隔再試一次。按下 Check for updates 卻沒有得到可用的回應時,會顯示通知 Update check failed — the update server could not be reached.。schema 不是 1 的 manifest 會讓檢查停止,直到中繼重新啟動為止,並在按鈕旁的那行文字後面加上 The relay could not read the update feed — try updating manually.。
找到新版本時 #
較新的版本會在 Settings → General 中 Check for updates 的下方顯示為一列:
OAR 0.9.19 available
附有 release notes(版本說明)連結,以及 Update 和 Dismiss(關閉)按鈕。其他地方沒有橫幅也沒有徽章;檢查關閉時什麼都不會顯示,因為不知道有較新的版本。Dismiss 會隱藏該版本,直到出現更新的版本為止。標記為 critical 的版本會顯示 OAR 0.,無法關閉,而且仍然絕不會自行安裝。在 git 檢出上,這一列沒有 Update 按鈕,而是顯示 This relay runs from a git checkout — pull and restart to update.
永久關閉檢查 #
在中繼的環境中設定 OAR_。中繼之後完全不會發出請求,連你按下 Check for updates 時也不會:開關和按鈕會停用,並有一行文字顯示 Update checks are disabled by OAR_。不帶 --to 的 oar update 也會拒絕執行。OAR_ 會讓中繼和 oar update 改用另一個 manifest。見環境變數。
從網頁介面更新 #
在 Settings → General 中按下 Update。它適用於全域安裝,也就是安裝程式和 npm install -g 所做的那種安裝。
- 中繼會執行
npm install -g --allow-(0.9.14 新增 清單中包含scripts= @oar- sh/ oar, better- sqlite3, koffi @oar- sh/ oar@<version> @oar-;見使用 npm 安裝)。在 macOS 和 Linux 上,它會使用執行中繼的 Node.js 旁邊的 npm,並安裝到套件原本所在的資料夾。這涵蓋了安裝程式的全部三種配置:你自己的全域 npm 資料夾、你的 npm 資料夾需要 root 時的sh/ oar ~/.,以及搭配 OAR 自己的 Node.js 的oar/ npm ~/.。在 Windows 上,它會從oar/ npm PATH執行npm.。npm 有 10 分鐘的時間。cmd - 狀態列會顯示
Updating to <version>…,並可展開 Update log(更新記錄),其中有 npm 的輸出。Cancel update(取消更新)會停止 npm。 - npm 完成後,那行文字會顯示
npm finished — the relay restarts once the running turns finish.中繼會要求自己重新啟動。它會等待正在執行的回合;在此期間你傳送的訊息會在佇列中等待,並在重新啟動後執行。每個已連線裝置上的橫幅都會顯示這段等待,並附有 Restart now(立即重新啟動)和 Cancel restart(取消重新啟動)。0.9.13 新增 經過 Ask after a queued relay restart has waited(排入佇列的中繼重新啟動等待多久後詢問)所設定的時間(預設 30 分鐘)後,它會詢問要立即重新啟動、繼續等待還是取消。見重新啟動與繼續。 - 中繼重新啟動,頁面會自行重新連線。重新啟動不經過 systemd 或任何其他服務管理員;見自動啟動。
如果 npm 失敗,那行文字會顯示 Update failed: <reason>,記錄會說明原因。中繼會繼續執行舊版本。
如果你取消了重新啟動
橫幅中的 Cancel restart 只會停止重新啟動。新版本已經安裝,但中繼會繼續執行舊版本,狀態列也仍然顯示 npm finished — the relay restarts once the running turns finish. 請自行重新啟動中繼以載入新版本。
中繼如何確認結果 #
重新啟動之前,中繼會記下它嘗試安裝的版本。下次啟動時,它會把這個版本與正在執行的版本比較。相符時顯示 Updated to <version>.。不相符時,例如因為 npm 沒有取代套件,會顯示 Update to <version> did not apply.,並附上 npm 記錄的結尾。超過 7 天的紀錄會直接捨棄,不顯示任何訊息。那行文字旁的 Dismiss 會清除它。
從終端機更新 #
oar update
它會在 manifest 中查出你所在通道的最新版本,用 npm install -g 安裝,並要求執行中的中繼在佇列閒置時重新啟動。沒有更新的版本時,它會印出 Already up to date (<version>).。選項和結束代碼見 oar update。
要安裝某個確切的版本(也可以是較舊的版本),請在旗標後面空一格寫上它:
oar update --to 0.9.9
--to 讀取的是 npm registry,會略過 manifest,所以在設定了 OAR_ 時也能運作。請寫 --to 0.,不要寫 --to=:第二種寫法會被忽略,並安裝你所在通道的最新版本。
安裝程式是另一種方式。它會再次安裝套件,所以再執行一次就能更新;見安裝。
通道 #
有兩個通道:stable 和 beta。beta 版本的樣子像 0.,排序上低於相同號碼的 stable 版本。
中繼沒有通道設定。它跟隨所執行版本的通道:beta 版本跟隨 beta,其他版本跟隨 stable。這同時適用於它自己的檢查和 oar update。
| 你想要 | 這樣做 |
|---|---|
| 從一開始就使用 beta | 以 OAR_ 安裝;見安裝 |
| 把 stable 安裝改為 beta | 執行一次 oar update --beta |
| 留在 beta | 什麼都不用做 |
| 回到 stable | oar update --to <stable version>,例如 oar update --to 0.。執行 stable 版本的中繼會再次跟隨 stable |
只要 manifest 在 beta 下列出的版本比執行中的版本新,beta 中繼就會收到它,不論那是什麼版本。當 beta 項目列出的是 stable 版本時(0.9.19 的兩個項目都是如此),beta 中繼會換到該版本,並從此跟隨 stable。要換到較舊的版本需要 --to。
更新不會動到什麼 #
| 更新之後 | |
|---|---|
| 狀態資料夾、設定檔、上傳的檔案、記錄 | 不受影響。見檔案與資料夾 |
| 較早版本存放在套件內的資料 | 0.9.14 新增 在更新安裝期間、npm 移除舊版本之前,複製到 data/,並在下次啟動時接手。見 0.9.14 的升級說明 |
| 資料庫 | 保留。版本需要的遷移會在第一次啟動時自行執行 |
| 已安裝的 App | 網頁介面來自中繼,所以會跟著中繼一起改變。已安裝的 App 會在啟動時切換到新版本;你不需要重新安裝。見安裝成 App |
| 執行中的 session | 見下文 |
| 供應商 CLI | 不會更新。見下文 |
原本在執行的 session #
重新啟動會等到沒有回合在執行,然後中繼以新的程式碼再次啟動。更新之前啟動的 agent 處理程序,在它們再次啟動之前都還是舊的程式碼。session 的 agent 在啟動時得知自己有哪些工具。0.9.10 版本就是一個例子:更新前就已在執行的 session,在它的 agent 重新啟動之前,既不提供 remote_(現為 relay_)的 subscribe,也不提供 usage。在 0.9.11 中,更新前啟動的 worker 無法向重新啟動後的中繼回報它的背景任務。在 0.9.12 中,指令的主控台需要更新後啟動的 agent,任務面板中 Grok 的終端機也是。在 0.9.13 中,管線接到 tail 的指令的標記需要更新後啟動的 agent,因為指令列是由 agent 回報的。在閒置的 session 上執行 Kill session(強制結束 session)會重新啟動它,下一則訊息會啟動新的 agent。見重新啟動與繼續。
供應商 CLI #
OAR 只會更新自己。Claude、Grok 和 GitHub Copilot 的命令列工具是獨立的程式;見安裝或更新供應商的 CLI。
須知 #
- 全域安裝上的 Cursor。 0.9.14 新增 Cursor agent 存放區位於中繼資料目錄中的
cursor-,所以更新不再會取代它們。0.9.14 之前,它們預設位於套件資料夾內,存放區被更新移除的對話會得到一個新的 agent。見檔案與資料夾和 Cursor。agents - Windows。 全域安裝會從 OAR 狀態資料夾(
%APPDATA%\)而不是從套件資料夾執行中繼,所以更新可以在中繼執行時取代套件。自動啟動項目會啟動已安裝的套件;見自動啟動。oar
git 檢出 #
檢出絕不會自行更新,Update 和 oar update 在上面也都無法使用。請 pull、安裝,然後用對話 ⋯ 選單中的 🌄 Restart web relay(重新啟動網頁中繼)重新啟動中繼:
git pull
npm install
見安裝。
升級說明 #
更新需要你執行的步驟,從最新的版本開始列出。未列出的版本不需要任何步驟。
0.9.19 0.9.19 新增 #
- 沒有遷移。 退回 0.9.18 不需要任何步驟:0.9.18 會忽略
heap,Limit Mb diagnostics資料夾維持原樣。 - 中繼現在有堆積上限,接近上限時會把堆積快照寫入資料目錄中的
diagnostics。快照中包含存取 token 和 API 金鑰:絕不要原樣分享。 - 更新後請把
oar停止並重新啟動一次。 啟動並看管中繼的處理程序會保留它啟動時的程式碼:更新帶來的重新啟動、從網頁介面重新啟動,或在沒有 systemd 服務時執行oar restart,都只會重新啟動它裡面的中繼。在這個處理程序以 0.9.19 啟動之前,中繼執行時沒有堆積上限、heap和堆積快照,記憶體耗盡的中繼也仍會一直停著。在 Linux 的 systemd 服務下,執行Limit Mb oar restart;否則先執行oar stop,再執行oar start。由oar copilot啟動的中繼,請結束那個 session 並重新啟動。 - 在 0.9.19 之前啟動的 agent session 會保留它們的供應商清單。 它們的 worker 在更新期間繼續執行,使用啟動時的
relay_。這份清單與 0.9.19 的相同,所以現在沒有任何變化;之後的更新新增的供應商不在其中,直到 session 的 worker 重新啟動,例如在tool ⋯選單中使用 ☠️ Kill session 之後。 - Node.js 22.13 或更新版本仍然足夠。
0.9.18 0.9.18 新增 #
- 遷移 0031 到 0034 會在第一次啟動時自行執行:0031 為每則排入佇列的訊息標上它的供應商,0032 加入計費切換的欄位,0033 和 0034 加入 Claude API 用量卡片的資料表。較舊的版本會忽略新的欄位和資料表。0031 放在佇列資料表上的兩個觸發程序會繼續在那裡為新欄位填值,這不會造成任何問題。
- agent 工具現在叫做
relay_。 如果你自己的指示、權限規則或 hook 提到tool remote_或relay mcp__,請改成relay__ remote_ relay relay_或tool mcp__。見名稱。relay__ relay_ tool - 回到 0.9.17 之前,請把使用 Claude API 金鑰的 Claude 對話切回 Subscription(訂閱)。 0.9.17 不認識 Claude API:它會把不認識的供應商的對話綁定到 Copilot,所以留在金鑰上的對話在那裡會以 Copilot 對話執行。這也包括在訂閱上開始、之後才切換到金鑰的對話。
- 回到 0.9.17 會讓 DeepSeek 對話中的 hook 重新開啟。 它們會再次執行其設定資料夾中的 hook 和狀態列;見資料夾設定無法改變 DeepSeek 流量的去向。
- Node.js 22.13 或更新版本仍然足夠。
0.9.17 0.9.17 新增 #
- 遷移 0024 到 0030 加入 DeepSeek 用量卡片的資料表:依模型和依日的花費、它據以計算的餘額,以及在 0030 中加入的匯入的用量匯出檔的數字。它們會在第一次啟動時自行執行,在從不使用 DeepSeek 的中繼上也一樣,而且不會動到較舊版本使用的任何資料表。較舊的版本會忽略它們。
- 中繼環境中的 Claude 登入 token(
CLAUDE_)只會傳到 Claude 和 Claude Cloud 的 worker。 Copilot、OpenAI、Cursor、Grok 和 DeepSeek 的 worker 啟動時不帶它,不論有沒有 tmux。見哪些變數會傳到 agent 的 worker。CODE_ OAUTH_ TOKEN - 中繼環境中的
ANTHROPIC_和API_ KEY ANTHROPIC_不會傳到任何 worker。 原本以這類金鑰執行的 Claude 對話,現在會以主機的 Claude 登入執行。如果主機沒有登入,請用 Settings → Providers → Claude(設定 → 供應商 → Claude)下的 Relogin(重新登入)登入。見環境變數。AUTH_ TOKEN - 從 Claude Code session 內部啟動的中繼,不再把該 session 交給它的 worker。 它的變數對每個 worker 都會被捨棄,在仍帶有這些變數的 tmux 伺服器下也一樣。你自己的
CLAUDE_設定會保留。見哪些變數會傳到 agent 的 worker。CODE_ * - 加入你手動排序的群組的 session,會排在該群組的最前面,不再排在最後。見 Session 群組。
- Node.js 22.13 或更新版本仍然足夠,也不需要變更任何設定或
config.key。json
0.9.16 0.9.16 新增 #
- 三個資料庫遷移會在第一次啟動時自行執行:0019 用於訂閱選項以及監看者自己的提示;0020 用於開關 Agents in this conversation may start sessions(允許此對話中的 agent 啟動 session);0021 用於記錄哪些 session 群組是 agent 建立的,以及你的哪些群組被 agent 清空。它們只加入欄位和一個資料表。回到較舊的版本不需要變更資料:它會忽略它們、維持單層規則,並和以前一樣在啟動時移除空的群組。
- 遷移 0022 加入排程提示的資料表,包含每個排程的訊息來自哪裡(
origin_,含其跳數),以及某次觸發何時被暫緩等你處理(json held_)。它會在第一次啟動時,與 0019 到 0021 一起自行執行。since - 遷移 0023 加入不會卡住的提問的資料表(
relay_)。它同樣會在第一次啟動時自行執行。回到較舊的版本會忽略它。asks - 接收
question_的訂閱從現在起也會收到asked question_,也就是你對提問的回答。answered - 迴圈保護只把你自己的訊息算作你的訊息。 0.9.16 之前,中繼事件、用量上限的後續訊息或重新啟動後的註記,都會重設 agent 在詢問你之前可以傳給其他 agent 的提示數,所以互相監看的兩個 agent 可以在沒有你的情況下一直進行下去。現在只有你寫的訊息會重設它,陷入這種迴圈的 agent 會更早詢問你。見規則。
- agent 傳入動作不接受的參數時:
create_和session update_現在會拒絕該呼叫,不做任何變更;其他動作仍會執行,並在session ignored中列出這些參數。見動作。 - 等待自己提示的回覆的監看者,不再同時以事件的形式收到該回合的
turn_。end - Node.js 22.13 或更新版本仍然足夠,也不需要變更任何設定或
config.key。json
0.9.15 #
- 從 0.9.14 升級、且在 Windows 上有手動建立的自動啟動任務時:在 0.9.14 中切換到開機模式,可能會在沒有留下副本的情況下,刪除同名的現有任務(
oar-,或改名之前的那個)。0.9.15 會保留這樣的任務並要求relay --replace,它會先儲存一份副本。如果你的任務已經不見了,OAR 也沒有它的副本。 - 切換自動啟動不再取代任何不是 OAR 建立的東西。 手動編輯過的開機任務或啟動器、別人建立的任務、改名之前的開機任務,以及手動建立的「啟動」資料夾項目,現在都會擋下切換,在網頁介面和
oar autostart中都一樣,而 0.9.14 會取代它們。oar autostart <mode> --replace會取代它們,並各保留一份副本。見非 OAR 建立的項目。 - 新指令:
oar autostart和oar uninstall,而且oar setup在 Windows 上會詢問自動啟動模式。見 oar 指令。 - 套件變小了:開發者 README,也就是含 HTTP API 的
server/和網頁中繼擴充功能的 README,不再包含在套件中。它們在 GitHub 上的儲存庫中。README. md - Node.js 22.13 或更新版本仍然足夠,也不需要變更任何設定或
config.key。json
0.9.14 #
Windows 自動啟動,或由單純的 gh copilot 啟動的中繼:請先儲存你的資料
0.9.14 之前,由 Windows 自動啟動所啟動的中繼,或在 oar copilot 安裝其擴充功能之後由單純的 gh copilot 所啟動的中繼,使用的是已安裝套件內的資料庫和上傳的檔案,而 npm install -g 會把它們連同舊版本一起刪除。只用 oar start、oar restart 或 Linux 服務啟動過的中繼,本來就使用 OAR 資料目錄,不需要下列任何步驟。
0.9.14 會在安裝時先把這些資料複製到 OAR 資料目錄(%APPDATA%\、~/.)中的 rescued-,中繼會在下次啟動時接手這份副本。npm 10 和 11 會執行這次複製(11.21 會附帶警告),如果複製失敗,它們會把舊版本連同其資料放回去。npm 12 會略過它,除非允許了 @oar-:這時安裝會成功,舊資料卻不見了。使用 strict- 時,npm 11 和 12 會拒絕安裝,不做任何變更。. 中的 allow- 項目對 0.9.13 的 Update 按鈕或 oar update 沒有幫助,因為它們自己的 --allow- 會取代它。為了安全起見,請手動進行這次更新:
- 關閉每個
gh copilotsession(它的擴充功能會再次啟動中繼),然後執行oar stop,並等到oar status顯示它沒有在執行。如果 0.9.13 的oar stop停不了由開機啟動器啟動的中繼,請在安裝之前結束中繼:在工作管理員中結束中繼的處理程序(執行 OAR 的 node.exe)。 - 執行
npm root -g,開啟<that folder>/(通常是@oar- sh/ oar/ server %APPDATA%\)。把npm\ node_ modules\ @oar- sh\ oar\ server data和uploads兩個資料夾連同其中的每個檔案,複製到安全的地方。 - 在允許 npm 安裝腳本的情況下更新:
npm install -g --allow-。絕不要用scripts= @oar- sh/ oar, better- sqlite3, koffi @oar- sh/ oar --ignore-更新:它會略過複製和原生模組(better-sqlite3、koffi),中繼之後就無法啟動。scripts - 啟動中繼之前,把兩個資料夾都複製回同一個
server資料夾。 - 執行
oar start。在 OARlogs資料夾的relay-中尋找console. log [data] Brought over the database …:你的對話應該回來了。原本已在 OAR 資料目錄中的資料庫,會保存在 OAR 資料夾(%APPDATA%\、oar ~/.)中的oar backups/<time>/。被帶過來的資料夾會把它的資料庫保留為copilot.;其他被檢查過的資料夾則把它們的資料庫保留為db. adopted-<time> copilot.。不會刪除任何東西。db. older-<time> - 如果中繼停止並顯示
[data] Not starting: each database has changes newer than the other's,表示兩者都保有工作。這行文字會列出兩個資料夾;其中一個可能位於rescued-下。挑選要保留的那一個,把另一個的package- data/<time>/ data copilot.、db copilot.和db- wal copilot.移到你自己的資料夾(不要刪除它們),然後再次執行db- shm oar start。 - 如果你已經在沒有儲存的情況下更新,而且什麼都沒有被複製,OAR 無法從套件中救回資料庫。
0.9.14 中還有:
- 無法在其資料上執行的中繼會以結束代碼 78 停止:當另一個中繼持有它的鎖定、兩個資料庫都保有較新的工作,或無法建立它的資料或上傳資料夾時。結束前的那一行會說明是哪一種情況以及該怎麼做。由 0.9.14 的
oar service install寫入的 systemd unit 不會重新啟動它;請再次執行oar service install以取得這個 unit。見每個資料目錄一個中繼。 - 大型資料庫需要好幾分鐘才能帶過來。 中繼會記錄它的大小、至少每分鐘一次的進度,以及每個步驟花費的時間,
oar start也會在這段期間說明它仍在帶過來。不要啟動第二個中繼。 - Windows 自動啟動現在最多等待 5 分鐘,讓
%TEMP%和資料磁碟機就緒,而更新後的第一次啟動會把產生的項目或啟動器更新到最新。見自動啟動。 - Cursor agent 存放區移到資料目錄中的
cursor-,而上傳的檔案跟隨agents data;較早版本留在Dir server/或狀態資料夾的uploads uploads/中的上傳檔案,仍會在原處讀取。見檔案與資料夾。 - Node.js 22.13 或更新版本仍然足夠。
0.9.13 #
- 遷移 0018 加入在中繼重新啟動之間保留任務主控台的資料表,並在第一次啟動時自行執行。更新前的中繼只存放在記憶體中的已完成列,會在重新啟動到新版本時遺失;這是最後一次。Node.js 22.13 或更新版本仍然足夠。
- 新設定位於 Settings → General:Ask after a queued relay restart has waited(預設 30 分鐘),以及預設關閉的 After a relay restart, tell interrupted sessions to carry on(中繼重新啟動後,讓中斷的 session 繼續)。新的通知 Queued relay restart waited its maximum time(排入佇列的中繼重新啟動已等待最長時間)預設為開啟。見 Settings(設定)和等待很久時。
- 監看的 agent:沒有指定事件的訂閱,現在會排除順利結束的 shell 指令;結束的 subagent 和失敗仍會喚醒它。有指定事件的訂閱則保留它們。指定
task_即可收到每個任務的結束。見預設事件。finished - 不指定模型就把訊息張貼到現有對話的腳本,現在會取得該對話自己的模型、effort 和模式,而不是中繼的第一個模型;當該模型已離開目錄時,則會得到代碼為
CONVERSATION_的MODEL_ UNAVAILABLE 409。見模型與推理。 - 向
relay_傳入模型的 agent 必須使用目標列出的 id;不認得的 id 現在會被拒絕,並回傳tool REMOTE_。見接受哪些模型。RELAY_ UNKNOWN_ MODEL
0.9.12 #
- 遷移 0017 為長對話的歷史記錄加入兩個索引,並在第一次啟動時自行執行。Node.js 22.13 或更新版本仍然足夠,也不需要變更任何設定或
config.key。json - 兩個新設定位於 Settings → General:Mark a background task as quiet after(背景任務多久無輸出後標記為靜默),適用於中繼,預設 10 分鐘;以及 Messages kept per conversation for switching back(每個對話保留的訊息數,用於切回),適用於各個瀏覽器,預設 200。見 Settings(設定)。
- Claude 背景指令預設可以執行 2 小時,Claude 要求時最多 8 小時:Settings → Providers → Claude → Claude background command limit(設定 → 供應商 → Claude → Claude 背景指令上限)。OAR 現在會為它的 Claude session 設定
BASH_、DEFAULT_ TIMEOUT_ MS BASH_和MAX_ TIMEOUT_ MS CLAUDE_,所以中繼環境中這些變數的值不再適用。見背景指令上限。CODE_ AUTO_ BACKGROUND_ TIMEOUT_ MS - 你更新時正在執行的 session 會保留它們的 agent,直到 agent 再次啟動,在那之前指令的主控台中也不會顯示輸出。見原本在執行的 session。
0.9.11 #
- 在另一台機器上的反向 proxy 後面時,請設定
trust和Proxy allowed。 0.9.11 是第一個會檢查即時連線來源的版本,而且只有在 proxy 受信任時,才會從Origins X-標頭讀取用戶端位址、主機和協定。中繼自己機器上的 proxy 或 tunnel 本來就受信任。對於另一台機器上的 proxy,或會改寫Forwarded- * Host標頭的 proxy,請把這兩個 key 加到config.並重新啟動中繼。沒有它們時,頁面可以載入,但收不到即時更新,而且每個用戶端都共用 proxy 的位址以及它的登入鎖定。見位於另一台機器上的 proxy。json - 同一個位址在一分鐘內出現十次錯誤的 token,會得到
429,直到那一分鐘結束。來自中繼自己機器、且沒有經過任何轉送的請求絕不會被計算。見登入的防護。 ?token=只在頁面位址上有效。 用?token=擷取 API、檔案或資源位址的腳本,必須改為傳送Authorization: Bearer <token>,或使用 cookie;Socket.IO 用戶端則以auth.傳遞它。見出示 token 的方式。token - Restart web relay、取消排入佇列的重新啟動,以及 Empty queue(清空佇列),都只需要 token,從任何已登入的裝置都可以。session-worker socket 和圖片操作的執行,只回應來自中繼機器、且沒有經過任何 tunnel 或 proxy 轉送的請求。見只有中繼所在機器能使用的端點。
- 四個資料庫遷移(預覽、session 群組、群組中的位置、分享存取紀錄)會在第一次啟動時自行執行。Node.js 22.13 或更新版本仍然足夠。
- 相依套件已固定版本。 OAR 直接使用的套件,包括 Claude、Copilot 和 Cursor 的 SDK,會以該版本測試時的確切版本安裝;較新的版本會隨 OAR 更新一起到來。
變更內容 #
變更記錄在 oar.sh 上,也在儲存庫中的 CHANGELOG.。每個版本在 GitHub 上也有版本說明,Settings → General 中的 release notes 連結會開啟它。更新需要你執行的步驟(如果有的話)列在該版本項目中的 Upgrade notes(升級說明)下。
無法正常運作時 #
| 你會看到什麼 | 該怎麼做 |
|---|---|
| 檢查什麼都沒找到 | 按下 Check for updates,並閱讀旁邊的那行文字。Update check failed — the update server could not be reached 表示中繼主機在 5 秒內沒有收到 oar.sh 的回應;請檢查它的網路和 proxy。按下之後仍顯示 Never checked.,也是同樣的意思 |
| 開關和按鈕都已停用 | 中繼設定了 OAR_。取消設定後重新啟動中繼,或使用 oar update --to <version> |
oar update 顯示 Could not fetch <url>. |
終端機無法連到 manifest,或 OAR_ 有誤。試試 oar update --to <version> |
更新因權限錯誤(EACCES)而失敗 |
npm 無法寫入套件所在的資料夾。不要使用 sudo。在 macOS 或 Linux 上執行安裝程式,或給你的使用者一個它自己擁有的全域 npm 資料夾;見安裝 |
| 更新執行了,但中繼沒有回來 | 重新啟動會等待執行中的回合;請找到橫幅,然後等待或取消它。如果中繼已停止,請用 oar start 啟動它,並閱讀中繼記錄資料夾中的記錄 |
| 更新後版本沒有改變 | Update to <version> did not apply. 這行文字以及它下方的記錄會說明原因。從終端機執行 oar update 或 oar update --to <version>,並查看 npm 的輸出 |
在你想離開的 beta 上,oar update 顯示 Already up to date |
使用 oar update --to <stable version> |
| Update 不見了 | 中繼從 git 檢出執行、這個更新已被關閉,或者還不知道有較新的版本。請先按下 Check for updates |