2026-05-25 15:09:42 +08:00
2026-05-25 15:09:42 +08:00
2026-05-25 15:09:42 +08:00
2026-05-25 15:09:42 +08:00
2026-05-25 15:09:42 +08:00
2026-05-25 15:09:42 +08:00
2026-05-25 15:09:42 +08:00
2026-05-25 15:09:42 +08:00
2026-05-25 15:09:42 +08:00
2026-05-25 15:09:42 +08:00

ZeekerWatchman

测试用例智能管理平台 — 将 PRD 转化为可执行测试用例。

快速开始

./start.sh

自动安装依赖、启动后端 (8765) 和前端 (3000)。访问 http://localhost:3000

手动启动

# 后端
cd server && pip install -r requirements.txt
PYTHONPATH=. uvicorn server.main:app --reload --port 8765

# 前端
cd web && npm install && npm run dev

环境配置

# .env
ZEEKER_USE_MOCK=true          # 左侧流水线 Mock 开关
ZEEKER_CHAT_USE_MOCK=false    # 右侧 AI 助手 Mock 开关
DEEPSEEK_API_KEY=sk-xxx       # DeepSeek API Key
DASHSCOPE_API_KEY=sk-xxx      # Qwen VL API Key

Mock 模式可离线演示全部流程;填入真实 Key 后关闭 Mock 即可使用 LLM。

核心工作流

上传 PRD (.md/.txt/.docx/.pdf)
  → 3 阶段 IR 流水线 (语义索引 → 逐单元提取 → 合并审计)
    → IR 可视化确认 (YAML 编辑器 + 思维导图 + 审计报告)
      → 生成测试用例 (可编辑表格 + 手动/Chat 增删改)
        → 导出 YAML / CSV / JSON

架构

.zeekerwatchmen/    Agent 灵魂 (Skill/记忆/人格, 热插拔)
server/core/        底座层 (LLM 客户端/路由, 仅基础设施)
server/services/    业务层 (PRD 解析, IR 流水线, 用例引擎, Chat, prompt 模板)
web/                Next.js 前端 (左右分栏: 主工作区 + AI Chat Panel)

主要功能

PRD 解析

  • .docx 解析: 类型化 blocks (para/table)、表头检测、[[IMAGE:rid]] 标记
  • 图片分析: Qwen VL 识别流程图/架构图/UI 截图
  • .md/.txt/.pdf 支持

3 阶段 IR 流水线

  • Stage 1: 语义索引 — 全文档 → function_units + concepts
  • Stage 2: 逐单元 IR 提取 — 精准上下文包 → 详细规则 (trigger/actions/precondition)
  • Stage 3: 合并去重 + 审计报告 (覆盖率/优先级分布)

IR 可视化

  • Monaco 编辑器 + SVG 思维导图 (按 section 分组, 多行自适应换行)
  • 点击思维导图节点 → 编辑器定位对应行
  • Audit Report 折叠面板

测试用例

  • 表格支持行内编辑 (文本/下拉/textarea)
  • 手动添加 + Chat LLM 增删改
  • 导出 YAML / CSV / JSON (前端直出, 无需后端)
  • ID 格式: TC-{FEATURE}-{NNN}, 自动分配不重复

右侧 AI Chat Panel

  • 跨页面持久 (Zustand store)
  • 页面感知 (IR/Cases/Home 不同上下文)
  • 增量操作 (add/delete/modify) + 自动执行/确认双模式
  • 选中行上下文传递 (说"这条"即操作选中条目)
  • Session ID 自动刷新, 支持新建会话

Skill 热插拔

  • GET /api/skills 自动扫描 .zeekerwatchmen/skills/
  • POST /api/skills/reload 热重载
  • 内置 default (通用) + ecommerce (电商) 双 Skill

LLM

  • 文本: DeepSeek (deepseek-v4-flash)
  • 图片: Qwen VL (qwen3-vl-plus)
  • 独立 Mock 开关 (左侧流水线 / 右侧 Chat 分开控制)

项目结构

zeekerWatchmen/
├── .zeekerwatchmen/            # Agent 灵魂
│   ├── soul/                   # principles.yaml + persona.yaml
│   ├── skills/{default,ecommerce}/
│   └── memory/                 # 会话记忆
├── server/
│   ├── api/routes/             # prd, ir, testcase, skills, chat
│   ├── core/
│   │   ├── llm_provider/       # base, router, mock_client
│   │   ├── prompt/templates/   # 框架级 prompt
│   │   ├── personality/        # 动态人格加载
│   │   └── utils/              # logger, diff, export
│   ├── services/
│   │   ├── prompts/            # chat_system.md, ir_step1/2
│   │   ├── prd_manager/        # WordParser, ImageParser
│   │   ├── ir_engine/          # pipeline (3-stage), validator, diff
│   │   ├── testcase_engine/    # generator, exporter
│   │   └── skill_manager/      # Skill 扫描/热加载
│   ├── main.py, config.py
│   └── requirements.txt
├── web/
│   ├── src/
│   │   ├── components/         # Layout, UploadZone, IrWorkspace, MindMap,
│   │   │                       # TestCaseTable, PipelineProgress, ChatPanel
│   │   ├── pages/              # index, ir-confirm, cases
│   │   └── lib/                # api, types, store
│   └── package.json
├── docs/
│   ├── PRD.md
│   ├── ARCHITECTURE.md
│   ├── ir_schema.json          # IR JSON Schema
│   └── tc_schema.json          # Test Case JSON Schema
├── start.sh                    # 一键启动
├── .env
└── .gitignore

API

方法 路径 说明
POST /api/prd/upload 上传 PRD 文件
GET /api/prd/{id} 获取 PRD 详情
GET /api/ir/generate-stream SSE 流式 IR 生成
POST /api/ir/generate 同步 IR 生成
PUT /api/ir/{id} 更新 IR
GET /api/skills 列出 Skill
POST /api/testcase/generate 生成测试用例
POST /api/chat AI 对话
S
Description
No description provided
Readme 206 KiB
Languages
Python 69.4%
TypeScript 28.1%
Shell 1.1%
Jinja 1.1%
JavaScript 0.3%