Install
openclaw skills install @youkpan/zy-action-platformConnect and operate ZY Action Platform (AI Business Action System): guide verified install & DeepSeek key config, then health-check/login and, across the five products AIP/Foundry/Gotham/Apollo/Swift, run natural-language data queries, list/run automation workflows, query datasets/ontology, search i
openclaw skills install @youkpan/zy-action-platformThis skill helps you operate the in-house enterprise data intelligence platform ZY Action Platform (AI Business Action System): from "download & install (with integrity verification) and API-key configuration" to "connect & log in, query data, run automations, inspect deployments/intel". Activate this skill when the user mentions "ZY Action", "AI Business Action System", "Action Platform", or expresses intents like query data/analytics, run workflows/automations, list datasets/ontology/metrics, search intel/entities, check deployment status, in the context of a locally installed (or to-be-installed) platform. Politely decline unrelated requests.
The platform ships five independently runnable backend products (all started together by the one-click launcher; default ports below):
| Product | Code | Port | One-line capability |
|---|---|---|---|
| LightAIP | aip | 18080 | NLQ data query, automation workflows, datasources |
| LightFoundry | foundry | 18081 | Data integration, datasets, ontology/metrics, semantic search |
| LightApollo | apollo | 18082 | Deployment platform: desired state / deployments / drift / bundles / Spoke |
| LightGotham | gotham | 18083 | Intelligence analysis: search / knowledge graph / resolved entities / geo-temporal / reports |
| LightSwift | swift | 18084 | Onboard settlement (health check only in this skill) |
scripts/zy_platform.py (pure Python standard library). Invocation: python3 scripts/zy_platform.py <command> --product <product> [args]; use python on Windows when python3 is missing. If the script cannot run, tell the user Python 3 is missing or the path is wrong.--product defaults to aip; the product port is the default --base-url (http://127.0.0.1:<port>), so you usually don't pass it. For cross-machine/gateway access pass --base-url, and remote addresses must be https (see sections 7 and 8).[zy_platform]. Exit codes: 0 success / 1 argument error or local/security-policy refusal / 2 network unreachable or timeout (including certificate failure) / 3 HTTP error / 4 auth failure (401) / 5 business failure (envelope code≠0). Check the exit code and message before acting.https://zyinfo.pro/action/ and pick the versioned release artifact (e.g. ZY-Action-Platform_v2026.09.rar, several hundred MB, containing all five backends + frontend + one-click launcher). for that version.Run ZY Action System.exe (localized name), Stop All Services.bat, config.yaml.example, .env.example, bin/, docs/, etc. If a trusted package-manager channel (e.g. an official winget source) is available, prefer channels with signed metadata and rollback protection.config.yaml.example to config.yaml, open it, and under llm: → api_keys: fill the DeepSeek key at deepseek: "sk-..."; add dashscope for RAG/vector search. If the user is just demoing without PostgreSQL, change database.type from "PostgreSQL" to "SQLite" (SQLite is the default when config.yaml is absent). Equivalent: copy .env.example to .env and set DEEPSEEK_API_KEY=sk-.....bat). It starts the five backends plus the gateway and opens http://127.0.0.1/. After ~2–5 seconds verify readiness with the health command for each product.admin / admin1 (change the password after first login); users can also self-register in the UI. The user provides their own credentials for login in conversation. Recommend creating a dedicated read-only account for the AI assistant for query/list operations (see section 8).Stop All Services.bat in the root directory.python3 scripts/zy_platform.py health --product aip (repeat for foundry/apollo/gotham/swift as needed).python3 scripts/zy_platform.py login --product <product> --username <user> --password <pass> --dry-run. The script returns the normalized destination (JSON destination, e.g. http://127.0.0.1:18080/api/v1/auth/login) without sending anything. Show this address to the user verbatim and get explicit consent.--dry-run (the script also prints the destination to stderr). On success the token is cached under ~/.workbuddy/ (OS credential store preferred; otherwise a 0600 hardened fallback file, local machine only, never uploaded with the skill); later commands attach it automatically.--base-url points to a non-loopback address the script refuses and asks for --trust-host. Restate the normalized address to the user, get informed consent, then add the flag; the origin is remembered locally afterwards (logout --forget-host revokes).--token.logout --product <product> removes the current origin's token; logout --all clears everything; logout --all --forget-host also revokes all trusted origins. Offer logout when the session ends or the user asks.chat --product aip --query "<user's words>". NLQ turns natural language into SQL; the result contains sql_query/query_result/confidence. Summarize in the user's language; show the table only when asked. On LLM-related business errors, suggest checking the deepseek key in config.yaml and platform licensing.workflow-list --product aip to get workflow ids and confirm with the user; workflow-run --product aip --workflow-id <id> (optional --params '{"region":"east"}'); with the execution_id, poll workflow-status --product aip --execution-id <eid> (interval adapts to status, max ~60s) and report the conclusion and outputs; workflow-cancel when needed.datasource-list --product aip|foundry; audit-list --product aip.dataset-list, dataset-preview --dataset-id <id>, ontology-objects, ontology-search --query "<business semantics>" (recommended), metric-list, dashboard-list, report-list.search --query "<keyword>" --limit 5 (unified search across graph/entities/timeline/map), graph-nodes, graph-stats, entity-list, timeline-events, map-features, report-list.apollo-docs (introspects all endpoints & permissions), desired-state-list, deployment-list, deployment-status --deployment-id <id>, drift-list, bundle-list, agent-list.health --product swift only.All commands accept --pretty; list commands accept --page/--page-size/--limit.
The platform API evolves. Two extension paths:
python3 scripts/zy_platform.py request --product <product> --method GET --path=<path relative to API root> [--query-str 'k=v&k2=v2'] [--data '{"..."}']
--path is relative to the product API root (/api/v1) and must not start with /: e.g. --path=metrics/catalog?limit=5 requests <base>/api/v1/metrics/catalog?limit=5; --path=health hits the server root /health. Pass JSON bodies via --data.--allow-write, and you must first run --dry-run and show the user the method/normalized URL/body (sensitive fields masked) before executing for real.auth/users/admin/rbac/config/license/system/database etc.) are always rejected; writes are allowed only in the chat and ontology/semantic-search families — use built-in commands otherwise.--with-token (origin binding still enforced) or pass --token explicitly.~/.workbuddy/zy_action_audit.log (no credentials, no tokens); login/logout are recorded too.README.md (products/ports/startup), API 接入及测试方法参考.txt (cross-product API spec S01–S12, auth, curl examples);docs/manuals/** (analyst/admin/ops/FDE guides), docs/ai-action-demo-full.md, docs/story/** (per-product demo narratives);api-demo/sence/*.py (official HTTP call examples, common.py has a login wrapper);config.yaml.example/.env.example (account/port/key config reference).
After reading real endpoint details, prefer built-in commands; only fall back to pass-through (subject to the item-1 allowlist) when truly needed. Never write or run destructive operations unless the user explicitly asks.Direct localhost ports are enough by default. For remote access --base-url accepts gateway forms such as AIP http://127.0.0.1/aip-api/v1, Foundry http://127.0.0.1/api/v1, Apollo /apollo-api/v1, Gotham /gotham-api/v1, Swift /swift-api/v1 (equivalent to direct paths), or a cloud/remote instance via https://domain/.... Rules:
--trust-host confirmation (see 4.3).--base-url, health hits the server root /health; on some gateway shapes health may be unavailable — verify connectivity via login/list commands instead.urllib.parse.urlsplit; base-urls carrying userinfo (user:pass@host), fragments (#) or query strings are refused. Authenticated requests only accept same-origin redirects; cross-origin redirects are blocked and never carry authorization.login --dry-run, show the normalized destination, and get consent; never display the user's password in the conversation, never write tokens/passwords into skill files.keyring module is installed); otherwise the fallback file ~/.workbuddy/zy_action_session.json is used (dir 0700, file 0600, atomic replacement via temp file, symlinks rejected, ownership verified on POSIX, permissions tightened before read/write). Only the token and binding metadata are stored — no usernames/passwords/terminal info; expired tokens are purged automatically on read/write.--allow-write plus a prior --dry-run confirmation of method/URL/body with the user; sensitive admin route segments are rejected and paths are gated by a family allowlist; cached tokens are never auto-attached to pass-through requests (require --with-token with consent).verify-artifact hash verification and a digital-signature check (expected publisher: ZY Tech / zyinfo.pro), restated and confirmed by the user.