跳至主要内容

CLI 與結構化輸出

使用 open-science 檢視應用狀態、執行任務、管理 Connector 與憑據,以及操作本地服務。先安裝命令入口,再確認它連線的是預期本地例項。

閱讀平臺
選擇會在章節間保留。

從終端完成首次設定

先安裝桌面應用,並讓 open-science 命令可用。CLI 使用應用後端,不是獨立的 npm 服務。Debian 安裝包包含該命令;缺少命令入口時,按平臺說明準備啟動器,或使用已安裝的 CLI 入口,再執行 open-science cli install

open-science init
open-science start --no-open
open-science runtime list --json
open-science doctor --json

init 只建立配置目錄,不啟動應用。--profile--config-root 的別名,用於支援該覆蓋選項的開發配置;打包應用啟動時拒絕這些覆蓋引數。整個流程應使用同一目標配置。runtime list 顯示檢測到的框架就緒狀態、版本和應用管理/外部來源,不暴露可執行檔案路徑。

尚未配置 Codex 時:

open-science runtime install codex --json
open-science codex login
open-science doctor --json

按提示完成登入。此流程準備或修復應用管理的 Codex 執行時,並透過應用登記訂閱,不會匯入外部 Codex 登入檔案。首次設定目前針對 Codex,即使執行時列表還顯示其他框架。已有配置發生衝突時會報錯,不會直接覆蓋。

改用 OpenAI API key 時,使用 provider add --type official --vendor openai --model MODEL_ID --api-key-env OPENAI_API_KEY --json,填入受支援的模型 ID,並透過已有金鑰管理方式提供環境變數。配置 OpenAlex 時使用 connector configure literature --openalex-key-env OPENALEX_API_KEY --json。這兩條命令前均加 open-science。不要把金鑰本身放進命令引數。憑據檢查成功不代表科研查詢已完成,也不保證仍有配額。

檢視 doctorready、逐項 checks 和建議的 next 操作。命令成功退出時 ready 仍可能為 false;後端未啟動時會明確報告並以 3 退出。完成提示中的前置條件,再次檢查,然後在目標專案中執行任務

入口

入口條件命令
應用安裝的啟動器Settings → General → Command line tool → Install commandopen-science --help
原始碼倉庫已構建應用並準備倉庫依賴node packages/open-science/cli.mjs --help
npm 客戶端Node.js 22.5+ 和已安裝應用;安裝前確認包可用包名 @aipoch/open-science

應用啟動器使用隨應用附帶的執行時。目錄不在 PATH 時,按 General 頁面顯示的指令配置並開啟新終端。不要為了展示名稱而修改命令名。

完成一個小型命令列任務

示例 透過命令列儲存說明檔案

  1. 按上方入口安裝命令。保持桌面應用執行,並確認模型可用。
  2. 執行 open-science status --json,再執行 open-science project list --json。確認目標例項並複製返回的專案 ID。
  3. 建立 task.md,內容為:儲存 project-note.md,寫一段簡短的連線檢查說明。不要讀取其他檔案或訪問網路。
  4. 按下方“執行輸入與控制引數”的命令依次操作;每次先取得返回 ID,再替換下一條命令的佔位符。
  5. 若任務等待權限,在桌面會話中回應。--wait 超時時任務可能仍在繼續,重新提交前先用 run status RUN_ID --json 檢查。
  6. 選擇返回的 Markdown 產物 ID,下載到一個新的本地檔名並開啟。若任務完成但沒有指定檔案,應在同一會話繼續請求儲存。產物已存在但下載失敗時,按產物下載恢復步驟處理。

Plan first 任務可使用 --return-on-attention,閱讀返回計劃,再透過應用或下方計劃命令回應。JSON 整合應區分 running、completed、failed 和 cancelled,不能將 HTTP 請求成功直接當作任務完成。

命令分類

命令引數作用
project list--json列出專案
project create名稱、可選描述、兩種 Agent Context 輸入之一建立專案
project updateID 或精確名稱,以及要修改的欄位僅修改提供的值,清空上下文使用 --clear-agent-context
project session-defaults show/update專案、會話選項讀取或更新新會話預設值,帶併發編輯保護
run專案、提示詞、可選會話與等待選項開始或繼續工作
run status/cancelRun ID檢視或顯式取消
session statusSession ID讀取會話狀態
session config show/update會話、修改時提供 --revision讀取配置或更新之後的輪次
settings agent-routing show/update框架和 Reviewer/Subagent 路由讀取或原子更新全域配置
plan show/approve/reject/revise會話,決定時提供精確產物版本和修訂讀取或回應計劃
artifacts listSession ID列出產物
artifacts downloadArtifact ID、--output儲存外部副本

指令碼優先使用專案 ID。CLI 可把唯一的精確名稱解析為 ID,重名會產生歧義;SDK/HTTP 直接要求 ID。Project Agent Context 上限為 16,000 字元,專案輸出返回 hasAgentContext,不返回上下文正文。

artifacts download 返回 HTTP 500 時,舊版應用先更新,再使用原來返回的產物 ID 重試。下載恢復步驟區分任務完成和檔案傳輸失敗,不要只為取得已有輸出而重跑研究任務。

管理 Connector 與憑據

這些命令使用正在執行的後端及已儲存 Settings。編輯前確認目標例項。自定義 Connector 和憑據寫入需要本地認證連線;伺服器場景應在伺服器本機執行 CLI,也可經 SSH 登入後執行。

命令輸入或結果
open-science connector list --json讀取 Connector 的安全設定檢視
open-science connector show CONNECTOR_ID --json檢視返回 ID 對應的配置和狀態
open-science connector enable CONNECTOR_ID設定啟用偏好
open-science connector disable CONNECTOR_ID關閉啟用偏好
open-science connector add --json從 JSON 標準輸入讀取新建自定義 MCP 配置
open-science connector update CONNECTOR_ID --json從 JSON 標準輸入讀取修改
open-science connector remove CONNECTOR_ID刪除自定義 MCP 配置
open-science connector test CONNECTOR_ID --json單獨建立連線、發現工具後關閉
open-science credential list --json讀取憑據後設資料,不返回原始秘密
open-science credential add --json從 JSON 標準輸入讀取新憑據
open-science credential update CREDENTIAL_ID --json從 JSON 標準輸入更新 displayName 和/或 secret

示例 提交本地 Connector 配置

可使用以下命令提交已準備的本地配置檔案:

open-science connector add --json < connector.json
配置欄位要求
name / displayName新建必填;更新時 name/ID 保持穩定
transportstdio、streamable_http 或 sse;更新也必須提供
command / argsstdio 的本地可執行程式和可選引數
urlHTTP/SSE 端點
envCredentialIds / headerCredentialIds將環境變數/請求頭名稱繫結到已儲存憑據 ID
oauthCredentialId繫結已有共享 OAuth 憑據
省略憑據繫結更新時保留已儲存值;空的環境變數/請求頭繫結物件清空對應對映

只有自定義 MCP 可以新增、修改、刪除。Enabled 是選擇偏好,不證明連線成功,也不等於撤銷所有 Specialist 的訪問。

test 不會啟用 Connector 或執行業務工具,返回 success、可選 toolCount 和 message。發現階段上限十秒,失敗返回非零退出碼;不支援對內建 Connector 做此實時診斷。測試可能重新整理已有 OAuth 令牌,但不會完成首次瀏覽器登入。

秘密透過 JSON 標準輸入寫入,不要放進命令引數或 Shell 歷史。token 輸入包含 displayName、kind: token、secret,也支援 api_key。把返回的 createdCredential.id 繫結到 Connector。舊後端沒有這些端點時返回錯誤,不會退回直接編輯 Settings 檔案。

執行輸入與控制引數

open-science project list --json
open-science run --project PROJECT_ID --prompt-file ./task.md --wait --json
open-science artifacts list SESSION_ID --json
open-science artifacts download ARTIFACT_ID --output ./result.csv --json

將大寫佔位符替換成實際返回的 ID。示例沒有假定本機存在某個虛構 Skill 或提供方。

引數約束
--prompt / --prompt-file內聯文字或 UTF-8 檔案;省略時可從 stdin 讀取
--session繼續指定會話
--cwd外部工作目錄,CLI 解析相對路徑,服務端校驗規範路徑
--approval-profileaskautofull,預設 ask
--provider--model / --provider-default-model配置過的提供方及明確或預設模型
--reasoning-effortCLI 幫助列出 defaultlowmediumhighxhighmax,UI 模型選項可能不同
--skill可重複的已安裝 Skill ID,不負責安裝
--plan-first計劃得到回應後才執行
--auto-review / --no-auto-review設定會話自動審查
--memory / --no-memory設定會話記憶,互斥
--specialist新會話繫結 UUID 或穩定 profile 名,展示名稱不是路由 ID
--delegation allow/deny控制新委派准入,deny 不取消已有子任務
--compute-host可重複的已配置主機 ID;選擇目標,不配置 SSH
--enable-compute-host / --clear-compute-hosts新會話訪問與預設值;現有會話訪問修改走配置更新

外部 cwd 仍歸呼叫者所有。已有會話再次提供 --cwd 時必須對應同一規範目錄,不會藉此遷移會話。省略主機引數保留既有選擇,清空應使用明確操作。

等待、需要處理和取消

選項/狀態結果
不加 --waitRun 被接納後返回,儲存 idsessionId 供查詢
--wait等待終態
--wait --return-on-attention計劃需要審批時也可返回;普通權限請求不是同一種 attention
--timeout-ms到時停止客戶端等待,伺服器任務仍繼續
--cancel-on-timeout超時後顯式取消,命令仍報告超時
run cancel RUN_ID等待取消和收尾,保留已經完成儲存的產物

審批前先讀取 plan show,同時提交 --artifact-version--revision,避免舊決定應用到新計劃。會話更新同樣使用 session config show 返回的 revision,過期值返回 session_revision_conflict。正在執行的主代理、子代理或 Notebook 可使修改返回 session_busy

結構化輸出和退出碼

--json 輸出一個結果,run --wait --jsonl 輸出逐行事件,最後輸出 Run 結果;兩者不能同時使用。結構化錯誤位於 stderr,應檢查 error.code,不只看退出碼。

本地復現的非法引數錯誤:

{"error":{"code":"invalid_cli_usage","message":"Use only one of --json or --jsonl."},"exitCode":2}
退出碼含義
0命令成功,仍應檢查返回的 Run/attention 狀態
1通用/任務失敗、超時、衝突,或 status 表示無執行服務
2CLI 引數無效
3本地 daemon 不可用
4指定專案、Run、會話、產物或 Specialist 不存在
5活動工作阻止應用更新
6更新需要手動安裝步驟

JSONL 可能包含 run.progressstream.resync-required。重連後無法重放時,重新讀取權威 Run 狀態,不把事件流當作永久歷史。服務命令另有引數限制,見無介面服務

CLI 實現上游命令指南

技術參考:CLI 約定.