+
+
+
+
+ 1
+
报告标题与任务信息
+
+
+
+ {{task_info}}
+
+
+
+
+
+
+
+ 2
+
数据质量摘要
+
+
+
+ {{quality_summary}}
+
+
+
+
+
+
+
+ 3
+
账号定位卡
+
+
+
+ {{account_card}}
+
+
+
+
+
+
+
+ 4
+
内容结构
+
+
+
+ {{content_structure}}
+
+
+
+
+
+
+
+ 5
+
发布节奏
+
+
+
+ {{publish_cadence}}
+
+
+
+
+
+
+
+ 6
+
公开指标看板
+
+
+
+ {{metrics_dashboard}}
+
+
+
+
+
+
+
+ 7
+
高表现内容
+
+
+
+ {{high_performance}}
+
+
+
+
+
+
+
+ 8
+
低表现内容
+
+
+
+ {{low_performance}}
+
+
+
+
+
+
+
+ 9
+
内容模式
+
+
+
+ {{content_patterns}}
+
+
+
+
+
+
+
+ 10
+
策略建议
+
+
+
+ {{strategy}}
+
+
+
+
+
+
+
+ 11
+
样本与限制
+
+
+
+ {{sample_limits}}
+
+
+
+
+
+
+
+ 12
+
来源链接
+
+
+
+ {{sources}}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/skills/public-social-account-analyzer/evals/README.md b/skills/public-social-account-analyzer/evals/README.md
new file mode 100644
index 0000000000..dda75f579b
--- /dev/null
+++ b/skills/public-social-account-analyzer/evals/README.md
@@ -0,0 +1,12 @@
+# 评估分层
+
+不要把所有验证塞进一个主评测文件:
+
+| 层级 | 位置 | 用途 |
+| --- | --- | --- |
+| 输出质量 | `evals.json` | 4 条真实、互异的用户任务;用于旧版/新版隔离对照和人工审阅 |
+| 触发边界 | `description_train.json`、`description_validation.json` | 优化 description;validation 不参与调参 |
+| 行为与需求合同 | `datasets/` | P0、边界、外部人工/在线验收目录与固定划分 |
+| 确定性回归 | 仓库 `tests/` | URL、字段、状态、工作区、转义与脚本行为;不依赖真实网络成功 |
+
+改进 Skill 时先对 `evals.json` 运行旧快照与当前版本,各次使用干净上下文;runner 的 `--baseline-skill-dir` 接收旧快照。机械事实优先由 pytest 或断言脚本验证;措辞、洞察质量和 Agent 路径由人工审阅。新增主评测前先确认它不像单元测试,也不与现有四题重复。
diff --git a/skills/public-social-account-analyzer/evals/datasets/CHANGELOG.md b/skills/public-social-account-analyzer/evals/datasets/CHANGELOG.md
new file mode 100644
index 0000000000..77830d42b4
--- /dev/null
+++ b/skills/public-social-account-analyzer/evals/datasets/CHANGELOG.md
@@ -0,0 +1,77 @@
+# 评估数据集变更日志(CHANGELOG)
+
+本评估数据集的所有重要变更均记录在本文件中。
+
+格式基于 [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
+且数据集版本遵循 [语义化版本控制(Semantic Versioning)](https://semver.org/spec/v2.0.0.html)。
+
+## [0.4.0] - 2026-08-03
+
+### 修复(Fixed)
+
+- 将 YouTube 公开账号研究与“按账号名直接写报告”改为应触发;后者触发后仍必须拒绝伪完成并先核验身份和公开证据。
+- 新增 Instagram 公开品牌账号正例,使“其他平台”触发边界同时覆盖开发集和留出集。
+- 删除已停用的抖音页内主动分页断言,改为被动浏览器观测或独立公开索引降级。
+- 删除 validation/test 子目录中与根级数据集说明重复且含失效链接的 README。
+
+## [0.3.1] - 2026-07-31
+
+### 变更(Changed)
+
+- 将过时的“小红书不受支持”用例更新为现代主页批量解析、真实 ID/本地记录键分流与目标身份绑定合同。
+
+### 新增(Added)
+
+- 新增四平台共用的“只有账号名”发现用例,验证主动查找候选、最小歧义确认、禁止拼造 ID 和禁止逐条索取作品链接。
+
+## [0.3.0] - 2026-07-29
+
+### 变更(Changed)
+
+- 模糊的 B站/抖音账号分析请求现在评测按用户目标与证据充分性自适应路由,不再断言固定最近 30 条或固定完整采集。
+- 明确日期窗口使用完整采集编排证明覆盖,取消抖音日期任务的隐含 100 条上限。
+- B站完整覆盖用例保留默认 10,000 条、硬上限 50,000 条预算;快速模糊请求不机械触发该预算。
+
+### 新增(Added)
+
+- 新增抖音模糊请求、无签名同源页内分页、瞬态限制有界重试、最佳部分证据选择与样本节奏标签用例。
+- 新增用例后按固定 seed 42、test ratio 0.30 重新生成 validation/test 分区与 manifest。
+
+## [0.2.0] - 2026-07-27
+
+### 新增(Added)
+
+- 新增 30 个 PRD V1.0 P0 需求的机器可读索引:包含 13 个功能需求、7 个非功能需求和 10 个验收标准。
+- 新增 30 个可追溯的 P0 用例,包含来源参考、平台范围、场景类型、验证模式、客观断言与语义泄露分组。
+- 新增自动生成的 P0 覆盖率报告,将数据集覆盖率与外部证据门分离开来。
+- 新增 P0 目录与覆盖率报告的 Checksum 校验机制。
+
+### 变更(Changed)
+
+- 新增场景分组泄露检查与严格的 P0 覆盖校验。
+- 按场景类型分层 P0 用例,并按粗粒度风险类别对负向触发用例分类。
+- 在数学上可能的情况下,为每个非单例分层保留验证集与测试集示例。
+- 扩充输出契约与条件式微博触发样本,使严格分布校验顺利通过。
+
+### 安全(Security)
+
+- 新增用于凭据拒绝、私有数据排除、无登录行为与防绕过合规的显式 P0 用例。
+
+## [0.1.0] - 2026-07-24
+
+### 新增(Added)
+
+- 新增独立的 `validation_data` 验证集与留出 `test_data` 测试集目录,均衍生自单个 `source` 数据池。
+- 新增数据集级别、source、validation 及 test 文档,涵盖来源、JSONL Schema、字段含义、切分策略与使用边界。
+- 新增路径配置示例与可复现切分与校验的操作指南。
+- 新增清单元数据(manifest),包含数据集版本、路径、分层策略、质量检查、计数、分布与 SHA-256 校验和。
+
+### 变更(Changed)
+
+- 标准化默认评估切分比例为 70% 验证集与 30% 测试集,固定 random seed 为 42 并使用数据集特定的分层字段。
+- 扩展校验逻辑,以检测 Schema 违规、重复 ID、跨分区泄露、源覆盖不完整、计数不匹配以及校验和漂移。
+
+### 安全(Security)
+
+- 规范本地权限基线为目录 `0750`、文件 `0640`。
+- 严禁在评估文件中包含凭据、Cookie、Access Token、私有平台导出或个人敏感数据。
diff --git a/skills/public-social-account-analyzer/evals/datasets/README.md b/skills/public-social-account-analyzer/evals/datasets/README.md
new file mode 100644
index 0000000000..b4117ffd6b
--- /dev/null
+++ b/skills/public-social-account-analyzer/evals/datasets/README.md
@@ -0,0 +1,104 @@
+# 离线评估数据集
+
+本目录保存行为、P0 追踪和触发边界数据。`source/` 是唯一可手工维护的数据源;`validation_data/`、`test_data/` 与 `manifest.json` 均由固定脚本生成。
+
+数据是合成提示与断言,不来自用户聊天、私信、私有后台或购买数据。示例公开 URL 只表达场景,不表示离线评估会访问网络。
+
+## 目录
+
+```text
+datasets/
+├── README.md
+├── CHANGELOG.md
+├── config.example.json
+├── manifest.json
+├── p0_requirements.json
+├── p0_coverage.json
+├── source/
+│ ├── behavior_cases.jsonl
+│ ├── p0_cases.jsonl
+│ ├── trigger_should.jsonl
+│ └── trigger_should_not.jsonl
+├── validation_data/*.jsonl
+└── test_data/*.jsonl
+```
+
+## 记录合同
+
+所有文件为 UTF-8 JSONL,每行一个对象,文件末尾保留换行。每个文件内 `id` 唯一且发布后稳定;字符串不得为空,`assertions` 必须是非空字符串数组。
+
+`behavior_cases.jsonl`:
+
+| 字段 | 含义 |
+| --- | --- |
+| `id`, `name` | 稳定 ID 与场景名 |
+| `platform`, `category`, `account_type` | 平台与分层字段 |
+| `prompt`, `expected_output`, `assertions` | 用户任务、预期与原子断言 |
+
+`p0_cases.jsonl`:
+
+| 字段 | 含义 |
+| --- | --- |
+| `primary_p0_id`, `p0_ids`, `source_ref` | 需求来源与覆盖编号 |
+| `platform`, `scenario_type`, `scenario_group` | 平台、场景类型与防近重复泄漏分组 |
+| `verification_type` | `automated`、`agent_eval`、`external_live` 或 `external_manual` |
+| `prompt`, `expected_output`, `assertions` | 测试任务与逐项断言 |
+
+触发记录:
+
+| 文件 | 必需字段 |
+| --- | --- |
+| `trigger_should.jsonl` | `id`, `label=should_trigger`, `platform`, `query` |
+| `trigger_should_not.jsonl` | `id`, `label=should_not_trigger`, `category`, `reason`, `query` |
+
+不得把凭据、Cookie、Token、私有指标或个人敏感信息写入任何记录。
+
+## 划分
+
+- `source/`:100% 主数据池,不直接作为运行期分区。
+- `validation_data/`:默认 70%,用于日常开发与失败分析。
+- `test_data/`:默认 30%,仅用于版本候选或里程碑。
+- 固定 seed:`42`;配额采用最大余数法。
+- 分层字段:behavior 的 `category`、P0 的 `scenario_type`、正触发的 `platform`、负触发的 `category`。
+- 同一 `scenario_group` 不得跨 validation/test;单样本分层无法两边覆盖时,在 manifest 披露偏差,不能复制样本凑数。
+
+description 触发优化单独使用 `../description_train.json` 与 `../description_validation.json`,不复用本目录 70/30 划分。只根据 train 修改描述,validation 只用于候选选择。
+
+## 命令
+
+从仓库根目录运行:
+
+```bash
+# 预览,不写文件
+python3 tools/skill_eval/split_dataset.py --dry-run
+
+# 以固定参数重新生成 derived partitions 与 manifest
+python3 tools/skill_eval/split_dataset.py --test-ratio 0.30 --seed 42
+
+# 核验现有快照
+python3 tools/skill_eval/split_dataset.py --verify
+
+# 发布前检查小样本分布偏差
+python3 tools/skill_eval/split_dataset.py --dry-run --strict
+```
+
+迁移数据根时传 `--datasets-root