跳到正文
cccskills
免费在 GitHub 公开

nexu-e2e-test

Verify gateway fixes and skill loading in a local Nexu and OpenClaw setup. Use internal integration tests, basic CLI or HTTP checks, and connected channels to cover different execution paths and session caching behavior.

中文简介正在准备中。当前显示英语简介。

原文查看原文说明

Use when verifying OpenClaw gateway fixes end-to-end, testing skill loading after restart, or running integration tests against the local Nexu+OpenClaw stack. Triggers on "e2e test", "verify fix", "test gateway", "test skills loading".

集成工具DiscordSlack

实测评分 未实测

查看安装方法

适用场景

  • Verify skill loading after a gateway restart
  • Test session cache fixes
  • Check automatic replies through Slack or Discord

包含的文件(1)

  • SKILL.md6.6 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Nexu E2E Testing — OpenClaw Gateway

Run end-to-end verification of the Nexu → OpenClaw gateway stack locally.

Known Constraints

The OpenClaw gateway has architectural constraints that block naive E2E approaches. Read this before attempting any gateway testing.

ApproachBlockerStatus
HTTP POST /v1/chat/completionsEndpoint exists (openai-http.ts) but uses agentCommand() — same embedded agent path as CLI, bypasses session storeWorks for smoke tests (same as CLI)
HTTP POST /v1/responsesEndpoint exists (openresponses-http.ts) but also uses agentCommand()Works for smoke tests (same as CLI)
WebSocket chat.sendRequires device pairing for operator.write scope — clearUnboundScopes() in message-handler.ts:483-488 clears all self-declared scopes without device identityDead end without device keys
openclaw agent --session-idUses embedded agent path (sessionKey=unknown), bypasses session store cacheWorks for smoke tests, NOT for session-store bugs
Direct module import from distRollup bundles with hashed filenames, can't import individual modulesDead end
tsx from /tmpModule resolution fails for imports outside project rootDead end
Vitest in-project .test.tsFull module resolution, mocking, TypeScript supportPrimary method

Key insight: All HTTP and CLI approaches use the embedded agent path via agentCommand() (imported from commands/agent.js). Only messages arriving through connected channels (Slack/Discord) go through dispatchInboundMessage() → auto-reply pipeline → ensureSkillSnapshot(), which is the code path that uses the session store.

Viable Test Methods

1. Vitest Unit/Integration Tests (Primary)

Write .test.ts files inside the OpenClaw worktree and run with vitest. This is the only reliable way to test internal functions like ensureSkillsWatcher, getSkillsSnapshotVersion, ensureSkillSnapshot.

cd <OPENCLAW_WORKTREE>
OPENCLAW_TEST_FAST=1 npx vitest run src/agents/skills/refresh.test.ts

Key patterns:

  • Mock chokidar with vi.mock("chokidar", ...)
  • Use await import("./refresh.js") for dynamic imports after mocking
  • Use unique workspace paths per test (/tmp/test-<name>-${Date.now()})
  • OPENCLAW_TEST_FAST=1 skips filesystem scanning in session-updates

2. openclaw agent CLI or HTTP Smoke Tests

For "do skills load after restart" verification. Does NOT test session-store caching logic (all use embedded agent path).

CLI approach:

# Prerequisites: gateway must be running with a valid workspace
OPENCLAW_STATE_DIR=~/.openclaw \
OPENCLAW_CONFIG_PATH=<config-with-local-workspace> \
openclaw agent --session-id "<session>" --message "<msg>" --json --timeout 60

HTTP approach (OpenAI-compatible):

curl -s http://localhost:18789/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <gw-token>" \
  -d '{"model":"default","messages":[{"role":"user","content":"list your skills"}]}'

Parse results (CLI JSON output):

| python3 -c "
import json,sys
d=json.load(sys.stdin)
entries=d.get('result',{}).get('meta',{}).get('systemPromptReport',{}).get('skills',{}).get('entries',[])
managed=[e['name'] for e in entries if e['name'] in ('static-deploy','test-greeting')]
print(f'Skills: {len(entries)}, Managed: {managed}')
"

3. Connected Channel (Slack/Discord)

The only way to test the full auto-reply pipeline with session-store caching. Requires a running channel with active bot.

Gateway Setup for Testing

Config Pitfall: /data/ workspace path

Production configs have "workspace": "/data/openclaw/workspaces/..." which doesn't exist locally. Create a test config:

cat ~/.openclaw/openclaw.json | python3 -c "
import json, sys
cfg = json.load(sys.stdin)
cfg['agents']['list'][0]['workspace'] = '/tmp/openclaw-test-workspace'
json.dump(cfg, sys.stdout, indent=2)
" > /tmp/openclaw-test-config.json

Start gateway with test config

OPENCLAW_STATE_DIR=~/.openclaw \
OPENCLAW_CONFIG_PATH=/tmp/openclaw-test-config.json \
openclaw gateway run --allow-unconfigured --bind loopback --port 18789 --force --verbose

Wait for port readiness (not just process start)

for i in $(seq 1 15); do
  lsof -i :18789 -P 2>/dev/null | grep -q LISTEN && break
  sleep 1
done

WebSocket Protocol Reference

If you ever need to attempt WS testing (e.g., after implementing device pairing):

DetailValue
Frame format{"type": "req", "id": "<uuid>", "method": "...", "params": {...}} (NOT JSON-RPC)
Protocol version3 (as of 2026.2.25)
Valid client IDsgateway-client, cli, webchat-ui, openclaw-control-ui, node-host, test, webchat, fingerprint, openclaw-probe, openclaw-macos, openclaw-ios, openclaw-android (defined in protocol/client-info.ts)
Valid client modeswebchat, cli, ui, backend, node, probe, test
Auth flowChallenge → connect RPC with nonce → needs device identity for write scopes
Scope for chat.sendoperator.write — requires device pairing, token-only auth gets zero scopes
Scope exceptioncontrolUiAuthPolicy.allowBypass: true preserves scopes without device identity (dev/control-UI only, see message-handler.ts:489-542)

Restart Verification Checklist

When verifying a fix that involves skills/sessions after gateway restart:

  1. Build the fix: cd <worktree> && pnpm build
  2. Link globally: cd <worktree> && pnpm link --global
  3. Verify version: openclaw --version
  4. Write unit tests in the worktree for core logic (vitest)
  5. Run smoke test: gateway restart → openclaw agent → check skill count
  6. Check sessions.json at ~/.openclaw/agents/<agent>/sessions/sessions.json for snapshot versions
  7. Check logs at gateway stdout for skill watcher events

Session Store Locations

~/.openclaw/agents/<agent-id>/sessions/sessions.json   # Session entries with skillsSnapshot
~/.openclaw/agents/<agent-id>/sessions/<session-id>.jsonl  # Session transcript

Key fields in session entry:

  • skillsSnapshot.version — timestamp, should be non-zero after fix
  • skillsSnapshot.skills[] — array of loaded skill names and locations
  • skillsSnapshot.prompt — the <available_skills> XML injected into system prompt

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

clawhub

免费

Use the ClawHub command-line tool to find and install agent skills, update them to the latest or a specified version, list installed skills, and publish skill folders with version numbers and change notes.

中文简介正在准备中。当前显示英语简介。

  • Find and install a skill for a task
  • Install or update a skill to a specific version
  • Update all installed skills
nexu-io/nexu32792026年4月26日 更新

Delegate feature development, code refactoring, and pull request reviews to Codex, Claude Code, Pi, or OpenCode. It guides background execution, progress monitoring, and parallel work in separate working directories.

中文简介正在准备中。当前显示英语简介。

  • Delegating new feature or app development
  • Reviewing pull requests in a separate working directory
  • Refactoring a large codebase
nexu-io/nexu32792026年4月26日 更新

datadog

免费

Investigate Nexu production issues through the Datadog Logs API. Search crash events, error output, startup activity, and API failures, then summarize findings by time, running instance, and deployed version to help trace related events.

中文简介正在准备中。当前显示英语简介。

  • Investigate OpenClaw crashes
  • Compare crash timing with deployments
  • Trace Slack authentication errors
nexu-io/nexu32792026年4月26日 更新

Turn a broad research topic into a structured report with traceable sources. The workflow defines questions, prioritizes authoritative material, separates facts from assumptions, compares evidence, and uses an independent agent to check key data and reasoning.

中文简介正在准备中。当前显示英语简介。

  • Comparing products or technical concepts
  • Weighing costs and risks before a decision
  • Investigating trends and their underlying drivers
nexu-io/nexu32792026年4月26日 更新

feedback

免费

Send bug reports, suggestions, or other feedback to the Nexu team using `/feedback`. The submission script automatically includes conversation history and images, then reports whether the feedback was successfully forwarded.

中文简介正在准备中。当前显示英语简介。

  • Reporting a Nexu platform issue
  • Suggesting improvements to Nexu
  • Sharing feedback with conversation history and images
nexu-io/nexu32792026年4月26日 更新

Create and manage Feishu Bitable tables for work such as customer tracking. Add, search, update, or delete records, configure columns using 27 field types, filter and sort data, and manage views or batch imports.

中文简介正在准备中。当前显示英语简介。

  • Create a customer management table
  • Find records marked as in progress
  • Import customer data in batches
nexu-io/nexu32792026年4月26日 更新

查看 nexu-io 的全部技能

报告此技能的问题