UNPKG

article-writer-cn

Version:

AI 驱动的智能写作系统 - 专注公众号/自媒体文章创作

826 lines (588 loc) 21.7 kB
# 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 状态**: 📝 待评审 → 待开发