vscode-templete/.claude/skills/auto-wiki-cn/references/wiki-format.md

309 lines
10 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.

# Wiki 页面格式
> **所有 frontmatter 结构由 `schema.py` 中的 Pydantic 模型定义和校验。**
> 本文档是人类可读的规范说明,`schema.py` 是机器可执行的校验工具。两者必须一致。
> 校验命令:`python references/schema.py .wiki/{主题}/`
## 目录结构
每个研究主题一个目录:
```
{主题名}/
├── meta.yaml # Wiki 元数据(见 storage-spec.md
├── index.md # 页面目录Agent 维护,按类型分组)
├── log.md # 操作日志append-only人类可读
├── sources/ # 源文件摘要
├── entities/ # 实体页(机构、人物、产品)
├── concepts/ # 概念页(制度、方法、指标)
└── analyses/ # 分析归档query 产出的有价值分析)
```
cognitive 类型 wiki 的目录变体:
```
{人物名}/
├── mental-models/ # 替代 entities/——每个心智模型一个页面
├── concepts/ # 启发式、价值观、表达风格、矛盾
├── sources/ # 采集来源
└── analyses/ # 分析归档
```
## 页面格式
每个页面分为两部分:**YAML frontmatter结构化数据** + **Markdown 正文(叙事分析)**
**核心原则:数据放 YAML分析放正文。** 正文不写数据表格。
---
## Frontmatter Schema
### 基础字段(所有页面必填)
```yaml
---
title: 页面标题
type: entity # entity | concept | source | analysis | mental-model
created: 2026-04-06
updated: 2026-04-06
sources: [source-slug-1, source-slug-2]
confidence: high # high | medium | low | contested
tags: [entity] # 必填:页面类型 + 可选状态标签
aliases: [] # 可选:页面别名
---
```
| 字段 | 必填 | 说明 |
|------|------|------|
| title | 是 | 页面标题 |
| type | 是 | 页面类型 |
| created | 是 | 创建日期 YYYY-MM-DD |
| updated | 是 | 最后更新日期(每次修改必须更新) |
| sources | 是 | 引用的 source 页面 slug 列表source 类型页面填 `[]` |
| confidence | 是 | 置信度:`high` / `medium` / `low` / `contested` |
| tags | 是 | Obsidian 标签列表,用于搜索过滤和分类浏览 |
| aliases | 否 | 页面别名列表,用于 Obsidian 搜索和链接补全 |
### tags 规则Obsidian 搜索过滤必需)
`tags` 必须包含页面类型(`source` / `entity` / `concept` / `analysis` / `mental-model`),可追加状态标签:
```yaml
tags:
- concept # 必填:页面类型
- contested # 可选confidence=contested 时加
- low-confidence # 可选confidence=low 时加
```
source 类型页面额外加来源等级标签:
```yaml
tags:
- source
- primary-source # 一手来源
# 或 authoritative-secondary / secondary / hearsay / inference
```
这些标签用于 Obsidian 搜索过滤(如在搜索栏输入 `tag:#contested` 快速定位有争议的页面)。图谱着色不依赖 tags——靠 `path:` 规则区分页面类型,靠 `[confidence:contested]` Properties 查询高亮风险节点。
### aliases 规则
标题含括号说明时,拆出短名和括号内容作为别名:
```yaml
title: EET 税收模式(个人养老金税优机制)
aliases:
- EET 税收模式
- 个人养老金税优机制
```
### 结构化数据 → data.db
**所有可量化、可查证、可对比的数据写入 `data.db`SQLite不放在 frontmatter 中。**
Agent 在 ingest 时调用 `store.py``WikiStore` 接口:
```python
store.upsert_data("alpha-corp", "管理规模", 1350, "亿元", "2025-Q1", "2026-04-policy-doc", scope="含职业年金")
store.upsert_data("alpha-corp", "市场份额", 12, "%", "2025-Q1", "2026-04-policy-doc", confidence="contested")
```
如果同字段同时段已有旧值,`upsert_data` 自动将旧值写入 `history` 表并返回旧记录。
**数据字段规范**(由 `store.py: data_points` 表约束):
| 字段 | 必填 | 类型 | 说明 |
|------|------|------|------|
| `page_slug` | **是** | TEXT | 所属页面的 slug |
| `field` | **是** | TEXT | 数据维度名(如"管理规模" |
| `value` | **是** | REAL | 数值 |
| `unit` | **是** | TEXT | 单位(亿元、%、万人、家... |
| `period` | **是** | TEXT | 数据时点(如 "2023-12"、"2025-Q1" |
| `source_slug` | **是** | TEXT | source 页面 slug |
| `scope` | 否 | TEXT | 统计口径说明 |
| `verified` | 否 | INTEGER | NULL=未知, 0=未验证, 1=已验证 |
| `confidence` | 否 | TEXT | 该数据点的置信度 |
**每个数字都必须有出处。** `source_slug` 指向哪个 source 页面。
**查询示例**
```python
# 某机构的所有数据
store.query_data(page_slug="alpha-corp")
# 某字段的时间线(含历史值)
store.query_timeline(field="管理规模")
# 所有 contested 数据
store.conn.execute("SELECT * FROM data_points WHERE confidence='contested'").fetchall()
```
### relations 字段(结构化关系)
页面间的语义关系,补充正文中的 `[[wikilink]]`
```yaml
relations:
- target: beta-corp
type: competes_with
- target: 受托人市场格局
type: part_of
- target: national-council-ssf
type: regulated_by
```
**常用关系类型**
| type | 含义 | 示例 |
|------|------|------|
| `part_of` | 属于 | 某机构 part_of 受托人市场 |
| `manages` | 管理 | 受托人 manages 年金基金 |
| `regulated_by` | 受监管 | 机构 regulated_by 人社部 |
| `competes_with` | 竞争 | 机构A competes_with 机构B |
| `implements` | 实施 | 机构 implements 受托责任 |
| `derived_from` | 来源于 | 概念 B derived_from 概念 A |
| `contradicts` | 矛盾 | 数据 A contradicts 数据 B |
| `influenced_by` | 受影响cognitive 类型) | 心智模型 influenced_by 人物 |
| `applies_to` | 适用于 | 心智模型 applies_to 领域 |
**relations 规范**
- `target` 填 slug不加路径前缀
- `type` 从上表选取,或自定义(但保持项目内一致)
- relations 是 frontmatter 中的结构化声明,正文中的 `[[wikilink]]` 是人类可读的引用——两者互补
### source 类型页面的额外字段
```yaml
---
title: 人社部2024年度企业年金基金统计报告
type: source
created: 2026-04-06
updated: 2026-04-06
sources: []
confidence: high
source_type: 一手 # 一手 | 二手·权威 | 二手 | 转述 | 推断 | 口述
source_origin: 人社部官网
source_date: 2024-12-31 # 原始材料的日期(不是 ingest 日期)
source_url: "" # 来源 URL如有
---
```
### cognitive 类型(心智模型页)的额外字段
```yaml
---
title: 能力圈
type: mental-model
created: 2026-04-06
updated: 2026-04-06
sources: [poor-charlies-almanack]
confidence: high
verification:
cross_domain: true # 跨域复现
generative: true # 有生成力
exclusive: true # 有排他性
domains: [投资, 商业决策, 人生选择] # 出现过的领域
---
```
---
## 正文约定
**正文只写叙事分析和上下文解读,不写数据表格。**
以下为示例(以金融领域为例):
```markdown
# 某机构业务概况
该机构是行业规模最大的参与者之一。2025年Q1管理规模增至 XXX 亿元,
但市场份额数据因统计口径变更与上期报告不可直接比较。
[[competitor-a|竞争对手 A]]同期增速行业第一,正在缩小差距。
详见 [[市场格局]]。
```
**正文规则**
-`[[slug]]``[[slug|显示名]]` 做页面链接
- 提到数据时引述结论,不重复 frontmatter 中的具体数值(避免不一致)
- 可以用 `> ⚠️` blockquote 标注重要警告(如口径差异)
- 分析性内容是正文的核心价值——这是 YAML 无法承载的部分
---
## 文件命名
- slug 格式:小写字母 + 连字符,如 `alpha-corp.md`
- 中文概念用中文 slug`受托人市场格局.md`Obsidian 友好)或拼音 slug
- source 页面加日期前缀:`2026-04-06-hrss-report.md`(连字符分隔)
## index.md 格式
index 只做导航,不内联数据:
```markdown
# {主题名} Wiki Index
> {N} pages | Last updated: {日期} | Type: {ontology_type}
## Entities ({N})
- [[alpha-corp]] — 机构 A 养老金业务
- [[beta-corp]] — 机构 B 养老保险
## Concepts ({N})
- [[受托人市场格局]] — 受托人竞争格局与份额
- [[企业年金制度]] — 政策法规与制度框架
## Sources ({N})
- [[2026-04-06-hrss-report]] — 人社部2024年度报告
- [[2026-04-06-q1-briefing]] — 2025年一季度市场简报
## Analyses ({N})
- [[trustee-comparison]] — 受托人市场格局对比分析
```
**index 规则**:每个条目一行,`[[slug]] — 一句话描述`。不放表格、不放统计数据。
## log.md 格式
```markdown
# {主题名} Wiki Log
## 2026-04-06 14:30 — ingest
- Source: 2026-04-06-hrss-report
- Created: entities/alpha-corp, concepts/受托人市场格局
- Updated: (无)
- Conflicts: (无)
## 2026-04-06 15:00 — ingest
- Source: 2026-04-06-q1-briefing
- Updated: entities/alpha-corp (管理规模 1200→1350亿份额 contested)
- Created: entities/beta-corp
- Conflicts: alpha-corp.市场份额 (15% vs 12%,口径不同)
```
## Validation Rules
| 规则 | 要求 |
|------|------|
| frontmatter 完整 | `title`, `type`, `created`, `updated`, `sources`, `confidence` 六字段必须存在 |
| type 值合法 | `source` / `entity` / `concept` / `analysis` / `mental-model` |
| data 字段规范 | 每个数据点必须有 `value`, `unit`, `period`, `source` |
| history 有 reason | 每条历史记录必须有 `reason` 字段 |
| relations 有 type | 每条关系必须有 `target``type` |
| sources 非空 | 除 source 类型外,`sources` 列表至少一个 slug |
| 日期格式 | `YYYY-MM-DD` |
| slug 与文件名一致 | 文件名(去 `.md`= slug |
## 置信度更新规则
| 事件 | 置信度变化 |
|------|-----------|
| 新 source 印证已有数据data 字段一致) | → `high` |
| 新 source 更新已有数据(有更新时点/更权威来源) | 更新 data旧值进 history |
| 新 source 与已有数据矛盾且无法判断 | data 中该字段 confidence → `contested` |
| lint 发现 data 中有无 source 的字段 | → `low` |
| 页面 6 个月未被 ingest 触及 | lint 建议标注"待验证" |