Files
FacereDataset/CLAUDE.md
Zhang Jiahao b0ddcf3f14 Allow login content; plan cloud infra, storage tiers, EDA→KiCad conversion
Why:
- 策略调整:登录后才能访问的内容从"禁止"改为"纳入本项目范围",
  同时明确凭据管理红线(合法账号、不入 git、云服务器隔离)。
  解锁 u.lceda.cn 工程源 JSON,这是训练数据质量的关键升级。
- 计划中"存储"和"运行环境"一直模糊,现在按 Charles 提供的广州云服务器
  + 存储分级演进(Gitea LFS → 对象存储)给出清晰路径。
- 打通 oshwhub (EasyEDA) 与 bshada/open-schematics (KiCad) 两个生态,
  需要一个 EDA→KiCad 批转换脚本。先把它纳入 plan,等拿到工程源再实现。

What:
- CLAUDE.md: 登录态条款从"不抓"改为"合法账号可抓",凭据管理写死在
  ~/.secrets/,事件记 docs/secrets.md;合规红线同步更新
- plan.md §0.5: 新增 基础设施段(机器初始化 / 调度 / 登录态获取)
- plan.md §1.4: 存储分级演进(< 50 GB 云盘,50-200 GB 评估,> 200 GB 迁对象存储)
- plan.md §1.6: 登录态抓 u.lceda.cn 工程源
- plan.md §1.7: scripts/convert_to_kicad.py 批处理,候选 easyeda2kicad.py
- plan.md 风险表: 加账号封禁 / 转换失败 / 云服务器单点故障三条
- docs/sources/oshwhub.md: u.lceda.cn 从"未开放"移到"需登录,已纳入范围"
- README.md 数据源表: 加"登录态"列 + 运行环境说明
- log.md: 本次策略变更记录

未改:未新增 docs/infra.md(等机器到位 + 真实细节后再写),scripts/convert_to_kicad.py
尚未实现(等拿到工程源样本再实现)。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 20:57:30 +08:00

62 lines
4.0 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.
# CLAUDE.md — FacereDataset
项目级 Claude Code 指令。与 `~/.claude/CLAUDE.md` 全局指令合并使用,本文件覆盖冲突项。
## 项目性质
数据集仓库。产出代码 + 元数据 + (通过 LFS 或外链引用的)原始资产。不要把几百 MB 的 Gerber / STEP 直接塞进 git。
## 核心工作流
1. **每次重要动作结束后**:追加一条到 `log.md`(时间倒序,顶部最新),格式:
```
## YYYY-MM-DD HH:MM <一句话概括>
- 做了什么
- 为什么(如果非显然)
- 下一步建议
```
2. **计划有调整时**:更新 `plan.md`,不要新建 `plan_v2.md`。
3. **新增爬虫**:放到 `crawlers/<site>/`,至少包含 `__init__.py` 入口、`README.md`(目标站点调研),遵循 `schemas/project.schema.json`。
4. **数据输出位置**`data/raw/<site>/<date>/` 存原始响应JSON/HTML`data/processed/<site>/` 存清洗后的 jsonl。两者都在 `.gitignore` 里,不入库。
## 爬虫规约
- **速率**:默认 QPS ≤ 1/site并发 ≤ 3。可配置但不得默认贪婪。
- **缓存**:所有 HTTP 响应落盘(`data/raw/...` + `requests-cache` 或 httpx + diskcache重跑不要重新打目标站。
- **UA**:声明为 `FacereDataset/<version> (+<repo-url>; contact:<email>)`,不要伪造浏览器。**例外**:目标站主动封标识 UA、且内容属公开静态资源时允许切 lightpanda/web-access 真浏览器模式,并在 commit message 说明原因。
- **robots.txt**:每个爬虫 **必须** 先查 `robots.txt`;命中 Disallow 的路径直接跳过,不要"绕过"。
- **登录态**:登录后才能访问的内容**在本项目范围内**。使用前提:
- 账号必须是我们合法持有的(本人 / 授权的),**禁止**盗号、共享号、撞库号
- 依然不绕付费墙、不破 DRM、不抓对方显式标注"禁止训练 / 禁止抓取"的内容
- 登录凭据集中管理在云服务器的 `~/.secrets/`(见 `docs/infra.md`**禁止**写进 git / 环境变量明文、日志
- cookie / session 变更时写短笔记到 `docs/secrets.md`(不含值,只含"YYYY-MM-DD 换号 / 重登 oshwhub"这类事件)
- **失败重试**:指数退避 + jitter连续 5xx / 429 超过阈值要停爬、提醒人介入,不要傻重试。
- **断点续跑**state 记到 `data/state/<site>.json`(游标、已处理 ID 集合)。
## 数据 schema
统一以 `schemas/project.schema.json` 为准。每条项目记录至少包含:
`source`, `source_url`, `project_id`, `title`, `description`, `author`, `license`, `created_at`, `updated_at`, `crawled_at`, `tags`, `files[]`(每个文件 `type` / `path` / `size` / `sha256`)。
## 合规红线
- **登录后的内容在范围内**(须合法账号,见上文"登录态");但**禁止**盗号、共享号、撞库号。
- 不绕过付费墙、不破解 DRM。
- 遇到站点明确声明"禁止抓取 / 禁止训练"的内容robots.txt、ToS、meta 标签),跳过并记录到 `data/state/<site>_excluded.jsonl`。
- 每条记录**必须**保留 `license` 字段;无法判定的标 `license: "unknown"` 并在下游过滤时默认剔除。
- 登录凭据管理:只存云服务器 `~/.secrets/`,不入 git、不入日志、不入 metadata.json。
## 约定(项目内部)
- 语言:代码/注释/commit 英文文档README / plan / log中文。
- Python3.11+`uv` 管理依赖,`ruff` 做 lint/format`pytest` 测试。
- 不要为"以防万一"添加抽象或配置项;多爬虫共享需求再抽共用代码。
- commit message 说清楚 **why**,尤其是涉及数据过滤、许可证判定逻辑的改动。
## Claude 行为提醒
- 启动任何爬虫前,先跑 dry-run`--limit 1 --no-write`),确认 schema 和速率正确。
- 一次只推进 `plan.md` 的一个阶段,推进后更新 `log.md`。
- 涉及数据删除(`rm` `data/`)必须先跟用户确认。
- 新发现的反爬/法律坑录入 `docs/pitfalls.md`,不要只放在 log。