article-writer-cn
Version:
AI 驱动的智能写作系统 - 专注公众号/自媒体文章创作
826 lines (588 loc) • 21.7 kB
Markdown
# PRD-01: 工作区系统
> **优先级**: P0(核心功能)
> **预计工作量**: 5 天
> **负责人**: TBD
> **状态**: 📝 待开发
---
## 1. 需求背景
### 1.1 问题陈述
**用户痛点**:
> "AI 经常'自作主张'。你让它写文章,它直接给你生成一篇。你要的是'先讨论选题,再写',但它跳过了讨论环节。"
**当前问题**:
- AI 无法区分不同创作场景(公众号 vs 视频 vs 博客)
- 所有任务使用相同流程,缺乏针对性
- 无法自动适配不同平台的规则(如公众号需要配图,视频不需要)
### 1.2 解决方案
**两层判断机制**:
```
第一层:工作区判断
↓
判断任务属于哪个工作区:公众号/视频/通用
每个工作区有不同的配置文件(spec/presets/workspaces/),规则不同
第二层:任务类型判断
↓
确定具体任务类型:
A. 新写作任务(有完整 brief)
B. 新写作任务(无 brief 只有需求)
C. 修改已有文章
D. 文章审校/降 AI 味
E. 快速咨询
```
**技术架构**:
- ✅ **命令模板** (`templates/commands/*.md`) - 包含工作区检测逻辑
- ✅ **工作区配置** (`spec/presets/workspaces/*.md`) - 存储各工作区规则
- ✅ **memory/** - 存储当前工作区状态
- ❌ **不使用 CLAUDE.md** - CLAUDE.md 是 Claude Code 平台专属文件
**核心价值**:
- ✅ 流程可预测 - AI 知道自己在哪个工作区,该走哪些步骤
- ✅ 规则差异化 - 公众号/视频/通用有不同的质量标准和输出要求
- ✅ 提高效率 - 避免不必要的步骤(如视频不需要配图)
---
## 2. 用户故事
### 2.1 主要用户故事
**故事 1: 公众号写作(最常见)**
```
作为 公众号运营者
我想 让 AI 自动识别这是公众号文章
以便 AI 自动应用公众号规则(段落控制、配图、敏感词检测等)
验收标准:
- 当我在 workspaces/wechat/ 目录下工作时,AI 自动加载公众号规则
- AI 自动提醒我需要配图(5-8 张)
- AI 自动控制段落长度 < 150 字
- AI 自动执行敏感词检测
```
**故事 2: 视频脚本创作**
```
作为 视频创作者
我想 让 AI 自动识别这是视频脚本
以便 AI 应用视频规则(口语化、时长计算、Hook 设计等)
验收标准:
- 当我在 workspaces/video/ 目录下工作时,AI 自动加载视频规则
- AI 自动提醒我不需要配图(改为分镜说明)
- AI 自动计算时长(1 分钟 ≈ 150-180 字)
- AI 自动设计 Hook(前 3 秒抓人)
- AI 自动提高口语化程度(AI 味目标 < 20%)
```
**故事 3: 根目录快速启动**
```
作为 新用户
我想 在根目录直接发起写作任务
以便 AI 询问我选择哪个工作区,然后自动创建项目
验收标准:
- 当我在根目录输入写作需求时
- AI 询问:"请选择工作区:1. 公众号 2. 视频 3. 通用"
- 我选择后,AI 自动在对应工作区创建项目
- AI 加载对应的规则和流程
```
### 2.2 次要用户故事
**故事 4: 修改已有文章**
```
作为 内容创作者
我想 修改已发布的文章
以便 AI 只执行修改流程,不走完整的 9 步
验收标准:
- AI 识别出这是"修改任务"而非"新写作任务"
- AI 只执行:读取原文 → 理解需求 → 修改
- AI 不执行:选题讨论、素材搜索等不必要步骤
```
**故事 5: 纯审校任务**
```
作为 内容创作者
我想 只让 AI 审校文章(降 AI 味)
以便 AI 直接执行三遍审校,不走其他流程
验收标准:
- AI 识别出这是"审校任务"
- AI 直接执行:/audit style → /audit detail
- AI 不执行:选题讨论、写作等步骤
```
---
## 3. 功能需求
### 3.1 工作区检测(第一层判断)
#### 3.1.1 命令模板集成工作区检测
**功能描述**:
在核心命令模板中添加工作区检测逻辑(不使用 CLAUDE.md)
**实现位置**: `templates/commands/specify.md` 等核心命令
**核心逻辑**:
```markdown
## 第一步:检测工作区
当用户发起写作任务时,**第一步**是检测当前工作区:
### 方法 1: 检测当前目录
使用 Bash 工具执行 `pwd` 获取当前路径:
- 如果路径包含 `workspaces/wechat/` → **公众号工作区**
- 如果路径包含 `workspaces/video/` → **视频工作区**
- 如果路径包含 `workspaces/general/` → **通用工作区**
- 如果在根目录 → **询问用户选择**
### 方法 2: 用户明确指定
如果用户在需求中明确说明:
- "写一篇公众号文章" → **公众号工作区**
- "写一个视频脚本" → **视频工作区**
- 其他 → **询问用户**
### 如果无法判断
使用 AskUserQuestion 工具询问:
```
📁 **请选择工作区**:
1️⃣ **公众号写作 (wechat)**
- 适用于:微信公众号、小红书、知乎文章
- 特点:段落控制、配图需求、敏感词检测
- AI 味目标:< 30%
2️⃣ **视频脚本 (video)**
- 适用于:短视频脚本、口播稿、视频文案
- 特点:口语化、时长计算、Hook 设计
- AI 味目标:< 20%(更口语化)
3️⃣ **通用内容 (general)**
- 适用于:博客、Medium、技术文档
- 特点:灵活配置、SEO 优化
- AI 味目标:可配置
```
## 第二步:加载工作区配置
检测到工作区后,使用 Read 工具读取对应配置:
- 公众号:`spec/presets/workspaces/wechat.md`
- 视频:`spec/presets/workspaces/video.md`
- 通用:`spec/presets/workspaces/general.md`
## 第三步:保存工作区状态
使用 Write 工具保存当前工作区到 `memory/current-workspace.json`:
```json
{
"workspace": "wechat",
"project_path": "workspaces/wechat/articles/001-xxx/",
"detected_at": "2025-01-26T10:30:00Z"
}
```
## 重要原则
1. **检测优先**:永远先检测工作区,再执行任务
2. **明确确认**:如果不确定,询问用户而不是假设
3. **路径验证**:使用 Bash 工具执行 `pwd` 验证当前目录
4. **配置加载**:加载工作区配置后,严格遵循其中的规则
```
**验收标准**:
- ✅ AI 能正确识别当前目录位置(使用 Bash pwd)
- ✅ AI 在根目录时使用 AskUserQuestion 询问用户选择工作区
- ✅ AI 能使用 Read 工具加载对应工作区的配置文件
- ✅ AI 使用 Write 工具保存工作区状态到 memory/
- ✅ AI 在不确定时询问用户而非假设
#### 3.1.2 公众号工作区配置
**功能描述**:
创建公众号工作区的配置文件
**文件位置**: `spec/presets/workspaces/wechat.md`
**核心内容**:
```markdown
# 公众号写作工作区
## 工作区特点
- **目标平台**: 微信公众号、小红书、知乎
- **内容类型**: 图文文章
- **字数范围**: 2000-5000 字
- **AI 味目标**: < 30%
## 质量标准
### 段落控制
- ✅ 每段不超过 150 字
- ✅ 手机屏幕 3-5 行为佳
- ✅ 避免大段文字
### 配图要求
- ✅ 推荐 5-8 张图
- ✅ 尺寸:900×500px(公众号最佳比例)
- ✅ 首图必须有(吸引点击)
- ✅ 核心观点必须配图
### 敏感词检测
- ✅ 政治敏感词
- ✅ 色情暴力词汇
- ✅ 广告法禁用词
## 任务类型判断(第二层)
检测到用户需求后,判断任务类型:
### A. 新写作任务(有完整 brief)
用户已提供详细需求文档
**执行流程**:
/specify → /research → /topic → /collect → /write → /audit → /images → /check
### B. 新写作任务(无 brief 只有需求)
用户只提供简短描述
**执行流程**:
/specify(AI 补充)→ /topic → /collect → /write → /audit → /images
### C. 修改已有文章
用户要求修改已发布文章
**执行流程**:
Read 原文 → 理解需求 → 修改 → /audit style
### D. 文章审校/降 AI 味
用户只需要审校
**执行流程**:
/audit content → /audit style → /audit detail
### E. 快速咨询
用户询问问题(不需要写文章)
**执行流程**:
直接回答,不执行命令
## 判断依据
**关键词识别**:
- 包含"写"、"创作"、"输出" → 新写作任务
- 包含"修改"、"改"、"优化" → 修改任务
- 包含"审校"、"降 AI 味"、"润色" → 审校任务
- 包含"帮我看看"、"怎么" → 咨询
**明确确认原则**:
- 如果不确定任务类型,询问用户
- 不要假设,不要自作主张
## 九步流程说明
1. **/specify** - 保存需求
2. **/research** - 信息搜索(如需要)
3. **/topic** - 选题讨论(⭐ 必做,等待用户选择)
4. **/collect** - 搜索个人素材库
5. **/write** - 创作初稿
6. **/audit content** - 内容审校
7. **/audit style** - 风格审校(⭐ 降 AI 味核心)
8. **/audit detail** - 细节打磨
9. **/images** - 文章配图(⭐ 公众号特有)
## 核心原则
1. **选题讨论必做** - 不要直接写文章,先讨论选题
2. **素材库优先** - 使用真实素材替代 AI 生成
3. **三遍审校** - 系统化降低 AI 检测率
4. **配图完成** - 不只是给建议,要实际完成配图
\```
**验收标准**:
- ✅ AI 能识别公众号工作区
- ✅ AI 能判断 5 种任务类型
- ✅ AI 执行正确的流程(不跳步)
- ✅ AI 应用公众号特定规则(段落、配图等)
#### 3.1.3 视频工作区配置
**功能描述**:
创建视频工作区的配置文件
**文件位置**: `spec/presets/workspaces/video.md`
**核心内容**:
```markdown
# 视频脚本工作区
## 工作区特点
- **目标平台**: 抖音、快手、B 站、视频号
- **内容类型**: 视频脚本、口播稿
- **字数范围**: 500-2000 字(对应 3-10 分钟)
- **AI 味目标**: < 20%(更口语化)
## 质量标准
### 口语化要求
- ✅ 多用短句(10-15 字)
- ✅ 口语表达("你看" "其实" "真的")
- ✅ 避免书面词汇("显著" "充分" "综上所述")
- ✅ 可以有停顿词("嗯" "那个" "就是")
### 时长计算
- ✅ 1 分钟 ≈ 150-180 字(正常语速)
- ✅ 快节奏 ≈ 200 字/分钟
- ✅ 慢节奏 ≈ 120 字/分钟
### Hook 设计
- ✅ 前 3 秒必须抓人
- ✅ 使用疑问句、冲突、悬念
- ✅ 禁止废话开头
### 分镜标注(替代配图)
- ✅ 标注画面内容
- ✅ 标注字幕重点
- ✅ 标注音效/背景音乐
## 任务类型判断
同公众号工作区,但执行流程有差异:
### 新写作任务流程
/specify → /topic → /collect → /write → /audit content → /audit style → /audit detail
**差异**:
- ❌ **不执行 /images**(视频不需要配图)
- ✅ 替换为"分镜说明"
### 审校流程
/audit content → /audit style(加强口语化) → /audit detail
**差异**:
- ✅ style 审校更严格(AI 味目标 < 20%)
- ✅ 特别关注口语化
## 输出格式
### 脚本结构
\```markdown
# [视频标题]
**时长预估**: X 分 Y 秒(约 Z 字)
**风格**: 口播/剧情/混剪
**目标平台**: 抖音/B 站
---
## Hook(前 3 秒)
[画面] 特写镜头,主播看向镜头
[台词] "你知道吗?90% 的人都用错了..."
---
## 正文
### 第一部分:引入问题(30 秒)
[画面] 展示常见错误场景
[台词]
"我之前也是这样,每次都..."
"直到有一天,我发现了..."
[字幕重点] "90% 的人都用错了"
### 第二部分:解决方案(1 分钟)
...
---
## 结尾 CTA
[画面] 主播正面镜头
[台词] "如果觉得有用,记得点赞关注!"
\```
## 核心原则
1. **高度口语化** - 写完后大声朗读,不顺口就改
2. **Hook 第一** - 前 3 秒不抓人,后面再精彩也没用
3. **节奏控制** - 短句为主,避免长段
4. **分镜标注** - 不只是文字,要有画面感
\```
**验收标准**:
- ✅ AI 能识别视频工作区
- ✅ AI 不执行配图命令
- ✅ AI 输出包含分镜标注
- ✅ AI 应用更严格的口语化标准(AI 味 < 20%)
- ✅ AI 自动计算时长
#### 3.1.4 通用工作区配置
**功能描述**:
创建通用工作区的配置文件
**文件位置**: `spec/presets/workspaces/general.md`
**核心内容**:
```markdown
# 通用内容工作区
## 工作区特点
- **目标平台**: 博客、Medium、技术文档、知乎长文
- **内容类型**: 灵活
- **字数范围**: 不限
- **AI 味目标**: 可配置(默认 < 35%)
## 质量标准
### 灵活配置
- ⚙️ 段落长度:不限制(用户可指定)
- ⚙️ 配图需求:可选(用户决定)
- ⚙️ SEO 优化:可选
### SEO 优化(可选)
- ✅ 关键词密度控制
- ✅ 标题优化
- ✅ Meta 描述生成
- ✅ 内链建议
## 任务类型判断
同公众号工作区
## 执行流程
默认使用完整 9 步流程,但支持用户自定义:
/specify → /research → /topic → /collect → /write → /audit → /images(可选)
**用户可跳过的步骤**:
- /research(如不需要调研)
- /images(如不需要配图)
## 核心原则
1. **灵活适配** - 根据用户需求调整
2. **质量优先** - 保持高标准,不因"通用"而降低要求
3. **明确沟通** - 多询问用户需求,少假设
\```
**验收标准**:
- ✅ AI 能识别通用工作区
- ✅ AI 询问用户是否需要配图
- ✅ AI 询问用户是否需要 SEO 优化
- ✅ AI 支持灵活调整流程
---
### 3.2 任务类型检测(第二层判断)
#### 3.2.1 识别逻辑
**实现方式**: 在命令模板中嵌入任务类型判断逻辑
**关键词匹配表**:
| 任务类型 | 关键词 | 示例 |
|---------|--------|------|
| **新写作(有 brief)** | "按照这个 brief"、"根据需求文档" | "按照这个 brief 写一篇文章" |
| **新写作(无 brief)** | "写"、"创作"、"输出" | "写一篇关于 XX 的文章" |
| **修改已有文章** | "修改"、"改"、"优化"、"基于这篇文章" | "修改这篇文章的开头" |
| **纯审校** | "审校"、"降 AI 味"、"润色" | "帮我审校这篇文章" |
| **快速咨询** | "怎么"、"如何"、"帮我看看" | "怎么写好开头?" |
**判断流程**:
```
1. 读取用户输入
2. 提取关键词
3. 匹配任务类型
4. 如果匹配度 > 80% → 直接执行
5. 如果匹配度 50-80% → 询问用户确认
6. 如果匹配度 < 50% → 列出可能类型,让用户选择
```
#### 3.2.2 确认机制
**不确定时询问**:
```
🤔 **我理解你的需求是**:
[AI 的理解]
这属于以下哪种任务?
1️⃣ 新写作任务(完整流程,约 30 分钟)
2️⃣ 修改已有文章(快速修改,约 5 分钟)
3️⃣ 纯审校降 AI 味(三遍审校,约 10 分钟)
4️⃣ 快速咨询(回答问题,不执行命令)
请选择 1-4,或详细说明你的需求。
```
**验收标准**:
- ✅ AI 能识别 5 种任务类型
- ✅ AI 在不确定时询问用户
- ✅ AI 不会假设用户意图
---
### 3.3 工作区切换
#### 3.3.1 手动切换
**功能描述**: 用户可以手动切换工作区
**命令**:
```bash
# 切换到公众号工作区
cd workspaces/wechat/
# 切换到视频工作区
cd workspaces/video/
```
**AI 响应**:
```
✅ 已切换到 **公众号工作区**
当前配置:
- 段落控制:< 150 字
- 配图需求:5-8 张
- AI 味目标:< 30%
准备好开始了吗?告诉我你的写作需求。
```
#### 3.3.2 工作区状态显示
**功能描述**: AI 在执行任务前显示当前工作区
**输出格式**:
```
📁 **当前工作区**: 公众号写作 (wechat)
📋 **任务类型**: 新写作任务
🎯 **执行流程**: 9 步完整流程
准备开始第一步:/specify
```
---
## 4. 技术方案
### 4.1 文件结构
```
article-writer/
├── spec/
│ └── presets/
│ ├── anti-ai-detection/ # 反AI检测规则库
│ │ ├── 套话库.md
│ │ ├── AI句式库.md
│ │ └── 书面词汇替换库.md
│ └── workspaces/ # 工作区配置文件
│ ├── wechat.md # 公众号配置
│ ├── video.md # 视频配置
│ └── general.md # 通用配置
├── memory/
│ └── current-workspace.json # 当前工作区状态
├── templates/
│ └── commands/ # 命令模板(包含工作区检测逻辑)
│ ├── specify.md
│ └── ...
├── workspaces/ # 工作区目录
│ ├── wechat/ # 公众号工作区
│ │ └── articles/ # 文章输出目录
│ ├── video/ # 视频工作区
│ │ └── scripts/ # 脚本输出目录
│ └── general/ # 通用工作区
│ └── content/ # 内容输出目录
├── materials/ # 个人素材库(全局共享)
├── _knowledge_base/ # 知识库(全局共享)
└── _briefs/ # Brief 存档(全局共享)
```
### 4.2 实现步骤
#### Step 1: 创建工作区配置文件(Day 1-2)
1. 创建 `spec/presets/workspaces/wechat.md`
2. 创建 `spec/presets/workspaces/video.md`
3. 创建 `spec/presets/workspaces/general.md`
#### Step 2: 更新命令模板(Day 3)
1. 更新 `templates/commands/specify.md` - 添加工作区检测逻辑
2. 更新 `templates/commands/write.md` - 读取工作区配置
3. 更新 `templates/commands/audit.md` - 应用工作区规则
4. 嵌入任务类型判断逻辑
#### Step 3: 创建 memory/ 状态管理(Day 4)
1. 创建 `memory/` 目录
2. 定义 `current-workspace.json` 格式
3. 在命令模板中添加状态保存/读取逻辑
**状态文件示例**:
```json
{
"workspace": "wechat",
"project_path": "workspaces/wechat/articles/001-xxx/",
"detected_at": "2025-01-26T10:30:00Z",
"config_file": "spec/presets/workspaces/wechat.md"
}
```
#### Step 4: 测试和优化(Day 5)
1. 测试工作区自动检测
2. 测试任务类型判断
3. 测试流程差异化执行
4. 修复发现的问题
---
## 5. 验收标准
### 5.1 功能验收
#### 测试用例 1: 工作区自动检测
```
✅ 前置条件:用户在 workspaces/wechat/ 目录
✅ 执行操作:用户输入 "写一篇关于 Claude Code 的文章"
✅ 预期结果:
- AI 输出:"📁 当前工作区:公众号写作 (wechat)"
- AI 应用公众号规则
- AI 提示将执行配图
```
#### 测试用例 2: 根目录询问选择
```
✅ 前置条件:用户在根目录
✅ 执行操作:用户输入 "写一篇文章"
✅ 预期结果:
- AI 输出:"📁 请选择工作区:1. 公众号 2. 视频 3. 通用"
- AI 等待用户选择
- AI 不自作主张
```
#### 测试用例 3: 任务类型判断
```
✅ 前置条件:用户在公众号工作区
✅ 执行操作:用户输入 "帮我审校这篇文章"
✅ 预期结果:
- AI 识别为"纯审校任务"
- AI 只执行 /audit 命令
- AI 不执行选题讨论、写作等步骤
```
#### 测试用例 4: 工作区差异化
```
✅ 前置条件:分别在公众号和视频工作区
✅ 执行操作:执行相同的写作任务
✅ 预期结果:
- 公众号:执行 /images 命令
- 视频:不执行 /images,输出分镜标注
```
### 5.2 质量标准
- ✅ 工作区检测准确率 > 95%
- ✅ 任务类型判断准确率 > 90%
- ✅ 不确定时 100% 询问用户
- ✅ 配置文件语法无错误
- ✅ AI 能正确加载和解析配置
### 5.3 用户体验标准
- ✅ 提示清晰易懂
- ✅ 工作区切换无感知(自动完成)
- ✅ 错误提示友好
- ✅ 文档完整(说明如何使用)
---
## 6. 风险和依赖
### 6.1 技术风险
#### 风险 1: AI 无法准确理解工作区配置文件
**描述**: AI 可能无法正确解析或遵循 spec/presets/workspaces/*.md 配置文件
**缓解措施**:
- 使用简单清晰的 Markdown 格式
- 在命令模板中明确指示如何读取配置
- 使用明确的关键词和结构
- 多次测试验证
**应急方案**:
- 简化配置文件结构
- 在命令模板中直接嵌入核心规则
- 增加更多示例说明
#### 风险 2: 目录检测失败
**描述**: `pwd` 命令可能在某些环境下失败
**缓解措施**:
- 提供手动指定工作区的方式
- 增加 fallback 逻辑
**应急方案**:
- 让用户手动选择工作区
- 提供 CLI 参数: `--workspace wechat`
### 6.2 依赖关系
| 依赖项 | 类型 | 说明 |
|--------|------|------|
| **Bash工具** | 系统工具 | 用于执行 pwd 检测当前目录 |
| **Read工具** | AI工具 | 用于读取配置文件 |
| **Write工具** | AI工具 | 用于保存工作区状态到 memory/ |
| **AskUserQuestion工具** | AI工具 | 用于询问用户选择工作区 |
| **目录结构** | 项目结构 | workspaces/ 和 spec/presets/workspaces/ 目录必须存在 |
---
## 7. 后续迭代
### v1.1 - 工作区模板
- 提供更多工作区模板(如:技术博客、产品文档)
- 用户可自定义工作区
### v1.2 - 工作区切换优化
- 支持命令行快速切换: `content workspace wechat`
- 显示所有工作区列表: `content workspace list`
### v2.0 - 多工作区协作
- 一篇文章可以跨工作区(如公众号文章 + 视频脚本)
- 自动适配不同平台格式
---
## 附录
### A. 参考文档
- [技术设计方案](../technical-design.md)
- [开发路线图](../roadmap.md)
- [命令设计](../../commands-design.md)
### B. 变更日志
| 日期 | 版本 | 变更内容 | 作者 |
|------|------|----------|------|
| 2025-10-26 | 0.1 | 初始创建 | Claude |
---
**PRD 状态**: 📝 待评审 → 待开发