果自動(dòng)壓縮降噪)
OpenClaw Tokenjuice 插件詳解為 exec/bash 工具結(jié)果自動(dòng)壓縮降噪【免費(fèi)下載鏈接】openclawThe AI that really does things. Any OS. Any Platform. The lobster way. 項(xiàng)目地址: https://gitcode.com/GitHub_Trending/cl/openclawTokenjuice 是 OpenClaw 的可選外部插件在exec、bash等命令工具執(zhí)行完畢后對(duì)返回的tool_result進(jìn)行壓縮與結(jié)構(gòu)化整理再交還給正在運(yùn)行的 Agent 會(huì)話。本文以 docs/tools/tokenjuice.md 為主線結(jié)合 extensions/tokenjuice 的源碼與測(cè)試講解它的作用邊界、安裝啟用方式、壓縮策略、驗(yàn)證方法與關(guān)閉流程幫助你判斷是否應(yīng)該為長(zhǎng)會(huì)話場(chǎng)景引入它。一、Tokenjuice 是什么只改結(jié)果不改執(zhí)行tokenjuice是一個(gè)可選的外部插件其核心職責(zé)是在exec和bash工具的命令已經(jīng)運(yùn)行完之后壓縮它們嘈雜的輸出結(jié)果。需要特別強(qiáng)調(diào)的是它的作用邊界——它改變的是返回的tool_result而不是命令本身不重寫 shell 輸入不重新執(zhí)行命令不改變退出碼exit code。換句話說Tokenjuice 是一個(gè)純粹的“結(jié)果后處理”插件位于命令執(zhí)行的語義之外因此不會(huì)帶來二次執(zhí)行或語義漂移的風(fēng)險(xiǎn)。從當(dāng)前倉庫的實(shí)際代碼看它的作用范圍目前覆蓋兩類運(yùn)行環(huán)境OpenClaw embedded runs內(nèi)嵌運(yùn)行Codex app-server harness 中的 OpenClaw dynamic toolsOpenClaw 動(dòng)態(tài)工具。插件通過掛載 OpenClaw 的tool-result middleware工具結(jié)果中間件在結(jié)果回流到活躍 harness 會(huì)話之前完成裁剪。插件入口 extensions/tokenjuice/index.ts 使用definePluginEntry注冊(cè)并調(diào)用api.registerAgentToolResultMiddleware(createTokenjuiceAgentToolResultMiddleware(), { runtimes: [openclaw, codex], });也就是說中間件同時(shí)注冊(cè)到了openclaw與codex兩個(gè)運(yùn)行時(shí)與文檔中“OpenClaw embedded runs Codex app-server harness”的適用范圍完全一致extensions/tokenjuice/manifest.test.ts 也專門斷言了 manifest 中contracts.agentToolResultMiddleware聲明為[openclaw, codex]。二、安裝與啟用插件2.1 安裝一次openclaw plugins install clawhub:openclaw/tokenjuice從 extensions/tokenjuice/package.json 可以看到該插件同時(shí)發(fā)布到 ClawHub 與 npmClawHub 規(guī)格clawhub:openclaw/tokenjuicenpm 規(guī)格openclaw/tokenjuice默認(rèn)安裝源npm最低宿主版本2026.5.28如果你更習(xí)慣從 npm 安裝也可以使用openclaw plugins install openclaw/tokenjuiceextensions/tokenjuice/README.md 推薦在安裝或更新插件后重啟 Gateway。倉庫內(nèi)openclaw/tokenjuice當(dāng)前版本為2026.9.2其運(yùn)行依賴為tokenjuice0.8.1peerDependencies 要求宿主openclaw 2026.9.2插件 API 兼容版本同樣為2026.9.2。2.2 啟用插件openclaw config set plugins.entries.tokenjuice.enabled true等效命令openclaw plugins enable tokenjuice如果你更喜歡直接編輯配置文件可以在配置中加入如下 JSON5 片段{ plugins: { entries: { tokenjuice: { enabled: true, }, }, }, }值得注意的是extensions/tokenjuice/openclaw.plugin.json 中的configSchema為空對(duì)象additionalProperties: false且沒有任何屬性意味著該插件沒有暴露額外的插件級(jí)配置項(xiàng)開箱即用啟用與否就是它唯一的開關(guān)。同時(shí)該 manifest 中activation.onStartup為false插件不需要在啟動(dòng)時(shí)主動(dòng)激活而是按需注冊(cè)中間件。另外倉庫測(cè)試 extensions/tokenjuice/index.test.ts 斷言 manifest 中不存在enabledByDefault字段從測(cè)試與配置結(jié)構(gòu)可以確認(rèn)Tokenjuice 默認(rèn)不啟用是一個(gè)明確的 opt-in 插件。三、Tokenjuice 會(huì)改變什么、保留什么文檔明確了四條行為準(zhǔn)則壓縮嘈雜的exec/bash結(jié)果在結(jié)果回灌會(huì)話之前完成壓縮保持原始命令執(zhí)行不變命令本身、執(zhí)行次數(shù)、退出碼都不受影響應(yīng)用 safe-inventory 策略精確的文件內(nèi)容讀取保持原樣raw獨(dú)立的倉庫清單類命令可以壓縮不安全的混合命令序列保持原樣保持 opt-in關(guān)閉插件即可在所有場(chǎng)景恢復(fù)逐字verbatim輸出?!皊afe-inventory”策略本質(zhì)是一套保守的壓縮判定只有當(dāng)輸出可以被判定為“安全的庫存/清單類信息”時(shí)才壓縮凡是可能涉及完整文件內(nèi)容讀取、或者混入了可能產(chǎn)生副作用的命令序列都選擇保留原文寧可犧牲壓縮率也不冒險(xiǎn)丟失信息。這保證了壓縮不會(huì)掩蓋錯(cuò)誤、不會(huì)截?cái)嚓P(guān)鍵內(nèi)容。四、源碼級(jí)原理中間件如何壓縮結(jié)果4.1 中間件管線核心實(shí)現(xiàn)位于 extensions/tokenjuice/tool-result-middleware.ts。createTokenjuiceAgentToolResultMiddleware()會(huì)通過createTokenjuiceOpenClawEmbeddedExtension()由 extensions/tokenjuice/runtime-api.ts 從tokenjuice/openclaw重新導(dǎo)出建立與 tokenjuice 庫的連接監(jiān)聽tool_result事件收集 reducer 處理器在中間件執(zhí)行時(shí)依次調(diào)用每個(gè)處理器將返回的content與details合并回當(dāng)前結(jié)果若結(jié)果沒有變化則返回undefined不產(chǎn)生無意義的新結(jié)果否則返回{ result: current }。工作目錄cwd的解析也有明確的優(yōu)先級(jí)優(yōu)先取事件自帶的cwd否則取args.workdir最后回退到process.cwd()。4.2 狀態(tài)與退出碼的歸一化為了讓 tokenjuice 能正確判斷壓縮后的呈現(xiàn)方式中間件在把事件交給處理器之前會(huì)先做一次normalizeDetailsextensions/tokenjuice/tool-result-middleware.ts僅對(duì)exec/bash且?guī)Х强誧ommand參數(shù)的事件生效刪除重復(fù)的aggregated原始副本源碼注釋明確指出tokenjuice 在aggregated缺失時(shí)會(huì)讀取文本內(nèi)容隨后再把 details 合并回響應(yīng)如果保留重復(fù)的原始副本壓縮結(jié)果可能超過宿主限制合成規(guī)范的status與exitCode如果已有非空status字符串則視為規(guī)范值直接保留否則根據(jù)isError、ok、success、timedOut、error、exitCode綜合推導(dǎo)出failed/completed狀態(tài)并給出合理的exitCode有合法數(shù)值則保留原值否則失敗為 1、成功為 0。這部分行為在 extensions/tokenjuice/index.test.ts 有直接驗(yàn)證當(dāng) bash 只提供truncation、fullOutputPath等元數(shù)據(jù)時(shí)中間件會(huì)補(bǔ)上status: completed與exitCode: 0同時(shí)不攜帶aggregated。測(cè)試還逐一覆蓋了exitCode: 7、success: false、ok: false、timedOut: true、error: ...等失敗推導(dǎo)路徑extensions/tokenjuice/index.test.ts確認(rèn)這些場(chǎng)景都會(huì)被歸一化為status: failed。4.3 壓縮結(jié)果受宿主上限保護(hù)測(cè)試 extensions/tokenjuice/index.test.ts 演示了一個(gè) 120,000 字符的原始輸出在中間件管線中替換為 compacted并且details攜帶tokenjuice: { compacted: true }標(biāo)記且保持在中間件 details 限制之內(nèi)。這說明壓縮后的結(jié)果仍然會(huì)遵守宿主對(duì)details體積的限制不會(huì)因?yàn)閴嚎s邏輯本身引入超限負(fù)載。五、驗(yàn)證 Tokenjuice 是否生效按文檔給出的步驟操作即可啟用插件見上文 2.2 節(jié)啟動(dòng)一個(gè)可以調(diào)用exec的會(huì)話運(yùn)行一條嘈雜命令例如git status檢查返回的 tool result 是否比原始 shell 輸出更短、更結(jié)構(gòu)化。如果返回結(jié)果出現(xiàn)了結(jié)構(gòu)化的壓縮標(biāo)記例如details中帶有tokenjuice.compacted這樣的元信息且原始命令的退出碼與執(zhí)行語義保持一致即可確認(rèn)插件處于生效狀態(tài)。六、關(guān)閉插件當(dāng)不需要壓縮、希望所有場(chǎng)景都拿到逐字輸出時(shí)兩種方式任選其一openclaw config set plugins.entries.tokenjuice.enabled false或者openclaw plugins disable tokenjuice關(guān)閉后exec/bash的工具結(jié)果將恢復(fù)原始形式不再經(jīng)過 tokenjuice 的 reducer 處理這也再次印證了它“opt-in、可逆”的設(shè)計(jì)定位。七、總結(jié)與相關(guān)文檔Tokenjuice 解決的是 Agent 長(zhǎng)會(huì)話中一個(gè)非常具體的痛點(diǎn)exec/bash的原始輸出往往充滿噪音、占用大量上下文窗口。它通過 tool-result 中間件在結(jié)果回灌前完成壓縮同時(shí)嚴(yán)守“不改命令、不重跑、不改退出碼”的邊界并以 safe-inventory 策略保護(hù)文件內(nèi)容讀取與不安全命令序列做到在節(jié)省 token 與上下文空間的同時(shí)不犧牲正確性。對(duì)希望控制上下文膨脹、讓 Agent 更專注于結(jié)構(gòu)化信息的用戶來說這是一個(gè)低成本、可隨時(shí)啟停的優(yōu)化手段。圍繞該主題可以繼續(xù)閱讀倉庫內(nèi)相關(guān)文檔Exec 工具文檔Thinking levels 文檔Context engine 概念文檔插件完整實(shí)現(xiàn)與測(cè)試見 extensions/tokenjuice包括入口 index.ts、中間件實(shí)現(xiàn) tool-result-middleware.ts、運(yùn)行時(shí)契約 runtime-api.ts 以及行為測(cè)試 index.test.ts?!久赓M(fèi)下載鏈接】openclawThe AI that really does things. Any OS. Any Platform. The lobster way. 項(xiàng)目地址: https://gitcode.com/GitHub_Trending/cl/openclaw創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考