Phase 0-2: Schema cleanup, typed relations, event-driven automation

- Phase 0: AGENTS.md cleanup (dedup quotes, renumber sections, merge qmd)
- Phase 1: typed relations (manage-relations.py, graph-search.py, check-staleness.py, detect-conflicts.py)
- Phase 2: frontmatter validator, weekly lint, knowledge promotion, git hooks
- Fix .gitignore to track tools/ and .githooks/
- Fix git remote URL (remove plaintext token)
- New wiki pages: 504 pages, 34 raw sources
This commit is contained in:
hehaiguang1123
2026-07-01 08:05:43 +08:00
parent e544d6e04a
commit a6f05ab2d5
1067 changed files with 522992 additions and 819 deletions
+198
View File
@@ -0,0 +1,198 @@
---
categories:
- "[[LLM Wiki]]"
tags:
- wiki
- tool
- reading-club
- multi-agent
- opencode
created: 2026-04-28
source: "[[reading-club skill]]"
type: tool
aliases:
- 阅读俱乐部
- 多智能体阅读
- Reading Club
---
# ReadingClub — 多智能体阅读协作工具
> **一句话定义**:三个 AI Agent(摘要者、批评者、提问者)与人类读者进行多轮对话,深入讨论书籍章节内容,最终生成 LLM Wiki 讨论记录页面。
## 基本信息
| 属性 | 值 |
|------|-----|
| 类型 | opencode Skill |
| 位置 | `.agents/skills/reading-club/SKILL.md` |
| 版本 | v2(人类主位设计) |
| 依赖 | opencode + task dispatch + build subagent |
| 输出 | `wiki/` 目录下的 Markdown 页面 |
## 核心理念
**人类是主角,Agent 是对话伙伴。**
传统 AI 阅读工具让 AI 做主分析师,人类只能旁观。ReadingClub v2 颠覆了这个模式:
- 每一轮都从**人类的第一反应**开始
- Agent 直接用"你"称呼人类读者
- Agent 必须回应人类的具体观点,不能泛泛而谈
- 每次发言以一个**真诚的问题**结尾,邀请人类继续思考
## 三个 Agent 角色
| 角色 | 认知偏见 | 思维方式 | 输出特征 |
|------|----------|----------|----------|
| **摘要者 Summarizer** | 同化偏见 — 在混乱中找秩序 | 结构化思维,梳理核心逻辑 | 核心论点、论证结构、隐含假设 |
| **批评者 Critic** | 对抗性偏见 — 找缺陷和逻辑漏洞 | 批判性思维,质疑一切 | 质疑点、反向思考、被忽略的矛盾 |
| **提问者 Questioner** | 好奇偏见 — 追问未回答的问题 | 苏格拉底式追问 | 深度追问、跨领域联想、开放性问题 |
> [!tip] 角色设计原则
> 每个角色都编码了刻意设计的认知偏见。这不是缺陷,而是特性 — 让 Agent 的视角鲜明而互补,避免三个 Agent 说出一样的话。
## 讨论流程
```mermaid
graph TD
A[INIT: 验证输入] --> B[HUMAN_FIRST_READ: 展示开头]
B --> C{人类第一反应}
C --> D[SEED_ROUND: 3 Agent 并行回应]
D --> E[PRESENT_SEED: 对话式展示]
E --> F{人类发言}
F -->|观点/提问/反驳| G[Agent 回应]
F -->|pass/跳过| H[Agent 自行讨论]
F -->|停止| I[SYNTHESIS: 编译 Wiki]
G --> F
H --> F
I --> J[写入 wiki 页面]
J --> K[更新 index + log]
```
### 阶段说明
| 阶段 | 说明 | 人类角色 |
|------|------|----------|
| **INIT** | 验证书籍和章节路径 | 选择书籍和章节 |
| **HUMAN_FIRST_READ** | 展示章节开头 3-5 句 | **必须发言** — 说出第一反应 |
| **SEED_ROUND** | 3 Agent 并行回应人类 | 静听 |
| **PRESENT_SEED** | 对话式展示 3 个视角 | 选择回应方向 |
| **CONVERSATION_LOOP** | 每轮 = 人类 → Agent | **主动参与** — 可以反驳、追问、换角度 |
| **SYNTHESIS** | 编译为 Wiki 页面 | 审阅 |
| **DONE** | 写入 wiki/ 目录 | 完成 |
## 四种讨论模式
| 模式 | 轮次 | Agent 回应长度 | 适合场景 |
|------|------|---------------|----------|
| `browse` | 4 轮 | 短(100-200字) | 快速浏览,获取概要 |
| `balanced` | 8 轮 | 中(200-400字) | 标准讨论,平衡深度与效率 |
| `deep` | 14 轮 | 长(300-600字) | 深度分析,批判性思考 |
| `human-led` | 无上限 | 视情况 | 人类完全主导,说停才停 |
## 人类交互指令
在讨论中,你可以使用以下方式参与(自然语言即可):
| 意图 | 示例 | 效果 |
|------|------|------|
| 分享想法 | "我觉得这段其实是在说…" | Agent 回应你的具体观点 |
| 提问 | "为什么作者要这样写?" | 最合适的 Agent 回答 |
| 反驳 | "我不同意 Critic 的看法" | 与指定 Agent 辩论 |
| 追问 | "追问:一方水土养一方人" | 聚焦该话题深入 |
| 换角度 | "能不能从反面想想?" | Agent 从对立视角分析 |
| 跳过 | "pass" / "跳过" | 让 Agent 继续讨论 |
| 继续 | "继续" | Agent 继续上一话题 |
| 结束 | "停止" / "stop" | 结束讨论,生成 Wiki |
## 如何启动
### 方式 1:使用触发词
在 opencode 对话中输入:
```
/reading-club book_path="raw/《大国大民》王志纲" chapter="《大国大民》第一章-我是怎么读中国的.md"
```
### 方式 2:自然语言
```
我想用阅读俱乐部讨论《呼吸之间》的调息章节
```
### 方式 3:指定模式
```
/reading-club book_path="raw/呼吸之间_李谨伯" chapter="调息.md" mode="deep"
```
## 可用书籍
当前 `raw/` 目录中已转换的书籍:
| 书籍 | 路径 | 章节数 |
|------|------|--------|
| 《呼吸之间》李谨伯 | `raw/呼吸之间_李谨伯/` | 20+ |
| 《大国大民》王志纲 | `raw/《大国大民》王志纲/` | 15+ |
## 输出示例
讨论结束后自动生成 wiki 页面,包含:
1. **读者的第一反应** — 原始记录
2. **初始回应** — 3 个 Agent 的第一轮分析
3. **深入讨论** — 后续轮次的对话记录
4. **人类思考轨迹** — 追踪人类观点如何演化
5. **Agent 共识与分歧** — Agent 们在哪里一致、在哪里分歧
6. **讨论总结** — 关键洞见和未决问题
## 设计决策记录
### 为什么人类必须先发言?
v1 中 Agent 先发言导致人类变成旁观者。人类的第一反应往往是最真实的 — 它不受 Agent 分析框架的影响,保留了直觉的锐利。Agent 的任务是回应和深化这个直觉,而不是替代它。
### 为什么给 Agent 编码认知偏见?
没有偏见的 Agent 会输出 bland、中庸的分析。编码认知偏见(同化、对抗、好奇)让每个 Agent 有鲜明的视角,产生真正的思想碰撞。
### 为什么不用 === 标记格式?
v1 使用 `===摘要=== / ===核心主张=== / ===END===` 刚性格式。v2 改为自然段落,因为:
- Agent 表达更自由、更自然
- 读者体验更像真实对话
- 减少格式解析的脆弱性
## 技术架构
| 组件 | 实现 |
|------|------|
| 编排器 | Sisyphus(主编排 Agent |
| 角色区分 | Prompt engineering(同一 build subagent,不同 prompt |
| 并行调度 | SEED_ROUND 3 个 Agent 并行 `run_in_background=true` |
| 顺序调度 | CONVERSATION_LOOP 每轮 1 个 Agent 同步 `run_in_background=false` |
| 上下文管理 | 3 层分层:最近 3 轮完整 + 更早压缩 + 章节首轮后仅引用路径 |
| 输出格式 | LLM Wiki 规范(AGENTS.md frontmatter |
## 限制与未来扩展
**当前限制**
- 仅支持单章节讨论
- 仅支持一个人类读者
- 章节内容需已在 `raw/` 目录中
**未来扩展**
- 跨章节讨论
- 多本书对比
- 自定义 Agent 角色
- 多人阅读俱乐部
## 相关页面
- [[LLM Wiki]] — Wiki 模式定义
- [[AGENTS.md]] — 仓库操作规范
- [[Obsidian-skills]] — Obsidian Skill 生态
- [[epub-to-markdown]] — EPUB 转换工具(准备书籍内容)