Files
dc-docs/output/downloaded-files/html-md/game-analyst-agent-manual.html
T
Evilom fe5505343e feat: 钉钉群聊飞书文档收集与知识图谱系统初始提交
- 通过悟空(dws CLI)拉取dc战略问题研究院+创新组两个群的消息(377条)
- 提取190个飞书链接、18个文件附件
- 下载HTML/MD/XLSX等报告文件到output/downloaded-files/
- 构建知识图谱(JSON+HTML可视化)
- 生成Obsidian知识库(28个页面,7大主题)
- 生成花园世界全量汇总报告
- 所有脚本路径改为相对路径,便于迁移
2026-06-02 20:24:25 +08:00

1306 lines
49 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>game-analyst-agent 工具说明书 — 战略研究部</title>
<style>
:root {
--primary: #1a2744;
--accent: #2563b0;
--bg: #f3f5f8;
--card: #ffffff;
--text: #2d3436;
--muted: #6b7280;
--border: #e2e8f0;
--ok: #059669;
--ok-bg: #ecfdf5;
--ok-bdr: #a7f3d0;
--warn: #d97706;
--warn-bg: #fffbeb;
--warn-bdr: #fcd34d;
--danger: #dc2626;
--danger-bg:#fff5f5;
--danger-bdr:#fca5a5;
--info: #2563b0;
--info-bg: #eff6ff;
--info-bdr: #bfdbfe;
--purple: #7c3aed;
--purple-bg:#f5f3ff;
--purple-bdr:#ddd6fe;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI",
"PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
background: var(--bg);
color: var(--text);
line-height: 1.8;
font-size: 15px;
}
.page { max-width: 1120px; margin: 0 auto; padding: 48px 32px 96px; }
.page-header {
background: var(--card);
border-radius: 10px;
padding: 36px 40px 28px;
margin-bottom: 8px;
border-bottom: 4px solid var(--accent);
box-shadow: 0 1px 6px rgba(0,0,0,.05);
}
.page-header .doc-type {
display: inline-block;
font-size: .72em;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 1px;
color: var(--accent);
background: var(--info-bg);
border: 1px solid var(--info-bdr);
padding: 3px 12px;
border-radius: 12px;
margin-bottom: 14px;
}
.page-header h1 {
font-size: 1.7em;
color: var(--primary);
line-height: 1.4;
margin-bottom: 12px;
font-weight: 800;
}
.page-header .sub {
font-size: .93em;
color: var(--muted);
margin-bottom: 16px;
line-height: 1.55;
}
.meta {
display: flex;
flex-wrap: wrap;
gap: 8px 20px;
font-size: .78em;
color: var(--muted);
padding: 12px 0 0;
border-top: 1px solid var(--border);
}
.meta span::before { content: attr(data-label) "\FF1A"; font-weight: 600; color: var(--primary); }
.section {
background: var(--card);
border-radius: 10px;
padding: 34px 38px;
margin-bottom: 20px;
box-shadow: 0 1px 8px rgba(0,0,0,.05);
border-left: 5px solid var(--accent);
}
.section.ok { border-left-color: var(--ok); }
.section.warn { border-left-color: var(--warn); }
.section.danger { border-left-color: var(--danger); }
.section.info { border-left-color: var(--info); }
.section.purple { border-left-color: var(--purple); }
.section.gray { border-left-color: var(--border); }
.sec-intro {
font-size: .92em;
color: var(--muted);
margin: 6px 0 20px;
line-height: 1.6;
}
h2 {
font-size: 1.26em;
color: var(--primary);
margin-bottom: 6px;
padding-bottom: 10px;
border-bottom: 2px solid var(--border);
}
h3 { font-size: 1.04em; color: var(--accent); margin: 22px 0 10px; }
h4 { font-size: .96em; font-weight: 700; margin: 14px 0 6px; color: var(--primary); }
p { margin-bottom: 10px; }
ul, ol { margin: 6px 0 12px 22px; }
li { margin-bottom: 5px; }
strong { color: var(--primary); }
code {
background: #edf2f7;
padding: 1px 6px;
border-radius: 4px;
font-size: .86em;
font-family: "SF Mono", Consolas, "Courier New", monospace;
}
.callout {
padding: 14px 18px;
border-radius: 0 8px 8px 0;
margin: 14px 0;
font-size: .92em;
line-height: 1.65;
}
.callout-info { background: var(--info-bg); border-left: 4px solid var(--info); }
.callout-ok { background: var(--ok-bg); border-left: 4px solid var(--ok); }
.callout-warn { background: var(--warn-bg); border-left: 4px solid var(--warn); }
.callout-danger { background: var(--danger-bg); border-left: 4px solid var(--danger); }
.callout-purple { background: var(--purple-bg); border-left: 4px solid var(--purple); }
.callout-title { font-weight: 700; margin-bottom: 5px; color: var(--primary); }
.status {
display: inline-block;
padding: 3px 12px;
border-radius: 12px;
font-size: .76em;
font-weight: 700;
margin-right: 5px;
white-space: nowrap;
}
.status-ok { background: #d1fae5; color: #065f46; }
.status-warn { background: #fef3c7; color: #92400e; }
.status-danger { background: #fee2e2; color: #991b1b; }
.status-info { background: #dbeafe; color: #1e40af; }
.status-purple { background: var(--purple-bg); color: #5b21b6; }
.status-gray { background: #f3f4f6; color: #374151; }
.card {
background: var(--card);
border-radius: 9px;
padding: 20px 18px;
border: 1px solid var(--border);
box-shadow: 0 1px 4px rgba(0,0,0,.04);
}
.card.ok { border-top: 3px solid var(--ok); }
.card.warn { border-top: 3px solid var(--warn); }
.card.danger { border-top: 3px solid var(--danger); }
.card.info { border-top: 3px solid var(--info); }
.card.purple { border-top: 3px solid var(--purple); }
.card-label {
font-size: .72em;
font-weight: 700;
text-transform: uppercase;
letter-spacing: .8px;
color: var(--muted);
margin-bottom: 8px;
}
.card-text { font-size: .9em; line-height: 1.55; color: var(--primary); font-weight: 500; }
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin: 14px 0; }
.grid-3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px; margin: 14px 0; }
.grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin: 14px 0; }
@media (max-width: 900px) { .grid-4 { grid-template-columns: 1fr 1fr; } }
@media (max-width: 700px) { .grid-2, .grid-3 { grid-template-columns: 1fr; } }
.table-wrap { overflow-x: auto; margin: 14px 0 18px; border-radius: 8px; border: 1px solid var(--border); }
table { width: 100%; border-collapse: collapse; font-size: .87em; }
thead { background: #f0f4f8; }
th {
padding: 10px 13px;
text-align: left;
font-weight: 600;
color: var(--primary);
border-bottom: 2px solid var(--border);
}
td { padding: 9px 13px; border-bottom: 1px solid var(--border); vertical-align: top; }
tbody tr:nth-child(even) { background: #f8fafb; }
tbody tr:hover { background: #eef1f6; }
.action-list {
background: var(--ok-bg);
border: 2px solid var(--ok-bdr);
border-radius: 12px;
padding: 24px 28px;
margin: 16px 0;
}
.action-list-title {
font-weight: 700;
font-size: 1em;
color: var(--ok);
margin-bottom: 14px;
}
.action-item {
display: flex;
align-items: flex-start;
gap: 10px;
padding: 9px 0;
border-bottom: 1px solid var(--ok-bdr);
}
.action-item:last-child { border: none; }
.step-num {
min-width: 24px;
height: 24px;
background: var(--ok);
color: #fff;
border-radius: 50%;
font-size: .78em;
font-weight: 700;
display: flex;
align-items: center;
justify-content: center;
margin-top: 1px;
flex-shrink: 0;
}
.action-text { font-size: .9em; line-height: 1.55; }
.flow-block {
background: #f8fafd;
border: 1px solid var(--border);
border-radius: 8px;
padding: 18px 22px;
margin: 14px 0;
font-family: "SF Mono", Consolas, "Courier New", monospace;
font-size: .84em;
line-height: 1.9;
overflow-x: auto;
white-space: pre;
color: var(--primary);
}
.toc {
background: var(--card);
border-radius: 10px;
padding: 24px 32px;
margin-bottom: 20px;
box-shadow: 0 1px 8px rgba(0,0,0,.05);
border: 1px solid var(--border);
}
.toc h3 { margin-top: 0; font-size: .95em; color: var(--primary); }
.toc ul, .toc ol { margin-left: 18px; list-style: none; }
.toc li { margin-bottom: 4px; font-size: .9em; }
.toc a { color: var(--accent); text-decoration: none; }
.toc a:hover { text-decoration: underline; }
footer {
margin-top: 64px;
padding-top: 20px;
border-top: 1px solid var(--border);
text-align: center;
color: var(--muted);
font-size: .79em;
line-height: 2;
}
@media (max-width: 768px) {
.page { padding: 20px 16px 60px; }
.page-header { padding: 24px 20px 18px; }
.page-header h1 { font-size: 1.35em; }
.section { padding: 22px 20px; }
.meta { gap: 6px 14px; }
}
@media print {
body { background: #fff; font-size: 13px; }
.page { padding: 20px; max-width: 100%; }
.section { box-shadow: none; break-inside: avoid; page-break-inside: avoid; }
.page-header { box-shadow: none; }
table { font-size: .82em; }
}
</style>
</head>
<body>
<div class="page">
<!-- PAGE HEADER -->
<div class="page-header">
<div class="doc-type">INTERNAL &middot; 战略研究部 &middot; 工具文档</div>
<h1>game-analyst-agent 工具说明书</h1>
<div class="sub">通用产品分析自动化工具 &mdash; 自动探索游戏/网页界面、提取机制与数值、多游戏对比、活动追踪、市场数据采集、决策报告生成</div>
<div class="meta">
<span data-label="版本">1.7.0</span>
<span data-label="日期">2026-05-22</span>
<span data-label="适用对象">游戏分析师、制作人、策划、市场研究员、产品经理</span>
<span data-label="运行环境">Windows / macOS + Python 3.10+</span>
</div>
</div>
<!-- SUMMARY GRID -->
<div class="grid-4" style="margin-bottom:20px">
<div class="card ok">
<div class="card-label">核心能力</div>
<div class="card-text">
自动探索界面<br>
机制规则提取<br>
数值事实采集<br>
多游戏横向对比<br>
活动变化追踪<br>
决策报告生成
</div>
</div>
<div class="card info">
<div class="card-label">覆盖范围</div>
<div class="card-text">
Android 游戏(模拟器)<br>
H5 / 网页游戏<br>
竞品官网<br>
市场数据页面
</div>
</div>
<div class="card purple">
<div class="card-label">使用方式</div>
<div class="card-text">
命令行启动<br>
挂机无人值守<br>
定期查看增量报告<br>
按需生成决策报告
</div>
</div>
<div class="card">
<div class="card-label">运行成本</div>
<div class="card-text">
探索阶段:免费<br>
分析阶段:国产模型<br>
24h 连续运行 &lt; 1 元
</div>
</div>
</div>
<!-- TOC -->
<div class="toc">
<h3>目录</h3>
<ul>
<li><a href="#s1">一、工具定位与设计理念</a></li>
<li><a href="#s2">二、核心能力总览</a></li>
<li><a href="#s3">三、技术架构</a></li>
<li><a href="#s4">四、安装与环境配置</a></li>
<li><a href="#s5">五、使用指南</a></li>
<li><a href="#s6">六、输出产物说明</a></li>
<li><a href="#s7">七、支持的模型与成本</a></li>
<li><a href="#s8">八、迭代路线图</a></li>
<li><a href="#s9">九、常见问题</a></li>
<li><a href="#s10">十、适用场景与边界</a></li>
</ul>
</div>
<!-- SECTION 1 -->
<div class="section" id="s1">
<h2>一、工具定位与设计理念</h2>
<p class="sec-intro">为什么需要这个工具,它解决什么问题,不做什么。</p>
<h3>1.1 解决的核心问题</h3>
<p>游戏分析师在做竞品深拆、项目选型调研时,需要大量时间手动体验游戏、截图记录、整理机制规则、采集市场数据、横向对比。一款中度游戏的完整系统拆解通常需要 3-5 天人工投入,多游戏对比更是倍数级工作量。</p>
<p><strong>game-analyst-agent</strong> 将整条分析链路自动化:</p>
<ul>
<li>自动探索游戏界面(Android 模拟器)或网页(浏览器模式)</li>
<li>自动截图、去重、提取机制规则和数值事实</li>
<li>多游戏横向对比,生成结构化对比报告</li>
<li>定时重跑追踪竞品活动变化</li>
<li>采集市场数据页面信息</li>
<li>生成面向管理层的决策报告</li>
</ul>
<div class="callout callout-info">
<div class="callout-title">设计理念</div>
工具定位是<strong>产品分析自动化辅助</strong>,不替代人工判断。它负责把信息「采集、结构化、对比、呈现」,分析师负责基于这些信息做商业判断和策略建议。
</div>
<h3>1.2 核心设计原则</h3>
<ul>
<li><strong>不依赖手动截图</strong> &mdash; 工具自动完成所有界面采集,人工不参与运行期操作</li>
<li><strong>不针对特定产品</strong> &mdash; 不硬编码任何游戏/网站的坐标或导航路径,对任意目标零配置启动</li>
<li><strong>可长时间无人值守</strong> &mdash; 支持 24h+ 连续运行,用时间换覆盖率,按固定频率输出进度报告</li>
<li><strong>双模式覆盖</strong> &mdash; Android 模拟器(手游)+ Playwright 浏览器(网页/H5/市场数据)</li>
<li><strong>从采集到决策的完整链路</strong> &mdash; 探索 → 提取 → 对比 → 追踪 → 报告,一条工具链闭环</li>
</ul>
<h3>1.3 不做什么</h3>
<ul>
<li>不直接输出体验评价结论或商业化建议(这是分析师的工作)</li>
<li>不做外挂式自动操作(不刷资源、不代打)</li>
<li>不需要逆向游戏协议或破解 APK</li>
</ul>
</div>
<!-- SECTION 2 -->
<div class="section ok" id="s2">
<h2>二、核心能力总览</h2>
<p class="sec-intro">工具当前已具备的全部能力,分为六大模块。</p>
<div class="grid-3">
<div class="card ok">
<div class="card-label">自主界面探索</div>
<div class="card-text">
Android 模拟器 + 浏览器双模式<br>
感知哈希去重,不重复探索<br>
BFS 导航 + 自动回退<br>
长按 / 悬停 / 边缘抽屉发现<br>
弹窗自动关闭 + Cookie 处理<br>
自适应无限滚动 + 暗色主题适配
</div>
</div>
<div class="card ok">
<div class="card-label">机制规则 + 数值提取</div>
<div class="card-text">
AI 视觉模型分析截图<br>
提取规则并按系统模块分类<br>
提取数值事实(定价/时间/消耗量)<br>
资源流转拓扑自动推断
</div>
</div>
<div class="card ok">
<div class="card-label">多游戏横向对比</div>
<div class="card-text">
跨游戏规则按 module 对齐<br>
自动标注差异点<br>
生成 HTML 对比矩阵报告
</div>
</div>
</div>
<div class="grid-3">
<div class="card info">
<div class="card-label">活动追踪与时间线</div>
<div class="card-text">
定时重跑检测界面变化<br>
追踪限时活动上下线<br>
输出变化时间线
</div>
</div>
<div class="card info">
<div class="card-label">市场数据采集</div>
<div class="card-text">
浏览器模式采集数据页面<br>
七麦 / SensorTower / 榜单<br>
补充市场表现维度
</div>
</div>
<div class="card info">
<div class="card-label">决策报告生成</div>
<div class="card-text">
多游戏数据 + AI 综合分析<br>
面向管理层的推荐格式<br>
可直接用于项目评审会
</div>
</div>
</div>
<h3>2.1 探索智能(v1.7</h3>
<p>探索引擎内置 9 级优先级决策链,模拟真实用户的全部交互行为:</p>
<div class="grid-3">
<div class="card ok">
<div class="card-label">交互覆盖</div>
<div class="card-text">
点击(tap+ 长按(long press<br>
垂直/水平滚动 + 自适应无限滚动<br>
边缘抽屉滑动(侧边栏/下拉面板)<br>
浏览器悬停(hover)展开子菜单
</div>
</div>
<div class="card ok">
<div class="card-label">干扰处理</div>
<div class="card-text">
弹窗自动检测 + 关闭(签到/活动/礼包)<br>
Cookie/隐私同意弹窗自动关闭<br>
加载动画等待(画面稳定再操作)<br>
暗色主题自适应检测阈值
</div>
</div>
<div class="card ok">
<div class="card-label">覆盖率保障</div>
<div class="card-text">
角落小图标检测(?/!/设置)<br>
Tab 栏等距按钮检测<br>
DOM 元素精确识别(浏览器模式)<br>
pHash 变化驱动的自适应决策
</div>
</div>
</div>
<h3>2.2 基础支撑能力</h3>
<div class="grid-3">
<div class="card">
<div class="card-label">多模型后端</div>
<div class="card-text">
Claude / 通义千问 / GLM-4V / 豆包<br>
按需切换成本与精度
</div>
</div>
<div class="card">
<div class="card-label">规则去重与分类</div>
<div class="card-text">
自动去除重复规则<br>
按 module 分组归档<br>
置信度分层标注
</div>
</div>
<div class="card">
<div class="card-label">容错与恢复</div>
<div class="card-text">
ADB 断连自动重连<br>
API 失败重试后跳过<br>
探索引擎自动回退不卡死
</div>
</div>
</div>
<h3>2.3 完整工作流程</h3>
<div class="flow-block">┌──────────────────────────────────────────────────────────────┐
│ 单游戏深拆链路 │
├──────────────────────────────────────────────────────────────┤
│ │
│ exploreAndroid / 浏览器) │
│ │ │
│ ├─ 探索阶段(本地,成本 = 0) │
│ │ 截图 → pHash 去重 → 9 级智能决策: │
│ │ 弹窗关闭 → 边缘抽屉 → tap → 滚动 → 自适应滚动 │
│ │ → 长按 → 悬停(浏览器) → 回退 │
│ │ │
│ ├─ 分析阶段(定时,可控成本) │
│ │ 批量截图 → AI 视觉模型 → 规则 + 数值事实 → DB │
│ │ → 资源流转推断 │
│ │ │
│ └─ 报告阶段(自动) │
│ 每 30min → 进度报告 | 探索结束 → 最终报告 │
│ │
└──────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ 多游戏对比 + 决策链路 │
├─────────────────────────────────────────────────────────┤
│ │
│ compare → 跨游戏规则对齐 → 差异标注 → 对比报告 HTML │
│ timeline → 定时重跑 → 活动上下线检测 → 变化时间线 │
│ market → 浏览器采集数据页 → 市场数据补充 │
│ decision-report → 多游戏数据 + AI 综合推断 → 决策报告 │
│ │
└─────────────────────────────────────────────────────────┘</div>
</div>
<!-- SECTION 3 -->
<div class="section info" id="s3">
<h2>三、技术架构</h2>
<p class="sec-intro">工具的内部结构,供技术背景的使用者了解运行原理。非技术用户可跳过本节,不影响正常使用。</p>
<h3>3.1 模块架构</h3>
<div class="table-wrap">
<table>
<thead>
<tr>
<th>模块</th>
<th>文件</th>
<th>职责</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>设备驱动</strong></td>
<td><code>core/adb_device_driver.py</code></td>
<td>通过 ADB 控制模拟器:截图、点击、长按、滑动、返回</td>
</tr>
<tr>
<td><strong>探索引擎</strong></td>
<td><code>core/explorer.py</code></td>
<td>9 级优先级决策引擎:弹窗→抽屉→tap→滚动→自适应滚动→长按→回退</td>
</tr>
<tr>
<td><strong>画面去重</strong></td>
<td><code>core/screen_dedup.py</code></td>
<td>感知哈希(pHash)计算、Screen 库持久化、重复判定</td>
</tr>
<tr>
<td><strong>本地检测</strong></td>
<td><code>core/local_detector.py</code></td>
<td>视觉检测按钮/色块/Tab 栏/角落图标/弹窗覆盖层,暗色主题自适应</td>
</tr>
<tr>
<td><strong>模型后端</strong></td>
<td><code>core/llm_backend.py</code></td>
<td>统一接口调用多种视觉 AI 模型(OpenAI 兼容 + Anthropic</td>
</tr>
<tr>
<td><strong>批量分析</strong></td>
<td><code>core/batch_analyzer.py</code></td>
<td>定时收集新截图、调用模型提取规则、写入数据库</td>
</tr>
<tr>
<td><strong>报告生成</strong></td>
<td><code>core/reporter.py</code></td>
<td>增量进度报告 + 最终完整报告生成</td>
</tr>
<tr>
<td><strong>数据存储</strong></td>
<td><code>core/db_client.py</code></td>
<td>SQLite 数据库:screens / rules / facts / sessions 表</td>
</tr>
<tr>
<td><strong>浏览器驱动</strong></td>
<td><code>core/browser_driver.py</code></td>
<td>Playwright 驱动:截图、点击、滚动、长按、悬停、DOM 感知、Cookie 弹窗处理</td>
</tr>
<tr>
<td><strong>数值提取</strong></td>
<td><code>core/fact_extractor.py</code></td>
<td>从 AI 分析结果中解析结构化数值事实</td>
</tr>
<tr>
<td><strong>资源流转</strong></td>
<td><code>core/flow_inferrer.py</code></td>
<td>从 rules + facts 推断资源流转拓扑关系</td>
</tr>
<tr>
<td><strong>CLI 入口</strong></td>
<td><code>tools/cli.py</code></td>
<td>命令行路由:explore / compare / timeline / market / decision-report / report / doctor / init</td>
</tr>
</tbody>
</table>
</div>
<h3>3.2 两阶段成本分离</h3>
<div class="grid-2">
<div class="card ok">
<div class="card-label">探索阶段</div>
<div class="card-text">纯本地运算:OpenCV 视觉检测 + pHash 去重 + 9 级智能决策 + 设备操作。<strong>成本 = 0</strong>,可无限运行。</div>
</div>
<div class="card info">
<div class="card-label">分析阶段</div>
<div class="card-text">定时批量调用视觉模型。使用国产模型(通义千问)时,24 小时连续分析成本 &lt; 1 元人民币。</div>
</div>
</div>
<h3>3.3 数据存储结构</h3>
<div class="flow-block">SQLite 数据库(games/{game_id}/db/mechanics.db
├── screens 界面库:phash、访问次数、深度、分析状态
├── rules 机制规则:规则文本、module 分类、置信度、来源截图
├── facts 数值事实:属性名、数值、单位、关联系统
├── resource_flows 资源流转:source → target、消耗量、触发条件
└── sessions 运行记录:时长、发现界面数、规则数、成本</div>
</div>
<!-- SECTION 4 -->
<div class="section" id="s4">
<h2>四、安装与环境配置</h2>
<p class="sec-intro">从零开始,3 分钟完成安装。</p>
<h3>4.1 前提条件</h3>
<div class="table-wrap">
<table>
<thead>
<tr>
<th>依赖</th>
<th>要求</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>操作系统</strong></td>
<td>Windows 10/11(推荐)</td>
<td>Windows 推荐;macOS 需额外配置模拟器</td>
</tr>
<tr>
<td><strong>Python</strong></td>
<td>3.10 或更高</td>
<td>推荐使用 uv 安装管理</td>
</tr>
<tr>
<td><strong>Android 模拟器</strong></td>
<td>MuMu Player 12(推荐)</td>
<td>需开启 ADB 调试,默认端口 16384</td>
</tr>
<tr>
<td><strong>模型 API Key</strong></td>
<td>至少一个</td>
<td>推荐阿里通义千问(性价比)或 Anthropic Claude(精度)</td>
</tr>
</tbody>
</table>
</div>
<h3>4.2 安装步骤</h3>
<div class="action-list">
<div class="action-list-title">安装流程</div>
<div class="action-item">
<div class="step-num">1</div>
<div class="action-text"><strong>获取代码:</strong><code>git clone &lt;repo_url&gt;</code> 然后 <code>cd game-analyst-agent</code></div>
</div>
<div class="action-item">
<div class="step-num">2</div>
<div class="action-text"><strong>安装依赖:</strong><code>pip install -e .</code>(基础安装)或 <code>pip install -e ".[all]"</code>(含浏览器模式 + 定时任务)</div>
</div>
<div class="action-item">
<div class="step-num">3</div>
<div class="action-text"><strong>配置 API Key</strong><code>cp .env.example .env</code>,用文本编辑器打开 <code>.env</code>,填入你的 Key</div>
</div>
<div class="action-item">
<div class="step-num">4</div>
<div class="action-text"><strong>环境自检:</strong><code>game-analyst doctor</code>,全部 &#x2713; 表示就绪</div>
</div>
</div>
<div class="callout callout-purple">
<div class="callout-title">可选依赖说明</div>
<ul>
<li><code>pip install -e ".[browser]"</code> &mdash; 安装 Playwright,启用浏览器模式和市场数据采集</li>
<li><code>pip install -e ".[schedule]"</code> &mdash; 安装 croniter,启用定时重跑功能</li>
<li><code>pip install -e ".[all]"</code> &mdash; 安装全部可选依赖</li>
</ul>
</div>
<h3>4.3 API Key 获取方式</h3>
<div class="table-wrap">
<table>
<thead>
<tr>
<th>模型供应商</th>
<th>环境变量名</th>
<th>获取地址</th>
<th>参考价格</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>阿里通义千问-VL</strong></td>
<td><code>DASHSCOPE_API_KEY</code></td>
<td>dashscope.aliyun.com</td>
<td>约 0.003 元/张</td>
</tr>
<tr>
<td><strong>字节豆包 Vision</strong></td>
<td><code>ARK_API_KEY</code></td>
<td>volcengine.com/product/ark</td>
<td>约 0.002 元/张</td>
</tr>
<tr>
<td><strong>智谱 GLM-4V</strong></td>
<td><code>ZHIPU_API_KEY</code></td>
<td>open.bigmodel.cn</td>
<td>约 0.005 元/张</td>
</tr>
<tr>
<td><strong>Anthropic Claude</strong></td>
<td><code>ANTHROPIC_API_KEY</code></td>
<td>console.anthropic.com</td>
<td>约 0.02 元/张</td>
</tr>
</tbody>
</table>
</div>
<div class="callout callout-ok">
<div class="callout-title">推荐配置</div>
日常使用选阿里通义千问,成本极低且精度满足规则提取需求。需要高精度推断(如商业化结构分析)时切换 Claude。
</div>
</div>
<!-- SECTION 5 -->
<div class="section ok" id="s5">
<h2>五、使用指南</h2>
<p class="sec-intro">从启动到查看报告的完整操作流程。</p>
<h3>5.1 初始化游戏</h3>
<div class="flow-block">game-analyst init --game my_garden
# 输出:
# 已创建游戏配置:games/my_garden/
# 请编辑 games/my_garden/game.yaml 填写游戏名称和设备信息</div>
<p>打开 <code>games/my_garden/game.yaml</code>,只需修改游戏名称:</p>
<div class="flow-block">game:
name: "我的花园世界"
id: my_garden
device:
serial: "127.0.0.1:16384" # MuMu 默认端口</div>
<h3>5.2 启动探索</h3>
<div class="flow-block"># 确保模拟器已打开,游戏已进入主界面
# 启动(默认 24h 运行,每 30min 输出报告)
game-analyst explore --game my_garden
# 自定义参数
game-analyst explore --game my_garden \
--max-runtime 4 \
--analysis-interval 15 \
--max-depth 8</div>
<div class="table-wrap">
<table>
<thead>
<tr>
<th>参数</th>
<th>说明</th>
<th>默认值</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>--game</code></td>
<td>游戏 ID(对应 games/ 下的目录名)</td>
<td>必填</td>
</tr>
<tr>
<td><code>--device</code></td>
<td>ADB 设备地址</td>
<td>127.0.0.1:16384</td>
</tr>
<tr>
<td><code>--max-runtime</code></td>
<td>最大运行时长(小时)</td>
<td>24</td>
</tr>
<tr>
<td><code>--analysis-interval</code></td>
<td>AI 分析触发频率(分钟)</td>
<td>30</td>
</tr>
<tr>
<td><code>--max-depth</code></td>
<td>探索最大深度(从主界面算起的层级数)</td>
<td>6</td>
</tr>
<tr>
<td><code>--analyze-only</code></td>
<td>只对已有截图重新分析,不启动探索</td>
<td>关闭</td>
</tr>
</tbody>
</table>
</div>
<h3>5.3 查看进度</h3>
<div class="flow-block"># 命令行查看状态
game-analyst status --game my_garden
# 直接读报告文件
cat reports/my_garden/latest_progress.md</div>
<h3>5.4 生成最终报告</h3>
<div class="flow-block"># Markdown 格式(按系统模块分章节)
game-analyst report --game my_garden
# HTML 格式(可直接发给非技术用户浏览)
game-analyst report --game my_garden --format html --standalone</div>
<h3>5.5 完整 CLI 命令一览</h3>
<div class="table-wrap">
<table>
<thead>
<tr>
<th>命令</th>
<th>用途</th>
<th>使用场景</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>game-analyst explore</code></td>
<td>启动自主探索</td>
<td>挂机跑游戏/网页深拆</td>
</tr>
<tr>
<td><code>game-analyst status</code></td>
<td>查看当前探索状态</td>
<td>中途了解进度</td>
</tr>
<tr>
<td><code>game-analyst report</code></td>
<td>生成/重新生成分析报告</td>
<td>探索结束后导出最终报告</td>
</tr>
<tr>
<td><code>game-analyst compare</code></td>
<td>多游戏横向对比报告</td>
<td>对比多款游戏的机制/商业化结构</td>
</tr>
<tr>
<td><code>game-analyst timeline</code></td>
<td>活动追踪与变化时间线</td>
<td>定时重跑后查看竞品活动上下线</td>
</tr>
<tr>
<td><code>game-analyst market</code></td>
<td>市场数据采集</td>
<td>通过浏览器采集七麦/SensorTower 等页面数据</td>
</tr>
<tr>
<td><code>game-analyst decision-report</code></td>
<td>决策报告生成</td>
<td>基于多游戏数据生成面向管理层的推荐报告</td>
</tr>
<tr>
<td><code>game-analyst doctor</code></td>
<td>环境自检</td>
<td>首次安装或排查问题</td>
</tr>
<tr>
<td><code>game-analyst init</code></td>
<td>初始化新游戏配置</td>
<td>分析一款新游戏/网站前</td>
</tr>
</tbody>
</table>
</div>
<h3>5.6 多游戏对比</h3>
<p>当你已对多款游戏完成探索后,可以生成横向对比报告:</p>
<div class="flow-block"># 对比 3 款游戏的商业化和核心循环
game-analyst compare --games my_garden,merge_mansion,gardenscapes \
--dimensions monetization,core_loop,progression
# 只对比商业化维度
game-analyst compare --games my_garden,merge_mansion --dimensions monetization</div>
<p>输出为 HTML 格式对比报告,包含:各游戏按 module 对齐的规则矩阵、差异点标注("A 有但 B 无")、各维度优劣小结。可直接发送给同事在浏览器中查看。</p>
<h3>5.7 浏览器模式探索</h3>
<p>对网页游戏、竞品官网或市场数据页面进行探索分析:</p>
<div class="flow-block"># 探索 H5 网页游戏
game-analyst explore --game h5_game --driver browser --url "https://game.example.com"
# 采集市场数据页面
game-analyst market --game my_garden --url "https://www.qimai.cn/app/..." --headless</div>
<p>浏览器模式自动利用 DOM 结构精确识别可交互元素,覆盖率高于纯视觉检测。需安装可选依赖:<code>pip install game-analyst-agent[browser]</code></p>
<h3>5.8 活动追踪与时间线</h3>
<div class="flow-block"># 查看最近 7 天的变化记录
game-analyst timeline --game my_garden --last 7
# 输出为 HTML 格式
game-analyst timeline --game my_garden --last 30 --format html</div>
<p>需先对同一游戏进行过多次探索(不同日期),工具会自动对比各次结果,标注新增/消失的界面和规则。</p>
<h3>5.9 决策报告</h3>
<div class="flow-block"># 生成面向管理层的项目选型支撑报告
game-analyst decision-report \
--games my_garden,merge_mansion,gardenscapes \
--question "花园经营赛道哪款产品的商业化结构最适合小团队复制"</div>
<p>输出 HTML 格式决策报告:结论先行 + 对比矩阵 + 数据支撑 + 风险提示 + 建议。可直接用于项目评审会。</p>
</div>
<!-- SECTION 6 -->
<div class="section purple" id="s6">
<h2>六、输出产物说明</h2>
<p class="sec-intro">工具运行后产出哪些文件,各自的用途和阅读方式。</p>
<h3>6.1 目录结构</h3>
<div class="flow-block">game-analyst-agent/
├── games/
│ └── my_garden/
│ ├── game.yaml 游戏配置
│ ├── db/mechanics.db SQLite 数据库(规则、截图索引、运行记录)
│ ├── screenshots/explore/ 探索模式截图(按 pHash 命名)
│ └── logs/ 运行日志
├── reports/
│ └── my_garden/
│ ├── latest_progress.md 最新增量进度报告(每 30min 更新)
│ └── final_20260522.md 最终完整报告
└── .env API Key 配置(不分享)</div>
<h3>6.2 增量进度报告(每 30 分钟)</h3>
<p>自动生成于 <code>reports/{game}/latest_progress.md</code>,包含:</p>
<ul>
<li>已探索的唯一界面数量</li>
<li>本轮新发现的规则列表</li>
<li>按 module 分类的规则统计</li>
<li>新发现率(判断是否接近探索饱和)</li>
<li>累计 AI 调用次数和估算成本</li>
</ul>
<h3>6.3 最终报告(按系统分模块)</h3>
<p>探索结束后生成,结构示例:</p>
<div class="flow-block">## core_loop(核心循环)
- 主循环为:种植鲜花 → 收获 → 完成订单 → 获取金币/经验
- 鲜花种植需要种子 + 花盆,花盆数量限制同时种植上限
...
## resource(资源系统)
- 金币:完成订单获得,用于购买种子和扩展花盆
- 元宝:付费货币,用于加速和抽奖
...
## monetization(商业化)
- 主要付费点:加速道具、稀有种子抽奖、礼包直售
- 公会竞赛推动竞争消费
...</div>
<h3>6.4 数据库直查(高级用法)</h3>
<p>有 SQL 基础的用户可以直接查询数据库获取结构化数据:</p>
<div class="flow-block"># 查看各模块规则数量
sqlite3 games/my_garden/db/mechanics.db \
"SELECT module, COUNT(*) FROM rules GROUP BY module ORDER BY COUNT(*) DESC"
# 导出所有高置信度规则
sqlite3 games/my_garden/db/mechanics.db \
"SELECT module, rule_text FROM rules WHERE confidence >= 0.8 ORDER BY module"</div>
</div>
<!-- SECTION 7 -->
<div class="section" id="s7">
<h2>七、支持的模型与成本估算</h2>
<p class="sec-intro">工具的分析阶段支持多种视觉 AI 模型,可按需在成本和精度之间取舍。</p>
<h3>7.1 成本模型</h3>
<div class="callout callout-info">
<div class="callout-title">成本分离设计</div>
探索阶段完全在本地运行(OpenCV + 感知哈希),成本为零。只有分析阶段(AI 模型看图提取规则)产生费用。分析频率可配置:降低频率 = 降低成本。
</div>
<h3>7.2 24 小时运行成本估算</h3>
<div class="table-wrap">
<table>
<thead>
<tr>
<th>模型</th>
<th>分析频率</th>
<th>24h 估算张数</th>
<th>24h 估算成本</th>
<th>精度评级</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>通义千问-VL</strong></td>
<td>每 30min</td>
<td>~200 张</td>
<td>约 0.6 元</td>
<td><span class="status status-ok">够用</span></td>
</tr>
<tr>
<td><strong>字节豆包 Vision</strong></td>
<td>每 30min</td>
<td>~200 张</td>
<td>约 0.4 元</td>
<td><span class="status status-ok">够用</span></td>
</tr>
<tr>
<td><strong>智谱 GLM-4V</strong></td>
<td>每 30min</td>
<td>~200 张</td>
<td>约 1.0 元</td>
<td><span class="status status-ok">够用</span></td>
</tr>
<tr>
<td><strong>Claude Sonnet</strong></td>
<td>每 30min</td>
<td>~200 张</td>
<td>约 4.0 元</td>
<td><span class="status status-info">高精度</span></td>
</tr>
</tbody>
</table>
</div>
<div class="callout callout-ok">
<div class="callout-title">推荐策略</div>
日常深拆用通义千问(成本最低,精度满足规则提取)。需要精细分析商业化结构或复杂系统时,对特定截图切换 Claude 做二次分析。
</div>
</div>
<!-- SECTION 8 -->
<div class="section warn" id="s8">
<h2>八、迭代路线图</h2>
<p class="sec-intro">工具的版本演进历程,全部功能已交付。</p>
<div class="table-wrap">
<table>
<thead>
<tr>
<th>版本</th>
<th>能力</th>
<th>业务价值</th>
<th>状态</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>MVP</strong></td>
<td>自主探索 + 规则提取 + 增量报告</td>
<td>单游戏自动深拆</td>
<td><span class="status status-ok">已完成</span></td>
</tr>
<tr>
<td><strong>v1.1</strong></td>
<td>多游戏对比报告</td>
<td>横向对比 3-5 款参照游戏,支撑项目选型</td>
<td><span class="status status-ok">已完成</span></td>
</tr>
<tr>
<td><strong>v1.2</strong></td>
<td>数值事实提取</td>
<td>提取具体数值(定价/时间/消耗量),不止文字描述</td>
<td><span class="status status-ok">已完成</span></td>
</tr>
<tr>
<td><strong>v1.3</strong></td>
<td>定时重跑 + 活动追踪</td>
<td>跟踪竞品运营节奏:限时活动、礼包更替、版本更新</td>
<td><span class="status status-ok">已完成</span></td>
</tr>
<tr>
<td><strong>v1.4</strong></td>
<td>浏览器模式 + 市场数据采集</td>
<td>补充七麦/SensorTower 数据,形成完整视角</td>
<td><span class="status status-ok">已完成</span></td>
</tr>
<tr>
<td><strong>v1.5</strong></td>
<td>决策报告模板</td>
<td>自动生成面向管理层的对比+推荐格式报告</td>
<td><span class="status status-ok">已完成</span></td>
</tr>
<tr>
<td><strong>v1.6</strong></td>
<td>资源流转建模 + 探索策略优化</td>
<td>经济系统拓扑自动推断 + 界面覆盖率提升</td>
<td><span class="status status-ok">已完成</span></td>
</tr>
<tr>
<td><strong>v1.7</strong></td>
<td>探索智能增强(8 项)</td>
<td>模拟真实用户全部交互行为,消除覆盖盲区</td>
<td><span class="status status-ok">已完成</span></td>
</tr>
</tbody>
</table>
</div>
<h3>8.1 各版本核心交付</h3>
<div class="table-wrap">
<table>
<thead>
<tr>
<th>版本</th>
<th>关键命令/能力</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>MVP</strong></td>
<td><code>explore</code> + <code>report</code> + <code>doctor</code> + <code>init</code> — 单游戏自动深拆闭环</td>
</tr>
<tr>
<td><strong>v1.1</strong></td>
<td><code>compare</code> — 跨游戏规则对齐 + 差异标注 + HTML 对比矩阵</td>
</tr>
<tr>
<td><strong>v1.2</strong></td>
<td>facts 表 — 结构化数值事实提取(定价/时间/消耗量)</td>
</tr>
<tr>
<td><strong>v1.3</strong></td>
<td><code>timeline</code> — 定时重跑 + 活动上下线检测 + 变化时间线</td>
</tr>
<tr>
<td><strong>v1.4</strong></td>
<td><code>market</code> + BrowserDriver — 浏览器模式探索 + 市场数据页采集</td>
</tr>
<tr>
<td><strong>v1.5</strong></td>
<td><code>decision-report</code> — 多游戏综合分析 + 面向管理层的决策报告</td>
</tr>
<tr>
<td><strong>v1.6</strong></td>
<td>resource_flows 表 + Tab 扫描 + 滚动探索 — 资源拓扑 + 覆盖率提升</td>
</tr>
<tr>
<td><strong>v1.7</strong></td>
<td>长按 / 弹窗关闭 / 边缘抽屉 / 悬停 / 加载等待 / 暗色适配 / 自适应滚动 / Cookie 处理</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- SECTION 9 -->
<div class="section gray" id="s9">
<h2>九、常见问题</h2>
<p class="sec-intro">使用中可能遇到的问题和解决方式。</p>
<div class="callout callout-info">
<div class="callout-title">Q: ADB 连接失败怎么办?</div>
确认模拟器已启动且开启 ADB 调试。在终端运行 <code>adb connect 127.0.0.1:16384</code>,然后运行 <code>game-analyst doctor</code> 查看状态。MuMu 12 默认端口为 16384,如有多个模拟器实例端口会递增。
</div>
<div class="callout callout-warn">
<div class="callout-title">Q: 探索一直在同一个界面打转?</div>
v1.7 起工具会自动检测并关闭弹窗(签到、活动、Cookie 同意等)。若仍出现打转,可能是非标准弹窗。检查日志 <code>games/{game}/logs/</code> 中的回退记录,或手动关闭后探索会自动继续。
</div>
<div class="callout callout-info">
<div class="callout-title">Q: 分析结果中 "other" 分类太多怎么办?</div>
这通常意味着模型对该游戏界面的理解不够精确。可以尝试:1) 切换到更强的模型(如 Claude);2) 让工具运行更长时间积累更多界面,后续分析会利用上下文自动修正。
</div>
<div class="callout callout-info">
<div class="callout-title">Q: 如何同时分析多款游戏?</div>
开多个模拟器实例,每个实例打开不同游戏,分别启动:
</div>
<div class="flow-block">game-analyst explore --game game_a --device 127.0.0.1:16384
game-analyst explore --game game_b --device 127.0.0.1:16416 # 第二个实例端口</div>
<div class="callout callout-ok">
<div class="callout-title">Q: 如何把报告分享给不装工具的同事?</div>
使用 <code>game-analyst report --game my_garden --format html --standalone</code> 生成单文件 HTML,用浏览器直接打开,无需任何安装。可以通过飞书/微信直接发送文件。
</div>
<div class="callout callout-warn">
<div class="callout-title">Q: 运行中电脑休眠或网络断了怎么办?</div>
工具具备断线恢复机制:ADB 断连后会自动重试连接;API 调用失败会重试后跳过。已探索的数据不会丢失,重新启动后会从中断点继续。
</div>
</div>
<!-- SECTION 10 -->
<div class="section danger" id="s10">
<h2>十、适用场景与边界</h2>
<p class="sec-intro">工具擅长什么,不擅长什么,使用者需要明确的期望。</p>
<h3>10.1 适合的场景</h3>
<div class="grid-3">
<div class="card ok">
<div class="card-label">竞品机制拆解</div>
<div class="card-text">对目标竞品的系统规则、数值、资源结构、商业化节点进行系统性采集</div>
</div>
<div class="card ok">
<div class="card-label">项目选型调研</div>
<div class="card-text">横向对比多款同赛道产品,生成对比矩阵和决策报告</div>
</div>
<div class="card ok">
<div class="card-label">运营活动监控</div>
<div class="card-text">定期重跑检测竞品活动上下线、礼包更替、版本变化</div>
</div>
</div>
<div class="grid-3">
<div class="card ok">
<div class="card-label">市场数据采集</div>
<div class="card-text">浏览器模式采集七麦/SensorTower 等数据页面信息</div>
</div>
<div class="card ok">
<div class="card-label">H5/网页游戏分析</div>
<div class="card-text">对浏览器中运行的 H5 游戏或网页应用进行界面探索和结构分析</div>
</div>
<div class="card ok">
<div class="card-label">新手流程评估</div>
<div class="card-text">自动走完新手引导,记录每一步操作和界面变化</div>
</div>
</div>
<h3>10.2 不适合的场景</h3>
<div class="callout callout-danger">
<div class="callout-title">以下场景超出工具能力范围</div>
<ul>
<li><strong>深层付费体验</strong> &mdash; 工具不会付费,无法探索付费墙后的内容</li>
<li><strong>实时 PvP / 高操作玩法</strong> &mdash; 动作游戏/射击游戏的核心体验无法通过静态截图分析</li>
<li><strong>社交互动系统</strong> &mdash; 公会、好友、聊天等需要多账号交互的系统,单设备无法覆盖</li>
<li><strong>直接生成商业结论</strong> &mdash; 工具提取事实和规则,商业判断由分析师完成</li>
<li><strong>反作弊规避</strong> &mdash; 部分游戏可能检测模拟器环境,导致体验受限</li>
</ul>
</div>
<h3>10.3 使用建议</h3>
<div class="callout callout-warn">
<div class="callout-title">最佳实践</div>
<ul>
<li>先手动体验 15-30 分钟,了解游戏基本结构,再挂机让工具补充覆盖</li>
<li>工具产出的规则报告是<strong>初稿</strong>,需结合截图核实低置信度规则</li>
<li>对重点分析对象,建议跑 4-8 小时以获得足够覆盖率</li>
<li>多游戏对比时,各游戏的探索时长应尽量一致,保证数据可比性</li>
</ul>
</div>
</div>
<!-- FOOTER -->
<footer>
战略研究部 &middot; 2026-05-22<br>
仅供内部使用 &nbsp;|&nbsp; INTERNAL ONLY
</footer>
</div>
</body>
</html>