構(gòu)建團(tuán)隊(duì)知識(shí)庫(kù)資源集)
OpenViking Assets如何用 Manifest 和 Catalog 聲明并重復(fù)構(gòu)建團(tuán)隊(duì)知識(shí)庫(kù)資源集【免費(fèi)下載鏈接】OpenVikingSelf-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/op/OpenVikingOpenViking Assets 用聲明文件描述一個(gè)知識(shí)庫(kù)應(yīng)該由哪些資源組成讓你把一組 Git 倉(cāng)庫(kù)的接入方式寫進(jìn)文件里團(tuán)隊(duì)可以 review、共享并反復(fù)執(zhí)行來(lái)重建知識(shí)庫(kù)。這篇文檔面向的場(chǎng)景是你需要把多倉(cāng)代碼問(wèn)答庫(kù)、團(tuán)隊(duì)文檔集這類需要重復(fù)構(gòu)建、持續(xù)更新的資源集合管理起來(lái)而不是每次手動(dòng)敲ov add-resource source。適用前提是openviking-assets/1是實(shí)驗(yàn)性功能協(xié)議和命令行行為仍可能在后續(xù)版本中調(diào)整v1 只支持 Git 資產(chǎn)Manifest 必須平鋪、不支持遞歸include。先分清 Manifest、Catalog 和 StateOpenViking Assets 包含三個(gè)對(duì)象理解它們的分工能決定你用單文件還是多文件Manifest實(shí)際執(zhí)行的文件??梢栽赾atalog:下直接定義要接入的資產(chǎn)也可以按名稱從單獨(dú)的 Catalog 文件中選擇資產(chǎn)。Catalog團(tuán)隊(duì)可接入資源的目錄包含來(lái)源、分支、默認(rèn)更新周期和憑據(jù)別名。只有在多個(gè) Manifest 需要共享時(shí)才作為單獨(dú)文件存在否則直接寫在 Manifest 里。State某個(gè) Manifest 上次執(zhí)行的結(jié)果以及資產(chǎn)到viking://資源的映射。服務(wù)端是協(xié)議解析的權(quán)威實(shí)現(xiàn)CLI 會(huì)把 Manifest 的原始 YAML使用單獨(dú) Catalog 文件時(shí)一并發(fā)送 Catalog YAML發(fā)送到當(dāng)前配置的 OpenViking 服務(wù)由服務(wù)端完成嚴(yán)格校驗(yàn)并返回執(zhí)行計(jì)劃服務(wù)端的解析接口本身不會(huì)創(chuàng)建資源。前置條件安裝支持 OpenViking Assets 的ovCLI。配置支持/api/v1/openviking-assets/resolve的 OpenViking 服務(wù)。確認(rèn) CLI 可以連接服務(wù)ov health最短路徑單文件 Manifest最簡(jiǎn)單的形態(tài)下 Manifest 是唯一需要的文件在catalog:下直接定義資產(chǎn)。創(chuàng)建manifest.yamlprotocol: openviking-assets/1 catalog: - name: openviking connector: git params: repo_url: https://github.com/volcengine/OpenViking branch: main字段說(shuō)明來(lái)自協(xié)議定義protocol定義catalog時(shí)必填當(dāng)前必須為openviking-assets/1。catalog是資產(chǎn)定義列表定義了catalog的 Manifest 自身就是完整配置。assets用于指定要執(zhí)行的資產(chǎn)名稱catalog在同一文件中時(shí)可省略——省略表示執(zhí)行上面定義的全部資產(chǎn)。資產(chǎn)名稱必須匹配[A-Za-z0-9][A-Za-z0-9._-]*connectorv1 只支持git。校驗(yàn)是嚴(yán)格的未知字段、重復(fù)資產(chǎn)名和不支持的連接器都會(huì)使整個(gè)解析失敗即使有問(wèn)題的資產(chǎn)沒(méi)有被本次執(zhí)行選擇。先做 dry-run 驗(yàn)證不實(shí)際提交ov add-resource --manifest manifest.yaml --args dry_run:truedry_run會(huì)讀取本地 YAML、調(diào)用服務(wù)端解析并校驗(yàn)協(xié)議、檢查所有auth_ref能否在本地解析、讓服務(wù)端用最終憑據(jù)對(duì)每個(gè) Git 倉(cāng)庫(kù)執(zhí)行只讀git ls-remote權(quán)限預(yù)檢并輸出每個(gè)資產(chǎn)將執(zhí)行的 create 或 sync 操作它不克隆倉(cāng)庫(kù)、不提交資源、不創(chuàng)建任務(wù)也不寫入 State。任何倉(cāng)庫(kù)不可讀時(shí)dry-run 立即以PERMISSION_DENIED退出不再輸出可執(zhí)行計(jì)劃。確認(rèn)計(jì)劃后去掉dry_run正式應(yīng)用ov add-resource --manifest manifest.yaml等待每個(gè)資源處理完成ov add-resource --manifest manifest.yaml --wait --timeout 600團(tuán)隊(duì)共享一個(gè) Catalog 配多個(gè) Manifest當(dāng)多個(gè) Manifest 復(fù)用同一批資源時(shí)把資產(chǎn)定義移到單獨(dú)的 Catalog 文件中通常命名為catalog.yaml。倉(cāng)庫(kù)中有一份完整示例位于examples/openviking-assetscatalog.yaml定義資產(chǎn)manifest.yaml按名稱選擇。catalog.yaml示例節(jié)選自倉(cāng)庫(kù)憑據(jù)不在此文件中auth_ref別名在各消費(fèi)者機(jī)器上解析protocol: openviking-assets/1 defaults: git: watch_interval: 1440 # 分鐘除被覆蓋外每個(gè)倉(cāng)庫(kù)每天刷新一次 catalog: - name: openviking connector: git description: OpenViking main repository — server, CLI and SDKs params: repo_url: https://github.com/volcengine/OpenViking branch: main - name: requests connector: git description: python-requests source, for HTTP client QA params: repo_url: https://github.com/psf/requests branch: main - name: flask connector: git description: Flask source, small enough for quick pilot runs watch_interval: 0 # 覆蓋該資產(chǎn)不自動(dòng)刷新 params: repo_url: gitgithub.com:pallets/flask.git branch: main每個(gè) Manifest 只需按名稱選擇資產(chǎn)例如manifest.yamlassets: - openviking - flask全團(tuán)隊(duì)維護(hù)一份 Catalog在 Catalog 中修改資產(chǎn)所有選擇它的 Manifest 都會(huì)生效。Catalog 也可以直接執(zhí)行ov add-resource -m catalog.yaml會(huì)導(dǎo)入它定義的全部資產(chǎn)。CLI 按以下規(guī)則查找 Catalog 文件傳入--args catalog:file時(shí)使用該路徑相對(duì)路徑基于當(dāng)前工作目錄。未傳入時(shí)讀取 Manifest 所在目錄下的catalog.yaml。定義了catalog的 Manifest 不使用單獨(dú)的 Catalog 文件同時(shí)傳入會(huì)導(dǎo)致解析失敗。憑據(jù)只存別名不存 tokenManifest 和 Catalog 只保存auth_ref別名不應(yīng)保存 token、密碼或私鑰。CLI 默認(rèn)從以下文件解析別名~/.openviking/openviking_assets_credentials.yaml示例credentials: team-git: username: oauth2 token: replace-with-your-token可以用環(huán)境變量覆蓋文件位置export OPENVIKING_ASSETS_CREDENTIALS_FILE/secure/path/assets-credentials.yaml執(zhí)行前CLI 先解析所有選中資產(chǎn)的auth_ref然后由服務(wù)端在實(shí)際執(zhí)行環(huán)境中用git ls-remote校驗(yàn)每個(gè)倉(cāng)庫(kù)的讀取權(quán)限。只要有一個(gè)別名不存在或倉(cāng)庫(kù)不可讀整個(gè)操作都會(huì)在提交任何資源之前失敗dry_run也執(zhí)行相同預(yù)檢。如果目標(biāo)服務(wù)已經(jīng)具備訪問(wèn)倉(cāng)庫(kù)所需的 SSH key 或其他認(rèn)證配置可以不設(shè)置auth_ref。解析出的 Git 參數(shù)會(huì)通過(guò)當(dāng)前配置的 OpenViking 服務(wù)連接發(fā)送因此遠(yuǎn)程部署應(yīng)使用 TLS并限制憑據(jù)文件的本地訪問(wèn)權(quán)限。重復(fù)構(gòu)建靠 Statecreate / sync / orphan非 dry-run 執(zhí)行后CLI 會(huì)在 Manifest 旁寫入 State 文件例如manifest.yaml.state.json。State 使用openviking-assets-state/1協(xié)議記錄asset_id、名稱、連接器、定位符和 ref、對(duì)應(yīng)的resource_uri和task_id以及最近一次執(zhí)行狀態(tài)、錯(cuò)誤和時(shí)間。重復(fù)執(zhí)行時(shí)按以下規(guī)則判定條件行為State 中沒(méi)有該asset_id的資源 URIcreate創(chuàng)建新資源State 中已有資源 URIsync把 URI 作為to再次調(diào)用add_resource資產(chǎn)不再被 Manifest 選擇報(bào)告 orphan保留資源和 State不自動(dòng)刪除asset_id因來(lái)源或分支變化創(chuàng)建新資產(chǎn)舊資產(chǎn)成為 orphan服務(wù)端根據(jù)connector normalized locator ref生成穩(wěn)定的asset_idGit URL 會(huì)去除協(xié)議、用戶名前綴、端口、結(jié)尾的.git和/并把主機(jī)名統(tǒng)一為小寫。資產(chǎn)名稱不參與身份計(jì)算——重命名資產(chǎn)但保持來(lái)源和分支不變時(shí)會(huì)繼續(xù)關(guān)聯(lián)原資源修改來(lái)源或分支時(shí)會(huì)產(chǎn)生新資產(chǎn)舊資源被報(bào)告為 orphan。State 屬于執(zhí)行環(huán)境不是 Catalog 或 Manifest 協(xié)議的一部分。共享 Manifest 倉(cāng)庫(kù)通常應(yīng)在.gitignore中加入*.state.json。不要并發(fā)執(zhí)行同一個(gè) Manifest當(dāng)前 State 文件不提供跨進(jìn)程鎖。更新周期 watch_intervalwatch_interval的優(yōu)先級(jí)從高到低為CLI 的--watch-interval單個(gè)資產(chǎn)的watch_intervaldefaults.git.watch_interval0不自動(dòng)刷新。例如臨時(shí)把 Manifest 中全部資產(chǎn)調(diào)整為每 60 分鐘刷新ov add-resource --manifest manifest.yaml --watch-interval 60后續(xù)內(nèi)容刷新由 Watch 執(zhí)行。當(dāng)最終watch_interval大于0時(shí)OpenViking 會(huì)把通過(guò)auth_ref解析出的 HTTPS Git token 保存到 Watch task 私有且與倉(cāng)庫(kù) URL 綁定的鑒權(quán)狀態(tài)中周期為0時(shí)token 仍只在本次請(qǐng)求內(nèi)使用。Git PAT 沒(méi)有通用刷新流程token 過(guò)期或被撤銷后需要重建 Watch。重新運(yùn)行 Manifest 仍可用于應(yīng)用 Catalog/Manifest 構(gòu)成變化、恢復(fù)失敗資產(chǎn)或顯式觸發(fā)同步。失敗處理權(quán)限預(yù)檢先于所有資源提交。任一資產(chǎn)預(yù)檢失敗時(shí)命令立即以原始錯(cuò)誤碼退出例如PERMISSION_DENIED不提交任何資產(chǎn)、不創(chuàng)建后臺(tái)任務(wù)、不寫入 Stateskip_failed不會(huì)跳過(guò)預(yù)檢失敗。只有全部預(yù)檢成功后才進(jìn)入逐資產(chǎn)執(zhí)行階段。默認(rèn)采用 fail-fast當(dāng)前資產(chǎn)失敗、后續(xù)資產(chǎn)標(biāo)記為未嘗試、已成功資產(chǎn)和失敗記錄寫入 State、命令以非零狀態(tài)退出。需要某個(gè)資產(chǎn)失敗后繼續(xù)處理其余資產(chǎn)時(shí)ov add-resource --manifest manifest.yaml --args skip_failed:trueskip_failed不會(huì)把部分失敗轉(zhuǎn)換為成功只要有資產(chǎn)失敗命令最終仍以非零狀態(tài)退出已經(jīng)成功的資源不會(huì)回滾。全部資產(chǎn)失敗時(shí)命令會(huì)報(bào)告沒(méi)有任何資產(chǎn)成功應(yīng)用。當(dāng)前限制只支持 Git 資產(chǎn)Manifest 必須平鋪不支持遞歸include。服務(wù)端 resolver 只返回計(jì)劃不執(zhí)行批量提交CLI 按順序逐個(gè)執(zhí)行資產(chǎn)。preflight 通過(guò)只讀git ls-remote校驗(yàn)倉(cāng)庫(kù)權(quán)限不下載倉(cāng)庫(kù)內(nèi)容。不自動(dòng)刪除 orphanState 是本地文件不在多臺(tái)機(jī)器之間自動(dòng)同步。不包含ov share指針碼或從現(xiàn)有知識(shí)庫(kù)導(dǎo)出 Manifest 的能力。CLI 和服務(wù)端都必須支持同一協(xié)議版本。如果你需要開發(fā)自定義客戶端可以直接請(qǐng)求POST /api/v1/openviking-assets/resolve返回標(biāo)準(zhǔn)化資產(chǎn)計(jì)劃不克隆倉(cāng)庫(kù)、不創(chuàng)建資源、不啟動(dòng)同步任務(wù)和POST /api/v1/openviking-assets/preflight在服務(wù)端實(shí)際運(yùn)行環(huán)境執(zhí)行只讀git ls-remote校驗(yàn)倉(cāng)庫(kù)與可選 ref 是否可讀詳見(jiàn) OpenViking Assets API。完整協(xié)議與運(yùn)行指南見(jiàn) OpenViking Assets 指南?!久赓M(fèi)下載鏈接】OpenVikingSelf-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/op/OpenViking創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考