206 lines
7.0 KiB
Markdown
206 lines
7.0 KiB
Markdown
---
|
||
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 转换工具(准备书籍内容)
|
||
|
||
## 来源
|
||
|
||
> **溯源规则**:所有数字/百分比/具体结论必须标注 `[raw:{文件名}:{行号}]` 格式。
|
||
|
||
- [[reading-club skill]] |