Forgejo
對 Forgejo REST API 的輕量包裝。每個資源都位於自己的腳本中,讓代理能夠獨立發現和呼叫它們。SkillHone 依賴此作為 VCS 後端技能,但它保持獨立,以便其他後端(如 GitLab 或 Gitea)可以提供相同的工作流程介面。
腳本
| 腳本 | 資源 | 典型用法 |
|---|---|---|
scripts/issue.py | Issue | python3 scripts/issue.py create --title "Bug" |
scripts/pr.py | 合併請求 | python3 scripts/pr.py merge 1 |
scripts/wiki.py | Wiki 頁面 | python3 scripts/wiki.py get --title "Analysis" |
scripts/repo.py | 儲存庫後設資料 | python3 scripts/repo.py branches |
scripts/summary.py | 聚合儀表板 | python3 scripts/summary.py |
每個腳本都支援 --help。在猜測旗標之前先執行它。
組態設定
按照以下順序解析(第一個符合的優先):
- 環境變數:
FORGEJO_URL、FORGEJO_TOKEN、FORGEJO_OWNER、FORGEJO_REPO ~/.skillhone/settings.json+~/.skillhone/identities.conf- 目前工作目錄中的
_data/forgejo_config.txt
如果沒有任何設定,腳本會以明確訊息退出,指出缺少的變數。
依資源使用
Issues
python3 scripts/issue.py list
python3 scripts/issue.py view <N>
python3 scripts/issue.py create --title "Fix: timeout" --body "## Problem\n..."
python3 scripts/issue.py close <N>
python3 scripts/issue.py comment <N> --body "Done"
Pull Requests
python3 scripts/pr.py list
python3 scripts/pr.py view <M>
python3 scripts/pr.py create --title "Fix timeout" --head fix/timeout --base main --body "Closes #1"
python3 scripts/pr.py review <M> --approve
python3 scripts/pr.py merge <M> --method merge
python3 scripts/pr.py comment <M> --body "LGTM"
Wiki
python3 scripts/wiki.py list
python3 scripts/wiki.py get --title "Iteration-1-Observation"
python3 scripts/wiki.py create --title "Page" --body "content"
python3 scripts/wiki.py edit --title "Page" --body "updated content"
儲存庫後設資料
python3 scripts/repo.py info
python3 scripts/repo.py branches
複合摘要
python3 scripts/summary.py
# 開啟的 issue + 開啟的 PR + 最新的觀察 wiki 頁面
從其他技能呼叫
位於 ~/.skillhone/skills/ 下的其他技能可以透過這些腳本的絕對路徑來呼叫:
python3 ~/.skillhone/skills/forgejo/scripts/issue.py list
這樣可以保持 VCS 後端可替換。GitLab 或 Gitea 技能可以公開相同的命令介面,而不需要改變 SkillHone 的最佳化邏輯。
注意事項
- 包含
@字元的 Token 會破壞 git clone URL 的注入。請使用不含@的 Token,或對其進行 URL 編碼。 - 舊版 Forgejo 不支援
merge --method squash。如果遇到Unknown method,請回退為merge。 - Wiki 頁面會以
.md檔案的形式儲存在單獨的 git 儲存庫中(<repo>.wiki.git)。wiki.py會隱藏此細節,但如果您需要自訂編輯,請直接複製 wiki 儲存庫。
嚴格規則
- 絕對不要將 Forgejo Token 列印到 stdout/stderr 日誌中。腳本已經做了遮罩處理;請勿將 Token 貼入
--body欄位。 - 在 SkillHone 工作流程中,請勿直接使用
curl或手工打造的 HTTP 請求呼叫 Forgejo 的 REST API。請使用這些後端腳本,以便憑證載入、遮罩和後端更換維持集中管理。 - 請勿使用
cat命令讀取_data/forgejo_config.txt、~/.skillhone/settings.json或identities.conf來發現憑證。腳本會內部解析憑證。 - 請勿透過任何這些腳本直接推送到
main分支。僅限使用 Pull Request。 - 當遇到 401/403 錯誤時,請先重新檢查上述的組態解析順序,再修改腳本。