先講結論:現在接手機的本地助理,是一個純標準庫的橋接,九個程式檔。公開倉庫 h2ocloud/pi-task-agent 是 0.2.0。正在跑的服務載的是工作樹 0.3.0,還沒推上 GitHub。它分成三層:通訊與調度、長任務編排、一次執行。執行器叫的是公開的 pi 命令列。三種模式:auto 地端還在就用地端,local 不出門,grok 先走 Grok Build、呼叫失敗才回到地端。Telegram 上的舊顯示名是龍蝦助理,後來改成現在的名字;閘道程式已換掉,這份程式是接替者。
從 Grok bot 借的是看得到的行為,不是它的程式。行為筆記寫明只依使用時的感覺整理,對得上的是三件事:先回再做、長工作不卡住聊天、清單用四個狀態。壓縮上下文、每步換新對話、做不到就拆小或誠實跳過,是為了地端模型後加的。0.3.0 又補上:同輪工具一起計時,以及家目錄等級的搜尋會被中止。把模型換成 grok-build-0.1 不會換成 Grok 的執行器。
我的建議是把這三層當成現況,不要再併回舊閘道。若要補一個洞:對外寄信仍只寫在提示裡,執行器開了 shell,沒有權限層硬擋。筆記要求的是硬擋。
00版本
新的在上面。每一版只寫這一版多了什麼。公開倉庫現在是 0.2.0。0.3.0 在工作樹,服務已載入,還沒推上 GitHub。
0.3.0 2026-10-11 工作樹,未推送
- 問「已經知道什麼、了解到哪」時,用這一輪看過的內容回答,不升成背景搜尋。
- 同輪的工具全部結束,才把 180 秒計時清掉。家目錄或整台磁碟的 find、遞迴 grep,約兩秒中止。指到一個專案目錄的搜尋仍允許。
- 工具輸出被截成短預覽之後,路徑另外留在同一筆,驗收仍看得到。
- 接上
grok-build-0.1之後,一次工具迴圈與調參頁測試都回了這個 id,思考也有打開。它仍會去掃家目錄。差在執行器給的是 shell、外層規劃沒有工具、每一步換一個新對話,不是模型沒接上。 - 位址已經含
/v1就不再接一次。調參頁三個模式會立刻存檔,頁面先顯示下一則要用的模型。
離線六份 120 項通過。沒有再拿同一題打訂閱模型。寄信仍只是提示,沒有權限層硬擋。
0.2.0 2026-10-11 已在公開倉庫
- 沒有地端、而且設了金鑰時,可改走 Grok Build。
auto先用地端,local不出門,grok即使地端還在也走訂閱。 - 快層級
grok-4-1-fast-non-reasoning,主層級grok-build-0.1,位址https://api.x.ai/v1。回覆跟著來訊的語言。 - 服務起來後,本機有一頁可改門檻、送一句測試、看打過碼的日誌。實測配方寫進
TUNING.md。
這一版的訂閱路徑只核到網址與模型選擇,沒有打一通付費呼叫。付費呼叫是 0.3.0 才做的。
0.1.0 2026-10-11 公開快照
- 三層:調度、編排、一次 pi。技能按需載入,上下文自己壓縮。路徑對不上原文與工具輸出就打回。狀態四個詞。對外寄信只寫在提示裡。
01三層怎麼接
手機進來的每一則,先停在調度層。短的自己答完;變長才交給編排器。編排器不直接生成,它只會一再呼叫「跑一次」。行數是工作樹 0.3.0。
| 層 | 程式 | 行數 | 它負責的一件事 |
|---|---|---|---|
| 調度 | 橋接主程式 | 1,180 | 收訊、先回、把新訊息分成補充/無關/問一次、斜線指令、重啟接續、送不出先存、三種模型模式 |
| 編排 | 長任務 | 473 | 規劃、小步、驗收、遞迴拆、退階、15 分鐘進度、寫給人看的收尾 |
| 執行 | 跑一次 | 318 | 起一個 pi 行程,讀 JSON 事件;同輪計時,家目錄等級的搜尋會中止 |
| 壓縮 | 上下文 | 150 | 只壓敘事;目標與使用者原話釘住;掉了的路徑與網址用規則補回 |
| 另一個入口 | LINE | 260 | 驗簽、免費回覆優先、推播額度不夠就改走另一個頻道 |
| 其餘 | 提供者、語言、調參頁、技能 | 902 | 兩個層級、三種模式、本機調參頁、按需技能 |
02一則訊息實際怎麼走
常數都寫在程式最上面,下面是 2026-10-11 讀到的值。
- 不用工具的短問題:答案就是第一句,不派背景。
- 要用工具:第一個工具一開始就回一句,內容是「做什麼、先做哪一步」。模型自己先講了就用它的,不准只回「收到」。
- 第 3 輪工具開始,或前景已滿 10 分鐘:中止這次前景,聊天立刻空出來,改成一件有名字的背景工作。舊對話留給那件工作當前情。
- 已有工作在跑時,新訊息先分流。補充就併進原來那件,下一步重排,已做完的不重做。分不出來只問一次:「加」或「新」。
- 「在忙什麼」「先停」不進模型。停掉的註記是「依指示停止」,不當成做完。
- 主人私訊才有讀寫與 shell。其他人與群組是唯讀聊天,群組要點名。斜線指令沿用另一個自寫輕量 agent 的做法:不經模型、立刻生效。
03從 Grok bot 借了什麼
依據是一份行為筆記,開頭寫明「只照看得到的行為」。橋接程式的檔頭直接指向這份筆記。沒有 Grok 的原始碼,所以下表的「一樣」是行為對得上,不是實作相同。
| 筆記裡的行為 | 現在的程式 | 對照 |
|---|---|---|
| 先回再做。短問題直接答。不能只回「收到」。 | 第一個工具開始就回;沒工具就把答案當第一句。 | 一樣 |
| 一到兩輪在前景做完。超過兩輪派背景,這一輪結束,聊天空出來。 | 第 3 輪工具開始就交出去。前景滿 10 分鐘也交,不把工作砍掉。 | 一樣 多了時間上限 |
| 補充併進原工作。新事另開。分不出來問一次,並給選項。 | 分流器回三個路由。問句固定是「加」或「新」,30 分鐘內等回答。 | 一樣 |
| 狀態只用四個詞。問進度時看清單,不因為被問就開始定時查。 | 工作狀態就是這四個詞。口語問進度不進模型。 | 一樣 |
| 清單在磁碟。重開或壓縮之後要接得回來。 | 工作檔在磁碟。重啟接續,半截的工具呼叫會先壓縮再換新對話,避免供應端拒絕接。 | 一樣 |
| 只在有結果、改方向、被擋住時說話。不要每步一則,也不要定時去查。 | 不報每一步。但整件超過 15 分鐘,每 15 分鐘一句進度。 | 後來改過 筆記不要心跳;使用者後來要求長任務要報進度。兩條都在,取的是後者。 |
| 被擋住就停下,整理成選項,答完接回同一條。 | 只有密碼、授權、拍板才停。回答原文釘住,接著做。其他困難自己換做法。 | 一樣 |
| 對外寄信只建草稿,並用權限設定硬擋。 | 規劃與步驟提示寫「不要寄信、不要發訊」。工具含 shell,沒有權限層拒絕。 | 沒做到 仍是軟限制。 |
| 調研派較便宜的模型。改碼放在另一個已登入的環境。 | 快層級做分流與短判斷,主層級做規劃與工具迴圈。改碼仍是同一個 pi,沒有另開一個已登入的環境。 | 只借到分層 |
| 不要用「沒輸出」判斷卡住。 | 同輪還在跑的工具一起計時,全部結束才清掉,最久超過 180 秒算一次。家目錄或整碟的 find、遞迴 grep 約兩秒就中止。連續兩次才停這次執行。 | 判斷方式不同 不是看有沒有字。0.3.0 改成看同輪,不再被先結束的那個清掉。 |
04為了地端模型加上的
這些不在 Grok 行為筆記裡。理由寫在編排層開頭:長對話越走越容易跑偏,所以一步一個新對話。
| 機制 | 門檻 | 失敗時 |
|---|---|---|
| 一步一個新對話 | 單步最多 14 輪工具、上下文 45,000 token | 太大、空轉、卡死:不換說法重試,直接拆小 |
| 同一步壓縮接續 | 最多 3 次 | 再滿就拆小。目標與使用者原話每次重帶,不交給壓縮模型改寫 |
| 遞迴拆小 | 最深 3 層;一輪計畫最多 7 步 | 拆不出至少兩步,或已到最深:這步標跳過,整件繼續,收尾誠實說沒做成 |
| 驗收 | 對照該步的完成標準 | 不通過就換做法再試一次。驗收模型壞掉時放行,寧可不卡住 |
| 聊天壓縮 | 超過 40,000 token,回完才壓 | 留最近 4 則原文。壓縮模型失敗就改規則式,並把掉了的路徑、網址補回去 |
| 空轉 | 同一個工具、同一組參數連續 3 次 | 停這次執行,交給拆小 |
| 後端斷線 | 連線類錯誤 | 前景重試三次後把訊息存著,恢復自己做。背景工作每 30 秒看一次,半小時內只說一次「先擱著」 |
| 整件安全網 | 3 小時 | 停下,進度留著,等人說繼續。不是因為久就當失敗丟掉 |
| 同時執行數 | 最多 4 個 pi | 註解寫明後端是單序列,再多只會互相拖慢 |
執行器把標準輸入直接關掉。這個命令列會等到輸入結束才開工,不關的話行程會空等。錯誤訊息裡的金鑰樣式會先打碼再送出。
05這次怎麼驗證
2026-10-11 重跑六份離線測試,執行器、模型、通訊都是假的。沒有對真的手機收發再測一輪。
| 檔 | 通過 | 蓋到的行為 |
|---|---|---|
| 執行器 | 15 | 正常結束、只殺卡死工具、連續卡死、空轉、輪數、上下文、牆鐘、取消、第 3 輪中止、錯誤打碼、按需技能、同輪計時、家目錄搜尋中止、短預覽仍留路徑 |
| 技能 | 6 | 關鍵字、常駐、上限、全載、關閉、triggers |
| 編排 | 19 | 三步做完、驗收失敗改做法、拆小、最深仍跳過、需要人、補充重排、上下文接續、斷線自癒、取消、重啟不重做已完成的步、規劃失敗退成一步、沒根據的路徑打回、規劃拒絕掃家目錄、短預覽旁的路徑仍算有根據 |
| 調度 | 29 | 重試、離線排隊、送不出先存、轉背景、分流、停止只停一件、重啟最多 3 次、壓縮留錨點、半截工具呼叫會換對話、「了解到哪」不升成工作、這一輪的模型 id 由橋接帶上 |
| LINE | 26 | 驗簽、免費回覆、不必要的不推、額度不足、失敗改存、輸入中動畫、主人與其他人權限不同 |
| 接口 | 25 | 地端優先、斷線改 Grok Build、強制走訂閱、快模型、沒金鑰退回、/v1 不重複、語言判斷、調參上下限、日誌打碼、頁面只聽本機 |
grok-build-0.1。另有一次問現況的長任務,模型有在思考,仍對家目錄下了搜尋;那次已被停下,沒有再重跑。06怎麼再對一次
python3 tests/test_pirun.py
python3 tests/test_orchestrator.py
python3 tests/test_skills.py
python3 tests/test_bridge.py
python3 tests/test_line.py
python3 tests/test_providers.py
# 六份都過,才算工作樹 0.3.0 的 120 項還在。公開倉庫 0.2.0 是較早的 106 項。
行為筆記與程式檔頭的對照,以「先回、超過兩輪轉背景、四個狀態詞、補充併入原工作」四句去搜即可。門檻以程式開頭的常數為準:轉背景的輪數、前景 10 分鐘、工具 180 秒、單步 14 輪、上下文 45,000、聊天 40,000、進度 900 秒、整件 10,800 秒、重啟 3 次。
07沒有地端的時候
同一套呼叫,兩個層級。快的做分流與短判斷,主的做規劃、工具步驟與收尾。地端的兩層是同一台伺服器上的兩個別名,不會再載第二顆模型。
| 地端 | 訂閱(Grok) | |
|---|---|---|
| 快 | 同一台伺服器的 fast 別名 | grok-4-1-fast-non-reasoning文件 |
| 主 | 使用者正在用的那顆 | grok-build-0.1文件 |
auto 先問地端還在不在。在就用它。不在、而且環境裡有金鑰,才改走 https://api.x.ai/v1。強制 local 永遠不出去。強制 grok 即使地端還在也走訂閱。狀態查詢不會為了探活去打付費接口。
2026-10-11 讀 xAI 文件:Grok Build 上下文 256,000。提示未滿 200,000 token 時,輸入約 $1、輸出約 $2/每百萬;滿了以後整筆改計 $2 與 $4。快模型上下文 2,000,000,標價約 $0.20/$0.50。美國區域網址目前只掛另外兩顆旗艦,不掛這兩顆,所以預設用全球網址。更重的 grok-4.7 可以換,但不是預設。文件 價格會改,以文件當日頁面為準。
回覆跟著使用者的語言。寫中文就用繁體中文,寫英文就用英文,不把中文寫成唯一出口。斜線指令在還沒說話之前,看環境變數,公開預設是英文。
服務起來後,本機 127.0.0.1:8787 有一頁可以改上面這些門檻、送一句短測試、看打過碼的日誌。頁面先顯示下一則要用的模型,三個模式直接切並存檔。它拒絕聽別的位址,也不會去開關 GPU 上的模型。實測配方寫在倉庫的 TUNING.md:一台 128 GB 的 DGX Spark、一顆常駐的 Qwen3.8-Flash-Next IQ3_S、伺服器上下文 131072、聊天 40,000 就壓縮、工具溫度 0.7 而不是 0.2。換模型沒有換執行器,強弱見版本 0.3.0。