
OpenViking TOS 发布与安装完全指南install.sh / openviking.tgz / manifest.json 三文件协议详解【免费下载链接】OpenVikingSelf-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.项目地址: https://gitcode.com/GitHub_Trending/op/OpenVikingOpenViking 插件通过火山引擎 TOS对象存储完成跨区域发布与一键安装本文以 openviking-tos-install-guide.md 为核心骨架结合 examples/openclaw-plugin 下的install.sh、upload_tos.py、release-to-tos.sh与测试用例的源码实现系统讲解这套发布协议的目录策略、域名规则、安装参数与发布流程。读完本文你将掌握如何从 TOS 下载并安装指定区域、指定日期的 OpenViking 插件包也能理解发布端如何将三件套产物上传到多区域 bucket 并安全发布latest。1. 发布协议总览一次发布三个文件覆盖四个区域当前发布协议只发布三个文件文件作用install.sh兼容多区域的统一安装脚本由用户直接执行openviking.tgz插件压缩包内含openviking目录package.json、dist/index.js、openclaw.plugin.json、skills/、node_modules/sinclair/typebox等manifest.json描述文件记录版本、环境、TOS bucket/region/endpoint、artifacts 的路径与 sha256 校验和三个文件会覆盖上传到 4 个 TOS bucket并设置对象 ACL 为公开读public-readarkclaw-ov-cn-beijing arkclaw-ov-cn-guangzhou arkclaw-ov-cn-shanghai arkclaw-ov每个 bucket 都先上传日期目录日期目录可用--release-dir yyyy.m.d指定未指定时按运行当天动态生成不能固定死某个日期源码中由default_release_dir()通过datetime.date.today()动态计算见 upload_tos.py。latest目录只有在组件稳定后显式指定--publish-latest才上传latest/install.sh latest/openviking.tgz latest/manifest.json 2026.6.3/install.sh 2026.6.3/openviking.tgz 2026.6.3/manifest.json安装脚本默认安装latest/openviking.tgz如需安装固定日期版本可添加--date 2026.6.3。如果目标 bucket 不存在上传脚本会先自动创建 bucketensure_bucket先head_bucket探测404 时再create_bucket再上传对象。本文中的验证命令均使用 dry-run 或本地语法/单测校验不执行真实 TOS 上传。2. 域名规则内部域名与公网域名install.sh默认使用内部域名适用于内部网络环境ivolces.com公网测试或公网安装时需要显式添加--external此时脚本会使用公网域名volces.com从源码看域名后缀的切换由脚本中的INTERNAL_DOMAIN变量控制--internal置 1默认--external置 0见 install.sh。最终生成的 URL 形如https://bucket.tos-region.ivolces.com或https://bucket.tos-region.volces.com。上传端的public_url()与bucket_base_url()函数同样通过suffix ivolces.com if internal else volces.com实现同样的规则保证发布与下载两侧的 URL 契约一致。3. 已发布的公网下载地址以下为四个区域的公网volces.com下载地址均同时包含latest与日期目录2026.6.3两套路径3.1 arkclaw-ov-cn-beijinghttps://arkclaw-ov-cn-beijing.tos-cn-beijing.volces.com/latest/install.sh https://arkclaw-ov-cn-beijing.tos-cn-beijing.volces.com/latest/openviking.tgz https://arkclaw-ov-cn-beijing.tos-cn-beijing.volces.com/latest/manifest.json https://arkclaw-ov-cn-beijing.tos-cn-beijing.volces.com/2026.6.3/install.sh https://arkclaw-ov-cn-beijing.tos-cn-beijing.volces.com/2026.6.3/openviking.tgz https://arkclaw-ov-cn-beijing.tos-cn-beijing.volces.com/2026.6.3/manifest.json3.2 arkclaw-ov-cn-guangzhouhttps://arkclaw-ov-cn-guangzhou.tos-cn-guangzhou.volces.com/latest/install.sh https://arkclaw-ov-cn-guangzhou.tos-cn-guangzhou.volces.com/latest/openviking.tgz https://arkclaw-ov-cn-guangzhou.tos-cn-guangzhou.volces.com/latest/manifest.json https://arkclaw-ov-cn-guangzhou.tos-cn-guangzhou.volces.com/2026.6.3/install.sh https://arkclaw-ov-cn-guangzhou.tos-cn-guangzhou.volces.com/2026.6.3/openviking.tgz https://arkclaw-ov-cn-guangzhou.tos-cn-guangzhou.volces.com/2026.6.3/manifest.json3.3 arkclaw-ov-cn-shanghaihttps://arkclaw-ov-cn-shanghai.tos-cn-shanghai.volces.com/latest/install.sh https://arkclaw-ov-cn-shanghai.tos-cn-shanghai.volces.com/latest/openviking.tgz https://arkclaw-ov-cn-shanghai.tos-cn-shanghai.volces.com/latest/manifest.json https://arkclaw-ov-cn-shanghai.tos-cn-shanghai.volces.com/2026.6.3/install.sh https://arkclaw-ov-cn-shanghai.tos-cn-shanghai.volces.com/2026.6.3/openviking.tgz https://arkclaw-ov-cn-shanghai.tos-cn-shanghai.volces.com/2026.6.3/manifest.json3.4 arkclaw-ov默认 bucket北京区域https://arkclaw-ov.tos-cn-beijing.volces.com/latest/install.sh https://arkclaw-ov.tos-cn-beijing.volces.com/latest/openviking.tgz https://arkclaw-ov.tos-cn-beijing.volces.com/latest/manifest.json https://arkclaw-ov.tos-cn-beijing.volces.com/2026.6.3/install.sh https://arkclaw-ov.tos-cn-beijing.volces.com/2026.6.3/openviking.tgz https://arkclaw-ov.tos-cn-beijing.volces.com/2026.6.3/manifest.json4. 推荐安装方式五种典型场景4.1 内部网络安装 latest默认在内部网络环境中直接下载对应区域的install.sh并执行即可。脚本默认使用内部域名并安装latest/openviking.tgz。以广州区域为例wget https://arkclaw-ov-cn-guangzhou.tos-cn-guangzhou.ivolces.com/latest/install.sh -O install.sh bash install.sh --region cn-guangzhou4.2 公网安装 latest公网环境需要使用公网下载地址并在执行脚本时加--externalwget https://arkclaw-ov-cn-guangzhou.tos-cn-guangzhou.volces.com/latest/install.sh -O install.sh bash install.sh --external --region cn-guangzhou4.3 安装固定日期版本如需安装2026.6.3固定版本wget https://arkclaw-ov-cn-guangzhou.tos-cn-guangzhou.volces.com/2026.6.3/install.sh -O install.sh bash install.sh --external --region cn-guangzhou --date 2026.6.34.4 指定 bucket 安装如果使用默认 bucketarkclaw-ov可指定 bucketwget https://arkclaw-ov.tos-cn-beijing.volces.com/latest/install.sh -O install.sh bash install.sh --external --region cn-beijing --bucket arkclaw-ov4.5 自定义 TOS Base URL如果希望完全指定下载根路径可使用--tos-base-urlbash install.sh --tos-base-url https://arkclaw-ov.tos-cn-beijing.volces.com默认下载https://arkclaw-ov.tos-cn-beijing.volces.com/latest/openviking.tgz如果需要日期目录bash install.sh --tos-base-url https://arkclaw-ov.tos-cn-beijing.volces.com --date 2026.6.3对应下载https://arkclaw-ov.tos-cn-beijing.volces.com/2026.6.3/openviking.tgz5. install.sh 参数速查参数说明默认值--internal使用内部域名ivolces.com默认开启--external使用公网域名volces.com关闭--latest安装latest/openviking.tgz默认开启--date date安装日期目录版本如2026.6.3/openviking.tgz无--release-path path安装自定义目录下的openviking.tgzlatest--region region指定区域如cn-beijing/cn-guangzhou/cn-shanghai自动识别失败时为cn-beijing--bucket bucket指定 bucket 名称arkclaw-ov--tos-base-url url完整指定 TOS 根 URL自动按 bucket/region/domain 生成--manifest-url url完整指定 manifest URL自动按 bucket/region/domain/release-path 生成--source local从install.sh同目录安装本地openviking.tgz远端下载--tarball path从指定本地 tgz 安装无--verify-only仅下载/校验不安装关闭--dry-run打印动作不执行下载/安装关闭--no-restart安装后不重启 OpenClaw gateway默认会重启除上表之外脚本还支持一组与 OpenViking 服务对接的配置参数用于安装后自动写入服务环境与 OpenClaw 插件配置详见第 6 节--openclaw-state-dir、--base-url/--openviking-base-url、--api-key/--openviking-api-key、--peer-role、--peer-prefix、--account-id、--user-id、--recall-resources 0|1、--recall-target-types types以及--source tos|tarball|local|existingexisting复用已安装插件、只做配置检查。6. 安装脚本实现原理从 URL 解析到插件部署6.1 下载源选择install.sh通过--source支持四种来源见脚本参数解析逻辑tos/remote默认走download_and_install()先下载manifest.json失败不中断提示 Manifest is unavailable; continuing with direct package download再下载openviking.tgz并解压安装local/tarball从--tarball path指定的本地 tgz或脚本同目录的openviking.tgz安装existing复用当前已安装的插件只执行配置检查不做任何下载与文件变更。下载工具优先使用curl带--retry 3 --connect-timeout 10 --max-time 300退而求其次使用wget两者都缺失时报错退出。6.2 URL 动态解析与区域发现脚本的 URL 解析遵循明确的优先级显式传入--tos-base-url时直接使用会去掉末尾/否则通过discover_region()尝试自动识别区域若显式指定了--region则直接使用否则请求http://100.96.0.96/latest/region_id内部元数据地址超时 2 秒获取区域识别到区域后若 bucket 是默认的arkclaw-ov会自动拼接为arkclaw-ov-region例如广州即arkclaw-ov-cn-guangzhou再按--internal/--external选择ivolces.com/volces.com后缀生成https://bucket.tos-region.suffix区域识别失败时回退为https://bucket.tos-region.volces.com其中 region 取默认值cn-beijing。包地址与 manifest 地址分别由package_url()与manifest_url()生成格式为base-url/release-path/openviking.tgz与base-url/release-path/manifest.json其中release-path默认latest由--date或--release-path覆盖。6.3 安装与部署动作真实安装流程install_package_from_tgz依次执行tar -tzf校验 tgz 可读--verify-only模式下到此为止解压到临时目录强制校验openviking/package.json、openclaw.plugin.json、dist/index.js、node_modules/sinclair/typeboxdist/index.js的运行时依赖、skills/均存在将openviking/整体部署到$OPENCLAW_STATE_DIR/extensions/openviking默认~/.openclaw/extensions/openviking并把skills/下的各技能同步到$SKILLS_DIR默认~/.agents/skills更新~/.openclaw/openclaw.json通过jq将openviking加入plugins.allow、启用plugins.entries.openviking且仅在未设置 context engine 时把plugins.slots.contextEngine设为openviking已有其他 context engine 时保留原值并给出切换提示原配置会先以backup/openclaw.json.bak.md5备份若传入了--openviking-base-url/--openviking-api-key会写入~/.openclaw/openviking.env权限 600密钥展示时脱敏并执行openclaw openviking setup --base-url ... --api-key ... --force-slot完成服务对接默认调用openclaw gateway restart重启 OpenClaw gateway 并查询插件状态--no-restart可跳过。6.4 安全与可观测细节dry-run 模式下所有下载/安装/重启动作只打印不执行命令行中的 API Key 会被redact_arg()脱敏脚本开头set -euo pipefail并在ERRtrap 中输出 installation failed失败即退出--verify-only配合--source existing可做纯配置冒烟检查对应测试见 tos-release-contract.test.ts 中的does not run OpenViking setup during verify-only mode用例。7. 发布流程从构建三件套到多 bucket 上传7.1 上传脚本 upload_tos.py上传脚本路径scripts/upload_tos.py执行上传真实上传需要TEAM_TEST_AK/TEAM_TEST_SKpython3 scripts/upload_tos.py --release-dir 2026.6.3只验证脚本路径、对象 key、bucket 与 latest 策略不真实上传 TOSpython3 scripts/upload_tos.py --release-dir 2026.6.3 --dry-run不指定--release-dir时脚本默认使用运行当天的yyyy.m.d作为日期目录。组件稳定后再发布 latestpython3 scripts/upload_tos.py --release-dir 2026.6.3 --publish-latest上传脚本会读取环境变量TEAM_TEST_AK TEAM_TEST_SK上传对象install.sh openviking.tgz manifest.json上传路径2026.6.3/install.sh 2026.6.3/openviking.tgz 2026.6.3/manifest.json latest/install.sh # 仅 --publish-latest 时上传 latest/openviking.tgz # 仅 --publish-latest 时上传 latest/manifest.json # 仅 --publish-latest 时上传上传目标 bucketarkclaw-ov-cn-beijing arkclaw-ov-cn-guangzhou arkclaw-ov-cn-shanghai arkclaw-ov如果 bucket 不存在上传脚本会自动创建对应 bucket。上传时已设置对象 ACLpublic-read。7.2 上传脚本的实现要点从 upload_tos.py 源码可以看到几个关键实现区域与 bucket 的映射BUCKET_SPECS定义了 4 个BucketSpec(bucket, region)其中arkclaw-ov位于cn-beijingendpoint 统一为https://tos-region.volces.com按 bucket 定制安装脚本stamp_bucket_installer()通过正则把模板install.sh中的DEFAULT_TOS_BASE_URL与RELEASE_PATH替换为该 bucket 对应的地址与目录stamped后的脚本授予 755 权限确保用户下载到的install.sh天然指向正确的 bucket——这就是为什么上文 4.1~4.4 需要先下载对应区域的 install.shmanifest 定制与校验和stamp_bucket_manifest()在manifest.json中写入tos.bucket/region/endpoint并把install.sh、openviking.tgz的path、size与sha256file_sha256()分块计算刷新为与当前日期目录一致上传参数put_object_from_file()显式设置acltos.ACLType.ACL_Public_Read、按文件名选择 Content-Typeinstall.sh为text/x-shellscript; charsetutf-8.tgz为application/gzipJSON 为application/json; charsetutf-8并forbid_overwriteFalse允许覆盖上传上传后再put_object_acl与head_object校验bucket 自动创建ensure_bucket()先head_bucket捕获 404/NotFound 类异常后调用create_bucketlatest 策略release_paths(release_dir, publish_latest)默认只返回日期目录只有--publish-latest才追加latest且上传完成后若无--publish-latest会打印提示 latest/ was not updated. Re-run with --publish-latest only after the dated release is stable.。7.3 完整发布入口 release-to-tos.sh完整发布入口会先构建三文件产物再调用上传脚本TEAM_TEST_AK... TEAM_TEST_SK... scripts/release-to-tos.sh --release-dir 2026.6.3 TEAM_TEST_AK... TEAM_TEST_SK... scripts/release-to-tos.sh --release-dir 2026.6.3 --publish-latest仅做发布脚本正确性验证、不上传 TOSscripts/release-to-tos.sh --release-dir 2026.6.3 --dry-runrelease-to-tos.sh 的完整流程为解析参数--release-dir/--date、--version、--tag、--publish-latest、--dry-run非 dry-run 时强制要求TEAM_TEST_AK与TEAM_TEST_SK缺失即报错退出未指定--release-dir时由today_release_dir()node 一行脚本取当天yyyy.m.d--version默认取package.json的 version--tag默认vversion并记录git rev-parse HEAD调用 build.sh 构建产物npm install→npm run typecheck→npm test→npm run build将dist/、skills/、config/、openclaw.plugin.json、install-manifest.json等打包进openviking/目录产出output/openviking.tgz同时用sed把install.sh的VERSION与RELEASE_PATH替换为本次发布值输出output/install.sh调用generate-release-manifest.mjs生成output/manifest.json携带--env prod --version --tag --git-hash --artifact与 bucket/region/endpoint/release-dir最终调用upload_tos.py完成多 bucket 上传。值得注意的是旧的 Node.js 多版本发布客户端 tos-release-client.mjs 已标记为 deprecated其执行后直接输出提示 Simplified TOS protocol is now handled by scripts/release-to-tos.sh and scripts/upload_tos.py 并以退出码 1 结束统一收敛到一个 install.sh 日期目录/latest的简化协议。8. 发布契约的自动化验证8.1 本地脚本测试本地只验证脚本正确性不做真实 TOS 上传。已通过以下测试npx vitest run tests/ut/tos-release-contract.test.ts PYTHONDONTWRITEBYTECODE1 python3 scripts/test_upload_tos.py bash -n scripts/install.sh bash -n scripts/release-to-tos.sh node --check scripts/generate-release-manifest.mjs node --check scripts/tos-release-client.mjs测试覆盖默认使用latest/openviking.tgz--date 2026.6.3使用日期目录默认内部域名为ivolces.com--external使用公网域名volces.com上传脚本默认只上传指定日期目录--publish-latest时才上传latest不指定--release-dir时动态使用当天日期目录bucket 不存在时自动创建 bucket上传对象使用public-readACL。8.2 测试用例的源码依据test_upload_tos.py 通过 importlib 直接加载upload_tos.py模块并注入 FakeClient 验证上传行为覆盖4 个 bucket 与区域的映射、release_paths与object_key的拼接、内部/公网 URL 生成、三个文件各自的上传 key 与 Content-Type、ACL_Public_Read与forbid_overwriteFalse、ensure_bucket的 404→create_bucket行为、dry-run 不调用 TOS、--publish-latest才出现latest/前缀的 6 个 key。tos-release-contract.test.ts 则从契约层面约束发布体系release-to-tos.sh必须包含set -euo pipefail、today_release_dir、--publish-latest、TEAM_TEST_AK/SK校验与output/manifest.json且不允许再出现旧的latest.json逻辑install.sh必须保持单一全局安装器形态默认下载tos-base-url/latest/openviking.tgz、支持--manifest-url/--verify-onlymanifest.json的兼容性字段minOpenclawVersion、recommendedOpenclawVersion、minOpenvikingVersion、recommendedOpenvikingVersion、minGatewayVersion、minNodeVersion等必须与 install-manifest.json 保持一致避免两份 manifest 发生分歧upload_tos.py必须使用TosClientV2/put_object_from_file/put_object_acl/ensure_bucket/stamp_bucket_installer/stamp_bucket_manifest/hashlib.sha256且不允许硬编码DEFAULT_RELEASE_DIR 2026.6.3日期目录必须动态生成。9. 常见问题9.1 为什么公网测试必须加 --external因为ivolces.com是内部域名在当前公网测试环境无法连通。加--external后脚本会改用volces.com公网域名。9.2 默认不指定日期时安装哪个版本默认安装latest/openviking.tgz。9.3 如何回滚到固定日期目录使用--datebash install.sh --date 2026.6.3公网环境bash install.sh --external --date 2026.6.3由于日期目录与latest目录并存且不会自动互相覆盖--date是天然的回滚手段即使latest已推进到新版本只要历史日期目录仍在 TOS 上即可精确回退到任意已发布版本。9.4 覆盖上传是否安全本次需求明确要求同路径已有文件直接覆盖。上传脚本未开启禁止覆盖forbid_overwriteFalse并在每次上传时设置public-readACL。与此同时覆盖只发生在发布端显式执行上传时对安装端而言每次安装仍以独立目录部署extensions/openviking会先删除后重建skills/逐个技能目录替换并保留openclaw.json的 md5 备份。10. 快速决策参考场景推荐命令内部网络装 latest广州bash install.sh --region cn-guangzhou公网装 latest广州bash install.sh --external --region cn-guangzhou公网装固定版本 2026.6.3bash install.sh --external --region cn-guangzhou --date 2026.6.3指定默认 bucket arkclaw-ovbash install.sh --external --region cn-beijing --bucket arkclaw-ov完全自定义下载根bash install.sh --tos-base-url url [--date date]只下载校验不安装bash install.sh --verify-only预演安装动作bash install.sh --dry-run本地 tgz 安装bash install.sh --tarball ./openviking.tgz复用已装插件做配置检查bash install.sh --source existing --verify-only发布侧则记住一条铁律日期目录随时可发latest只在组件稳定后用--publish-latest显式发布所有验证优先走--dry-run真实发布才需要TEAM_TEST_AK/TEAM_TEST_SK。相关文件均可继续在仓库中查阅发布指南、安装契约文档、安装脚本、上传脚本、发布入口、构建脚本、发布契约测试。【免费下载链接】OpenVikingSelf-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.项目地址: https://gitcode.com/GitHub_Trending/op/OpenViking创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考