Files
mdpolish/research-wiki/guides/run-local-clindb-arxiv-experiment.md
T

130 lines
3.8 KiB
Markdown
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.
# 运行本地 ClinDB arXiv 清洗实验
## 1. 适用范围
本指南只运行仓库内已经批准的本地实验脚本:
- 输入:`data/md/` 中的 `dmp.md``ejhf.md``jama.md``sim.md``springer.md`
- 流水线:只包含 `paper.arxiv_submission_stamp` `1.0.0`
- 输出:`artifacts/<YYYY-MM-DD>/runs/<run_id>/`
- 输入只读,不覆盖原文件;
- 不处理 `/home/lihaoze/gov_test_data`
本指南于 2026-08-22 在 Python 3.13.11 环境实际验证。
## 2. 前置条件
在仓库根目录执行,并确认隔离环境和基础检查可用:
```bash
.venv/bin/python --version
.venv/bin/ruff check .
.venv/bin/mypy src tests scripts/run_clindb_arxiv_experiment.py scripts/run_clindb_first_batch_experiment.py
.venv/bin/pytest
```
确认 5 份本地输入存在:
```bash
find data/md -maxdepth 1 -type f -name '*.md' -printf '%f\n' | sort
```
预期看到:
```text
dmp.md
ejhf.md
jama.md
sim.md
springer.md
```
## 3. 运行实验
为本次实验人工选择一个小写运行 ID。同一天已经使用过的 ID 不能覆盖;需要重跑时换一个新 ID。
```bash
.venv/bin/python scripts/run_clindb_arxiv_experiment.py \
--run-id clindb-arxiv-stamp-review
```
成功时终端只显示运行 ID、状态、文档数、修改数和产物目录,例如:
```text
run_id=clindb-arxiv-stamp-review
status=success
documents=5
changes=2
artifacts=/.../mdpolish/artifacts/<YYYY-MM-DD>/runs/clindb-arxiv-stamp-review
```
终端不会打印论文原文或 diff。
## 4. 查看结果
进入终端输出的运行目录。目录结构为:
```text
manifest.json
documents/
├── dmp/
│ ├── result.json
│ ├── cleaned.md
│ └── changes.diff
├── ejhf/
├── jama/
├── sim/
└── springer/
```
先看 `manifest.json` 的整批状态和汇总,再查看各文档:
- `cleaned.md`:成功清洗后的完整 Markdown;
- `changes.diff`:输入到成功输出的人工对比;
- `result.json`:组件、理由、位置、`before``after` 和哈希等机器审计。
`dmp``ejhf``jama` 当前应为零修改,diff 是空文件;`sim``springer` 当前各有一条删除。
## 5. 判断成功
本轮验收口径是:
- manifest 整体状态为 `success`
- 5 份文档全部为 `success`
- 合计 2 条修改;
- `sim` 修改位置为 1:1
- `springer` 修改位置为 18:1
- Springer 两条合法 `arXiv preprint arXiv:` 参考文献保留;
- 每份 `cleaned.md` 的 SHA-256 等于对应 `result.json.current_sha256`
- 输入文件运行前后不变。
只看到运行目录存在不等于成功,必须先检查 manifest 和文档状态。
## 6. 常见失败
### 运行目录已经存在
脚本拒绝覆盖同一日期下的同名运行目录。选择新的 `--run-id`,不要删除或覆盖旧目录来绕过检查。
### 输入缺失或不是 UTF-8
整批预检会失败,不运行任何组件,也不发布最终目录。先确认 `data/md/` 中 5 份文件存在且未被修改。
### 状态为 `failed` 或 `unstable`
对应文档只会生成 `result.json`,不会生成 `cleaned.md` 或 diff。查看错误或残留候选,不要把其他文档的部分成功
当成整批成功。
### Snap 版本的 `jq` 报权限错误
产物目录权限是 `0700`。某些 Snap 沙箱工具不能进入私有目录,即使当前用户拥有权限。可直接用编辑器查看 JSON,
或使用当前虚拟环境中的 Python 读取;不要为了兼容受限工具放宽产物权限。
## 7. 数据边界
产物包含完整论文和原文片段,只能保存在本机 Git 忽略的 `artifacts/`。不得执行 `git add -f`,不得复制到 Wiki、
其他仓库、云存储或外部系统。
`manifest.json` 中的 `retention_until` 是默认 30 天到期时间。第一版不会自动删除;到期后如需清理,必须先确认
具体运行目录。