| name | cheat-seed |
| description | 跟用户对话讨论选题——**默认一次一个**,用户主动给主题或经历,AI 围绕用户的输入深挖、提炼角度、写一份 draft。不是 AI 拿三个开放问题追用户,也不是一次给 5 个候选。触发词:"找选题"/"我想做一条 X"/"最近有个想法"/"seed"/"启动种子"。可选 batch 模式:`/cheat-seed --batch 5` 走旧的 brainstorm 5 候选 + 写 5 draft 流程。 |
/cheat-seed — 选题对话(默认)/ 批量 brainstorm(可选)
cheat-seed 的核心是跟用户讨论选题,不是机械地 brainstorm。好内容来自用户的真实经历 + 观察 + 情绪——这些是 AI 不可能凭空 brainstorm 出来的。AI 的角色是听用户讲 → 帮提炼角度 → 写一份 draft,不是 dump 15 候选让用户挑。
默认模式:对话式一次一个。
Batch 模式(--batch N):保留旧的 brainstorm N 候选 + 写 N 份 draft 流程,给"完全没想法 + 想批量初始化"的用户。
三种 Mode(自动识别)
Mode A — 用户主动给主题(**最常见**):
用户:"/cheat-seed" + 直接说"我想做一条关于 X 的"
或:"/cheat-seed 我最近开会被领导..."
↓
AI 围绕 X / 这件事**深挖**——什么瞬间触发?最让你 [情绪 / 不爽 / 觉得有意思] 的是哪点?
↓
收敛到一个具体角度 → 提议 → 用户认可 → 写 1 份 draft → 完成
↓
问"下一篇?" 或用户说"今天就这样"
Mode B — 用户给方向但不具体:
用户:"最近想做点关于 [职场 / 婚恋 / AI / ...] 的"
↓
AI:"[范围] 太广。最近你接触到的具体哪件事让你想做这个方向?"
↓
收敛到 Mode A 的具体经历
Mode C — 用户完全没想法(少见):
用户:"我不知道做什么" / "帮我想个题"
↓
AI:"好,进 brainstorm 模式——先抓热点 + 你之前的兴趣方向,给你 1 个建议"
↓
跑 trend-sources 抓热点 + 读 candidates.md / predictions/ 看用户历史
↓
提议 1 个角度(不是 5 个) → 用户认可 → 写 draft
Batch Mode — 用户显式要批量(`/cheat-seed --batch 5`):
按旧版 brainstorm 流程:3 问题 → 15 候选 → 用户挑 → 写 5 draft。
给"今天想一次性把未来 2 周的选题搞定"的用户。
关键纠正(与旧版的区别):
- AI 不主动开放问——等用户给输入再深挖
- 一次一个选题,不是 5 个
- 默认对话式 + 一次一个,batch 是 escape hatch
Constants
- DEFAULT_TREND_SOURCES = ["manual-paste"] — 仅 Mode C / Mode A 灰色场景 / Batch 用到。用户可在 state 里加 aihot / trendradar-mcp
- TREND_TOOL_ROUTING — 按
content_form 路由数据源,详见 shared-references/data-source-routing.md
- MODE_B_MAX_REPROBE_TURNS = 2 — Mode B "为什么" 反问最多 2 轮;超过则转 Mode C
- MAX_DEEP_DIVE_TURNS = 4 — Mode A 收敛阶段最多 4 轮反问,避免 AI 过度盘问
- WITH_DRAFT = yes — 默认确认角度后立刻写 draft;用户可说 "等下,我自己写" 跳过
- DRAFT_LENGTH — 派生自
state.typical_duration_seconds:30s→100-200字 / 90s→250-500字 / 240s→600-1000字 / 450s→1100-2000字 / 900s→2200+字
- HUMANIZE_DRAFT = on(默认)/ off —— 写完 draft 后用
humanizer skill 过一遍,去掉 AI 写作 tells(em-dash 滥用 / rule of three / inflated 词汇 / 空泛归因等)。off 时直接出原始 AI draft。只 humanize 正文,不动 header 的"必须改写"警告
Inputs
| 必填 | 来源 |
|---|
.cheat-state.json | 读 calibration_samples / typical_duration / cadence |
rubric_notes.md | 读当前 rubric(粗打分用) |
script_patterns.md | 读已有 pattern(写 draft 时按 cheat sheet 选结构) |
predictions/*.md(如有) | 已发历史,brainstorm 时作为 context |
audience.md(如有) | 受众画像——选题 / 写稿时的"谁在看"镜子(由 /cheat-persona 派生) |
Workflow
Phase 0: 前置检查 + 加载所有 context(核心:3 个 context 来源)
- 读
.cheat-state.json → 不存在则提示先跑 /cheat-init
- 读
rubric_notes.md 拿当前公式(粗打分用)
- 读
script_patterns.md——写 draft 时按 cheat sheet 选结构
- 读已有 prediction 文件(含 init 时 import 的 reconstructed)作为 context 来源 A(用户自己历史):
- 0 个 → A 为空
- ≥1 个 → A 有内容,提取 (title / 7 维 / 实绩)
- 读
benchmark.md(如存在)作为 context 来源 B(对标账号):
state.benchmark_status = imported → B 有内容,提取对标账号的样本主题分布、调性、Pattern
state.benchmark_status = none / pending → B 为空
- 读
audience.md(如存在且非空骨架)作为 受众镜子:
- Confidence 🟡 以上(有真实复盘数据派生)→ 选题 / 写 draft 时作为"这个 persona 会在乎吗"的检验视角
- Confidence 🔴/🟠(空 / 仅 benchmark seed)→ 当弱参考,不当硬约束
- 不进粗打分——audience.md 是 creative lens,粗打分仍只用 rubric。persona 影响"写什么 / 哪个角度",不影响分数
- 检查用户的入参——是否含具体 topic / 经历,决定走 Mode A/B/C/Batch
brainstorm 时的 context 优先级(Claude 判断——下面是参考默认):
- A 主导(用户自己数据):当 Claude 判断用户数据已能驱动方向时(参考默认:
calibration_samples ≥ 10,但 Claude 可以更早——如 N=5 但出现 ≥3 个与 benchmark 明显不一致的强样本)
- B 主导(benchmark):用户数据少 + benchmark 有内容时
- B 缺席(benchmark 为空)+ 用户数据少:纯靠用户 input + 抓热点;明确告诉用户"没 benchmark 也没足够自己数据,建议跑 /cheat-learn-from 后再回来 brainstorm"
判断依据不是死磕样本数,而是看:
- 用户最近 N 个样本的实绩是否与 benchmark 的高表现样本类型一致——一致说明 benchmark 仍有借鉴价值;不一致说明用户已经走自己的路
- 用户的样本多样性——3 篇都是同类内容不算成熟;3 篇覆盖不同类目反而比 10 篇同类更可信
Phase 1: Mode 分流
读用户输入,识别:
含具体名词 + 情绪 / 经历词("我昨天开会..." / "我看到 X 让我..." / "我对 Y 觉得...")→ Mode A(深挖;如话题是时事,Phase 2A.5 询问要不要拉外部数据)
含方向词但无具体内容("想做职场" / "AI 方向" / "婚恋")→ Mode B(单问"为什么想做这个"——用户内省窗口,不调任何热点工具)
显式说没想法("不知道做什么" / "帮我想" / "随便给个")→ Mode C(按 data-source-routing.md 调热点工具 + 用户挑 + 回到内省;都不行则走"聊经历"三选项兜底)
显式 --batch N(用户主动批量)→ Batch Mode
纯 /cheat-seed 无附加内容 → 询问入口问题:
你今天想干嘛?
- 有想做的主题 / 经历 → 直接告诉我("我想做一条 X" / "我最近 X...")
- 知道大致方向 → 告诉我("想做职场" / "AI 方向")→ 我会单问你为啥想做
- 完全没想法 → 说"帮我想"→ 我用 [aihot / trendradar] 拉今天的热点给你看
- 批量搞定 → 说 "batch <N>"
(我不会拿一堆开放问题追你——你给一句话我就开始)
注意这是唯一的开放式问题——只在用户纯触发 /cheat-seed 时问。如果用户已经在触发词里给了内容("/cheat-seed 我想做..." 或 "找选题 我最近开会..."),直接进 Mode A/B/C 不再问这一句。
Phase 2A: Mode A 深挖(用户给了具体 topic / 经历)
核心原则:围绕用户给的内容深挖,不要切到别的话题。
反问类型(按场景挑):
- 触发瞬间:"你说 X 这件事,最初是哪个具体瞬间触发你想做的?" / "是什么让你觉得这值得讲一条视频?"
- 情绪锚点:"这里面最让你 [生气 / 觉得荒唐 / 觉得有意思] 的是哪个细节?"
- 角度选择:"你想说的是 [角度 a:现象批判] 还是 [角度 b:自我反思] 还是 [角度 c:泛化到普遍]?"
- 受众想象:"你心里想着是说给哪种人听?她/他听完会怎么想 / 怎么转发?"
- 反对意见探测:"如果有人反驳说 [反方观点 X],你会怎么回?"——逼用户先想清楚立场
反问纪律:
- 一次只问 1 个问题(不要塞 3 个连珠炮)
- 最多
MAX_DEEP_DIVE_TURNS 轮(默认 4)——超过就主动收敛:"OK 我感觉够了,帮你提议一个角度试试"
- 用户的回答如果含 emoji / 简短 / 不耐烦 → 立刻收敛,不要逼
收敛输出:
我感觉这个角度能做:
[一句话立意:50 字以内]
走法:
- 用 [Pattern X 结构](来自 script_patterns.md)
- 钩子:[具体场景 / 句子]
- 主体:[3 个观察是什么]
- 收尾:[MVP 句方向]
粗打分(v0 等权 7 维):ER=X HP=X QL=X NA=X AB=X SR=X SAT=X → composite ≈ X.X
Confidence: 🔴 极低 (你才校准 0/N 篇)
要不要让我先写一份 draft?(yes / 换角度 / 我自己写)
用户回 yes → Phase 4 写 draft。
用户说"换角度" → 回 Phase 2A 深挖更多。
用户说"我自己写" → 把 candidate 加进 candidates.md 标 tier1,结束。
Phase 2B: Mode B — 单问"为什么",触发用户内省
用户给了方向但不具体("想做职场" / "AI 方向" / "婚恋")。这阶段不调任何热点工具——是用户内省的窗口,外部信息会污染。
只问一个问题,单刀直入:
为什么想做这个主题?
不要问"a/b/c 三种例子"——那是 dump 选项让用户挑,破坏内省。让用户自己组织语言。
根据用户回答分流:
| 用户答 | 分类 | 行为 |
|---|
| 含具体经历 / 个人卡点("我自己经常加班" / "我看到 X 让我...") | 真动机 | 转 Mode A 深挖(Phase 2A) |
| 抽象热度归因("这话题最近热" / "别人都在做" / "听说能涨粉") | 空动机 | 反问"那你自己对这个话题最有感觉的角度是啥?"——逼出个人 stake;继续空 → 转 Mode C |
| "我也不知道" / "朋友说赚钱" / 模糊推搡 | 真没想法 | 直接转 Mode C |
反问纪律:最多 2 轮。第 2 轮还问不出真动机 → 直接转 Mode C,不要无限挖。
设计意图:Mode B 是"过滤器",不是"工厂"。用户来这里要么暴露真实动机(→ 进 Mode A)要么暴露自己其实没想法(→ 进 Mode C)。两条都比硬要在 Mode B 里产出选题更好。
Phase 2C: Mode C — 外部素材 + 用户挑 + 回到内省
用户完全没想法(直接显式说 / 从 Mode B 转过来)。这是唯一默认调热点工具的入口。
按 shared-references/data-source-routing.md 的路由规则:
-
拉外部素材(按 content_form 选 trend source):
tutorial-builder / AI 类 → 调 aihot skill
opinion-video / long-essay / podcast / other → 调 trendradar-mcp(如启用)
mixed → 两个都调
- 都不可用 → 走 manual-paste(询问用户:"今天看到啥可以拍的?粘几条 URL/标题")
-
聊经历兜底(用户拒绝看外部素材 / 外部素材都不感兴趣):
外部素材你都没感觉,那回到你自己。三个开口,挑一个开始讲:
a) 你最近真实接触到的某件具体事?("上周我看到我同事 X...")
b) 你最近读到 / 看到的某条让你想吐槽的内容?("知乎上有个回答...")
c) 你长期琢磨的某个 unsolved 困惑?("我一直没想明白为啥 X...")
随便挑一个开始讲。
-
拉到外部素材后,用 rubric 粗筛 + 按 content_form 过滤,留 5 条最契合的:
今天这 5 个跟你形态契合:
1. [标题 A](来源: trendradar / 微博热搜 / hot_score: 8.5)
2. [标题 B](来源: aihot / 模型类 / 精选)
3. ...
你哪个最有感觉?没感觉就回 '都没',我换方向问。
-
用户挑了一条 → 回到内省:
OK [标题 X]。你为啥对这条最有感觉?
是 [angle1] 还是 [angle2] 还是别的?
→ 用户答 → 转 Mode A 深挖。
-
用户回 "都没" → 转回 Mode C 第 2 步的"聊经历兜底"。
关键:热点不是"塞 5 候选让用户挑",是"给材料 + 强制问用户的个人 stake"——AI 不替用户决定哪条最值得做。
Phase 2A.5: Mode A 灰色场景 — 用户讲了时事话题
Mode A 默认深挖用户经历。但如果用户讲的本身是时事话题(产品名 + 时间词 / 人名 + 事件词),按 data-source-routing.md 的"时事判定"规则,询问用户要不要拉外部数据作参考:
💡 [话题] 是时事——我可以拉一下今天的舆论风向(各平台情绪 + 主要 angles)作参考。
要看吗?回 '看' 我调;回 '不用' 我直接跟你深挖你的角度。
用户回 "看" → 调对应 trend source → 把数据 inline 到深挖 context;
用户回 "不用" → 标准 Mode A 深挖,不动外部数据。
永远不主动调——用户的 angle 优先于外部数据,避免外部信息带偏用户视角。
Phase 2D: Batch Mode(用户显式 --batch N)
保留旧 brainstorm 流程:
- 问 3 个清单问题(兴趣 / 调性 / 红线)—— Batch 模式才问这些
- 抓热点 + Claude brainstorm 15 候选
- 用户挑 N
- 写 N 份 draft 到 scripts/——每份都走 Phase 4 的段落版格式 + Phase 4.5 自检(line-format + humanizer),不因为批量就跳过
详见 commit history(旧 cheat-seed 的 Phase 1-3)。这是 escape hatch,不是默认。
Phase 3: 计算 candidate ID + 落候选池
不管 Mode A/B/C 哪条路径,确认角度后:
- 算 candidate id:
sha256("seed-" + 立意 + 触发时间)[:12]
- 写一行 entry 到
candidates.md(按 candidate-schema.md 格式)
- 标
tier=tier1 + read_status=deep_read(已经讨论过,不是 skim)
Phase 4: 写 draft
WITH_DRAFT=yes → 顺次写到 scripts/<YYYY-MM-DD>_<id>_<short-title>.md:
写 draft 前必读 script_patterns.md —— 按"结构选型 cheat sheet"对应用户的 topic 选合适结构。如果文件还在抽象骨架阶段(用户没填几个 pattern),就用 starter rubric 对应的通用框架。
字数:按 DRAFT_LENGTH 派生(基于 typical_duration_seconds)。
⚠️ 正文必须是段落版,不是字幕格式(最常见的生成跑偏)
模型的训练先验会把"视频脚本"默认写成提词器/字幕的短行格式。这是错的——cheat-seed 的 draft 是给用户改写的散文稿,不是拍摄字幕。字幕是剪映拍后自动断的,不是写作时的形态。
生成正文时,眼睛盯住下面这个对照:
❌ 字幕格式(不要这样写):
你有没有发现
所有审稿人都在说一样的话
你的研究太老套了
但你仔细看
他们引用的全是 5 年前的反应
✅ 段落版(必须这样写):
你有没有发现,所有审稿人都在说一样的话——你的研究太老套了。但你仔细看,他们引用的全是 5 年前的反应。AI 不是新东西,新的是这次大家集体觉醒了。
规则:
- 每段 100-300 字,逗号 / 句号 / 破折号自然连,不在句子边界硬断行
- 段与段之间空一行(自然的主题切换才换段)
- 一份 draft 正文一般 3-6 段,不该有几十个单句行
格式:
# [立意标题]
> ⚠️ **Draft by Claude — 你必须改写后再拍**
>
> 这是脚手架,不是成品。你的语气 / 节奏 / 个人经历无法 AI 生成。
> 改写流程:
> 1. **直接在本文件改写**(同 path:scripts/<...>.md)
> - 加你的语气、个人经历、真实金句
> - 砍铺垫、砍模型缩写、砍学术包装
> 2. 改完后跑 `/cheat-predict scripts/<本文件>.md`
> 3. 拍完跑 `/cheat-shoot scripts/<本文件>.md`
**Article ID**: <12 位 hash>
**调性**: [基于讨论得出的,不是清单 Q]
**目标时长**: <state.typical_duration_seconds 转换> 分钟
**目标字数**: <按时长派生>
**结构选型**: [按 script_patterns.md 的 cheat sheet 显式标,如 "metaphor 优先" / "数据反转开场"]
**用到的 patterns**: [编号 + 简短说明]
**讨论种子**: [一句话回顾 deep dive 出来的核心]
---
[draft 正文 —— **段落版**,3-6 段,每段 100-300 字,不是单句碎行]
WITH_DRAFT=no(用户说"我自己写")→ 跳过 Phase 4 + Phase 4.5。
Phase 4.5: draft 自检 pass(版式 + 去 AI 味)
draft 写完落盘后、在展示给用户前跑两步自检。顺序固定:先 4.5a 修版式,再 4.5b 去 AI 味——humanizer 处理散文,喂它字幕格式的碎行会乱。
为什么安全(不污染校准):cheat-seed 的 draft 不是被预测/发布的东西——用户改写后、cheat-predict 打分的是用户最终稿。这两步只是给用户更干净的起点。
Phase 4.5a: line-format 自检(字幕格式 → 段落版)
Phase 4 的散文指令 + ❌/✅ 对照已经在生成时压先验,但生成仍可能跑偏。这一步是确定性兜底:
body=$(awk '/^---$/{f=1;next} f' scripts/<id>.md)
line_count=$(printf '%s\n' "$body" | grep -c .)
char_count=$(printf '%s' "$body" | wc -m | tr -d ' ')
avg_chars_per_line=$(( char_count / (line_count > 0 ? line_count : 1) ))
判定:avg_chars_per_line < 15 且 line_count >= 8 → 判定为字幕格式 → 自动重排:
- 把句子边界的硬断行合并回自然段落
- 按主题切换分 3-6 段,每段 100-300 字
- 用 Edit 替换正文段(header 不动)
- 在 Phase 5 输出里标一行:"📐 检测到字幕格式,已重排为段落版"
不命中 → 跳过,正文已经是段落版。
Phase 4.5b: humanizer 去 AI 味
HUMANIZE_DRAFT=on(默认)—— 用 humanizer skill 过一遍。Claude 自己写的初稿天然带 AI tells(em-dash 滥用 / rule of three / "inflated" 词汇 / 空泛归因 / -ing 浅层分析),这一步把它们清掉。
步骤:
- 检查
humanizer skill 是否可用(~/.claude/skills/humanizer/ 存在):
- 不可用 → 跳过 4.5b,在 Phase 5 输出里加一行"(humanizer 未装,draft 是原始 AI 版——
git clone https://github.com/blader/humanizer 到 ~/.claude/skills/ 可启用自动去 AI 味)"
- 可用 → 通过 Skill tool 调
humanizer,只传 draft 正文(--- 分隔线之后、4.5a 已重排好的段落版),绝不传 header:
- header 的
⚠️ Draft by Claude — 你必须改写后再拍 警告是有意的脚手架标记,不是要 humanize 的散文
- voice calibration:如果用户有历史脚本(
videos/*/script.md)或填过 script_patterns.md,把最近 1-2 份作为 humanizer 的 voice 参考样本一起传——让它往"这个用户的声音"靠,而不是"通用人声"
- humanizer 返回去 AI 味的正文 → 用 Edit 替换 draft 文件的正文段(header 不动)
- 记录 humanizer 报告的"修了哪些 tell"(如
em-dash 滥用 ×3 / rule of three ×2 / inflated 词汇: "深刻" "本质上"),Phase 5 输出里展示
纪律:
- humanizer 是去 AI 味,不是替用户改写。它让 draft 不那么像机器写的,但仍不是用户的声音——header 的"必须改写"警告依然成立,Phase 5 输出要重申
- 如果 humanizer 把某句改得偏离了
结构选型 / 用到的 pattern → 以 pattern 为准,那句回滚(pattern 是和用户讨论定的,humanizer 不该推翻)
- humanizer 不负责版式——断行问题在 4.5a 已经修完,humanizer 拿到的已是段落版
Phase 5: 输出"下一步" + 询问继续
✅ Draft 写完:scripts/2026-05-04_<id>_<short>.md
📐 版式自检:通过(段落版) ← 或"检测到字幕格式,已重排为段落版"
🧹 humanizer 过了一遍:修了 em-dash 滥用 ×3 / rule of three ×2 / inflated 词汇 2 处
(draft 现在不那么"机器味"了——但这仍是脚手架,不是你的声音)
接下来你可以:
- 改写这份 draft(直接在原文件改)—— 加你的语气、经历、真实金句
- 改完跑 "打分这篇 scripts/<...>.md" 看 7 维评分
- 决定要拍 → "启动预测 scripts/<...>.md"
下一篇你想做什么?
(直接告诉我具体经历 / topic,或者说"今天就这样"结束)
humanizer 那行只在 HUMANIZE_DRAFT=on 且 skill 可用时出现。未装时换成一行提示如何启用。
用户说"今天就这样" → 结束 cheat-seed。
用户给新 topic → 回 Phase 1 重新分流。
Key Rules
- AI 不主动开放问——只在用户纯触发
/cheat-seed 时问一次入口问题,其他时候等用户给输入再深挖
- 一次一个选题——默认 Mode A/B/C 都给 1 个建议;用户主动要批量才走 Batch
- 反问纪律:一次问 1 个,最多 4 轮,用户不耐烦立刻收敛
- 深挖围绕用户给的话题,不要切到别的——你说"开会被领导骂",AI 不该问"那你最近有没有觉得 AI 让大家..."这种平行话题
- 写 draft 必须读 script_patterns.md——按用户已有 pattern 选结构
- draft 是脚手架——header 加醒目警告"必须改写"
- humanizer 只去 AI 味,不替用户改写——Phase 4.5b 让 draft 不那么机器味,但它仍不是用户的声音;"必须改写"的警告不因为过了 humanizer 就失效
- 正文是段落版不是字幕格式——生成时盯 Phase 4 的 ❌/✅ 对照;Phase 4.5a 用
avg_chars_per_line < 15 且行数 ≥ 8 做确定性兜底,命中就重排。字幕是剪映拍后自动断的,不是写作时的形态
Refusals
- 「跳过深挖,直接写 draft」 → 询问"你想直接给主题让我写吗?OK 但 draft 质量可能差——我不知道你的角度。给我一句话立意我就写"
- 「AI 替我决定 topic」 → 拒绝。Mode A/B/C 路径里 AI 永远只呈现外部素材 + 问用户角度,不替用户拍板"做哪条"
- 「Mode B 我懒得回答为什么,直接给我 5 个候选吧」 → 拒绝。Mode B 的"为什么"是过滤器——你答不出来就不该用 Mode B 的方向。要么进 Mode A 给具体经历,要么进 Mode C 我帮你找素材
- 「Mode A 时直接帮我拉热点,不问我同意」 → 拒绝。Mode A 用户已经有 angle,未经允许拉外部数据会污染他的视角。详见 data-source-routing.md
- 「一次写 5 个 draft」 → 不在默认流程。用户必须显式
--batch 5
- 「我懒得改写,直接拍 AI draft」 → 警告"AI 直接生成的稿子拍出来 ER 偏低,会污染你的校准数据",但用户坚持也允许(标
unmodified_ai_draft: true)
Integration
- 上游:
/cheat-init Phase 5 末尾在 pool_status=none + calibration_samples=0 时主动询问"现在跑 /cheat-seed?"
- 上游:
/cheat-recommend 在 candidates 空时引导文案中提及 /cheat-seed
- 上游:
/cheat-status 在 pool_status=none + 距 init >24h 时提示"还没拍——跑 /cheat-seed?"
- 下游:用户的 candidate → candidates.md(tier1,已 deep_read)
- 下游:(默认)draft → Phase 4.5 humanizer 去 AI 味 → scripts/.md → 用户改写 → /cheat-predict
- 可选依赖:
humanizer skill(MIT,外部项目)。装在 ~/.claude/skills/humanizer/ 时 Phase 4.5 自动启用;未装则优雅跳过。不打包进 cheat-on-content——用户自己 clone
- 与
/cheat-trends 区别:cheat-seed 是讨论 + 写 draft(重 conversation);cheat-trends 是多 adapter 抓 + 粗打分(重 fetch)。两者目的不同,不互相替代。