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>
10 KiB
FacereDataset 执行日志
时间倒序,最新在顶部。
2026-04-23 20:10 策略大调:登录内容入场 + 云服务器 + EDA→KiCad 转换
Claude 会话
四项变更落实到文档(暂不写代码,等云服务器到位):
1. 登录态内容纳入范围
原则(CLAUDE.md):
- 合法账号登录后抓,禁止盗号 / 共享号
- 凭据集中云服务器
~/.secrets/(mode 700),不入 git / 日志 / metadata - 仍不绕付费墙、不破 DRM、不抓站点明确禁抓的内容
- 换号 / 重登事件记
docs/secrets.md(只事件、不含值)
2. 云服务器(广州,待交付)
新增 plan.md §0.5 基础设施段:
- 0.5.1 机器初始化:git / git-lfs / uv / python 3.11+,非 root SSH,
~/.secrets/ - 0.5.2 调度:tmux/nohup 长跑 + systemd timer 增量
- 0.5.3 登录态获取:cookie 导出流程
3. 存储分级演进
plan.md §1.4 改写:
- 前期 < 50 GB:云服务器磁盘 + Gitea LFS
- 中期 50–200 GB:评估 Gitea 容量压力;扩容 or 分仓
- 后期 > 200 GB:迁对象存储(OSS / COS / MinIO),Gitea 只存元数据 + 指针
- 50 GB 是决策评估点,不过早迁移
4. 立创 EDA → KiCad 转换
新增 plan.md §1.6(登录态工程源抓取)+ §1.7(EDA→KiCad 转换):
- §1.6 用登录账号抓
u.lceda.cn/api/project/<uuid>工程源 JSON,存source.json - §1.7 写
scripts/convert_to_kicad.py,候选工具easyeda2kicad.py(pypi,活跃维护) - 批处理扫
data/raw/oshwhub/→ 输出data/processed/oshwhub/<uuid>/kicad/ - 跑
kicad-cli sch erc / pcb drc做语法校验,失败样本记data/state/convert_failed.jsonl - 目的:打通 oshwhub (EasyEDA) 与 bshada/open-schematics (KiCad) 两个生态的训练语料
同步改动
docs/sources/oshwhub.md§3.5 从"未开放"改为"需登录,纳入范围";R4 风险更新README.md数据源表加「登录态」列,加运行环境说明
等待
- 广州云服务器到位 → 启动 Phase 0.5
- 账号登录凭据由 Charles 提供
2026-04-23 19:55 oshwhub.md 重写成完整调研文档
Claude 会话
Charles 要求把 12 493 总数验证、90 项目采样结果合进主调研文档。
docs/sources/oshwhub.md 重写为 9 节 + 2 附录的完整调研:
- 一页纸 TL;DR 表
- 站点架构
- robots.txt 与合规
- API 与抓取入口(列表 / SSR 详情 / 附件 CDN / 排除项 / 未开放端点)
- 项目总数验证(新):三路 sort 一致 + 分页二分搜索(250 × 50 = 12 500 吻合)+ grade 覆盖抽样
- 抽样语料特征(从 oshwhub_corpus_estimate.md 并入):体积 / 文件类型 / license 分布
- Schema 映射
- 速率与礼貌
- 目录输出约定
- 风险与未解决(7 条)
- 附录:重跑命令、变更历史
删除重复文件 oshwhub_corpus_estimate.md(内容已并入 §5)。
2026-04-23 19:50 加入 HF bshada/open-schematics 计划
Claude 会话
Charles 点名把 https://huggingface.co/datasets/bshada/open-schematics 纳入第一批。
调研结论:
- 这是已预处理的 HF 数据集,非待爬网站
- 78 parquet shards 6.4 GB;CC-BY-4.0(商用友好)
- 10K+ 条记录,每条含
.kicad_sch源 / PNG / 组件列表 / JSON / YAML / name / description - 与 oshwhub (EasyEDA) 互补,补 KiCad 生态
决定:
- 整包镜像到
data/external/huggingface/bshada--open-schematics/,不拆 per-project 目录 - 用
huggingface-cli download ... --repo-type dataset拉;parquet 走 LFS - 维护单独的
datasets.md,不与 per-project 的projects.md混
改动:
- 新增
docs/sources/hf_bshada_open_schematics.md完整调研 plan.md加 Phase 1.5README.md数据源表加一行
未下载,等拍板 6.4 GB LFS 预算。
2026-04-23 19:30 Phase 1 MVP:10 个高质量 oshwhub 项目入库
Claude 会话:承接仓库初始化
API 调研结论
- 列表 API:
GET https://oshwhub.com/api/project?page=N&pageSize=M&sort=hot,无鉴权,返回 12493 个项目元数据(含 grade / likes / stars / views / forks) - 详情:
GET https://oshwhub.com/<path>是 SSR HTML,嵌入 escaped JSON,含license+attachments[](每个带 name / src / size / md5 / ext / mime / download_count) - 附件 CDN:
https://image.lceda.cn{src}— 已验证无鉴权直接下载 - EasyEDA 工程源 JSON(
u.lceda.cn)需登录,v0.1 不抓 - 详细调研见
docs/sources/oshwhub.md
选 10 个高质量项目
判据:grade == 4(平台精品徽章) + likes ≥ 100 + 应用领域多样(避免同类堆叠)+ 排除 _copy 派生仓。
10 个项目覆盖:调试器、加热台、盖革计数器、可调电源、焊台、智能手表、USB 测电流、ZVS 感应加热、AI 开发板、红外热成像。
MVP 爬虫
位置:crawlers/oshwhub/crawler.py
list_projects()— 列表 API 分页pick_top()— 按 like×3 + star + fork×2 + views/100 + comments×2 + grade×50 排序parse_detail_html()— 从 SSR HTML 提取 title / license / description / attachmentscrawl_one()— 每项目产出:metadata.json/description.md/cover.*/files/*/_urls.json- QPS ≤ 0.5(
SLEEP_BETWEEN = 2.0),UA 显式声明FacereDataset/0.1
抓取与入库
- 10/10 成功,52 个附件,524 MB
- Gitea LFS(v25.4.3 原生支持)+ 本地
git-lfs 3.5.1(用户态二进制装在~/.local/bin/) .gitattributes规则:data/raw/**/files/**一律走 LFS;元数据(metadata.json / description.md / _urls.json / cover.*)走普通 git- 每项目目录结构:
data/raw/oshwhub/<uuid>/ ├── metadata.json # 按 schemas/project.schema.json ├── description.md ├── cover.{jpg,png,jpeg} ├── _urls.json # 所有原始 URL 清单 └── files/* # 原始附件(LFS)
改动汇总
- 新增:
crawlers/oshwhub/{__init__,__main__,crawler}.py、schemas/project.schema.json、docs/sources/oshwhub.md、pyproject.toml - 修改:
.gitattributes(缩窄到data/raw/**/files/**)、.gitignore(移除data/raw/*排除)
下一步建议
- 验收 10 个项目元数据质量(随机抽 2-3 条对照原站)
- 决定 Phase 1.4 放量目标(50?500?全量 12493?)
- Phase 2 准备:GitHub KiCad repo 调研
2026-04-23 19:40 fs-web-stream 排查 + schema 自动校验
Claude 会话(自主推进)
fs-web-stream.jlc.com 定性
重新抓 /CYIIOT/ST_LINK-V2_1 并看 13 个 fs-web-stream.jlc.com 链接的上下文:全部是嘉立创服务侧栏/推广图标(3D 打印、发热片、Ican、EDA 扩展广场、开源硬件平台 badge 等),与项目本身无关。image.lceda.cn/attachments/ 就是项目附件的唯一入口,已确认闭环。docs/sources/oshwhub.md 对应章节已更新。
scripts/validate.py
jsonschema 做两层校验:
- 默认:所有
data/raw/**/metadata.json对schemas/project.schema.json的结构校验 --check-files:另外验证每条 file 的本地 path 存在且 sha256 匹配
结果:10/10 项目两项全通过。
新增
scripts/validate.pypyproject.toml加jsonschema>=4.26
待决策
- 放量规模 —— 已提供实测数据:median ≈ 110 GB,p90 上界 ≈ 660 GB,建议预算 150–180 GB(见
docs/sources/oshwhub_corpus_estimate.md) - 是否需要抓
u.lceda.cn的 EasyEDA 源 JSON(需登录,v0.1 跳过)
2026-04-23 19:45 全量规模实测 + License 分布
Claude 会话(自主推进)
写 scripts/estimate_size.py,只抓详情 HTML 解析 attachments[].size,不下载;采样 90 个 hot 项目(3 页 × 30)。
关键发现:
- 单项目 median 9 MB / mean 22 MB / p90 54 MB / max 204 MB;12493 全量 median 估算 110 GB,p90 上界 660 GB
- 视频 (.mp4 + .qt) 占 54% 存储!如果训练只要 PCB/原理图/BOM,加
--skip-ext mp4,qt存储直接砍半 - License 分布健康:GPL 3.0 占 49%,Public Domain 21%,CC 系列 ~20%,CERN/TAPR OHL 6%;样本内无闭源
- NC (Non-Commercial) 占 ~11%,商用场景必须过滤
结果固化到 docs/sources/oshwhub_corpus_estimate.md,可随时重跑验证。
建议
- 存储预算定 180 GB(median + 15% buffer)
- Phase 1.4 前给 crawler 加
--skip-ext开关滤视频 - 下游建立 license whitelist 过滤 NC / 未知
2026-04-23 18:50 仓库初始化 & 数据源调研
Claude 会话:初始化
完成:
- 从
git.deepknow.site/Facere/FacereDataset克隆空仓到~/repo/FacereDataset - 调研立创开源平台(oshwhub.com)初步数据:
robots.txt仅 Disallow/posts,其他路径允许- 存在
sitemap.xml(首页 + explore + activities + market 等入口已列出) - 项目详情页路径为
/detail/<uuid>(示例f0652fd2ae3e40b8a0ecc8dc773e3512) - 图片 CDN:
image.lceda.cn/oshwhub/pullImage/... - 文件下载:
fs-web-stream.jlc.com/fs-web-stream/file-operation/download/<snowflake-id> - 页面是 Next.js SPA,首屏 HTML 800KB,但数据加载具体 API 入口需要浏览器 trace(留给 Phase 1.1)
- 创建项目骨架:
README.md— 项目简介与数据源表CLAUDE.md— 项目级 Claude 指令(爬虫规约、合规红线、schema 要求)plan.md— 6 阶段建设计划(Phase 0 骨架 → Phase 5 数据清洗 → Phase 6 持续运营)log.md— 本文件.gitignore— 排除data/rawdata/processeddata/statePython 缓存等- 目录骨架
crawlers/ schemas/ scripts/ data/{raw,processed,state} docs/{sources,} - 每个空目录放
.gitkeep
- 首次提交 & 推送到
origin main
下一步建议:
- 拍板存储方案(本地盘 / Gitea LFS / 外部 OSS)—— 影响 Phase 1.4 放量时机
- 目标规模(1 万 / 10 万 / 全量)
- 决定是否保留二进制附件或只存 URL
- 完成上述 3 项后启动 Phase 1.1(用
chrome-devtoolsMCP 录 oshwhub 的 network trace 定位真实 API)