DATUMOJ
阶段汇报 · 2026-10-24 丸に鳥居
阶段汇报 · 0.1 → 0.4

DATUMOJ数据之门

datumoj:世界语里的“数据”(复数)

把日本政府(其次是欧美)的公开数据先抓下来,存成带出处的资料库,再让 AI 在上面检索、问答和分析。每个结论都能追溯到某一次抓取的原始文件。

  • 蔦0.1 IVY已完成
  • 橘0.2 TACHIBANA开发完成
  • 楓0.3 MAPLE进行中
  • 藤0.4 WISTERIA计划中
99个任务完成
315次提交
2,774项测试
7个日本来源在库
向下滚动,或按 ↓ ↑ 翻页
协作 · 团队

三个人,
七条线,两家 agent

A
Aaron JinAI · 开发
境
境五郎日本政府采购
李
李賢志日本商业
热心参与的朋友皮皮神 Astra尚不思議な尚さん
七条开发线 · 完成的任务
两家 agent · 执行的任务
Claude 61 个任务审查交给另一家Codex 38 个任务
协作 · 分工

契约先行,异源审查

契约先行数据模型和接口协议先定,由人审查
假实现解耦各线只依赖契约,不 import 别的线
插件自动发现新增来源只是新建一个文件
集成单独做每个检查点一个集成任务,跑评测门槛
计划 PR→任务 PR→调度器派发→agent 在独立 worktree 里做→异源审查→合并→集成检查点→真实抓取验收→打 tag
任务编号 DATUMOJ-MAPLE-901:项目 · 家纹代号 · 开发线与序号
目标

一个指标,
三个以上的来源

资料库和证据规则,是为两类分析准备的:用三个以上独立来源核对一个数,或把多个来源叠起来回答一个问题。

IVY 打通链路→TACHIBANA 持续运营→MAPLE 上云 · Eurostat · WDI→WISTERIA 国际组织 · 按需提取→验证与融合
为什么换路线

从“每问一次,实时调接口”
到“先抓下来,再回答”

旧项目 Digital Assets 0.9.1 是一个本地 MCP 插件,用户每问一次就实时去调政府 API。交接包里记下的问题,新路线逐条对应:

旧路线DATUMOJ
每次提问都实时调接口,受超时、配额和站点故障影响,同一个问题两次答案可能不同抓取和问答分开。问答只读本地快照,结果可复现,并注明数据截止时间
只能回答接好的“命名路径”,目录里查到不等于能读到内容目录元数据和资源正文批量抓下、解析入库,能查的范围由入库内容决定
意图匹配靠工具和选择器规则,换个说法就容易配错先检索(RAG)找到数据集、条文和公告,再让模型基于检索结果作答
很难跨来源、跨时间分析,比如法令修订和统计变化放在一起看所有来源进同一个库,统一地区代码、时间和出处,可以一起分析
保留旧项目验证过的原则
不编数据,查不到就说有缺口 “目录查到”“正文已读到”“数值已核对”分开记 保留失败记录、口径、单位和空值 用户指定的来源不偷偷换 来源内容一律当数据,不执行其中的指令
总体架构

从官方来源到带出处的回答,一共七步

来源注册表 sources/*.yaml 规定每个来源的范围白名单、许可、频率和抓取策略。派生数据都能从 raw 重新生成,所以只备份 raw 和 manifest。

1
crawl

抓取

httpx,默认 1 请求/秒;ETag / If-Modified-Since 条件请求;遵守 robots.txt

2
raw

原始库

按 sha256 存放、不可变;manifest 记下每次抓取,失败的也记

3
parse

解析

法令和气象厅 XML、PDF、cp932 表格、和历转西历

4
tracks

两条轨道

统计进 Parquet + DuckDB;文本按条、页、节切块,带定位

5
index

索引

FTS5 trigram 关键词 + LanceDB 向量(bge-m3),RRF 融合

6
mcp

分析入口

search_catalog search_docs query_sql cite

7
eval

评测

离线题库:检索召回、出处正确、数值精确

每条出处都由这五样拼成
Citation = source_id + resource_url + snapshot_sha256 + fetched_at + locator
第 27 条page=22総人口 (2015年~2020年)!J24section=… > 5.関連リンクCSV 行号
Python 3.12 + uvDuckDB + ParquetSQLite manifest / FTS5LanceDB + bge-m3(本机 Ollama)lxml · pdfplumber · pypdfium2代码里不调用任何 LLM,由宿主模型通过 MCP 调工具
回答的规矩

每个数字都有来处,
每个缺口都说清楚

  • 数值走 SQLquery_sql 只读,有超时和行数上限。不让模型估数,也不从文本块里“检索出一个数”
  • 出处能还原每条引用都能用 cite 还原到快照里的原文片段
  • 时间分清楚统计期间、发布日、施行日、抓取日各是各的。来源不给日期就写“无数据日期”,不拿抓取日顶替
  • 缺口分四种检索零命中、来源没有入库、抓取失败、超出范围。旧项目把它们混在一起,用户分不清
  • 断言分三级proven 原文直接证明 · inferred 多条证据推导 · unverified 待验证
不做实时查询不做全站镜像不对数值做 RAG不采集个人信息
MCP · IVY 验收的真实核对 · 2026-10-21
東京都と大阪府の人口推移を比較して
query_sql → 观测值 + 逐行出处 → cite 还原到原表单元格
地区2020 年総人口断言locator
14,048 千人proven!J24
8,838 千人proven!J38
1,467 千人proven!J58
来源 jp-estat-files(人口推計 XLSX,工作表 )。datumoj sql 的结果和直接读原表单元格逐格一致。
检索零命中来源没有入库抓取失败超出范围
版本与代号

四枚家纹,四个版本

每个版本取一个家纹作代号,任务编号跟着版本走:DATUMOJ-<代号>-<序号>。序号按开发线分号段,契约 001–009,A–G 线 1xx–7xx,集成 9xx。

  1. 蔦0.1 IVY
  2. 橘0.2 TACHIBANA
  3. 楓0.3 MAPLE
  4. 藤0.4 WISTERIA
0.1 · tsutaIVY 蔦
已完成 · v0.1.0-ivy · 10-21

第一阶段:先打通一条完整的链路

契约 → 法令链路 → 目录与统计 → AI 分析入口。日本 4 类来源入库并能增量更新;在 Claude 里通过 MCP 提问,拿到带出处的回答,不支持的问题会说清缺口。

M0 契约与地基M1 法令链路M2 目录与统计M3 AI 分析入口
0.962Recall@10
门槛 0.85
1.000数值精确率
门槛 1.0
1.000引用可还原率
门槛 0.95
1.000缺口正确率
门槛 1.0
48 个任务:计划内 32 个,验收中发现问题补开的修复 14 个,人决定新增 2 个(抓取开关、抓取管理页面)。e-Gov 目录真实抓取 2,130 个快照、约 880MB。
0.2 · tachibanaTACHIBANA 橘
开发完成 · 已合并 main · m1 tag

日本扩面,开始持续运营

省厅和自治体的政策网页与 PDF、BODIK、抓取监控、每周变化报告、存储适配层(为网络存储做准备)、注册层描述导出,并补上 IVY 遗留的检索缺口。

M1 政策网页 + PDF开发合并(#15)H4 真实问答验收待做
24个任务
554个快照
约 359MB
307个当前文档
网页 208 · PDF 99
2,708个检索块
真实抓取找出的问题:大阪市页面用 <base href> 指定链接基准,采集器没认,15 个 PDF 全部 404。修复后第 3 次抓取新增 17,失败 0。种子:内阁府 · 总务省 · 大阪市。
0.3 · kaedeMAPLE 楓
进行中 · feature/0.3

先把证据做对,再让资料库自己更新

修好审核找出的 13 项证据正确性问题;GitHub Actions 按来源定时抓取,raw 和索引放到 R2,本机用 datumoj pull 拉下来;再接入欧美和日本新来源。

m0 证据正确性m1 云端运行m2 日本新来源m3 欧美 + 多语言
27个任务完成
13项证据问题
有回归测试
2,774项测试
5份 ADR
ADR 0004 证据身份与单调发布 · ADR 0005 状态代次、条件发布与写入租约:同一时间只有一个写入者,中途失败不会留下半截状态。
0.4 · fujiWISTERIA 藤
计划草案 · 待审查

新子系统 Eltiro:按需求从资料库取数

外部项目注入一份声明式需求(指标、国家、时间、运算),Eltiro 把它匹配到资料库里的序列,按固定的数据代次取数、对齐、计算,交出逐行带出处的结果;资料库增长后,自动把新数据匹配到已有需求上。

DATUMOJ = Rikolto 采集与存储(0.1–0.3 的全部,本版本改名)+ Eltiro 提取(新建)+ Purigo 清理(以后)
m0 改名 Rikolto + 契约m1 不用模型端到端m2 模型档位 · 增量重匹配m3 4 个试点全量
~27个任务草稿
新增 Eltiro 线 8xx
4个试点
V13 · #002 · V07 · #003
5个国际来源
IMF OECD ILO COMTRADE WTO
3档许可
原值 · 只派生 · 不流出
读完 130 个案例:几乎都是“某国 × 某指标 × 某段时间”的结构化序列,来源以国际组织为主,日本数据只出现在 3 例。所以第一次匹配多半得到“缺什么”,缺口报告本身就是产出。受限数据只输出整理后的数值,原文和 raw 不流出;送进云端模型也算流出。
一周的数字

10 月 17 日到 23 日

计划、拆任务、派发、审查、合并、验收都走同一套流程。下面的数字来自 git 历史、调度器的任务记录和验收文档。

99个任务完成IVY 48 · TACHIBANA 24 · MAPLE 27
315次提交其中合并 122 次
2,774项测试全部离线,用录制样本
20,751行 Pythonsrc/datumoj
85道评测题法令 · 目录 · 统计 · 网页 · 变化
7个来源在库MAPLE 再加 13 个
5份 ADR嵌入 · 存储 · 门槛 · 身份 · 代次
3个任务同时跑调度器并发上限,每个预留 2GB

每天的提交

10 月,单位:次

测试数随版本增长

版本完成时的全量测试

各版本任务与执行 agent

审查默认交给另一家的模型

ClaudeCodex
来源

日本起步,走向国际

每个来源一个 YAML,本机单独开关;许可核对前一律 internal_only。

已入库 · 日本 7 个

  • jp-egov-lawe-Gov 法令 API v2 · 约 9,000 部法令,按条切块
  • jp-egov-datae-Gov データポータル · CKAN 目录与资源
  • jp-stat-dashboard统计 Dashboard API · 精选指标全地区时间序列
  • jp-estat-filese-Stat 统计表文件 · CSV / XLSX,多为 cp932
  • jp-jma气象厅防灾 XML · 每小时轮询,feed 只留约 7 天
  • jp-gov-web省厅与自治体政策网页、PDF · 内阁府、总务省、大阪市
  • jp-bodikBODIK ODCS · 复用 CKAN 采集器

MAPLE 计划 · 欧美 8 个 + 日本新增 5 个

data.europa.euEurostatdata.gov.ukGovDatadata.gouv.frdata.overheid.nlFederal Register世界银行 WDIe-Stat API国土数值信息2024 经济普查医疗开放数据ABR 地址

WISTERIA 计划 · 国际组织 5 个

IMFOECDILOUN COMTRADEWTO
项目现在在哪

两个版本落地,
一个在做,一个在计划

IVY 已打 tag,TACHIBANA 等真实问答验收,MAPLE 过了两个检查点,WISTERIA 的计划在等审查。

0.1 IVY已完成v0.1.0-ivy · 48 个任务
0.2 TACHIBANA开发完成已合并 main;H4 验收待做
0.4 WISTERIA计划草案Eltiro 提取服务;计划 PR 审查中
10 月 23 日代码审核找出的 13 个证据问题:全部写成回归测试并修好
项目 · 接下来

接下来的事与主要风险

0.2 · H4TACHIBANA 真实问答验收,打 tag
0.3 · m2日本新来源:e-Stat API 等,含真实抓取
0.3 · m3欧美来源 + 多语言,Actions 连续跑一周
部署状态放 R2 还是 NAS,协商中
0.4 · 计划审查 WISTERIA 计划,拆成任务
0.4 · H2国际来源的许可、配额逐个核验
日本站点拒绝 Actions 的海外 IP先手动跑一次;不行的来源退回本机或自托管 runner
两个写入者同时写写入租约 + 条件发布,代次清单记录写入者
受限数据经输出或云端模型流出许可闸门按数据血缘检查;能否送云端缺省为否
把口径不同的序列当成同一个口径、单位不同只作候选;人工确认;标准答案评测
目标一 · 单源失真验证 · 30 例

一个来源可能失真,
就找三个独立来源核对

自报的总量可以修饰,但别人的账本、实物消耗、卫星和统计分布很难陪着一起改。案例页列了五种交叉核对的办法:

镜像法贸易双边对账:你改的数字,对方账上留着原件
实物量锚点用电、货运、药品消耗、疫苗供应量
卫星复核夜光、气溶胶、植被、建成区
超额与存量反推流量可以修饰,存量不行:债务存量、总死亡数
统计指纹分布形状、末位数字、擦改率
总量注水3物价操纵3财政粉饰3人口失真3就业粉饰3贸易造假3卫生数据2环境数据3教育数据2金融数据2选举与犯罪3
目标一 · 有公开记录的案例

三个案例,三种核对

V13镜像法 · 社保和税务的账历史实证

日本 · 每月勤劳统计调查(2018 年曝光)

大企业样本长期没有按规定抽样,工资增速被扭曲十余年。用社保缴纳和税务口径的工资总额作独立标尺对账,重算后的修订幅度就是失真幅度。

stat.go.jpILOOECD
日本官方统计正是现在入库的主体,修订前后的版本都要留住
V07存量反推 · 修订链考古历史实证

希腊 · 政府赤字率(2009)

赤字率从 3.7% 一路上修到 15.4%。逐年比对每次发布的版本,用债务存量变化反推真实流量。

EurostatIMFstatistics.gr
raw 不可变、每次抓取留快照,就是为这种“修订链考古”准备的
V03实物量锚点 · 用电、货运、信贷历史实证

中国 · 工业增加值增速(2008 年后)

官方工业增速和用电、货运走势背离。用电量、铁路货运量、信贷投放合成对照指数(“克强指数”),和官方增速比周期同步性。

stats.gov.cnIEAWorld Bank
不直接抓的国家,数据从国际组织取,锚点照样能对
目标二 · 多源融合分析 · 100 例

把多个来源叠起来,
看见单个来源看不见的

每个案例至少引用 3 个官方数据源。100 例分在六个领域:

国家与区域综合
22
农业、资源与环境
20
宏观经济与金融
18
人口与社会
18
健康、教育与科技
14
基础设施与产业
8
案例里反复用到的来源
Eurostat世界银行 WDIIMFOECDUN COMTRADEWTOILOUNdataWHOFAOBISUNESCO / UNICEFCopernicus / ESA各国统计局
MAPLE 已计划接入WISTERIA 计划接入
目标二 · 案例

三个融合案例

#079逐站追踪 · 3 源:日本统计局 → UNdata → 世界银行国家综合统计

一个数字的旅行变形记

同一个指标从日本统计局出发,经联合国到世界银行,逐站比对原始值、转载值和加工值,找出插值补缺和口径拼接发生在哪一站。

stat.go.jpUNdataWDI
出处要写到原始发布方和快照,而不是三手加工品
#051传导链 · 3 源:WMO 气象 → FAO 产量 → FAO 粮价预警农业与粮食安全

从云层到粮价:干旱的传导链

干旱指数 → 产量 → 库存 → 价格,四环逐环测时滞,全链走完 6 到 12 个月。

WMOFAOSTATFAO GIEWS
时间口径要分清统计期间、发布日和抓取日
#003镜像比对 · 3 源:UN COMTRADE · WTO · WCO国际贸易与海关

贸易镜像黑洞:出口 100,进口只剩 60

双边镜像逐商品编码比对,扣除运费保险和转口后,剩余差额集中在少数商品上。

UN COMTRADEWTOWCO
数值只从 SQL 取,差额每一行都能回到出处

连接数据,而不是占有数据

描述让模块能被发现 调用让模块能组合 证据让数据可追溯