Files
claw/docs/plans/2026-03-26-deepseek-browser-smoke-plan.md

4.4 KiB

DeepSeek Browser Smoke Implementation Plan

For Claude: REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.

Goal: Add a repo-local verification path that exercises the browser-delivered sgclaw binary through the ZeroClaw/DeepSeek compat runtime without requiring a real DeepSeek account.

Architecture: Keep the existing SuperRPA browser smoke script unchanged. Add a small sgClaw-owned helper module that behaves like a fake OpenAI-compatible DeepSeek server and a runner script that starts that server, injects DEEPSEEK_* into the browser process environment, and delegates the actual browser/UI verification to the existing sgclaw_chat_smoke.mjs.

Tech Stack: Node.js ESM, Node built-in node:test, local HTTP server, Chromium build_sgclaw.py, existing SuperRPA sgclaw_chat_smoke.mjs.

Task 1: Add Fake DeepSeek Response Planner

Files:

  • Create: /home/zyl/projects/sgClaw/claw/.worktrees/zeroclaw-core-refactor/tools/browser_smoke/fake_deepseek_server.mjs
  • Test: /home/zyl/projects/sgClaw/claw/.worktrees/zeroclaw-core-refactor/tools/browser_smoke/fake_deepseek_server.test.mjs

Step 1: Write the failing test

Add node:test coverage that proves the fake server planner:

  • returns Baidu tool calls for 打开百度搜索天气
  • returns Zhihu navigate tool calls for 打开知乎搜索天气
  • returns final summaries matching the existing smoke script expectations
  • rejects unsupported instructions clearly

Step 2: Run test to verify it fails

Run:

node --test tools/browser_smoke/fake_deepseek_server.test.mjs

Expected: FAIL because the helper module does not exist yet.

Step 3: Implement the minimal helper

The helper should:

  • inspect the latest user message / tool-result phase
  • emit OpenAI-compatible choices[0].message.tool_calls for the first round
  • emit choices[0].message.content for the second round
  • keep summaries identical to the current smoke assertions

Step 4: Run test to verify it passes

Run:

node --test tools/browser_smoke/fake_deepseek_server.test.mjs

Expected: PASS

Task 2: Add DeepSeek Smoke Wrapper Script

Files:

  • Create: /home/zyl/projects/sgClaw/claw/.worktrees/zeroclaw-core-refactor/tools/browser_smoke/run_deepseek_browser_smoke.mjs
  • Modify: /home/zyl/projects/sgClaw/claw/.worktrees/zeroclaw-core-refactor/README.md

Step 1: Write the failing wrapper expectation

Add a small test or dry-run seam in the helper test that proves the wrapper environment includes:

  • DEEPSEEK_API_KEY
  • DEEPSEEK_BASE_URL
  • DEEPSEEK_MODEL

and points at the fake local server.

Step 2: Run the targeted test to verify it fails

Run:

node --test tools/browser_smoke/fake_deepseek_server.test.mjs

Expected: FAIL because no wrapper/env builder exists yet.

Step 3: Implement the wrapper

The wrapper should:

  • start the fake DeepSeek server
  • invoke:
node /home/zyl/projects/superRpa/src/chrome/browser/superrpa/sgclaw/sgclaw_chat_smoke.mjs
  • inject DEEPSEEK_* into the child environment
  • print the child stdout/stderr through
  • stop the fake server on exit

Step 4: Run the targeted test to verify it passes

Run:

node --test tools/browser_smoke/fake_deepseek_server.test.mjs

Expected: PASS

Task 3: Verify the Browser-Delivered DeepSeek Path

Files:

  • Verify: /home/zyl/projects/sgClaw/claw/.worktrees/zeroclaw-core-refactor/tools/browser_smoke/*
  • Verify: /home/zyl/projects/superRpa/src/chrome/browser/superrpa/sgclaw/build_sgclaw.py

Step 1: Build the browser-delivered binary from the worktree

Run:

python3 /home/zyl/projects/superRpa/src/chrome/browser/superrpa/sgclaw/build_sgclaw.py \
  --manifest-path /home/zyl/projects/sgClaw/claw/.worktrees/zeroclaw-core-refactor/Cargo.toml \
  --out /home/zyl/projects/superRpa/src/out/KylinRelease/sgclaw

Expected: PASS

Step 2: Run the DeepSeek smoke wrapper

Run:

node tools/browser_smoke/run_deepseek_browser_smoke.mjs

Expected:

  • existing browser smoke passes
  • sgclaw is forced down the compat runtime path through DEEPSEEK_*
  • Baidu and Zhihu tasks still complete

Step 3: Re-run full Rust tests to guard against regressions

Run:

python3 /home/zyl/projects/superRpa/src/tools/crates/run_cargo.py test \
  --manifest-path /home/zyl/projects/sgClaw/claw/.worktrees/zeroclaw-core-refactor/Cargo.toml \
  --tests

Expected: PASS