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:
@@ -0,0 +1,261 @@
|
||||
---
|
||||
created: 2026-04-28
|
||||
tags:
|
||||
- note
|
||||
- journal
|
||||
para: []
|
||||
---
|
||||
|
||||
# Reading Club v2 — 项目指南与使用说明
|
||||
|
||||
> 版本:v2 | 日期:2026-04-28 | 状态:已实现,待测试
|
||||
|
||||
---
|
||||
|
||||
## 一、项目概述
|
||||
|
||||
Reading Club 是基于 opencode 的交互式多智能体阅读协作框架。它不是传统的 AI 摘要工具,而是一个**以人类读者为中心的读书会**——三个 AI 角色作为你的对话伙伴,围绕你正在阅读的书籍章节展开深度讨论。
|
||||
|
||||
### 与传统 AI 阅读工具的区别
|
||||
|
||||
| 传统工具 | Reading Club v2 |
|
||||
|----------|----------------|
|
||||
| AI 输出摘要,人类阅读 | 人类先发言,AI 回应 |
|
||||
| 单向输出 | 多轮对话 |
|
||||
| 中立客观的分析 | 带有鲜明认知偏见的角色 |
|
||||
| 一次性结果 | 交互式探索,人类可以追问、反驳、换角度 |
|
||||
| 输出即弃 | 自动归档为 LLM Wiki 页面 |
|
||||
|
||||
---
|
||||
|
||||
## 二、文件结构
|
||||
|
||||
```
|
||||
kepano-obsidian-main/
|
||||
├── .agents/skills/reading-club/
|
||||
│ └── SKILL.md # ← 核心 Skill 定义(v2)
|
||||
├── wiki/
|
||||
│ └── ReadingClub.md # ← Wiki 工具页面(刚生成)
|
||||
├── raw/
|
||||
│ ├── 呼吸之间_李谨伯/ # ← 可用书籍
|
||||
│ │ ├── 调息.md
|
||||
│ │ ├── 胎息法.md
|
||||
│ │ └── ...
|
||||
│ └── 《大国大民》王志纲/ # ← 可用书籍
|
||||
│ ├── 《大国大民》第一章-我是怎么读中国的.md
|
||||
│ └── ...
|
||||
└── .sisyphus/
|
||||
└── plans/
|
||||
└── reading-club-guide.md # ← 本文件
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 三、快速开始
|
||||
|
||||
### 前置条件
|
||||
|
||||
1. opencode 已安装并运行
|
||||
2. 至少一本书已转换到 `raw/` 目录(使用 `tools/epub_converter/`)
|
||||
3. `.agents/skills/reading-club/SKILL.md` 存在
|
||||
|
||||
### 第一步:选择书籍和章节
|
||||
|
||||
查看可用书籍:
|
||||
|
||||
```
|
||||
ls raw/
|
||||
```
|
||||
|
||||
查看某本书的章节:
|
||||
|
||||
```
|
||||
ls "raw/呼吸之间_李谨伯/"
|
||||
```
|
||||
|
||||
### 第二步:启动 Reading Club
|
||||
|
||||
在 opencode 对话中输入以下任一形式:
|
||||
|
||||
**触发词形式**:
|
||||
```
|
||||
/reading-club book_path="raw/呼吸之间_李谨伯" chapter="调息.md"
|
||||
```
|
||||
|
||||
**自然语言形式**:
|
||||
```
|
||||
我想用阅读俱乐部讨论《呼吸之间》的调息章节
|
||||
```
|
||||
|
||||
**带模式指定**:
|
||||
```
|
||||
/reading-club book_path="raw/《大国大民》王志纲" chapter="《大国大民》第一章-我是怎么读中国的.md" mode="deep"
|
||||
```
|
||||
|
||||
### 第三步:参与讨论
|
||||
|
||||
框架会自动引导你进入讨论:
|
||||
|
||||
1. **阅读开头** — 系统展示章节开头 3-5 句
|
||||
2. **说出第一反应** — 任何想法都行,一个词也可以
|
||||
3. **听取 Agent 分析** — 三个 Agent 会回应你的反应
|
||||
4. **自由对话** — 反驳、追问、提问、换角度
|
||||
5. **结束讨论** — 说"停止"即可
|
||||
|
||||
### 第四步:查看输出
|
||||
|
||||
讨论结束后,wiki 页面自动生成到:
|
||||
|
||||
```
|
||||
wiki/{书名}-{章节名}-ReadingClub.md
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 四、详细使用指南
|
||||
|
||||
### 4.1 讨论模式选择
|
||||
|
||||
| 场景 | 推荐模式 | 理由 |
|
||||
|------|----------|------|
|
||||
| 第一次使用,想体验一下 | `browse` | 4 轮快速完成,了解流程 |
|
||||
| 正常阅读,想深入讨论 | `balanced` | 8 轮,平衡深度和效率 |
|
||||
| 学术研究,需要深度分析 | `deep` | 14 轮,充分挖掘 |
|
||||
| 自己掌控节奏 | `human-led` | 你决定何时结束 |
|
||||
|
||||
### 4.2 人类参与策略
|
||||
|
||||
**最佳实践**:
|
||||
- 第一反应**越直觉越好**,不要过度思考
|
||||
- 当 Agent 说了一些你不认同的,**直接反驳**
|
||||
- 如果某个观点触发了联想,**追问**那个方向
|
||||
- 不确定说什么时,**"pass"** 让 Agent 继续也可以
|
||||
|
||||
**避免**:
|
||||
- 只说"继续"让 Agent 自说自话(浪费了交互设计)
|
||||
- 等待 Agent 给出"正确答案"(没有正确答案)
|
||||
- 想要面面俱到(聚焦 1-2 个最有感觉的点)
|
||||
|
||||
### 4.3 交互指令速查
|
||||
|
||||
| 你想做什么 | 怎么说 | Agent 会怎样 |
|
||||
|------------|--------|-------------|
|
||||
| 分享想法 | "我觉得这里说其实不只是地理…" | 回应你的具体观点 |
|
||||
| 提问 | "为什么作者用'读'中国?" | 认真回答你的问题 |
|
||||
| 反驳某个 Agent | "我不同意 Critic" | 与你辩论 |
|
||||
| 深入某个话题 | "追问:一方水土养一方人" | 聚焦该话题 |
|
||||
| 换个视角 | "从反面想想" | 重新从对立面分析 |
|
||||
| 不想说话 | "pass" | Agent 继续讨论 |
|
||||
| 结束讨论 | "停止" | 生成 Wiki 页面 |
|
||||
|
||||
### 4.4 输出内容解读
|
||||
|
||||
Wiki 页面包含以下部分:
|
||||
|
||||
| 部分 | 内容 | 价值 |
|
||||
|------|------|------|
|
||||
| **读者的第一反应** | 你最初的直觉 | 记录阅读起点 |
|
||||
| **初始回应** | 3 个 Agent 的第一轮分析 | 三个不同视角 |
|
||||
| **深入讨论** | 后续轮次记录 | 思想碰撞过程 |
|
||||
| **人类思考轨迹** | 你的观点如何变化 | 元认知记录 |
|
||||
| **Agent 共识与分歧** | Agent 之间的一致和分歧 | 多角度分析 |
|
||||
| **讨论总结** | 关键洞见 + 未决问题 | 行动指引 |
|
||||
|
||||
---
|
||||
|
||||
## 五、架构设计说明
|
||||
|
||||
### 5.1 状态机
|
||||
|
||||
```
|
||||
INIT → HUMAN_FIRST_READ → SEED_ROUND → PRESENT_SEED → CONVERSATION_LOOP* → SYNTHESIS → DONE
|
||||
```
|
||||
|
||||
每个状态的详细说明见 `.agents/skills/reading-club/SKILL.md`。
|
||||
|
||||
### 5.2 Agent 角色
|
||||
|
||||
三个角色通过 prompt engineering 区分,底层使用相同的 `build` subagent:
|
||||
|
||||
| 角色 | 刻意编码的偏见 | 目的 |
|
||||
|------|---------------|------|
|
||||
| Summarizer | 同化偏见 — 找秩序 | 梳理逻辑,找出核心结构 |
|
||||
| Critic | 对抗性偏见 — 找缺陷 | 质疑假设,发现盲点 |
|
||||
| Questioner | 好奇偏见 — 找问题 | 追问深层含义,打开新视角 |
|
||||
|
||||
### 5.3 上下文管理
|
||||
|
||||
| 层级 | 内容 | 策略 |
|
||||
|------|------|------|
|
||||
| 最近 3 轮 | 完整记录 | 逐字传递 |
|
||||
| 更早轮次 | 压缩摘要 | 每轮 1-2 句 |
|
||||
| 章节内容 | 首轮完整 | 之后仅引用路径 |
|
||||
| 总限制 | 6000 tokens | 超出则压缩最早的轮次 |
|
||||
|
||||
### 5.4 技术实现
|
||||
|
||||
- **编排**:Sisyphus(主 Agent)管理状态机和人类交互
|
||||
- **Agent 调度**:通过 `task(subagent_type="build")` 实现
|
||||
- **SEED_ROUND**:3 个 Agent 并行 `run_in_background=true`
|
||||
- **CONVERSATION_LOOP**:每轮 1 个 Agent 同步 `run_in_background=false`
|
||||
- **Wiki 输出**:SYNTHESIS 阶段由 build Agent 编译
|
||||
|
||||
---
|
||||
|
||||
## 六、v1 → v2 变更日志
|
||||
|
||||
| 方面 | v1 | v2 |
|
||||
|------|----|----|
|
||||
| 人类角色 | 旁观者,只能说"继续/停止" | 主角,每轮先发言 |
|
||||
| Agent 语气 | Agent 之间对话 | 用"你"直接称呼人类 |
|
||||
| 每轮结构 | Agent→Agent→checkpoint | 人类→Agent→人类→Agent |
|
||||
| 讨论模式 | 3 种(browse/balanced/deep) | 4 种(+human-led) |
|
||||
| Prompt 格式 | ===摘要===/===核心主张=== 刚性格式 | 自然段落,以问题结尾 |
|
||||
| Wiki 输出 | "人类参与"是附录 | "人类思考轨迹"是核心 |
|
||||
| 人类指令 | 2 种(继续/停止) | 8 种(反驳/追问/换角度等) |
|
||||
| 错误处理 | 基础 | 增加"连续3轮pass主动询问" |
|
||||
|
||||
---
|
||||
|
||||
## 七、故障排除
|
||||
|
||||
| 问题 | 原因 | 解决 |
|
||||
| ---------- | ------------ | ----------------------- |
|
||||
| 触发词不识别 | SKILL.md 未加载 | 重启 opencode 会话 |
|
||||
| Agent 调度失败 | 模型配置/网络 | 检查 oh-my-openagent.json |
|
||||
| 章节不存在 | 路径错误 | 框架会自动列出可用章节 |
|
||||
| 章节太长 | >8000 tokens | 框架建议按小节分段 |
|
||||
| Wiki 写入冲突 | 文件已存在 | 自动添加时间戳后缀 |
|
||||
| Agent 输出泛泛 | 人类输入太模糊 | 尝试说具体的观点或问题 |
|
||||
|
||||
---
|
||||
|
||||
## 八、测试计划
|
||||
|
||||
### 待执行测试
|
||||
|
||||
- [ ] **基础功能测试**:`browse` 模式,4 轮,验证完整流程
|
||||
- [ ] **人类交互测试**:测试 8 种交互指令
|
||||
- [ ] **Wiki 输出验证**:检查 frontmatter、内容结构、溯源标注
|
||||
- [ ] **长章节测试**:`deep` 模式,14 轮
|
||||
- [ ] **边界测试**:章节不存在、Agent 调度失败、人类立即说停止
|
||||
|
||||
### 推荐测试章节
|
||||
|
||||
| 优先级 | 书籍 | 章节 | 理由 |
|
||||
|--------|------|------|------|
|
||||
| 1 | 《大国大民》 | 第一章 | 205行,长度适中 |
|
||||
| 2 | 《呼吸之间》 | 调息 | 核心章节,内容集中 |
|
||||
| 3 | 《呼吸之间》 | 胎息法 | 较短,适合快速测试 |
|
||||
|
||||
---
|
||||
|
||||
## 九、相关资源
|
||||
|
||||
| 资源 | 位置 | 说明 |
|
||||
| --------- | -------------------------------------- | ------------ |
|
||||
| SKILL.md | `.agents/skills/reading-club/SKILL.md` | 核心定义 |
|
||||
| Wiki 页面 | `wiki/ReadingClub.md` | 工具参考 |
|
||||
| 启动指南 | `.sisyphus/START-READING-CLUB.md` | 快速启动(v1,需更新) |
|
||||
| AGENTS.md | `AGENTS.md` | 仓库操作规范 |
|
||||
| EPUB 转换 | `tools/epub_converter/` | 准备书籍内容 |
|
||||
Reference in New Issue
Block a user