#1 HIGH: 用户给选题时跳到 Step 4 → 改为跳到 Step 3(保留素材采集) #2 MEDIUM: writing-guide.md "Step 3.75" → "Step 3b"(2处) #3 MEDIUM: history.yaml 新增 writing_persona 字段记录 #4 MEDIUM: 声明优先级 playbook > persona > writing-guide #5 LOW: onboard.md 新增 tone → persona 自动映射表 #6 LOW: 错误处理表新增 persona 文件不存在的降级 #7 LOW: 错误处理表新增 WebSearch 降级 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
86 lines
4.2 KiB
Markdown
86 lines
4.2 KiB
Markdown
# Onboard(首次设置)
|
||
|
||
**触发条件**:
|
||
- Step 1 发现 `style.yaml` 不存在
|
||
- 用户明确说"重新设置风格"、"修改配置"
|
||
|
||
## Phase 1: 收集信息(交互式问答)
|
||
|
||
通过对话收集以下信息,**不要一次性列出所有问题**——一轮问 1-2 个,像聊天一样:
|
||
|
||
**必问**(缺了无法运行):
|
||
|
||
| 顺序 | 问题 | 对应字段 | 示例引导 |
|
||
|------|------|---------|---------|
|
||
| 1 | 你的公众号叫什么名字?主要做什么方向? | `name` + `industry` | "比如'零号AI',做科技/互联网" |
|
||
| 2 | 主要写哪几个方向的内容? | `topics` | "比如 AI、产品设计、效率工具" |
|
||
| 3 | 你希望文章是什么风格? | `tone` | "专业严肃?轻松有趣?毒舌犀利?像朋友聊天?" |
|
||
|
||
**选问**(有默认值,用户不答就用默认):
|
||
|
||
| 问题 | 对应字段 | 默认值 |
|
||
|------|---------|-------|
|
||
| 目标读者是谁? | `target_audience` | 从 industry 推断 |
|
||
| 用什么人称写? | `voice` | "第一人称,像一个懂行的朋友" |
|
||
| 有没有绝对不能出现的词或话题? | `blacklist` | 空 |
|
||
| 有没有想参考的公众号? | `reference_accounts` | 空 |
|
||
| 署名写什么? | `author` | name 字段值 |
|
||
| 偏好哪种写作人格? | `writing_persona` | 从 tone 推断(见映射) |
|
||
|
||
**tone → persona 自动映射**(用户不选时的默认推断):
|
||
- 轻松/有趣/朋友/聊天 → `midnight-friend`
|
||
- 温暖/共鸣/故事/治愈 → `warm-editor`
|
||
- 专业/分析/深度/行业 → `industry-observer`
|
||
- 犀利/锐评/观点/新闻 → `sharp-journalist`
|
||
- 严谨/数据/研究/财经 → `cold-analyst`
|
||
| 偏好哪种排版风格?(可运行 `gallery` 命令预览全部 16 个主题) | `theme` | "professional-clean" |
|
||
| 封面风格偏好? | `cover_style` | 从 industry 推断 |
|
||
| 有没有固定封面模板? | `cover_template` | 不设置 |
|
||
|
||
**写作人格说明**(`personas/` 目录下有详细定义):
|
||
|
||
| 人格 | 适合 | 朱雀实测 | 一句话描述 |
|
||
|------|------|---------|----------|
|
||
| `midnight-friend` | 个人号/自媒体 | **39% 人工** | 像深夜给朋友发微信,极度口语化 |
|
||
| `warm-editor` | 生活/文化/情感 | 10% 人工 | 故事驱动,温暖共鸣 |
|
||
| `industry-observer` | 行业媒体/分析 | 10% 人工 | 克制的专业分析,偶尔锐利 |
|
||
| `sharp-journalist` | 新闻/评论 | 0% 人工(需编辑) | 短句利落,观点鲜明 |
|
||
| `cold-analyst` | 财经/投研 | 0% 人工(需编辑) | 严谨数据,专业措辞 |
|
||
|
||
**快捷路径**:
|
||
- 如果用户直接甩了一段描述(如"我做科技自媒体,风格像虎嗅"),直接从中提取所有能提取的字段,只补问缺的
|
||
- 如果用户说"不设置"、"用默认的"、"直接写" → 复制 `{skill_dir}/style.example.yaml` 为 `style.yaml`,跳过所有问答
|
||
|
||
```
|
||
参考: {skill_dir}/references/style-template.md(字段说明和可用主题列表)
|
||
```
|
||
|
||
## Phase 2: 生成配置
|
||
|
||
用收集到的信息自动生成 `{skill_dir}/style.yaml`。
|
||
|
||
同时确保以下文件/目录存在(不存在则创建):
|
||
- `{skill_dir}/history.yaml` → 初始化为 `articles: []`
|
||
- `{skill_dir}/corpus/` → 空目录
|
||
- `{skill_dir}/lessons/` → 空目录
|
||
|
||
生成完成后,**把 style.yaml 的内容展示给用户看一遍**,问"这个配置 OK 吗?有什么要改的?"。用户确认后继续。
|
||
|
||
## Phase 3: Playbook(可选,不阻断)
|
||
|
||
问用户:"你有没有之前写过的公众号文章?如果有 20 篇以上,我可以从中学习你的写作风格,以后写出来的文章会更像你。"
|
||
|
||
- **用户有语料** → 告知将文章(.md 或 .txt)放入 `{skill_dir}/corpus/`,然后运行:
|
||
```bash
|
||
python3 {skill_dir}/scripts/build_playbook.py
|
||
```
|
||
按脚本输出逐批阅读文章,提取风格特征,生成 `playbook.md`。
|
||
|
||
- **用户没有语料 / 暂时不想弄** → 完全正常,跳过。告知用户:"没问题,先用通用风格写,后续你可以随时说'学习我的修改'来让我逐渐适应你的风格。"
|
||
|
||
## Phase 4: 试跑
|
||
|
||
Onboard 完成后,问用户:"配置好了,要不要现在试写一篇?"
|
||
|
||
- **是** → 回到 Step 1,执行完整流程
|
||
- **否** → 告知用户下次如何触发:"下次直接说'写一篇公众号文章'就行"
|