跳至內容
回到 Nymbot

知識庫 程式碼

在 git 儲存庫中工作

Pro 可以像程式碼代理一樣在您的其中一個儲存庫中運作 — 讀取您的實際檔案,並進行寫入與修改。

正在連接儲存庫

?git,或 Git 工具列中的晶片,可連接供應商: GitHub、GitLab 或 Gitea/Forgejo — 後者涵蓋了 Codeberg 與自託管實例。它 需要一個範圍限定的個人存取權杖(personal access token)、一個儲存庫與一個分支。一個儲存庫,其 在 Nostr 上宣布自己 可以改為直接貼上其地址。

您不必輸入儲存庫名稱。請貼上權杖並選擇 列出此代幣可以觸及的範圍: Nymbot 會詢問 forge 該 token 可以看到什麼,並將答案以列表形式顯示供您檢查。檢查會將每一項與其預設分支連接並填寫,然後將它們全部放入此聊天室中。任何已經連接的內容將直接顯示,而不會再次提供。該請求會從您的裝置直接傳送到 forge — 而不經過 Nymbot worker — 因此 token 不會前往任何它原本不會前往的地方。拒絕跨來源請求的自託管 forge 將無法被列出;請手動輸入儲存庫,其餘功能將保持不變。

一旦連接,晶片會顯示儲存庫名稱,以及使用 a 發送的訊息 專業版模型 在該儲存庫的上下文中選取的執行。 ?git disconnect 將其移除。 斷開連接 在儲存庫清單中 忘記了權杖但保留該儲存庫,並標記為沒有權杖,以便你稍後可以添加 新的權杖。

儲存庫對話框,在此可將 GitHub、GitLab 或 Gitea 儲存庫連接至聊天。
正在連接儲存庫。權杖會同步到您的其他裝置,並進行端對端加密。

在 Nostr 上公布的儲存庫

有些儲存庫會在 Nostr 上發布公告,而不僅僅是在 forge 上,使用 NIP-34 — ⋯背後的 協定 ngit 以及 gitworkshop。該公告是一個 Nostr 事件,包含了該專案的名稱、其維護者、收集其 修補程式與問題的轉發器(relays),以及可以複製該專案的 URL。第二個事件則說明了每個 分支目前指向的位置。

貼上一個 naddr 或是一個 nostr:// 輸入儲存庫表單中並 按下 查一下. Nymbot 從中繼器讀取公告並填寫表格:它所複製的 git 主機、該處的儲存庫,以及專案本身聲明為目前的的分支。你仍需為該主機添加一個 token,因為 Nostr 承載公告,而 git 伺服器則承載程式碼。

這意味著規則僅取決於它是從哪裡複製的。只要其複製 URL 位在 GitHub、GitLab、Gitea 或 Forgejo(包括自託管版本)上的儲存庫,Nymbot 就能讀取。 僅透過...複製 git:// 或者 ssh 沒有可以用來讀取檔案的 HTTP API, 而且 Nymbot 會直接告知,而不是進行半連接。 如果主機是自架的,供應商會根據其名稱進行猜測, 你可以在儲存前進行修正。

以這種方式新增的儲存庫會被加上徽章 ngit 在列表中,以及回覆時,請 根據它所宣告的名字來稱呼它,而不是根據它在鏡像中的路徑。

它能做什麼

在程式碼庫(repo)情境下的訊息是以小型代理(agent)而非單次補全的方式執行。 模型可以列出目錄、讀取檔案並搜尋樹狀結構,然後根據其實際發現的內容來回答 —— 因此,「為什麼重試迴圈會提早放棄」的答案是來自於你的程式碼,而不是根據與你的程式碼相似的內容進行猜測。

它能看到你連接的分支,位於其當前的 HEAD。

與 伺服器運行中 已為對話開啟,它 也可以要求在 Nymbot 伺服器上針對您的程式碼執行指令(例如測試)。 每一次執行都會等待您的允許。

手機上的儲存庫任務:Nymbot 發現了一個錯誤,並以 diff 的形式顯示修補程式。
手機上的一個 repo 任務,包含補丁以及執行成本。

正在開啟寫入功能

?git writes on 新增了提交檔案、建立分支以及開啟拉取請求 (pull request) 或合併請求 (merge request) 的功能。預設為關閉狀態,建議在需要使用時再開啟。

開啟寫入權限後,提出變更請求時,你得到的是一個分支和一個待審核的拉取請求(pull request),而不是直接貼在聊天室裡的補丁(patch):每項任務都在進行中 其自身的一個分支除非您關閉該功能,否則不會有任何內容被推送到您的預設分支,那是您所連接的分支,也是您要求的。

一次執行中的編輯會以每個儲存庫一個提交的形式,在執行結束時或模型判定某項工作已完成時進行提交。如果您希望先看到它們,請開啟 在提交之前 先詢問 針對該儲存庫。接著執行程序會保留其變更, 回覆則以 diff 的形式顯示它們,並且 申請 在...的同時將其提交 丟棄 把它扔掉。申請不需要花任何費用。

每個任務一個分支

與 每個任務都有自己的分支 開啟,這對每個儲存庫都是如此 除非你將其關閉,這是一項會向其自身分支寫入提交的任務,該分支名為 nymbot/ 以及一個短 ID。Nymbot 會在任務進行第一次提交時,從工作分支的頂端建立它,因此僅進行讀取的任務完全不會建立分支。 工作分支本身不會被更動,這就是為什麼多個任務可以同時寫入同一個儲存庫,而不需要輪流等待。

當任務完成時,Nymbot 會做什麼 完成時 說。 開啟一個拉取請求 是預設值; 提出合併建議 在回覆中留下一個合併按鈕; 離開分支 不做任何其他操作。預設值設定於「設定」中, 位於 當任務的分支完成時,且每個儲存庫都可以根據其自身形式進行不同的選擇。如果 Forge 沒有 Nymbot 可以使用的 Pull Request API,或者拒絕提供,則分支將保持原樣,並且回覆會說明這一點。

回覆顯示該分支帶有 開啟 PR, 合併 和 刪除,而工作列表會將其與任務列在一起。在任務運行期間, 其卡片、工作列表以及運行中項目的列表會在分支一經 建立時,就在所有登入該帳戶的裝置上顯示該分支名稱。停止或中途失敗的任務 仍會交回其分支,以便像其他分支一樣進行合併、刪除或清理。合併是透過 forge 自身的 pull request 進行的合併提交,並固定在 Nymbot 記錄的提交上, 因此在此期間推送到那裡的任何新提交都不會被在未經察覺的情況下合併。 從不進行強制推送(force-push)。 如果該分支與工作分支發生衝突,回覆會提供 開啟 PR 以 解決 或者 請要求 Nymbot 更新分支,這會透過合併提交(merge commit)而非變基(rebasing)的方式將工作分支合併到其中。GitHub 以及 Gitea 或 Forgejo 可以做到這一點;GitLab 則沒有相關的 API,因此在那裡你需要在合併請求(merge request)中處理它。

對 CI 和工作流檔案的變更仍需等待您的審查,正如它們在沒有獨立分支的情況下一樣。

清理中

您的裝置記住了 nymbot/ 此帳戶建立的分支。下一個任務 在該儲存庫中,或 清理 Nymbot 分支 在儲存庫列表中, 刪除那些 Pull Request 已合併或已關閉,或者已超過七天且沒有剩餘待合併內容的分支。 只有當分支仍結束於 Nymbot 所記錄的提交(commit)時才會被刪除,因此若有人自此之後推送了新內容,該分支將會被保留,且不會影響任何其他分支。 它會使用現有的權杖(token)從您的裝置執行;伺服器不會保留權杖以供稍後執行。

關閉直接提交至工作分支的選項。如此一來,一個任務將獨佔該儲存庫,而同一個分支上的第二個任務在第一個任務完成之前只會讀取它。舊版本的應用程式也是這樣運作的。

撤銷執行所產生的變更

寫給您儲存庫的回覆說明了它所觸及的部分:儲存庫、分支,以及 每一個檔案。 復原這些變更 將它們放回原處 — 每一條路徑都是在執行前該分支所處的提交點進行讀取,並按其原貌提交。一項在...上運作的任務 其自身的一個分支 讓工作分支 孤零零地待著,所以那裡沒有任何東西可以放回去: 刪除 反而 刪除其分支

那是回滾,而不是重寫。沒有任何東西被抹除,也沒有任何歷史被重寫:Nymbot 所做的操作仍保留在日誌中,只是它不再是該分支的狀態。任何在此期間 進行拉取的用戶,仍保留著可以正常運作的檢出版本。

這不需要任何成本。撤銷操作不會觸及模型,因此不會消耗積分 — 存取權杖(access token)會隨著該次請求一同傳送,就像其他所有請求一樣,而檢查點(checkpoint)的任何內容除了您的裝置之外,都不會儲存在任何地方。

僅限檔案

開啟運行的分支或拉取請求(pull request)會被列出並保持原狀。 代表他人關閉其拉取請求並不等同於「復原」,刪除他人可能已擷取(fetched)的分支亦然 —— 如果你想要移除它們,請親自執行這些操作。

一個 repo 任務的費用是多少

一個 repo 任務在每則訊息中最多會使用六次模型調用 —— 查看、閱讀、搜尋、回答 —— 每一項都按釘選模型的價格計費 專業版價格只有實際使用的呼叫才會計費,因此從一個檔案中回答一個問題的費用大約等於一般回覆的費用。

應用程式會在每個儲存庫任務後報告總計與呼叫次數。

當任務空間不足時

儲存庫任務是一個迴圈,而非單一答案:模型列出目錄、讀取檔案、搜尋樹狀結構、讀取另一個檔案,然後才進行寫入。該迴圈擁有額度限制——即回覆所預留額度的模型呼叫次數——因為一個無限制的代理程式就意味著無止盡的帳單。

當任務在工作尚未完成時就用盡了配額,Nymbot 會停止運行,將已完成的部分交付給你,並告知此情況。不會再收取任何進一步的費用。

您也可以讓它持續進行。在「設定」中設置續行預算,當任務耗盡時,Nymbot 會從同一餘額中購買另一個額度,精確地從停止的地方繼續,而不是從頭重新讀取儲存庫。它會一次進行一段行程,每一段都會說明花費了多少,並在預算用盡、任務完成或您按下「停止」的那一刻立即停止。選擇「直到我的餘額用盡」仍然是一個上限——它是您的餘額,而不是您輸入的數字。

筆記

預設情況下會停止並告知您。除非您已設定預算,否則在您要求的回覆之外,不會有任何後續動作,也不會產生任何額外費用。

通常您的裝置會發送每一段行程,因此任務只有在應用程式開啟時才會繼續進行。 背景執行 開啟後,伺服器會在應用程式關閉時,在相同的預算範圍內,最多 40 個 legs 且在 6 小時內,自行發送下一個 legs,並在任務完成時通知您一次。為了實現這一點,它在任務執行期間會使用只有它自己持有的密鑰將儲存庫權杖加密 密封,並在任務結束時將其刪除,且始終在 6 小時內完成。背景任務會像其他任何任務一樣寫入其自己的分支。

關於該代幣

關於該代幣

存取權杖保存在您的裝置上,並透過您的端對端加密設定在裝置之間同步,因此伺服器僅持有其無法讀取的密封副本。它會被一 裝置清除, 隨每次請求傳送至 Nymbot 工作單元,且絕不會以可讀形式儲存在伺服器端,亦不會發佈到中繼站。伺服器唯一保留它的方式是密封的,當一個 背景執行 您開啟的功能最多只能運作 6 小時。請將其範圍限定在您打算使用的那一個 儲存庫中,並在完成後向您的供應商撤銷授權。

因為它會同步,使用儲存庫的聊天功能可以在您登入的所有裝置上運作, 而無需重新連接。在一個裝置上中斷儲存庫的連接,也會同時清除其他裝置上的權杖。 權杖永遠不會進入 a 伺服器 執行的容器。