# 寅图 · 决策日志

> 为什么要有这个文件：commit 记录"做了什么"，JOURNAL 记录"为什么这么做"。
> 对 AI 而言，代码是骨架，决策日志是血肉——两者合在一起才是完整的数字锚点。

---

## 2026-06-13 — 协议化：oner Protocol v1 + MCP Server

**决策：**
将 oner 行动的个体自明模板正式协议化，定义 **oner Protocol v1**，并实现 **oner MCP Server** 作为标准 AI 接入层。

**为什么这么做：**

目前 oner 的 schema.json / tu.json / timeline.json + verify.js 体系是一套完整的"个体自明"方案，但它只是**项目内部约定**，缺乏：
1. 标准化的发现路径（AI 不知道去哪找）
2. 形式化的字段约束（MUST/RECOMMENDED/OPTIONAL）
3. 标准错误码
4. 隐私控制

协议化之后，AI 只需知道域名就能自动发现 identity 数据——`GET /.well-known/oner/profile.json`。

**为什么对接 MCP：**

MCP（Model Context Protocol）是 Anthropic 发起的开放协议，标准化了 AI 连接外部数据的接口（Resources + Tools + Prompts）。oner 的核心理念和 MCP 天然互补：
- MCP 现有生态聚焦"Agent 如何证明自己被授权"（KYA-OS、SEP-1289 等）
- oner 聚焦"人如何主动告诉 AI 自己是谁"——两者互补，不是竞争

MCP Server 作为 oner 的参考实现，暴露：
- 3 个 Resources：`oner://{domain}/profile|timeline|chain`
- 1 个 Tool：`verify_oner(domain)` → 三者交叉锚定验证

**协议分层设计（关键架构决策）：**

协议本身不绑定 MCP——`.well-known/oner/profile.json` 是纯 HTTP GET 即可读的 JSON。MCP Server 是增强层。这样任何 AI（支持或不支持 MCP）都能消费。

```
个体节点 (静态网站)          MCP Server (本地 stdio)          AI
/.well-known/oner/    →     Resources + verify Tool    →    Claude/任意
(HTTP GET 即可读)           (JSON-RPC over stdin/stdout)   (标准接口)
```

**具体改动：**

| 层 | 改动 | 说明 |
|----|------|------|
| 协议规范 | 新建 `oner-protocol-v1.md` | RFC 风格正式规范：路径约定、JSON Schema、字段分级、错误码、隐私等级 |
| MCP Server | 新建 `mcp-server/` | Node.js/TypeScript + @modelcontextprotocol/sdk，stdio 传输 |
| 节点数据 | 新建 `/.well-known/oner/` | profile.json / timeline.json / chain.json（与根目录旧文件共存，兼容期） |
| 首页 | 更新 index.html JSON-LD | 同步 stats（203 commits, 87 signed, 42%）+ protocolVersion 字段 |
| AI 入口 | 更新 llms.txt | 新增 .well-known/oner/ 路径 + MCP 集成说明 |
| 时间线 | timeline.json 新增条目 | 2026-06-13 协议化里程碑 |

**路径选择：**

| 选了什么 | 为什么 |
|----------|--------|
| `.well-known/oner/` 而非根目录 | RFC 8615 标准，AI 可自动发现 |
| oner Protocol 命名 | 英文优先，国际化 |
| 协议独立于 MCP | 扩大受众，MCP 只是推荐接入方式 |
| stdio 传输（非远程 HTTP） | 符合 oner 去中心化哲学，零服务器依赖 |
| MVP 范围（Resources + 1 Tool） | 先验证核心链路，搜索/Prompts 留后续 |

**被否掉的方案：**
- 只做 MCP 不做数据协议 → 绑定单一生态，受众太窄
- 远程 HTTP MCP Server → 需要服务器，和 oner "静态文件即可参与"的理念矛盾
- 一口气做全功能 → MVP 先验证核心链路

**相关改动：**
- `oner-protocol-v1.md`（新增，协议规范）
- `mcp-server/`（新增目录，TypeScript MCP Server）
- `/.well-known/oner/profile.json`（新增，v1 身份声明）
- `/.well-known/oner/chain.json`（新增，v1 链位声明）
- `/.well-known/oner/timeline.json`（从根目录复制）
- `schema.json`（stats 同步实际数据）
- `timeline.json`（新增一条里程碑）
- `index.html`（JSON-LD 同步 + protocolVersion）
- `llms.txt`（新增 .well-known + MCP 路径）

---

## 2026-06-11 — 概率运算方法：用乘法/加法规则指导项目决策

**决策：**
引入 E.T. Jaynes《概率论沉思录》的加法规则和乘法规则，作为项目评估与方向选择的运算工具。不是用来"预测成功"，而是分解条件、定位瓶颈、消除行动不确定性。

**为什么这么做：**
项目经常会面对"值不值得做""下一步该做什么"这类模糊问题。直觉判断容易受情绪波动影响——顺时高估、逆时低估。概率运算提供了一种可重复、可讨论的分析框架，把"我觉得有戏"变成"条件分解后，瓶颈在 X"。

**两条规则在项目中的映射：**

| 规则 | 公式 | 在 oner 中的用法 |
|------|------|-----------------|
| 加法规则（或） | P(A∪B) = P(A)+P(B)−P(AB) | 多条独立的成功路径，任一成立即不失败。四条路径：① 范式被接受 ② 节点达临界规模 ③ 工具化 ④ 个人锚点完成态 |
| 乘法规则（且） | P(AB) = P(A) × P(B|A) | 串行依赖链：AI识别精度 → 技术验证 → 社区增长 → 外部认可。瓶颈在乘数最小的因子 |

**关键认知：**

1. **概率不是预言，是方向** — 乘法算出的 7% 不是劝退，是指出社区增长是最大瓶颈
2. **合理的确定性** — 无法消除不确定性本身，但可以消除"下一步该做什么"的不确定性
3. **加法保证了不退场** — 个人锚点这一条路（P=0.95）不依赖任何外界条件，永远不会失败

**被否掉的方案：**
- 全靠直觉判断方向（不可复用，不可讨论）
- 引入复杂商业分析框架（太重，不符合寅图"大道至简"）— 乘法加法学两小时就够

**相关改动：**
- 本日志记录方法
- 后续在 constitution.md 或 about.html 中写入认识论基础

---

**决策：**
将 ZKoner 的开发工作流（Claude Code + DeepSeek + GitHub + Web）封装为一个**自包含的单文件脚本** `setup`，7 阶段向导式交互。

**为什么这么做：**

我们自己跑通了这条链路，但每次跟人解释"你需要装 Claude Code，配 DeepSeek 环境变量，建 GitHub 仓库，开 Pages，配 IndexNow……"需要半小时。setup 把认知负担从"理解一堆组件怎么拼"降到"回答几个关于你自己的问题"，且作为单文件可以直接通过 `curl | bash` 运行。

**为什么是单文件自包含：**

第一版 `bootstrap.sh` 从 GitHub raw URL 下载模板——但这意味着脚本依赖网络和 zkoner 仓库。改为自包含后，所有模板（schema.json, timeline.json, tu.json, index.html, llms.txt, robots.txt, sitemap.xml, indexnow.sh, .gitignore, CLAUDE.md, CI workflow）全部内嵌在脚本中。脚本本身就是完整的工具包——下载即用，离线也可运行。

**设计取舍：**

| 取 | 舍 | 理由 |
|----|-----|------|
| 单文件自包含 | 外部模板下载 | 下载即用，离线可用，不依赖仓库 |
| 精简内嵌 indexnow.sh | 完整版 indexnow.sh | 核心功能就够了，高级用法用完整版 |
| GPG 取消（引导中） | GPG 必选 | 降低门槛 |
| gh CLI 非强制 | 强依赖 gh | 没有 gh 也能走手动模式 |
| 向导式交互 | 配置文件驱动 | 一步步问比给 JSON 更友好 |

**文件结构：**
- `setup` — 567 行，12 个内嵌模板，7 个阶段
- 输出目录结构：schema.json, timeline.json, tu.json, index.html, llms.txt, robots.txt, sitemap.xml, indexnow.sh, .gitignore, CLAUDE.md, CNAME, .github/workflows/indexnow.yml

**与 cc-deepseek.sh 的关系：**
setup 不依赖 cc-deepseek.sh，但 DeepSeek 配置方式保持一致（直连 Anthropic API）。setup 是一键到底的项目初始化，cc-deepseek 是独立的后端配置工具。

**相关改动：**
- 新增 `setup`（567 行自包含脚本）
- `template/schema.json` — gpgFingerprint 注释化
- `template/tu.json` — 移除 GPG 引用
- `template/TEMPLATE.md` — GPG 移至可选章节
- `GETTING_STARTED.md` — 新增一键脚本入口，GPG 标记可选
- `CLAUDE.md` — 新增 setup 章节
- `WORKFLOW.md` — 新增 setup 设计取舍

---

## 2026-06-08 — 首页配色：三色闭环的视觉哲学

**决策：**
hero 区四个标签（去平台、自我表征、自组织、长期主义）采用三色互锁方案，无任何标签拥有"自己的"颜色。

**配色拓扑：**

```
去平台:      bg #C71585, font #9370D8
自我表征:    bg #00FA9A, font #C71585
自组织:      bg #C71585, font #00FA9A
长期主义:    bg #9370D8, font #C71585
```

**为什么这么做：**

配色系统不按"每个标签匹配一个独立颜色"的常规思路，而是让每个标签的背景和字体都引用另一个标签的颜色，形成不可拆解的互锁网络。这直接映射 oner 行动的核心哲学：

1. **个体即关系** — 没有一个颜色是孤立的。每个颜色的身份由它被谁引用来定义，正如 oner：你是谁由你跟谁接图来体现。
2. **相照** — 去平台照向自我表征和长期主义，自我表征照向自组织，长期主义照向去平台。你照亮我，我照亮你，不需要中间人盖章。
3. **三生万物** — 3 种颜色，4 个标签，形成闭环。寅图的底层就是三生万物——三元是最简最小可循环结构。
4. **自明不自立** — 没有哪个标签独占一种颜色。自明不是自封，是在关系网络中被看见。

配色系统自己长成了 oner 的视觉隐喻。

**相关改动：**
- hero 区新增四个标签模块（去平台、自我表征、自组织、长期主义）
- 标签布局：flex 三栏，左右各 2 个，`do an oner` 居中
- 标签动画：fadeUp 渐入 + 缓慢来回漂移（60s 周期）
- 新增全屏蓝色轨道（`#0000FF`）+ 白线 + 跑动方块（3s 一趟）
- 英雄区描述段：纯白背景 + `#1a1a2e` 字体 + `寅图` 蓝底白字高亮
- `oner=自我表征` → `oner=DO AN ONER`（全项目 14 文件）
- 参与者命名：望乐者 → oners，寓意 AI时代数字精英
- 语言切换按钮去背景，精简为纯文字
- `i18n.js` `textContent` → `innerHTML` 以支持富文本翻译

---

## 2026-06-07 — GEO 精确数据：schema.json stats 字段

**决策：**
在 schema.json 中加入 `stats` 字段，将 oner 身份中的可量化数据系统化。

**设计原则：**
- 每个数字必须可被独立公开验证（timeline.json / tu.json / GitHub API）
- 不自我吹嘘——数字是中性的、可证伪的
- verify.js 自动交叉比对声明值和实际值，不一致 = 信用受损

**stats 字段包含：**

| 数据点 | 来源 | 当前值 |
|--------|------|--------|
| timelineEntries | timeline.json 长度 | 1 |
| timelineSpan | timeline.json 首末日期 | 2026-05-26/2026-05-26 |
| gpgVerified | schema.json 自身 | true |
| knowsAboutCount | knowsAbout 数组长度 | 3 |
| sameAsPlatforms | sameAs 数组长度 | 1 |
| zkonerIndex | tu.json myIndex | 1 |
| zkonerSupply | tu.json supply | 1 |
| totalCommits | git rev-list --count | 129 |
| signedCommits | git log --format=%G? | 13 |
| commitSignatureRate | signed/total | 10% |

**验证方式：**
- `node verify.js https://节点域名` → 自动计算实际 stats → 与声明比对
- 本地可手工验证：`python3 -c "import json; ..."` 逐项核对

**为什么这么做（GEO 视角）：**
普林斯顿 KDD 2024 论文发现统计数据是提升 AI 引用率最有效的单一策略（+41%）。
LLM 引用偏好可验证的事实——"129 个 commit"比"我很努力"更安全可引用。
差异化的关键：
  模糊声明: "我是AI领域专家"
  精确声明: stats.timelineEntries=1, stats.totalCommits=129, stats.gpgVerified=true
后者每一条都是**可证伪的**——在 AI 引用决策中 = 安全信号。

---

## 2026-06-07 — GEO 对齐：llms.txt + FAQPage Schema + robots.txt

**背景：**
研究 GEO（Generative Engine Optimization）后发现，oner 的核心理念和 GEO 研究结论高度一致。
主要参考：普林斯顿 KDD 2024 论文（九种策略评测）、MAGEO 多智能体框架（ACL 2026）、geo-lint 规则体系。

**oner 已经做对的事（和 GEO 对齐）：**
- 结构化数据让 AI 可解析 → schema.json + JSON-LD
- 独立域名 = 权威锚点 → 个人网站 = 数字领土
- 主动推送 = IndexNow
- 反对关键词堆砌 → 从未做 SEO 伎俩
- 一致性身份 → 域名 + GPG + commit 三者闭环

**本次新增（借鉴 GEO 最佳实践）：**

| 文件 | 作用 | GEO 依据 |
|------|------|----------|
| `llms.txt` | AI 爬虫入口索引，告诉 LLM 从哪开始读节点 | llms.txt 标准，新兴 AI 友好实践 |
| `robots.txt` | 显式允许 GPTBot / ClaudeBot / PerplexityBot 等 | AI 爬虫可能不遵守 * 通配符 |
| ​FAQPage Schema | index.html 新增 4 个问答结构化数据 | FAQ Schema 贡献 43% AI 引用 |
| `sitemap.xml` | 站点地图 | 辅助搜索引擎发现 |
| CI 路径扩展 | 新增 txt/xml 文件变更触发 IndexNow | 覆盖所有 AI 可读文件 |

**GEO 策略对比 oner：**

| GEO 排名 | 策略 | 效果 | oner 是否采用 |
|----------|------|------|---------------|
| 🥇 | 添加统计数据 | +41% 引用 | 待做 |
| 🥈 | 引用外部来源 | +30-40% | 通过 sameAs 和接图实现 |
| 🥉 | 专家引言 | +28% | 通过 GPG 签名和公开时间线体现 |
| ❌ | 关键词堆砌 | -10% | 不采用 |

**被否掉的方案：**
- geo-lint 97 条规则全盘引入：太重，oner 不是 SEO 工具
- 多智能体自动优化（MAGEO）：过度设计，个体节点不需要

---

## 2026-06-07 — IndexNow 协议接入

**问题：**
oner 节点部署后，搜索引擎需要数天到数周才能发现和索引，AI 无法及时认识你。

**决策：**
引入 IndexNow 协议——每次更新网站后主动推送 URL 给搜索引擎。

**为什么 IndexNow 和 oner 同构：**

| | oner | IndexNow |
|---|---|---|
| 范式 | 主动宣告（不等 AI 收敛） | 主动推送（不等爬虫发现） |
| 主权 | 数据在个人域名 | 通知权在站长 |

**具体改动：**
- `indexnow.sh` — 命令行工具（一键配置 + 批量提交 + 状态检查）
- `.github/workflows/indexnow.yml` — CI 自动化，每次 push 自动推送
- `schema.json` — 新增 `indexnowKey` 字段
- `protocol.md` — 新增附录 D「AI 快速识别与 IndexNow 协议」+ 分发原则扩展
- `template/TEMPLATE.md` — 新增 IndexNow 配置步骤

**踩坑：**
- `indexnow.sh` JSON 构建时 bash 字符串拼接的 `\n` 是字面量，`printf %s` 不会转义——改为在字符串中直接换行
- IndexNow 返回 202（pending）时 Key 文件未部署，返回 200 才是真正成功

**已知局限：**
- Google 不支持 IndexNow（有自有 Indexing API 但只对 Job/Livestream 开放）
- Claude web search 用 Bing → 直接受益

**为什么不选择其他方案：**
- Google Indexing API：只对特定内容类型开放，普通网站用不了
- sitemap.xml + ping：Google 已废弃 sitemap ping 端点，Bing 也不推荐
- 被动等待爬虫：和 oner 哲学矛盾——"主动宣告"是核心

---

## 2026-06-06 — 命名体系收敛

**决策：**

| 层次 | 名称 | 用途 |
|------|------|------|
| 对外 | **寅图计划** | 以人为本，探讨个体在AI时代的创造力 |
| 对内/技术 | **寅图规范** | 个体表征的开放规范（有 schema / verify / GPG 锚定） |
| 参与者 | **oners** | oner=DO AN ONER，复数形式 oners 泛指所有参与者 |
| 技术框架 | **ZKoner** | Zone + Knowledge + oner，留在技术文档里 |

**讨论过程：**
- oner 原本承载五层含义（DO AN ONER、望乐、ZKoner 拆字、OC 个体自明权、Owner 谐音）→ 太厚，传播成本高
- 讨论过精简为"DO AN ONER"→ 哲学味太重，日常没人说
- 重心从"oner"收敛到"寅图"——一张图所见即所得，不需要翻译
- "协议"二字偏大（寅图本质是实践驱动，不是标准组织产物）→ 技术面叫"规范"更诚实

**被否掉的方案：**
- 自声明协议、个体锚定协议、数字主权协议、数字个体、主权节点

---

## 2026-06-06 — 三者交叉锚定模型

**决策：**
```
寅图序号（空间） → commit 历史（时间） → GPG 签名（身份）
```

**变更：**
- `schema.json` / `tu.json`：新增 `gpgFingerprint` / `gpgKey` 字段
- `verify.js`：重写为三者交叉锚定验证，集成 GitHub API commit 签名检查
- `GETTING_STARTED.md`：新增第零步 GPG 签名设置指南
- `nodes.html`：查询节点时调用 GitHub API 实时显示 GPG 验证状态

**讨论：**
- 三者缺一不可：域名证明空间、commit log 证明时间、GPG 证明身份
- 同一个 fingerprint 贯穿三个锚点 → 身份闭环

---

## 2026-06-06 — GitHub 账号统一

**决策：**
- 统一使用 GitHub 账号 **zhangxiaomingv**
- `243922774` 是 QQ 号，之前被误填为 GitHub 用户名，已全部修正

**变更文件：**
- `tu.json`、`template/tu.json`、`schema.json`、`verify.js`（注释示例）

---

## 2026-06-06 — JOURNAL.md 建立

**决策：**
- 项目新建 `JOURNAL.md` 作为决策日志
- commit message 记"做了什么"，JOURNAL 记"为什么"和"讨论过程"
- 对 AI 和未来的自己都有价值——能看到思考过程，不只是结果

**设计原则：**
- 一句话决策 + 对比表 + 被否掉的方案
- 极简格式，不用花哨
- 每次重要讨论后追加

---

## 2026-06-05 — 寅图可视化设计

**决策：**
- 寅图螺旋图用 Canvas 2D 渲染（非 WebGL / Three.js）
- 384 个可视化节点，129600 为协议上限
- 12 地支、64 卦名环绕节点
- 3 秒周期的巳亥流星 + 正三角形 RGB 三色连线
- 滚轮缩放 + 拖拽平移 + 平滑复位

**讨论：**
- 2D vs 3D：2D 更可读，3D 作为 zoom-in 时的过渡效果保留
- 虚线表"无常"：359→384 的螺旋线条用虚线（未济之象）

---

## 2026-05-26 — 项目启动

**决策：**
- 项目名称：ZKoner / oner协议
- 核心路径：个人域名 + 静态网站 + 结构化声明 → AI 高精度认识你
- 寅图模型：129600 个序号（邵康节元会世运），12 地支方位，Fibonacci 螺旋排列
- 技术选型：纯静态网站，无后端，无区块链，大道至简

**背景：**
- AI 时代个体身份碎片化：平台定义你 → AI 猜测你 → 你被动接受
- 解决方案：你声明你 → 规范认证你 → AI 精确认识你
- 不是 web3 去中心化，是最朴素的个人网站 + 结构化数据
