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

4.0 KiB
Raw Blame History

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/HTMLdata/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/formatpytest 测试。
  • 不要为"以防万一"添加抽象或配置项;多爬虫共享需求再抽共用代码。
  • commit message 说清楚 why,尤其是涉及数据过滤、许可证判定逻辑的改动。

Claude 行为提醒

  • 启动任何爬虫前,先跑 dry-run--limit 1 --no-write),确认 schema 和速率正确。
  • 一次只推进 plan.md 的一个阶段,推进后更新 log.md
  • 涉及数据删除(rm data/)必须先跟用户确认。
  • 新发现的反爬/法律坑录入 docs/pitfalls.md,不要只放在 log。