huaweicloud/huaweicloud-skills

huawei-cloud-openviking-agent-integration

Integrate and unbind OpenViking long-term memory with coding agents.

View source
Original skill document

Rendered from the source repository. Headings, examples, code, tables, links, and referenced images are preserved.

Huawei Cloud Agent Integration (OpenViking Long-Term Memory)

Overview

Integrate and unbind OpenViking long-term memory with coding agents. Most agents run in bwrap sandboxes under /root/job-envs/sandboxes/ and use their native mechanism — MCP (mcp__openviking__* tools) or the HTTP memory provider — so the integration survives agent upgrades and matches how each agent natively consumes memory.

Integration writes are template-level persistent for sandbox agents: config is injected into the agent's start.sh / config templates under /root/template/<agent>/, so a sandbox stop + start (which re-runs start.sh) preserves the integration.

What Good Looks Like

  • scripts/status.sh reports all 8 agents as (template + live).
  • scripts/verify_mcp.sh passes the full MCP handshake (initialize → tools/list → health) against http://127.0.0.1:1933/mcp.
  • Restarting a sandbox does not lose the integration (template-level persistence, not live-only).
  • Agents surface OpenViking tools natively: mcp__openviking__* for MCP-based agents, dual-channel (MCP + native viking_*) for JiuwenSwarm.
  • Unbinding removes every trace: template blocks, live config, skills/AGENTS.md, config backups, and openviking keys in settings.json.
  • User authorization (confirm) is required for every mutation — nothing changes silently.

Supported Agents

AgentNative mechanismPersistence
CodeArts CLIMCP in .codeartsdoer/codearts_cli.json + 4-section prompt (aligned with official openviking-memory skill semantics)Template start.sh + live sandbox
OpenCodeOfficial @openviking/opencode-plugin (installed on demand: npm domestic mirror first, on-demand GitHub raw mirror fallback; deployed from $RUNTIME/opencode/openviking-plugin/; @opencode-ai/plugin SDK via npm) + official openviking-config.json fieldsTemplate start.sh (on-demand plugin install)
OpenClawOfficial clawhub:@openviking/openclaw-plugin + openviking setup --json contract (domestic npm mirror fallback → on-demand source build fallback) + contextEngine slotTemplate start.sh
HermesOfficial built-in memory provider (memory.provider: openviking, no MCP SDK)Template start.sh + live sandbox
JiuwenSwarmDual-channel: native memory provider (memory.engine: both + memory.external.provider: openviking, HTTP REST) + MCP server (streamable-http, 13 tools incl. search/recall/find) + auto_memory_enabled: trueTemplate start.sh + live config.yaml
KimiCodeMCP via mcp.jsonTemplate start.sh + live mcp.json
DeepSeek Harness (dsh)Official @openviking/dsh-memory-plugin bundle (installed on demand from volcengine/OpenViking via the domestic GitHub raw mirror list; self-contained peers + ESM-safe peer dep sync) installed into web/dsh-tui profile node_modules + dsh.profile.bundlesTemplate start.sh
Prime AgentOfficial @openviking/pi-coding-agent-extension (installed on demand from volcengine/OpenViking via the domestic GitHub raw mirror list, incl. tests/)Template start.sh + live extensions dir

Per-agent config files, injection blocks, and recall quotas: references/agent-configs.md.

Prerequisites

  • OpenViking server running and accessible (default http://127.0.0.1:1933):
bash
  curl -s http://127.0.0.1:1933/health
  # {"status":"ok","healthy":true,"version":"0.4.x","auth_mode":"dev"}
  • Agent sandboxes exist under /root/job-envs/sandboxes/ (managed by job-env-manager).
  • Host tools: curl, python3, bash. OpenCode/OpenClaw additionally need npm (domestic-first registry configured by the skill).
  • This skill operates on local bwrap sandboxes and the local hwcloud config only — no Huawei Cloud IAM policies required (see references/iam-policies.md).

参数确认 (Required Inputs)

ParameterRequiredDescriptionExample
--agent <name>Yes (unless --all)Target agent: codearts, opencode, openclaw, hermes, jiuwenswarm, kimicode, deepseek-harness, prime-agent--agent opencode
--allYes (unless --agent)Operate on all 8 agents--all
--endpoint <url>NoOpenViking server URL (default http://127.0.0.1:1933)--endpoint http://192.168.1.100:1933
--api-key <key>NoOpenViking API key (dev mode needs none). Never echo in chat or logs--api-key sk-xxx
--dry-runNoShow changes without applying them--dry-run
--yes / -yNoSkip authorization prompt (automation only)--yes
--jsonNostatus.sh: machine-readable output--json

Dependencies

  • OpenViking server ≥ 0.4.x on 127.0.0.1:1933 (MCP endpoint /mcp, streamable HTTP).
  • npm (domestic-first registries: mirrors.huaweicloud.com/repository/npm/registry.npmmirror.comregistry.npmjs.org) for OpenCode @opencode-ai/plugin SDK + @openviking/opencode-plugin, and OpenClaw plugin installs (ClawHub primary, npm mirrors as fallback, on-demand source build as third fallback).
  • No MCP SDK needed for Hermes — Hermes has a built-in OpenViking memory provider over HTTP REST (official 05-hermes.md).
  • openclaw CLI inside sandbox for openclaw openviking setup/status (official JSON contract).
  • dsh CLI (/root/runtime/deepseek-harness/bin/dsh) for DeepSeek Harness, plus the official @openviking/dsh-memory-plugin bundle installed on demand from volcengine/OpenViking (domestic GitHub raw mirror list first; self-contained peer deps for @deepseek-ai/dsh-llm/dsh-tools plus all transitive @deepseek-ai/* packages synced as ESM-safe real copies (not symlinks — Node.js v22 ESM resolver does not follow symlinks for bare specifier imports)) — installed into web/dsh-tui profile node_modules + dsh.profile.bundles, no pnpm needed.
  • API script conventions are Bash + curl + python3 only.

Plugin Sources (on-demand, domestic-first)

The skill ships no plugin code — industry convention is to install dependent plugins at integrate time from the ecosystem registry. Every integrate.sh run provisions the plugins it needs on demand (see scripts/common.sh):

  1. npm-published plugins (@openviking/opencode-plugin, @openviking/openclaw-plugin)

are installed via npm install using the domestic-first registry list (mirrors.huaweicloud.com/repository/npm/registry.npmmirror.comregistry.npmjs.org); the first reachable registry wins.

  1. GitHub-only plugins (@openviking/dsh-memory-plugin,

@openviking/pi-coding-agent-extension — not yet on npm) are fetched from the official volcengine/OpenViking repo through the domestic-first raw mirror list (ghfast.topgh-proxy.comraw.githubusercontent.com), with the GitHub API used only for commit/tree metadata (domestic proxies 403 on the API).

  1. Source check is retained — every downloaded file is verified **byte-for-byte against

the authoritative GitHub blob SHA** from the official tree, so content is only accepted if it matches upstream regardless of which mirror served the bytes.

  1. Changed-files-only download — the GitHub tree API is used to diff the previously

installed commit vs upstream; only changed/new files are downloaded (with retry/backoff). If nothing under the plugin dir changed, only the recorded .openviking-sync commit is bumped — no download.

  1. Offline resilience — installed copies live under /root/runtime/ (outside the

skill). If upstream is unreachable, the existing installed copy is reused as-is (warn), so integration never breaks on network hiccups.

  1. Fallthrough for OpenCode/OpenClaw — plugin runtime installs sit at

/root/runtime/opencode/openviking-plugin and /root/runtime/openclaw/openviking-plugin-source respectively, giving each agent npm first → on-demand runtime copy semantics.

  1. Cache-first on sandbox restart (stop+start / undeploy+deploy) — template

start.sh blocks use a 3-tier cache strategy to avoid re-downloading plugins on every boot:

  • Tier 1 (already installed): Plugin already in sandbox node_modules → skip

entirely (survives stop+start). Logs cache hit.

  • Tier 2 (runtime cache): Copy from /root/runtime/<agent>/... persistent

cache → no network call (survives undeploy+deploy, since /root/runtime/ is outside the sandbox lifecycle).

  • Tier 3 (online fallback): npm install / ClawHub → only on first integrate

or cache miss. Logs Cache miss.

  • DeepSeek Harness peer deps: The 193-package @deepseek-ai/* sync loop is

guarded by a .openviking-peers-synced marker file — if present, the entire copy loop is skipped. Marker is written after first sync completes.

  • Prime Agent: Already optimized via diff -q check (no change needed).

核心命令

功能命令
查看集成状态scripts/status.sh--json 机器可读,--agent <name> 指定 Agent)
验证 MCP 端点scripts/verify_mcp.sh
集成单个 Agentscripts/integrate.sh --agent <name> [--endpoint URL] [--api-key KEY] [--dry-run] [--yes]
集成全部 Agentscripts/integrate.sh --all
解绑单个 Agentscripts/unbind.sh --agent <name> [--dry-run] [--yes]
解绑全部 Agentscripts/unbind.sh --all

Workflow

Task 1: Check Integration Status

bash
SKILL_DIR=/root/.agents/skills/huawei-cloud-openviking-agent-integration
$SKILL_DIR/scripts/status.sh          # human-readable
$SKILL_DIR/scripts/status.sh --json   # machine-readable

Status values per agent:

  • template + live — fully integrated and active
  • template only — will activate on next restart
  • live only — will be lost on restart (needs template fix)

Task 2: Verify MCP Endpoint

bash
$SKILL_DIR/scripts/verify_mcp.sh

Performs the full MCP protocol handshake (initialize → notifications/initialized → tools/list → tools/call health) and lists the OpenViking tools (find, search, recall, read, list, remember, add_resource, …).

Task 3: Integrate a Single Agent

bash
$SKILL_DIR/scripts/integrate.sh --agent opencode                       # interactive (asks for confirmation)
$SKILL_DIR/scripts/integrate.sh --agent opencode --endpoint URL --api-key KEY
$SKILL_DIR/scripts/integrate.sh --agent opencode --dry-run             # preview only
$SKILL_DIR/scripts/integrate.sh --agent opencode --yes                 # automation only

Task 4: Integrate All Agents

bash
$SKILL_DIR/scripts/integrate.sh --all

Task 5: Unbind a Single Agent

bash
$SKILL_DIR/scripts/unbind.sh --agent opencode
$SKILL_DIR/scripts/unbind.sh --agent opencode --dry-run
$SKILL_DIR/scripts/unbind.sh --agent opencode --yes

Task 6: Unbind All Agents

bash
$SKILL_DIR/scripts/unbind.sh --all

Task 7: Rebuild OpenClaw Sandbox (Apply Template Changes)

OpenClaw's gateway runs in an ephemeral bwrap; stop + start re-runs start.sh, which reinstalls the plugin and applies endpoint config. Do:

  1. curl -s -X POST $BASE/envs/openclaw/stop (poll until stopped)
  2. curl -s -X POST $BASE/envs/openclaw/start (poll until running)
  3. Verify: scripts/integrate.sh --agent openclaw --dry-run reports endpoint configured

Full restart/rebuild scripts (including the stop → delete → create → deploy fallback) and live-config verification from outside bwrap: references/related-commands.md.

Authorization Model

Both integrate.sh and unbind.sh require explicit user confirmation before modifying any agent configuration:

━━━ Authorization Required ━━━
  Action:   Integrate OpenViking MCP
  Agent:    opencode
  Details:  Add OpenViking MCP to OpenCode template start.sh (persistent across restarts)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Type 'confirm' to proceed:
  • The user must type exactly confirm; any other input aborts.
  • --yes / -y skips the prompt (for automation only).
  • --dry-run shows what would happen without requiring authorization.
  • Never integrate or unbind without explicit user confirmation — see references/guardrails.md for the full rules.

Safety Rules

  • Authorization is mandatory — never integrate or unbind without explicit user confirmation.
  • Do not fabricate integration state — always run status.sh to verify before reporting.
  • Never edit agent configs directly on the host — all changes go through the skill scripts.
  • No API keys in logs--api-key values must never appear in output or logs.
  • Dry-run first for unfamiliar targets.
  • Slow responses are not an integration bug — check model API TTFB before blaming MCP (see references/troubleshooting.md).

Validation Rules

Quick verification after any integration or unbinding:

bash
$SKILL_DIR/scripts/status.sh          # all agents green
$SKILL_DIR/scripts/verify_mcp.sh      # MCP handshake passes

Acceptance criteria for each workflow (integrate/unbind per agent): references/acceptance-criteria.md. Step-by-step verification methods: references/verification-method.md.

References

DocumentDescription
agent-configs.mdPer-agent config files, injection blocks, persistence patterns, recall quotas, MCP tools
guardrails.mdSafety and authorization rules
troubleshooting.mdCommon failure scenarios, slow-response diagnostics (model TTFB vs network vs MCP), and fixed unbind cleanup issues
iam-policies.mdEquivalent access controls (no Huawei Cloud IAM needed)
verification-method.mdStep-by-step verification for each workflow
related-commands.mdRestart/rebuild scripts, inspection commands, live-config verification
acceptance-criteria.mdAcceptance criteria for integration/unbinding
demo/example-input.jsonExample input for the integration workflow

Scripts (OO Architecture)

The scripts use an object-oriented design with a base class, registry pattern, and per-agent subclasses. Adding a new agent = create one file in agents/.

scripts/
  lib/                        ── Framework (shared infrastructure)
    ui.sh                     Logging, authorization, dry-run, i18n
    json.sh                   JSON read/write/has/remove helpers
    plugins.sh                Plugin provisioning (npm + GitHub, SHA-1 verified)
    base.sh                   Agent base class: sandbox discovery, backup, confirm,
                              template injection, health check, default interface
    registry.sh               Agent registry: auto-discover, list, validate, dispatch
  agents/                     ── Agent subclasses (one file per agent)
    codearts.sh               CodeArts CLI — MCP in codearts_cli.json
    opencode.sh               OpenCode — plugin + openviking-config.json
    openclaw.sh               OpenClaw — ClawHub plugin + contextEngine
    hermes.sh                 Hermes — built-in memory provider
    jiuwenswarm.sh            JiuwenSwarm — dual-channel (provider + MCP)
    kimicode.sh               KimiCode — MCP via mcp.json
    deepseek_harness.sh       DeepSeek Harness — dsh-memory-plugin bundle
    prime_agent.sh            Prime Agent — pi-coding-agent-extension
  integrate.sh                Thin entry point → registry dispatch (80 lines, was 1919)
  unbind.sh                   Thin entry point → registry dispatch (74 lines, was 1084)
  status.sh                   Thin entry point → registry dispatch (122 lines, was 345)
  unset.sh                    Alias for unbind.sh
  verify_mcp.sh               MCP protocol handshake (unchanged)
  common.sh                   Backward-compat shim → sources lib/*.sh

OO Design

  • Base class (lib/base.sh): defines agent::discover_sandbox, agent::backup_config,

agent::confirm, agent::has_injection, check_ov_health, create_ov_config, and default interface stubs (agent::default_integrate/unbind/status).

  • Agent metadata via associative array AGENT_META[name, sandbox_pattern, template_path, mechanism, ...],

populated by each subclass's agent_<name>_register().

  • Registry (lib/registry.sh): registry_discover() auto-sources all agents/*.sh,

registry_dispatch(agent, method) calls agent_<name>_<method>() with fallback to base.

  • Subclass override: each agents/<name>.sh defines agent_<name>_integrate/unbind/status,

calling base class methods for shared operations (backup, confirm, sandbox lookup).

  • Entry points (integrate/unbind/status.sh): parse CLI args → discover agents → dispatch.

No agent-specific logic in entry points — all in subclasses.

All scripts are idempotent and create .bak.<timestamp> backups before each modification.

from this repository

More skills

All skills
huaweicloud
Community

huawei-cloud-billing-scout

Huawei Cloud BSS billing (not AWS/Azure/other clouds; refuses pricing quotes, real-name review, and any non-billing scope): balance, spend, attribution, reconciliation, coupons, stored-value cards, enterprise/partner billing. One-page briefing via hcloud. Use only when the user explicitly mentions 华为云 / Huawei Cloud / BSS and 余额/账单/对账/资源包/代金券/储值卡/企业或伙伴账务; refuses pay, renew, refund, delete.

installs
242
GitHub stars
20
Updated
8월 31일
huaweicloud
Community

huawei-cloud-cci-instance-management

Huawei Cloud CCI Container Instance Lifecycle Management Overview Manage Huawei Cloud CCI (Cloud Container Instance) full lifecycle using hcloud CLI (KooCLI). CCI is a serverless container service — no cluster management needed, just create a Namespace, define a Network, then deploy workloads directly. Architecture : hcloud CLI → CCI OpenAPI → Namespace / Network / Deployment / StatefulSet / Pod / EIPPool / Service / Ingress Constraints and Rules Security Rules Two step confirmation : All destructive operations (delete Namespace/Network/Deployment/StatefulSet/Pod/EIPPool) require explicit user confirmation — preview command, resource details, and risk warning first; execute only after user confirms. Credential security : Never expose AK/SK values in conversation, commands, or output. Only use hcloud configure list to check credential status (presence only). Prefer profile mode or environ

installs
242
GitHub stars
20
Updated
8월 31일
huaweicloud
Community

huawei-cloud-computing-query

Queries Huawei Cloud computing resources (ECS/BMS/IMS/AS), Covers ECS instances, flavors, keypairs, quotas, server groups, block devices, NICs, VNC console, BMS bare metal servers/flavors/quotas, IMS images/OS versions/members/quotas, and AS scaling groups/configs/policies/activity logs/lifecycle hooks/warm pools/quotas. No write operations. Use this skill when the user needs to query ECS instance details, list flavors, check BMS availability, browse images, or view auto-scaling group/policy status. Triggers: 弹性云服务器, ECS, 裸金属, BMS, 镜像, IMS, 弹性伸缩, AS, 伸缩组, 伸缩策略, 规格查询, flavor, instance, image, scaling.

installs
242
GitHub stars
20
Updated
8월 31일
huaweicloud
Community

huawei-cloud-find-skills

Invoke this skill to search, discover, browse, find and install any Huawei Cloud (华为云) agent skill.Triggers include: "华为云","华为云有什么skill","华为云相关skill","华为云agent skill 市场","华为云skill类目","explore Huawei Cloud skills","show Huawei Cloud skill categories","does a Huawei Cloud skill exist for...","which Huawei Cloud skills exist","搜索华为云技能","有没有管理ECS/OBS/RDS的skill","帮我找 XX 华为云skill","介绍 XX Skill 内容","华为云 XX Skill 具体做什么","安装华为云Skill".

installs
242
GitHub stars
20
Updated
8월 31일