通用-深度研究
专用于小说写作的结构化深度研究 Skill。支持对题材趋势、平台生态、专业知识、场景环境、人物原型、写作技法、读者市场等研究域,执行大纲生成→并行深搜→报告输出的全流程深度调研。关键词:深度研究、写作研究、题材调研。
Install
npx skills add https://github.com/lornshrimp/Lorn.NovelWriteSkills/tree/main/CommonSkills/通用-深度研究
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install lornshrimp-lorn-novelwriteskills@llmmart
git clone https://github.com/lornshrimp/Lorn.NovelWriteSkills.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole lornshrimp/lorn.novelwriteskills collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
通用-深度研究
题材路由:若 .github\题材专用Skills\ 目录存在对应的 <题材>-深度研究 Skill,则:
- 将题材特性骨架路由到 <题材>-深度研究,该 Skill 位于 .github\题材专用Skills\ 目录。
- 命中本技能时,必须优先强制加载当前 Skill 与 <题材>-深度研究。
这不是"随便搜一下看看有什么资料"的浅浏览动作,也不是只给几条搜索结果链接的敷衍行为,更不是把通用百科知识当成可落地的写作研究结论。
本 Skill 的目标,是把"小说作者需要深入调研的课题"拆成可规划、可深搜、可验证、可落盘、可被其他 Skill 引用的完整工作流:
- 先按小说写作的七大研究域确定调研方向与维度;
- 再生成结构化的调研大纲(items + fields),人机确认后进入并行深搜;
- 每个调研条目由专用搜索代理深度挖掘,逐项收集创作可用的结构化信息;
- 最后汇总为可直接保存到
调研报告/(项目强相关)或写作研究/(通用/题材相关)目录下的 Markdown 报告。
基于 Deep-Research-skills 项目架构,改造为小说写作专用版本。
核心命令
| 命令 | 说明 |
|---|---|
/research <topic> |
初步调研:确定研究域→生成 outline.yaml + fields.yaml |
/research-deep |
并行深度搜索:逐项启动搜索代理,收集结构化数据 |
/research-report |
汇总生成可直接落盘的 Markdown 研究报告 |
/research-add-items |
追加调研条目 |
/research-add-fields |
追加调研字段 |
工作流程
/research "起点中文网都市悬疑题材 2025-2026 趋势"
↓ 确定研究域:题材趋势研究
↓ 生成大纲(items: Top10 作品 / 读者偏好 / 签约趋势… + fields)
↓ 【检查点1】用户确认/修改调研条目与维度
/research-deep
↓ 并行 web-search-agent 逐项深搜
↓ 结果写入 results/
↓ 【检查点2】调研质量摘要 → 用户确认
/research-report
↓ 汇总为 起点中文网都市悬疑题材趋势研究.md
↓ 【检查点3】诚实边界 + 三重验证自检
↓ 判断落盘位置:题材级通用研究 → 落盘到 都市悬疑/写作研究/
(若为项目强相关,则落盘到 项目根/调研报告/)
小说写作七大研究域
本 Skill 将小说写作的研究需求归纳为以下七域。每次 /research 启动时,必须先从七域中确认主研究域,再生成对应的调研条目与字段。
一、题材趋势研究
某题材在目标平台的热度走向、饱和度、创新空间、读者偏好迁移、新兴子类型。
典型课题:
- "起点中文网 2026 年都市题材细分赛道趋势"
- "番茄小说女频爱情题材热门元素演变"
- "悬疑推理题材在免费平台与付费平台的差异化表现"
服务 Skill:通用-设计题材定位框架、通用-平台签约评估框架
二、平台生态研究
某平台的读者画像、内容偏好、推荐机制、签约标准、流量分配规则、作者生态。
典型课题:
- "七猫免费小说平台的读者画像与阅读行为特征"
- "知乎盐选专栏的选题偏好与过稿标准"
- "起点中文网 2026 年推荐资源体系与获取条件"
服务 Skill:通用-平台签约评估框架、通用-多平台小说适配
三、专业知识研究
某种职业、技术、程序、科学原理的真实细节——用于增强故事设定的真实性、专业感与不可替代性。
典型课题:
- "法医 DNA 检验的真实流程、时间线与常见误区"
- "中国刑警命案侦办的标准程序与内部术语"
- "区块链技术原理及其在社会治理中的可能应用"
服务 Skill:通用-设计故事设定、通用-执行场景单元
四、场景/环境研究
某个真实地点、时代、建筑类型、城市空间的具体特征——用于增强场景描写的质感与说服力。
典型课题:
- "2003 年广州城中村的日常生活细节"
- "上海陆家嘴金融写字楼的职场生态与空间特征"
- "中国县级公安局的建筑布局与内部氛围"
服务 Skill:通用-执行微空间受限场景、通用-创建小说正文
五、人物原型研究
某类人群的行为模式、语言习惯、心理特征、社会处境——用于增强人物传记的真实感与辨识度。
典型课题:
- "中国基层刑警的职业倦怠与心理应对机制"
- "2020 年代中国一线城市独居女性的生活状态与社交模式"
- "程序员转行外卖骑手的真实经历与社会心态"
服务 Skill:通用-设计人物传记、通用-执行对话冲突
六、写作技法研究
某种叙事手法、节奏控制、对话技巧、悬念设计、爽点编排的原理与经典案例。
典型课题:
- "章末钩子的 12 种经典类型与起点爆款案例拆解"
- "长篇小说的中段防崩策略与结构设计"
- "第一人称与第三人称在悬疑推理中的叙事效果对比"
服务 Skill:通用-强化章末钩子、通用-强化章节开头、通用-去AI味重写、通用-正文润色
七、读者/市场研究
某读者群体的偏好、付费习惯、阅读场景、弃书原因、讨论热点。
典型课题:
- "起点男频核心付费读者对'降智'内容的敏感阈值"
- "免费平台读者与付费平台读者在爽点偏好上的差异"
- "2025-2026 年中国网文读者的阅读时长、场景与设备分布"
服务 Skill:通用-平台签约评估框架、通用-多平台小说适配、通用-分析竞对作品
与 通用-分析竞对作品 的边界与协作
本 Skill 与 通用-分析竞对作品 是互补关系,不是替代关系:
| 维度 | 通用-深度研究 | 通用-分析竞对作品 |
|---|---|---|
| 研究对象 | 题材、平台、知识、技法、读者等广泛课题 | 具体竞对作品的四层深拆 |
| 产出形式 | 研究报告(Markdown),项目强相关 → 调研报告/,通用/题材相关 → 写作研究/ |
竞对分析报告,落盘到 竞对分析/ |
| 研究粒度 | 可覆盖宏观趋势到微观细节 | 聚焦单书/多书的深拆对比 |
| 典型触发 | "帮我研究都市悬疑2026趋势" | "分析排行榜前5本书为什么强" |
协作路径:
- 深度研究的产出(如题材趋势报告)可作为竞对分析的前置知识——帮助确定榜单上哪些作品更值得深拆。
- 竞对分析的结论(如某竞品的强项与短板)可作为深度研究的条目输入——深入某个竞品暴露的知识缺口。
- 两个 Skill 可在同一任务中先后调用:先做领域深度研究建立认知底盘,再做竞对深拆锁定具体标杆。
研究报告落盘位置规范
研究报告的落盘位置根据研究内容与项目的关系分为两类:
项目强相关 → 调研报告/
若研究课题直接服务于某个具体的小说项目(如为"项目X"调研专业知识、场景环境、人物原型等),报告应落盘到该项目根目录下的 调研报告/ 子目录。
典型场景:
- 为当前正在创作的小说调研专业知识(如法医流程、区块链原理)→
调研报告/ - 为当前项目的人物原型做研究(如基层刑警职业状态)→
调研报告/ - 为当前项目的场景做环境考证(如 2003 年广州城中村)→
调研报告/
判断标准:如果研究结论只对当前这个项目有直接用途,放入
调研报告/。
通用/题材相关 → 写作研究/
若研究课题不绑定具体项目,而是通用的题材趋势、平台生态、写作技法、读者市场研究,或仅与某个题材相关但不指向特定小说项目,应落盘到项目根目录下的 写作研究/ 子目录。
典型场景:
- "起点中文网 2026 年都市题材细分赛道趋势"(题材通用)→
写作研究/ - "番茄小说女频爱情题材热门元素演变"(题材通用)→
写作研究/ - "章末钩子的 12 种经典类型与起点爆款案例拆解"(写作技法通用)→
写作研究/
判断标准:如果研究结论可供多个项目复用、或属于题材级别的知识沉淀,放入
写作研究/。
落盘前检查
- 若目标目录下已存在与本次课题相关的研究报告,必须先读取并纳入参考,避免重复研究同一课题——但可以更新、深化、补充。
- 研究报告文件名规范:
{研究域简称}_{课题简述}.md,例如:- 项目强相关:
专业知识_法医DNA检验流程.md(放在调研报告/下) - 题材通用:
题材趋势_起点都市悬疑2026趋势.md(放在写作研究/下)
- 项目强相关:
- 其他 Skill(如
通用-设计故事设定、通用-设计人物传记)在需要时可以通过引用调研报告/或写作研究/下的报告来获取研究结论。
研究产物落盘规范(强制)
- 默认产物是可直接引用的 Markdown 研究报告,必须写回文件,不能只在聊天中讨论。
- 报告必须包含:
## 研究课题、## 研究方法与来源、## 核心发现、## 创作可用的结论与抓手、## 信息来源。 - "创作可用的结论与抓手" 部分必须把研究发现翻译成作者可以直接在正文、设定、大纲中使用的具体建议,不能停留在抽象总结。
- 每条关键结论尽量标注信息来源与置信度(高/中/低),不确定处必须写明。
- 落盘位置按 【研究报告落盘位置规范】 执行:项目强相关 →
调研报告/,通用/题材相关 →写作研究/。 - 若研究过程中发现与现有旧报告冲突,以本轮新证据为准,并在报告中显式标注冲突与更新理由。
诚实边界(强制)
每份研究报告必须包含"诚实边界"段落,明确写出本研究的局限:
- 信息截止日期:调研时间点,之后的变化未覆盖。
- 信息缺口声明:哪些维度公开信息极少、哪些结论基于有限样本推测。
- 不确定项清单:明确列出本研究中标记为
[不确定]的字段与条目。 - 置信度总评:对整体研究结论的可信度给出高/中/低总评及理由。
- 反常识声明:如果某个结论与主流认知不一致,明确标注并说明证据强度。
一份不告诉你局限在哪的研究报告,不值得信任。
信息质量验证框架(Nuwa 三重验证)
并非所有搜到的信息都值得写进研究报告。从 nuwa-skill 的心智模型验证方法论迁移而来的三层过滤,确保每条写入报告的结论都经得起推敲:
验证1:跨源复现
同一发现/趋势/模式是否出现在至少 2 个独立来源中?
- 例:"都市悬疑读者偏好社会派"——需要在起点书评区 + 行业分析 + 知乎读者讨论中均出现,才算成立
- 仅一个来源出现 → 降级为"待验证线索",标注
[待验证] - 多个来源互相矛盾 → 进入矛盾处理流程(见下节)
验证2:创作可迁移(生成力)
这个发现能否推导出具体的创作建议?能否指导作者写出某个场景、设计某个人物、调整某个节奏?
- 能生成 ≥2 条具体创作建议 → 通过
- 只能停留在"某题材很火""读者喜欢XX"的抽象总结 → 不通过,丢弃或深化搜索
- 生成力是区分"研究结论"与"搜索摘要"的核心标准
验证3:有区分度(排他性)
这个发现是**"不说也知道"的常识**,还是真正有信息量的洞察?
- 例:"网文需要强冲突" = 常识,不纳入核心发现
- 例:"起点都市悬疑题材中,社会派推理的章均本章说数是纯刑侦派的 2.3 倍" = 有信息量的洞察
- 常识性发现可作为背景铺垫,但不得占据"核心发现"的篇幅
三重验证结果分类
| 通过重数 | 定级 | 处理方式 |
|---|---|---|
| 三重全过 | 核心发现 | 写入报告核心发现,可被其他 Skill 作为高置信度输入引用 |
| 通过两重 | 参考发现 | 写入报告,标注置信度"中",注明未通过的维度 |
| 仅通过一重 | 待验证线索 | 写入报告附录,标注 [待验证],不做强结论 |
| 零重通过 | 丢弃 | 不纳入报告(可能是特定语境下的随口一说,或搜索噪声) |
信息来源分级与黑名单
信息源优先级(从高到低)
| 优先级 | 来源类型 | 揭示什么 | 可信度 |
|---|---|---|---|
| 最高 | 平台官方数据(起点榜单/番茄数据/后台截图) | 客观市场表现 | ★★★★★ |
| 最高 | 一线从业者亲述(作者访谈/编辑公开分享/行业会议纪要) | 真实创作生态 | ★★★★★ |
| 高 | 读者一线反馈(本章说/书评区/书友圈——直接打开作品页查看) | 即时读者反应 | ★★★★ |
| 高 | 学术论文/行业报告 | 系统性分析 | ★★★★ |
| 中 | 行业媒体分析(非自媒体) | 二手分析 | ★★★ |
| 中 | 社交平台读者讨论(知乎/小红书/微博) | 读者舆论 | ★★★(需交叉验证) |
| 低 | 自媒体/个人博客的分析文章 | 个人观点 | ★★(仅作参考) |
| 最低 | AI 生成的综述/总结 | 可能包含幻觉 | ★(不得单独作为结论依据) |
信息源黑名单(永远排除)
以下来源不纳入研究材料:
- 知乎匿名回答 / 无来源声称:无法核验身份与资质,信息失真率高
- 微信公众号文章(封闭生态类):无法验证原始出处、大量洗稿转述
- 百度百科 / 百度知道:信息陈旧且不可靠
- 内容农场 / SEO 水文:拼凑内容,无一手信息
- 未标明来源的"网文数据":无法核实的数据等同于编造
中文权威渠道替代方案:36氪、极客公园、晚点LatePost、财新、第一财经、虎嗅、少数派、机器之心;网文行业类优先使用作家访谈原文、平台官方公告、阅文年报等可核验来源。
矛盾与不确定性处理原则
研究过程中遇到矛盾信息,是信号而非噪音。矛盾往往暴露了选题的张力所在——对创作者来说,张力就是可写的空间。
三种矛盾类型
| 类型 | 特征 | 处理方式 |
|---|---|---|
| 时间性矛盾 | 同一事物在不同时间点表现不同(如某题材 2024 年火爆、2025 年降温) | 记录变化轨迹,标注时间窗口,以最新数据为主但保留历史参照 |
| 来源性矛盾 | 不同来源对同一事物的描述不一致(如平台榜单 vs 读者口碑有偏差) | 并列呈现双方的证据与立场,分析偏差的可能原因,不做硬性调和 |
| 观点性矛盾 | 不同群体对同一事物的评价相反(如某写法在资深读者中受追捧、在新读者中被弃读) | 标注分歧双方的人群画像,这种分歧本身就是"创作者的选择空间" |
错误处理方式(禁止)
- ❌ 选一边忽略另一边,装作矛盾不存在
- ❌ 编一个调和的解释,把矛盾"圆"掉
- ❌ 因为不确定就删掉整条发现
信息不足时的处理
| 情况 | 处理 |
|---|---|
| 某个维度公开信息极少 | 标注"信息不足",降低该维度的置信度 |
| 只有二手信息 | 标注为"据[来源]报道,未经一手核验" |
| 信息相互矛盾且无法判断主次 | 并列呈现,让使用者自行判断 |
| 关键数据无法获取(如均订/追读) | 使用代理信号(如榜单排名/本章说数)并显式标注为代理 |
调研质量检查点
调研不是一次性跑完就够了。借鉴 nuwa-skill 的分阶段质量控制,在关键节点设置检查点,垃圾进垃圾出——在这里拦截比报告落盘后再返工成本低得多。
检查点 1:大纲确认后(/research 产出 → /research-deep 启动前)
向用户展示调研大纲摘要并确认:
调研大纲摘要
├── 研究课题: [topic]
├── 主研究域: [domain]
├── 辅助研究域: [sub-domains,如有]
├── 调研条目: [N] 项
├── 调研字段: [M] 个
├── 信息缺口预判: [初步判断哪些维度信息可能稀缺]
└── 继续 /research-deep?
检查点 2:深度搜索结束后(/research-deep 完成 → /research-report 启动前)
自动统计并展示调研质量摘要:
┌──────────────────┬──────────┬──────────────────────────┐
│ 维度 │ 状态 │ 关键发现 │
├──────────────────┼──────────┼──────────────────────────┤
│ 完成条目 │ N/N │ │
│ 不确定字段 │ M 个 │ [列出关键不确定字段] │
│ 信息矛盾点 │ K 处 │ [列出主要矛盾] │
│ 高置信度发现 │ P 条 │ [列出 top 3] │
│ 信息不足维度 │ Q 个 │ [标注缺口] │
│ 三重验证通过率 │ X% │ 核心/参考/待验证分布 │
└──────────────────┴──────────┴──────────────────────────┘
用户确认调研质量 OK → 进入 /research-report。用户觉得某维度不够 → 补充调研后再继续。
检查点 3:报告落盘前(/research-report 产出后)
自检清单:
- 报告包含"诚实边界"段落?
- 每条核心发现都有 ≥2 个来源支撑?
- "创作可用的结论与抓手"中有 ≥3 条可直接使用的具体建议?
- 不确定的信息已显式标注?
- 矛盾发现已保留(而非强行统一)?
- 报告文件名符合
{研究域简称}_{课题简述}.md规范? - 已确认落盘位置正确(项目强相关 →
调研报告/、通用/题材相关 →写作研究/)? - 已检查目标目录下无重复研究?
调研品味守则
遇到判断困难时回看这些原则。来自 nuwa-skill 品控方法论的本土化。
| 原则 | 说明 |
|---|---|
| 长文 > 金句 | 一篇 3000 字的行业分析比 50 条碎片帖子更揭示深层结构 |
| 争议 > 共识 | 最被争议的写法/趋势最能揭示创作机会——共识意味着红海 |
| 变化 > 固定 | 同一事物的演变轨迹比静态快照有更多信息量 |
| 从业者 > 评论者 | 一线作者/编辑的碎碎念可能比行业媒体的总结更有创作价值 |
| 负面 > 正面 | 读者说"为什么弃书"比"为什么喜欢"更值得研究——弃书原因指向创作底线 |
| 细粒度 > 宏观 | "某职业的真实工作流程"比"某职业的行业概况"对创作者更有用 |
绝不做的事
- 把 AI 生成的综述/百科当一手信息
- 编造不存在的数据或趋势
- 在信息不足时强行生成"看上去完整"的结论
- 忽略与主流认知矛盾的发现
- 对搜索结果的第 1 页浅尝辄止——最有价值的信息往往在第 2-3 页
调研技能自身的刻意练习方法(新增——吸收自知乎专栏「中国网络文学研究」#28)
深度研究本身就是一项可刻意练习的职业技能。以下四法是专栏作者总结的通用写作练习法,同样适用于提升调研与报告产出质量:
1. 拆解式阅读
找一份优秀的研究报告或一篇高质量的行业分析,不把它当读者看,把它当教材看。逐项问自己:
- 这个调研的调研条目是如何设计的?为什么选这些维度?
- 核心发现是如何从原始信息中提炼出来的?用了什么分类框架?
- "创作可用的结论与抓手"是怎样翻译成具体行动的?
- 如果让我重做这个课题,我会在哪些维度深化?
2. 仿写式练习
拆解一份高水平研究报告的结构和论证方式,然后用同样的方式做一个完全不同课题的报告。这不是复制内容,而是复制方法论。
3. 限时调研
给自己设一个时间限制:一个中等难度的调研课题必须在 X 小时内完成。限时强迫你:放弃完美主义,先完成再完美;逼出本能判断力,很多好的研究判断恰恰是不经过度思考时浮现的。
4. 针对性短板训练
不要每次都做全流程调研。如果你的报告总是"核心发现不够sharp",那就专门练"从原始材料中提取关键洞察"这一步,连续练 5 个不同课题,每个不超过 500 字。
来源:知乎专栏「中国网络文学研究」#28《小说写得不好?别灰心,网文写作是可以刻意练习的职业技能》顾里木图的小酒馆 置信度:中 — 四法在该专栏为通用写作练习法,此处根据调研场景做了适配改写;方法本身合理但缺乏报告写作方向的专项验证
输出示例
{课题_slug}/
├── outline.yaml # 调研条目 + 执行配置
├── fields.yaml # 字段定义
├── results/ # 逐项搜索结果
│ ├── item_1.json
│ ├── item_2.json
│ └── ...
├── generate_report.py # 报告生成脚本
└── report.md # 最终研究报告
落盘路径示例
项目强相关(放入 调研报告/):
专业知识_法医DNA检验流程.md # → 项目根/调研报告/
场景环境_2003广州城中村日常.md # → 项目根/调研报告/
人物原型_中国基层刑警职业状态.md # → 项目根/调研报告/
通用/题材相关(放入 写作研究/):
题材趋势_起点都市悬疑2026趋势.md # → 题材名/写作研究/ 或 项目根/写作研究/
平台生态_七猫免费小说读者画像.md # → 题材名/写作研究/ 或 项目根/写作研究/
写作技法_章末钩子12种经典类型.md # → 项目根/写作研究/
致谢
- 原作者:Weizhena
- 底层框架:Deep-Research-skills
- 灵感:RhinoInsight — Improving Deep Research through Control Mechanisms for Model Behavior and Context
- 小说写作改造:本工作区 Skill 体系
- 信息质量验证框架与诚实边界方法论:借鉴自 nuwa-skill(女娲·Skill造人术) —— 心智模型三重验证、矛盾处理原则、调研品味守则、分阶段质量检查点等品控方法论
继续读取的 references(强制读取门禁)
以下所列 references 文件必须通过 read_file 工具逐文件读取,不得因"已有相关知识"、"之前执行时已读过"、"该文件只是参考"为理由跳过任何一条。 每条 references 按其标注的必读等级强制执行:
- 标注 必读 的文件:必须读取,少一条即视为流程违规,不得开始执行流程。
- 未标注必读的文件:必须读取,但读取后可仅提取与当前任务直接相关的段落,不要求逐字通读。
- 若文件路径指向的文件不存在(如引用的外部路径未就位),必须在日志中显式记录
reference_missing_{refName},不得静默跳过。
以下 references 为当前 skill 目录下的补充文件,强制读取。 - references/元数据归档.md — 元数据归档
Files (lorn.novelwriteskills)
-
agents
-
web-search-modules
-
academic-papers.md 1.6 KB
# Academic Papers Module > 从 web-search-agent.md 提取的学术论文搜索专用策略 **触发场景**: 论文查找、学术研究、算法原理 ## 搜索源 (Academic Sources) - **Google Scholar** (scholar.google.com) - comprehensive academic search engine - **arXiv** (arxiv.org) - preprints in physics, math, CS, and related fields - **Hugging Face Papers** (huggingface.co/papers) - daily/monthly trending ML/AI papers with community upvotes - **bioRxiv** (biorxiv.org) - preprints in biology and life sciences - **ResearchGate** (researchgate.net) - academic social network with papers and author profiles - **Semantic Scholar** (semanticscholar.org) - AI-powered academic search - **ACM Digital Library** and **IEEE Xplore** - CS and engineering papers ## 查询策略 (1.3 Academic Paper Search) - Use Google Scholar as primary source with advanced search operators - Search by author names, paper titles, DOI numbers, institutions, and publication years - Use quotation marks for exact titles and author name combinations - Include year ranges to find seminal works and recent publications - Look for related papers and citation patterns to identify seminal works - Search for preprints on arXiv, bioRxiv, and institutional repositories - Check author profiles and ResearchGate for publications and PDFs - Identify open-access versions and legal paper download sources - Track citation networks to understand research evolution - Note impact factors, h-index, and citation counts for relevance assessment - Search for conference proceedings, journals, and workshop papers - Identify funding agencies and research grants for context -
general-web.md 1.3 KB
# General Web Module > 从 web-search-agent.md 提取的通用网页搜索策略 **触发场景**: 通用信息、新闻、产品对比、最佳实践 ## 搜索源 - **Reddit** (r/programming, r/webdev, r/javascript, and topic-specific subreddits) - real-world experiences - **Official documentation** and changelogs - authoritative information - **Blog posts** and tutorials - detailed explanations - **Hacker News** discussions - high-quality technical discourse - **Dev.to** (dev.to) - developer community with high-quality technical articles - **Medium** (medium.com) - technical blog platform with in-depth articles - **Discord** - official discussion channels for many open source projects - **X/Twitter** - technical announcements and discussions from developers and maintainers ## 查询策略 (1.2 Best Practices & Comparative Research) - Look for official recommendations first - Cross-reference with community consensus - Find examples from production codebases - Identify anti-patterns and common pitfalls - Note evolving best practices and deprecated approaches - Create structured comparisons with clear criteria - Find real-world usage examples and case studies - Look for performance benchmarks and user experiences - Identify trade-offs and decision factors - Consider scalability, maintenance, and learning curve -
novel-platforms.md 1.9 KB
# 小说平台搜索策略 ## 适用场景 - 题材趋势研究:某平台某题材的热度、头部作品、新作动态 - 平台生态研究:读者画像、推荐机制、签约标准、流量规则 - 竞对作品信息搜集:榜单数据、作品数据、读者反馈代理信号 ## 信息源优先级 ### 第一优先级:平台官方数据 - **起点中文网**:起点榜单页(月票榜/畅销榜/新书榜/三江/强推)、作品详情页、书评区/本章说/书友圈、起点数据第三方聚合站(如 qidiantu.com——仅作补证) - **番茄小说**:番茄榜单、作品页、番茄作家助手公开信息 - **七猫免费小说**:七猫榜单、作品页 - **纵横中文网**:纵横榜单、作品页 - **知乎盐选**:盐选专栏页、知乎圆桌讨论 - **豆瓣阅读**:豆瓣阅读榜单、作品页、豆瓣书评 - **WebNovel/GoodNovel/My Fiction**:对应平台的榜单页、作品页 ### 第二优先级:行业分析 - 阅文/IP 相关行业报告(阅文年报、IP 生态大会公开资料) - 网文行业自媒体分析文章(如"网文观察""爆款小说拆解"类公众号/知乎专栏) - 各平台官方发布的品类扶持政策、征文活动信息 ### 第三优先级:数据聚合平台 - 第三方榜单聚合站(仅作补证,不得单独承担关键结论) - 小说数据统计平台(注意数据可靠性和时效性) ## 搜索策略 1. 先搜官方渠道:`site:qidian.com {题材} 2026` 2. 再搜行业分析:`{平台} {题材} 趋势 2025 2026 分析` 3. 补充搜索读者讨论:`{作品名} 书评 | {作品名} 怎么样 | {题材} 推荐` 4. 对于外文平台:先用中文搜相关分析,再用英文搜平台原站 ## 质量要求 - 优先使用可核验的公开数据 - 代理信号(如榜单排名替代均订)必须标注为代理,不得伪造 - 时效性敏感:标注数据的时间窗口 - 跨平台对比时统一时间基准 -
reader-insights.md 3.1 KB
# 读者洞察搜索策略 ## 适用场景 - 读者/市场研究:读者偏好、付费习惯、阅读场景、弃书原因 - 题材趋势研究:读者口味迁移、热门元素演变 - 平台生态研究:各平台读者画像差异 - 写作技法研究:从读者反馈中反推有效技法 ## 信息源优先级 ### 第一优先级:平台内读者反馈 - **起点本章说/段评**:逐段/逐句的即时读者反应——最真实、最细粒度的读者情绪数据。搜索方式:打开作品试读页,查看热门段评 - **起点书友圈/书评区**:章节级/作品级的读者讨论 - **起点书单**:读者自行组织的推荐书单,可看出读者如何归类作品 - **番茄/七猫等免费平台的评论**:免费读者的反馈特征 ### 第二优先级:社交平台读者讨论 - **知乎**:`{作品名} 怎么样`、`{题材} 推荐`、`网文 书荒 推荐`——注意区分真实读者推荐与营销软文 - **小红书**:读者的读后感/安利帖——女性读者视角为主 - **微博超话**:粉丝向讨论——可观察核心读者的关注点 - **贴吧**:作品吧、网文吧的读者讨论 - **豆瓣**:书评、读书笔记——偏向文学性评价 ### 第三优先级:行业/媒体分析 - **网文行业媒体**:对读者趋势的分析文章 - **数据报告**:各平台发布的年度阅读报告、读者画像 - **学术论文**:网络文学读者研究的学术成果 ### 第四优先级:间接信号 - **搜索引擎趋势**:百度指数、微信指数——可看某题材/某作品的大众关注趋势 - **电商平台**:实体书/有声书的销量与评论——另一类读者群 - **海外读者**:WebNovel/GoodNovel 上的海外读者反馈 ## 搜索策略 1. 作品级反馈:`{作品名} 书评 | {作品名} 好看吗 | {作品名} 剧透` 2. 题材级偏好:`{题材} 推荐 书单 | {题材} 最好看 | {题材} 书荒` 3. 弃书分析:`{题材} 看不下去 | 网文 踩雷 | 小说 弃文 原因` 4. 对比讨论:`{作品A} vs {作品B} | {题材} 天花板` 5. 趋势感知:`2025 网文 读者 喜欢 | 2026 网文 流行` ## 对小说创作者的价值翻译 搜索结果必须翻译为创作者可用的结论,而非停留在"读者喜欢什么": - **正向偏好 → 可迁移设计**:"读者喜欢某作品的 XX 设计" → "这背后的机制是什么?能否用不同设定实现同类型的满足?" - **负向反馈 → 避坑清单**:"读者讨厌 XX" → "底层原因是什么?是执行问题还是设定问题?" - **争议点 → 创作选择**:"读者对 XX 有分歧" → "这个分歧是风险还是机会?如何在开篇就筛掉非目标读者?" ## 质量要求 - 区分"高频共性反馈"与"少数极端评价"——不要因为一条激烈差评过度反应 - 区分"付费读者反馈"与"免费读者反馈"——付费读者的弃书原因更有参考价值 - 注意读者反馈的"事后合理化"——读者说的弃书原因可能不是真正的弃书原因 - 对来自单一平台/社区的反馈做跨平台交叉验证 - 标注信息的时效性和样本量 -
real-world-knowledge.md 3 KB
# 真实世界知识搜索策略 ## 适用场景 - 专业知识研究:某种职业、技术、程序、科学原理的真实细节 - 场景/环境研究:真实地点、时代、建筑、城市空间的特征 - 人物原型研究:某类人群的真实行为、语言、心理特征 - 故事设定研究:需要真实知识支撑的虚构设定 ## 信息源优先级 ### 第一优先级:专业一手资料 - **政府/机构官网**:法律法规文本、职业资格标准、行政程序说明 - **行业协会/学术团体**:行业白皮书、技术标准、学术论文 - **专业媒体**:行业垂直媒体的深度报道、人物特写 - **纪录片/纪实作品**:对特定职业、场景、事件的系统性记录 ### 第二优先级:亲历者叙述 - **知乎/豆瓣**:特定职业、经历的真实分享(需注意筛选高可信度回答) - **B 站/播客**:职业体验 Vlog、行业揭秘、亲历者访谈 - **自传/回忆录**:特定人群的个人经历记录 - **新闻报道中的人物特写**:对特定职业人群的深度描写 ### 第三优先级:学术研究 - **知网/万方**:社会学、人类学、犯罪学等对特定人群/场景的学术研究 - **Google Scholar / Semantic Scholar**:英文学术论文 - **学位论文**:通常有更详细的田野调查和一手数据 - **百度学术**:中文论文的补充来源 ### 第四优先级:综合百科/指南 - **维基百科 / 百度百科**:基础知识框架(仅做入门,不依赖) - **专业手册/教科书**:职业技能培训教材、行业操作手册 - **政府公开数据**:人口统计、经济数据、地理信息 ## 搜索策略 1. 结构化搜索:`{职业} 工作流程 | {职业} 日常 | {职业} 术语` 2. 细节搜索:`{场景} 细节 描述 | {地点} 环境 特征` 3. 程序搜索:`{程序} 步骤 | {程序} 流程 | {程序} 规定` 4. 亲历者搜索:`{职业} 真实经历 | 我是一名{职业}` 5. 学术搜索:`{关键词} site:cnki.net | {keyword} site:scholar.google.com` ## 对小说创作者的特殊价值 本次搜索结果应服务于小说的故事设定、场景描写、人物塑造或情节设计。搜索时优先收集: - **可叙事化的细节**:不是抽象概念,而是能在正文中直接呈现的具体动作/场景/对话 - **程序链条**:某职业/程序的完整步骤链,以及每个步骤可能出错的地方 - **术语与黑话**:从业者真实使用的语言 - **代价与摩擦**:程序中的卡点、常见失误、灰色地带、伦理困境 - **感官细节**:声音、气味、触感、光线、温度等可写的感官信息 ## 质量要求 - 区分"官方流程"与"实际操作"(两者往往有差距,差距本身也是好素材) - 标注信息的时空坐标(某地、某年、某行业的做法可能不同) - 优先收集"为什么会这样"的因果链,而非只有"是什么"的静态描述 - 不确定的法律/程序信息必须标注,不得给作者提供错误"事实" -
writing-community.md 2.1 KB
# 写作社区搜索策略 ## 适用场景 - 写作技法研究:创作方法论、技巧讨论、经验分享 - 题材趋势研究:作者群体的创作动向、热门选题讨论 - 平台生态研究:作者对各平台的口碑、签约体验、收入分享 - 读者洞察:作者视角的读者反馈分析 ## 信息源优先级 ### 第一优先级:中文写作社区 - **龙的天空论坛(龙空)**:网文作者最集中的社区,涵盖创作技法讨论、行业动态、平台评价、读者反馈分析。搜索关键词示例:`site:lkong.com {技法关键词}` - **知乎**:网文写作话题下高质量讨论。搜索关键词示例:`site:zhihu.com 网文 {技法} | site:zhihu.com 小说创作 {话题}` - **豆瓣写作小组**:各种写作相关小组的讨论 ### 第二优先级:专业创作平台 - **作家助手社区**(起点官方):起点签约作者的官方讨论区 - **番茄作家助手**:番茄平台的作者社区 - **各平台作家论坛 / 公开群**:公开可见的作者讨论 ### 第三优先级:国际写作社区 - **Reddit**:r/writing、r/fantasywriters、r/selfpublish 等写作子版块 - **NaNoWriMo 论坛**:国际小说写作月社区 - **Kboards / Writer's Cafe**:独立作者社区 - **Absolute Write Water Cooler**:综合写作论坛 ### 第四优先级:泛内容创作社区 - **B 站**:创作技巧视频、行业分析 UP 主 - **即刻 / 少数派**:创作者交流讨论 - **微博超话**:写作相关话题讨论 ## 搜索策略 1. 精准搜索:`site:{社区域名} {关键词}` 2. 话题搜索:`{技法} 写作 技巧 | {平台} 签约 经验` 3. 趋势搜索:`2025 2026 网文 {话题} 趋势` 4. 案例搜索:`{作品名} 拆解 | {作品名} 为什么火` ## 质量要求 - 区分"作者经验分享"与"读者主观评价"——前者对创作研究更有价值 - 注意社区帖子中的幸存者偏差(成功的更愿意分享) - 标注信息来源的论坛/用户层级(新人作者 vs 成熟作者 vs 编辑视角) - 对匿名/低可信度来源降低权重 -
writing-technique.md 2.9 KB
# 写作技法搜索策略 ## 适用场景 - 写作技法研究:叙事手法、节奏控制、对话技巧、悬念设计、爽点编排 - 具体技法案例搜集:某技法的经典案例、不同作者的实现方式 - 技法效果分析:某种技法对不同读者群的实际效果 ## 信息源优先级 ### 第一优先级:中文创作方法论 - **知乎**:网文创作话题下的高质量回答——具体技法拆解、案例丰富的帖子 - **龙的天空论坛(龙空)**:作者之间的技法讨论——来自实践者的经验 - **B 站**:小说写作教学的 UP 主、网文拆解视频 - **微信公众号**:创作类公众号的系统性文章 ### 第二优先级:经典创作理论 - **编剧教材**:罗伯特·麦基《故事》、悉德·菲尔德《电影剧本写作基础》——叙事结构、人物弧线的经典理论 - **小说写作指南**:斯蒂芬·金《写作这回事》、詹姆斯·斯科特·贝尔《冲突与悬念》——小说写作技法 - **类型写作专著**:特定类型(悬疑、爱情、奇幻)的写作方法论 ### 第三优先级:英文学术/教学资源 - **Google Scholar**:叙事学、读者心理学、创意写作教学的学术论文 - **写作教学网站**:Writer's Digest、The Write Practice、Helping Writers Become Authors - **YouTube 写作频道**:Brandon Sanderson 的创意写作课等 ### 第四优先级:作品案例 - 直接阅读目标平台头部作品的章节,分析其技法运用 - 查找已有人做的拆解分析(需核验质量) ## 搜索策略 1. 技法原理:`{技法名称} 写作 技巧 | {技法名称} 小说` 2. 案例搜索:`{技法名称} 案例 | {技法名称} 经典 | {技法名称} 分析` 3. 平台适配:`{技法名称} 网文 | {技法名称} 起点 | {技法名称} 爆款` 4. 类型专用:`{题材} {技法} | 悬疑 {技法} | 都市 {技法}` 5. 英文搜索:`fiction writing {technique} | novel {technique} examples` ## 技法研究的创作价值框架 搜索和整理技法信息时,每个技法必须回答以下问题(而非只收集定义): - **这个技法解决什么创作问题?**(不是抽象理论,是作者在什么情境下需要它) - **这个技法在网文/长篇连载中的具体实现形式是什么?**(不同于短篇/传统文学的用法) - **有哪些爆款作品用了这个技法?用的好不好?**(正向案例 + 失败案例) - **这个技法的使用边界是什么?**(什么时候不该用、用过头会怎样) - **AI 辅助写作时代,这个技法有什么新的实现可能?** ## 质量要求 - 优先收集有具体案例支撑的技法分析,而非纯理论阐述 - 技法描述必须包含"怎么落到正文里"的操作性指导 - 区分"适用于传统文学"和"适用于网文连载"的技法差异 - 标注信息来源的权威性(成功作者的经验 > 编辑的观察 > 读者的感知 > 未经验证的理论)
-
-
web-search-agent.md 9.2 KB
--- name: web-search-agent description: 小说创作深度研究搜索代理。专门为小说写作从互联网搜集创作可用的真实信息——包括题材趋势、平台生态、专业知识、场景细节、人物原型、写作技法、读者反馈等。擅长跨平台、跨社区、跨语言的多维度搜索与信息综合。不应只停留在表面搜索结果,而要深入挖掘对创作者有实际价值的具体细节。 model: opus --- 你是一位专门服务于小说创作者的深度研究搜索专家。你的使命不是简单地搜索信息并罗列链接,而是帮助创作者找到**能直接写进正文、用于设定、支撑大纲的真实、具体、可叙事化的信息**。 ## 核心能力 - 你精通从小说创作视角评估信息的价值——不只搜"是什么",更要挖"怎么用" - 你系统性地搜索:起点/番茄/七猫/纵横等小说平台的榜单与作品信息;知乎/龙空/豆瓣等写作社区的技法讨论;百度百科/维基百科/学术论文等专业知识源;书评区/本章说/社交媒体上的读者反馈 - 你从不满足于搜索结果的前几条——最有价值的信息往往在第二、第三页 - 你特别擅长发现"可写的细节"——某职业的真实工作流程、某场景的感官特征、某类人群的真实语言习惯 - 你理解网文创作的特殊需求(长篇连载、快节奏、强冲突、追读驱动),能判断哪些信息对网文作者最有价值 ## 研究方法 ### 0. 获取当前日期 运行 `date +%Y-%m-%d` 获取今天的日期,用于时间敏感的搜索。 ### 1. 查询生成阶段 当接到小说创作研究任务时,你需要: - 生成 5-10 个不同的搜索查询变体,以最大化覆盖面 - 包含专业术语、行业黑话、常见误区表述 - 从"创作者想知道什么"而非"普通读者想知道什么"的角度构建查询 - 同时搜索"正面信息"和"反面信息"(如某职业的光鲜面和不为人知的真实面) - 使用精确短语搜索(引号)获取特定的技术术语或表达 **场景相关搜索策略(强制模块加载)**: 在执行任何 WebSearch 或 WebFetch 之前,你必须使用 Read 工具从 `web-search-modules/` 加载相关的策略模块。根据研究类型,读取对应文件: - **小说平台数据 / 榜单 / 作品信息** → 读取 `novel-platforms.md` 来源:起点、番茄、七猫等小说平台及其相关分析 - **写作技法 / 创作方法论** → 读取 `writing-technique.md` 来源:知乎、龙空、B站、写作教材、学术论文 - **写作社区 / 行业动态** → 读取 `writing-community.md` 来源:龙空论坛、知乎写作话题、豆瓣、Reddit 写作群组 - **读者反馈 / 市场偏好** → 读取 `reader-insights.md` 来源:本章说、书评区、知乎推荐、小红书、微博超话 - **真实世界知识 / 专业细节** → 读取 `real-world-knowledge.md` 来源:行业手册、学术论文、亲历者叙述、纪录片 - **学术论文 / 深度研究** → 读取 `academic-papers.md` 来源:Google Scholar、arXiv、知网、万方 - **通用网页搜索** → 读取 `general-web.md` 来源:Reddit、官方文档、博客、Hacker News 等 **禁止跳过此步骤。在加载至少一个模块之前,禁止调用 WebSearch 或 WebFetch。** **模块路由**:每次搜索可以路由到一个或多个模块: - **单一模块**:当任务明确属于一个领域时,只加载该模块 - 例如:"搜索起点都市悬疑 Top10" → 只读取 `novel-platforms` - **多模块**:当复杂任务需要跨领域覆盖时,加载多个模块 - 例如:"研究法医 DNA 检验流程并找到适合小说的写法" → 读取 `real-world-knowledge` + `writing-technique` + `general-web` - 例如:"分析都市悬疑题材 2026 趋势" → 读取 `novel-platforms` + `reader-insights` + `writing-community` - 代理根据任务内容推荐模块;用户也可以明确指定 ### 2. 信息源优先级 按路由模块中定义的优先级系统性搜索。每个模块指定了自己的优先源列表。当加载多个模块时,合并源列表并去重。 ### 3. 信息收集标准 你需要: - 阅读搜索结果前几条之外的内容——最有价值的信息往往被埋在深处 - 在不同来源之间寻找共性模式(同一职业的不同人是否有相似经历?) - 注意信息的时效性(2020 年的做法和 2025 年可能完全不同) - 关注不同来源对同一问题的方法差异及其利弊 - 识别权威来源和有经验的贡献者 - 关注信息是否被更新或已有替代方法 - **特别注意**:对小说创作者来说,"一线从业者的碎碎念"可能比"官方操作手册"更有价值 ### 4. 信息整理标准 整理发现时,你需要: - **调用者要求的格式优先**——首先满足他们的要求 - 以关键发现摘要开头(2-3 句话) - 按相关性和可靠性组织信息 - 提供所有来源的直接链接 - 包含相关的引用或数据摘录 - 标注任何相互矛盾的信息并解释差异 - 突出最有前景的"可写素材" - 包含时间戳、版本号和环境细节(如果相关) - 明确标记实验性或未经验证的解决方案 ## 质量保证 - 尽可能通过多个来源验证信息 - 明确标注推测性或未经验证的信息 - 为发现标注时间戳以表明时效性 - 区分一手资料和二手转述 - 标注来源的可信度(从业者亲述 > 行业媒体报道 > 百科 > 匿名帖子) - 标记过时或已被替代的信息 - 突出安全/法律/伦理注意事项 - **自我检查**:是否探索了多样化的来源?是否有遗漏的角度?信息是否足够新?是否有可操作的下一步? - **如果信息不足**:说明已搜索的内容,解释局限性,建议替代方案或可咨询的社区 ### 信息质量三重验证(Nuwa 方法) 每次搜索任务完成后,对收集到的每条关键发现执行以下自检。此验证框架来自 nuwa-skill 的心智模型方法论,适配为小说创作研究的质量过滤: #### 验证1:跨源复现 - 这条发现是否出现在 ≥2 个独立来源中? - 仅一个来源 → 标注为 `[待验证]`,不列入"核心发现" - 多个来源矛盾 → 保留矛盾,进入矛盾处理流程 #### 验证2:创作可迁移 - 这条发现能否生成具体的创作建议?(能写进正文/设定/大纲的才算) - 只能停留在抽象总结 → 标记为低价值,放在"补充信息" - 能生成 ≥2 条具体建议 → 高价值,放入"创作可用的结论与抓手" #### 验证3:有区分度 - 这条发现是"不说也知道"的常识,还是真正有信息量的洞察? - 常识 → 可做背景铺垫,但不占用核心发现篇幅 - 有信息量的洞察 → 优先输出 ### 矛盾与不确定性处理 搜索过程中遇到矛盾信息,不要尝试"圆"掉或选择性地忽略。矛盾是信号: | 矛盾类型 | 处理方式 | | --- | --- | | 不同来源对同一事物的描述不一致 | 并列呈现双方的证据,标注各自的来源类型与可信度,分析偏差可能原因 | | 同一指标在不同时间点数据相反 | 记录变化轨迹,标注各数据的时间窗口 | | 不同读者群体对同一作品/写法的评价相反 | 标注双方人群画像(如"资深读者 vs 新读者""付费读者 vs 免费读者") | **禁止的行为**: - ❌ 选一边忽略另一边 - ❌ 编造调和解释 - ❌ 因为不确定就删除发现 ### 诚实边界(Agent 输出必须包含) 每次搜索任务结束时,在输出的末尾附上"诚实边界"段: ```markdown ## 诚实边界 - 信息截止:[当前日期] - 信息缺口:[哪些想查但没查到的东西] - 不确定项:[列出所有 [待验证] 和 [不确定] 的条目] - 置信度总评:[高/中/低] —— [理由] - 搜索局限:[本次搜索覆盖了哪些来源,未覆盖哪些来源] ``` > 一个不告诉你局限在哪的搜索结果,不值得信任。 ## 标准输出格式 ```markdown === 如果调用者指定了格式 === [调用者要求的格式/内容] ## 信息来源与参考 ← 始终需要 1. [链接 + 描述] 2. [链接 + 描述] === 否则使用标准格式 === ## 执行摘要 [关键发现 2-3 句话——找到了什么,对创作者最有价值的结论是什么] ## 详细发现 [按相关性/方法组织,使用清晰的标题] ### [发现/方法 1] - 描述 - 来源链接 - 可写素材摘录(如果适用) - 适用场景/注意事项 ### [发现/方法 2] [同样结构] ## 创作可用的结论与抓手 ← 小说创作研究必须输出 [将所有研究发现翻译成小说创作者可以直接使用的具体建议] ### 可直接用于正文 - ... ### 可用于设定/大纲 - ... ### 需要进一步研究 - ... ## 信息来源与参考 ← 始终需要 1. [链接 + 描述] 2. [链接 + 描述] ## 建议 [如果适用——基于发现的最佳行动方案分析] ## 附加说明 [注意事项、警告、需要更多研究的领域、矛盾信息] ``` 记住:你不仅仅是一个搜索引擎——你是一位服务于小说创作者的深度研究专家。你的目标不是"搜到很多信息",而是"帮作者找到真正能用的素材"。每次研究任务结束后,创作者的正文、设定或大纲应该获得可落地的改进。 -
web-search-opencode.md 7.2 KB
--- description: Use this agent when you need to research information on the internet, particularly for debugging issues, finding solutions to technical problems, or gathering comprehensive information from multiple sources. This agent excels at finding relevant discussions. Use when you need creative search strategies, thorough investigation of a topic, or compilation of findings from diverse sources. mode: subagent model: openai/gpt-5.4 temperature: 0.4 tools: read: true write: false edit: false bash: true glob: false grep: false web_search: true web_fetch: true --- You are an elite internet researcher specializing in finding relevant information across diverse online sources. Your expertise lies in creative search strategies, thorough investigation, and comprehensive compilation of findings. **Core Capabilities:** - You excel at crafting multiple search query variations to uncover hidden gems of information - You systematically explore GitHub Issues, Reddit, Stack Overflow, Stack Exchange, technical forums, official documentation, blog posts, Dev.to, Medium, Hacker News, Discord, X/Twitter, Google Scholar, arXiv, Hugging Face Papers, bioRxiv, ResearchGate, Semantic Scholar, ACM Digital Library, IEEE Xplore, CSDN, Juejin, SegmentFault, Zhihu, Cnblogs, OSChina, V2EX, Tencent Cloud and Alibaba Cloud developer communities - You never settle for surface-level results - you dig deep to find the most relevant and helpful information - You are particularly skilled at debugging assistance, finding others who've encountered similar issues - You understand context and can identify patterns across disparate sources **Research Methodology:** 0. **Get Current Date**: Run `date +%Y-%m-%d` to get today's date for time-sensitive searches. 1. **Query Generation Phase**: When given a topic or problem, you will: - Generate 5-10 different search query variations to maximize coverage - Include technical terms, error messages, library names, and common misspellings - Think of how different people might describe the same issue (novice vs. expert terminology) - Consider searching for both the problem AND potential solutions - Use exact phrases in quotes for error messages - Include version numbers and environment details when relevant **Scenario-Specific Query Strategies (MANDATORY Module Loading)**: Before executing any WebSearch or WebFetch, you MUST use the Read tool to load the relevant strategy module(s) from `~/.config/opencode/agents/web-search-modules/`. Based on the research type, read the corresponding file(s): - **Debugging/GitHub Issues** -> Read `github-debug.md` Sources: GitHub Issues (open/closed) - **Best Practices/Comparative Research** -> Read `general-web.md` Sources: Reddit, Official Docs, Blogs, Hacker News, Dev.to, Medium, Discord, X/Twitter - **Academic Paper Search** -> Read `academic-papers.md` Sources: Google Scholar, arXiv, HuggingFace Papers, bioRxiv, ResearchGate, Semantic Scholar, ACM DL, IEEE Xplore - **Chinese Tech Community** -> Read `chinese-tech.md` Sources: CSDN, Juejin, SegmentFault, Zhihu, Cnblogs, OSChina, V2EX, Tencent/Alibaba Cloud - **Technical Q&A** -> Read `stackoverflow.md` Sources: Stack Overflow, Stack Exchange, technical forums DO NOT skip this step. DO NOT call WebSearch or WebFetch before loading at least one module. **Module Routing**: Each search may be routed to one or multiple modules: - **Single module**: When the task clearly belongs to one domain, load only that module - e.g. "search vllm memory leak issue" -> Read `github-debug` only - **Multi-module**: When complex tasks require cross-domain coverage, load multiple modules - e.g. "transformers OOM problem" -> Read `github-debug` + `stackoverflow` + `chinese-tech` - e.g. "attention mechanism papers and open-source implementations" -> Read `academic-papers` + `github-debug` - The agent recommends modules based on task content; users can also specify explicitly 2. **Source Prioritization**: Systematically search across sources defined in the routed modules above. Each module specifies its own prioritized source list. When multiple modules are routed, merge their source lists and deduplicate. 3. **Information Gathering Standards**: You will: - Read beyond the first few results - valuable information is often buried - Look for patterns in solutions across different sources - Pay attention to dates to ensure relevance (note if solutions are outdated) - Note different approaches to the same problem and their trade-offs - Identify authoritative sources and experienced contributors - Check for updated solutions or superseded approaches - Verify if issues have been resolved in newer versions 4. **Compilation Standards**: When presenting findings, you will: - **Caller's requested format takes priority** - satisfy their requirements first - Start with key findings summary (2-3 sentences) - Organize information by relevance and reliability - Provide direct links to all sources - Include relevant code snippets or configuration examples - Note any conflicting information and explain the differences - Highlight the most promising solutions or approaches - Include timestamps, version numbers, and environment details when relevant - Clearly mark experimental or unverified solutions **Quality Assurance:** - Verify information across multiple sources when possible - Clearly indicate when information is speculative or unverified - Date-stamp findings to indicate currency - Distinguish between official solutions and community workarounds - Note the credibility of sources (official docs vs. random blog post vs. maintainer comment) - Flag deprecated or outdated information - Highlight security implications if relevant - **Self-check before presenting**: Have I explored diverse sources? Any gaps? Is info current? Actionable next steps? - **If insufficient info found**: State what was searched, explain limitations, suggest alternatives or communities to ask **Standard Output Format**: ``` === IF caller specified format === [Caller's requested format/content] ## Sources and References <- ALWAYS REQUIRED 1. [Link with description] 2. [Link with description] === ELSE use standard format === ## Executive Summary [Key findings in 2-3 sentences - what you found and the recommended path forward] ## Detailed Findings [Organized by relevance/approach, with clear headings] ### [Approach/Solution 1] - Description - Source links - Code examples if applicable - Pros/Cons - Version/environment requirements ### [Approach/Solution 2] [Same structure] ## Sources and References <- ALWAYS REQUIRED 1. [Link with description] 2. [Link with description] ## Recommendations [If applicable - your analysis of the best approach based on findings] ## Additional Notes [Caveats, warnings, areas needing more research, or conflicting information] ``` Remember: You are not just a search engine - you are a research specialist who understands context, can identify patterns, and knows how to find information that others might miss. Your goal is to provide comprehensive, actionable intelligence that saves time and provides clarity. Every research task should leave the user better informed and with clear next steps.
-
-
references
-
元数据归档.md 545 B
# 元数据归档 以下元数据从 通用-深度研究 SKILL.md 的 frontmatter 中移出,以符合 skill-structure-template.instructions.md 规范。 - **原始框架**: Deep-Research-skills (https://github.com/Weizhena/Deep-Research-skills) - **原始 version**: 2.1.0 - **原始 license**: MIT - **原始 allowed-tools**: Read, Write, Glob, WebSearch, Task, AskUserQuestion - **原始 display_name_en**: deep-research-novel - **原始 visibility**: public 本项目 fork 自 Deep-Research-skills,改造为小说写作专用版本。
-
-
research
-
SKILL.md 7.8 KB
--- name: 通用-深度研究-初步研究 allowed-tools: Read, Write, Glob, WebSearch, Task, AskUserQuestion description: 对小说写作相关话题进行初步调研,生成调研outline。用于题材趋势、平台生态、专业知识、场景环境、人物原型、写作技法、读者市场等研究域的深度调研。 user-invocable: false --- <!-- ===== Layer 1: 永久缓存 ===== --> # 通用-深度研究-初步研究 ## 触发方式 `/research <topic>` 触发后应首先加载主 `SKILL.md` 中的"小说写作七大研究域"分类体系,据此确定当前课题的主研究域。 ## 执行流程 ### Step 0: 确定研究域 基于用户输入的话题,从主 `SKILL.md` 的七大研究域中确认本次的主研究域: - 题材趋势研究 - 平台生态研究 - 专业知识研究 - 场景/环境研究 - 人物原型研究 - 写作技法研究 - 读者/市场研究 一个课题可能跨多个研究域;若跨域,标记主域和辅助域。 ### Step 1: 模型内部知识生成初步框架 基于 topic 和研究域,利用模型已有知识生成: - 该领域的核心调研对象 / items 列表 - 建议的调研字段框架(每个字段指明 name、description、detail_level) 输出 `{step1_output}`,使用 AskUserQuestion 确认: - items 列表是否需要增减?(明确哪些是核心必查项,哪些是可选项) - 字段框架是否满足创作需求?(是否有遗漏的关键信息维度?) ### Step 2: Web Search 补充 使用 AskUserQuestion 询问时间范围(如:最近 6 个月、2024 年至今、不限)。 **参数获取**: - `{topic}`: 用户输入的调研话题 - `{YYYY-MM-DD}`: 当前日期 - `{step1_output}`: Step 1 生成的完整输出内容 - `{time_range}`: 用户指定的时间范围 - `{research_domain}`: 确认的研究域 **硬约束**:以下 prompt 必须严格复述,仅替换 `{xxx}` 中的变量,禁止改写结构或措辞。 启动 1 个 web-search-agent(后台),**Prompt 模板**: ```python prompt = f"""## 任务 小说写作研究课题: {topic} 研究域: {research_domain} 当前日期: {YYYY-MM-DD} 基于以下初步框架,从小说创作者视角补充最新 items 和推荐调研字段。 ## 已有框架 {step1_output} ## 目标 作为小说创作者的深度研究助手,请: 1. 验证已有 items 是否遗漏了对创作者有实际价值的重要对象 2. 根据遗漏对象进行补充 items 3. 继续搜索 {topic} 相关且 {time_range} 内的 items 并补充 4. 补充对小说创作者真正有用的新 fields——优先补充那些"能让作者直接写进正文/设定/大纲"的信息维度 ## 输出要求 直接返回结构化结果(不写文件): ### 补充Items - item_name: 简要说明(为什么这个对象对小说创作者有价值) ... ### 推荐补充字段 - field_name: 字段描述(这个维度能帮作者写出什么具体内容) ... ### 信息来源 - [来源1](url1) - [来源2](url2) """ ``` **One-shot 示例**(假设调研起点中文网都市悬疑题材趋势): ``` ## 任务 小说写作研究课题: 起点中文网都市悬疑题材 2025-2026 趋势 研究域: 题材趋势研究 当前日期: 2026-05-31 基于以下初步框架,从小说创作者视角补充最新 items 和推荐调研字段。 ## 已有框架 ### Items列表 1. 都市悬疑细分赛道分布: 刑侦、心理悬疑、社会派、怪谈灵异等子类型占比 2. 头部作品特征: 均订、收藏、月票等数据的代理信号分析 3. 读者偏好迁移: 2025-2026 热门元素与新出现的读者口味变化 ... ### 字段框架 - 市场数据: 赛道占比、增长趋势、头部作品关键指标 - 内容特征: 热门设定模式、人物类型偏好、节奏特征 - 读者反馈: 高频好评元素、常见弃书原因、争议话题 ... ## 目标 作为小说创作者的深度研究助手,请: 1. 验证已有 items 是否遗漏了对创作者有实际价值的重要对象 2. 根据遗漏对象进行补充 items 3. 继续搜索 起点中文网都市悬疑题材 2025-2026 趋势 相关且 2024年至今 内的 items 并补充 4. 补充对小说创作者真正有用的新 fields ## 输出要求 直接返回结构化结果(不写文件): ### 补充Items - item_name: 简要说明(为什么这个对象对小说创作者有价值) ... ### 推荐补充字段 - field_name: 字段描述(这个维度能帮作者写出什么具体内容) ... ### 信息来源 - [来源1](url1) - [来源2](url2) ``` ### Step 3: 询问用户已有字段 使用 AskUserQuestion 询问用户: - 是否有已定义的研究字段文件?如有则读取并合并。 - 是否有当前项目的总纲、设定、人物传记等相关文件需要纳入参考?(这些文件中的信息缺口可能指示研究重点) ### Step 4: 检查既有研究报告 在当前项目目录或题材目录的 `写作研究/` 下检查是否已存在与本次课题相关的研究报告。若存在: - 读取并提取已有结论作为参考 - 避免重复研究同一课题 - 若本轮课题是已有报告的深化或更新,在 outline 中标注 - 若本轮课题与已有报告高度重合且无新价值,建议调整研究角度 ### Step 5: 生成 Outline(分离文件) 合并 `{step1_output}`、`{step2_output}`、用户已有字段和既有研究报告,生成两个文件: **outline.yaml**(items + 配置): - topic: 调研主题(含研究域标注) - research_domain: 主研究域 + 辅助域 - items: 调研对象列表(每个 item 含 name、category、description、创作价值说明) - execution: - batch_size: 并行 agent 数量(需 AskUserQuestion 确认,默认 3) - items_per_agent: 每个 agent 调研项目数(需 AskUserQuestion 确认,默认 2) - output_dir: 结果输出目录(默认 `./results`) **fields.yaml**(字段定义): - 字段分类和定义——分类名使用小说写作研究专用体系: | 分类 | 适用研究域 | |------|----------| | 市场数据 | 题材趋势、平台生态、读者市场 | | 内容特征 | 题材趋势、写作技法 | | 读者反馈 | 题材趋势、平台生态、读者市场 | | 专业知识 | 专业知识研究、场景环境研究 | | 人物特征 | 人物原型研究 | | 场景细节 | 场景环境研究 | | 技法要素 | 写作技法研究 | | 创作可迁移 | 全研究域通用——"这个研究发现能怎样用在你的小说里" | - 每个字段的 name、description、detail_level - detail_level 分层:极简 → 简要 → 详细 - uncertain: 不确定字段列表(保留字段,deep 阶段自动填充) - **创作可迁移字段为必填**:每个 item 必须输出 `创作可用抓手` 字段,说明该研究发现能如何用于小说创作 ### Step 6: 输出并确认 #### 6.1 创建目录与保存文件 - 创建目录: `./{topic_slug}/` - 保存: `outline.yaml` 和 `fields.yaml` #### 6.2 调研大纲确认(检查点1) 展示以下摘要,**必须获得用户确认后才能进入 /research-deep**: ```markdown ## 调研大纲摘要 - **研究课题**: [topic] - **主研究域**: [domain] - **辅助研究域**: [sub-domains,如有] - **调研条目**: [N] 项 - **调研字段**: [M] 个(含 [K] 个创作可迁移字段) - **并行配置**: [batch_size] agent × [items_per_agent] 项/agent - **信息缺口预判**: [初步判断哪些维度信息可能稀缺——来自 nuwa-skill 的诚实前置原则] ``` #### 6.3 后续命令提示 - 若需追加条目或字段,可使用 `/research-add-items` 或 `/research-add-fields` - 确认后执行 `/research-deep` 开始深度调研 ## 输出路径 ``` {当前工作目录}/{topic_slug}/ ├── outline.yaml # items列表 + execution配置 + 研究域标注 └── fields.yaml # 字段定义(含创作可迁移字段) ``` ## 后续命令 - `/research-add-items` - 补充调研条目 - `/research-add-fields` - 补充调研字段 - `/research-deep` - 开始深度调研 -
validate_json.py 6.4 KB
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import json import sys from collections import defaultdict from pathlib import Path import yaml CATEGORY_MAPPING = { "市场数据": ["market_data", "市场数据"], "内容特征": ["content_features", "内容特征"], "读者反馈": ["reader_feedback", "读者反馈"], "专业知识": ["domain_knowledge", "professional_knowledge", "专业知识"], "人物特征": ["character_traits", "人物特征"], "场景细节": ["scene_details", "场景细节"], "技法要素": ["technique_elements", "技法要素"], "创作可迁移": ["transferable_insights", "创作可迁移"], } _SKIP_KEYS = {"_source_file", "uncertain"} def load_fields_yaml(fields_path): with fields_path.open(encoding="utf-8") as f: data = yaml.safe_load(f) items = [ (field["name"], category["category"], field.get("required", False)) for category in data.get("field_categories", []) for field in category.get("fields", []) ] all_fields = {name for name, _, _ in items} required_fields = {name for name, _, required in items if required} field_categories = {name: category for name, category, _ in items} return all_fields, required_fields, field_categories def extract_json_fields(data, category_mapping=None): category_mapping = CATEGORY_MAPPING if category_mapping is None else category_mapping nested_keys = {k for keys in category_mapping.values() for k in keys} fields = set() stack = [(data, True)] while stack: obj, is_category_level = stack.pop() if isinstance(obj, dict): for k, v in obj.items(): if k in _SKIP_KEYS: continue if is_category_level and k in nested_keys: if isinstance(v, dict): stack.append((v, True)) continue fields.add(k) elif isinstance(obj, list): stack.extend((item, is_category_level) for item in obj if isinstance(item, dict)) return fields def validate_json(json_path, all_fields, required_fields, field_categories): with json_path.open(encoding="utf-8") as f: data = json.load(f) json_fields = extract_json_fields(data) covered = all_fields & json_fields missing = all_fields - json_fields extra = json_fields - all_fields missing_required = missing & required_fields missing_by_category = defaultdict(list) for field in missing: missing_by_category[field_categories.get(field, "未知")].append(field) return { "file": json_path.name, "total_defined": len(all_fields), "covered": len(covered), "missing": len(missing), "extra": len(extra), "coverage_rate": len(covered) / len(all_fields) * 100 if all_fields else 100, "missing_required": sorted(missing_required), "missing_optional": sorted(missing - required_fields), "missing_by_category": {k: sorted(v) for k, v in missing_by_category.items()}, "extra_fields": sorted(extra), "valid": len(missing_required) == 0, } def print_result(result, verbose=True): status = "通过" if result["valid"] else "失败" line = "=" * 60 print(f"\n{line}") print(f"[{status}] {result['file']}") print(line) print(f"覆盖率: {result['coverage_rate']:.1f}% ({result['covered']}/{result['total_defined']})") if result["missing_required"]: print(f"\n[错误] 缺少必填字段 ({len(result['missing_required'])}):") print("\n".join(f" - {f}" for f in result["missing_required"])) if verbose and result["missing_optional"]: missing_required = set(result["missing_required"]) print(f"\n[警告] 缺少可选字段 ({len(result['missing_optional'])}):") for cat in sorted(result["missing_by_category"]): optional = [f for f in result["missing_by_category"][cat] if f not in missing_required] if optional: print(f" [{cat}]: {', '.join(optional)}") if verbose and result["extra_fields"]: extra = result["extra_fields"] print(f"\n[信息] 额外字段 ({len(extra)}):") print(f" {', '.join(extra[:10])}") if len(extra) > 10: print(f" ... 还有 {len(extra) - 10} 个") def main(): import argparse parser = argparse.ArgumentParser(description="验证JSON文件是否覆盖fields.yaml中定义的所有字段") parser.add_argument("--fields", "-f", type=str, help="fields.yaml路径", default="fields.yaml") parser.add_argument("--json", "-j", type=str, nargs="*", help="要验证的JSON文件路径") parser.add_argument("--dir", "-d", type=str, help="包含JSON文件的目录", default="results") parser.add_argument("--quiet", "-q", action="store_true", help="仅显示摘要") args = parser.parse_args() fields_path = Path(args.fields) if not fields_path.exists(): for p in (Path.cwd() / "fields.yaml", Path.cwd().parent / "fields.yaml"): if p.exists(): fields_path = p break if not fields_path.exists(): print(f"[错误] 找不到fields.yaml: {fields_path}") sys.exit(1) print(f"字段定义文件: {fields_path}") all_fields, required_fields, field_categories = load_fields_yaml(fields_path) print(f"总字段数: {len(all_fields)} (必填: {len(required_fields)}, 可选: {len(all_fields) - len(required_fields)})") json_files = ( [Path(p) for p in args.json] if args.json else sorted(Path(args.dir).glob("*.json")) if Path(args.dir).exists() else [] ) if not json_files: print("[警告] 未找到JSON文件") sys.exit(0) results = [] for json_path in json_files: if not json_path.exists(): print(f"[警告] 文件不存在: {json_path}") continue result = validate_json(json_path, all_fields, required_fields, field_categories) results.append(result) print_result(result, verbose=not args.quiet) line = "=" * 60 print(f"\n{line}") print("汇总") print(line) passed = sum(1 for r in results if r["valid"]) avg_coverage = sum(r["coverage_rate"] for r in results) / len(results) if results else 0 print(f"验证通过: {passed}/{len(results)}") print(f"平均覆盖率: {avg_coverage:.1f}%") if passed < len(results): sys.exit(1) if __name__ == "__main__": main()
-
-
research-add-fields
-
SKILL.md 1 KB
--- name: 通用-深度研究-追加字段 description: 向现有小说写作调研outline补充字段定义。优先补充对创作者有直接价值的"创作可迁移"维度字段。 allowed-tools: Bash, Read, Write, Glob, WebSearch, Task, AskUserQuestion user-invocable: false --- <!-- ===== Layer 1: 永久缓存 ===== --> # 通用-深度研究-追加字段 ## 触发方式 `/research-add-fields` ## 执行流程 ### Step 1: 自动定位Fields文件 在当前工作目录查找 `*/fields.yaml` 文件,自动读取现有fields定义。 ### Step 2: 获取补充来源 询问用户选择: - **A. 用户直接输入**:用户提供字段名称和描述 - **B. Web Search搜索**:启动web-search-agent搜索该领域常用字段 ### Step 3: 展示并确认 - 展示建议的新字段列表 - 用户确认哪些字段需要添加 - 用户指定字段分类和detail_level ### Step 4: 保存更新 将确认的字段追加到fields.yaml,保存文件。 ## 输出 更新后的 `{topic}/fields.yaml` 文件(原地修改,需用户确认)
-
-
research-add-items
-
SKILL.md 1019 B
--- name: 通用-深度研究-追加课题 description: 向现有调研outline补充items(调研对象)。 allowed-tools: Bash, Read, Write, Glob, WebSearch, Task, AskUserQuestion user-invocable: false --- <!-- ===== Layer 1: 永久缓存 ===== --> # 通用-深度研究-追加课题 ## 触发方式 `/research-add-items` ## 执行流程 ### Step 1: 自动定位 Outline 在当前工作目录查找 `*/outline.yaml` 文件,自动读取。 ### Step 2: 并行获取补充来源 同时进行: - **A. 询问用户**:需要补充哪些 items?有具体名称吗?——优先考虑是否还有对创作者有直接价值的对象未被列入,以及当前项目的人物、设定、大纲中可能暴露的信息缺口。 - **B. 询问是否需要 Web Search**:是否启动 agent 搜索更多 items? ### Step 3: 合并更新 - 将新items追加到outline.yaml - 展示给用户确认 - 避免重复 - 保存更新后的outline ## 输出 更新后的 `{topic}/outline.yaml` 文件(原地修改)
-
-
research-deep
-
SKILL.md 7.2 KB
--- name: 通用-深度研究-深度探索 description: 读取调研outline,为每个item启动独立agent,从小说创作者视角进行深度调研。禁用task output。 allowed-tools: Bash, Read, Write, Glob, WebSearch, Task user-invocable: false --- <!-- ===== Layer 1: 永久缓存 ===== --> # 通用-深度研究-深度探索 ## 触发方式 `/research-deep` ## 执行流程 ### Step 1: 自动定位 Outline 在当前工作目录查找 `*/outline.yaml` 文件,读取 items 列表、research_domain、execution 配置(含 items_per_agent)。 ### Step 2: 断点续传检查 - 检查 output_dir 下已完成的 JSON 文件 - 跳过已完成的 items ### Step 3: 分批执行 - 按 batch_size 分批(完成一批需要得到用户同意才可进行下一批) - 每个 agent 负责 items_per_agent 个项目 - 启动 web-search-agent(后台并行,禁用 task output) **参数获取**: - `{topic}`: outline.yaml 中的 topic 字段 - `{research_domain}`: outline.yaml 中的 research_domain 字段 - `{item_name}`: item 的 name 字段 - `{item_related_info}`: item 的完整 yaml 内容(name + category + description 等) - `{output_dir}`: outline.yaml 中 execution.output_dir(默认 `./results`) - `{fields_path}`: `{topic}/fields.yaml` 的绝对路径 - `{output_path}`: `{output_dir}/{item_name_slug}.json` 的绝对路径(slugify 处理 item_name:空格替换为 `_`,移除特殊字符) **硬约束**:以下 prompt 必须严格复述,仅替换 `{xxx}` 中的变量,禁止改写结构或措辞。 **Prompt 模板**: ```python prompt = f"""## 任务 作为小说创作者的深度研究助手,调研以下对象,输出结构化 JSON。 调研课题: {topic} 研究域: {research_domain} 调研对象: {item_related_info} ## 字段定义 读取 {fields_path} 获取所有字段定义。 ## 输出要求 1. 按 fields.yaml 定义的字段输出 JSON 2. 不确定的字段值标注 [不确定] 3. JSON 末尾添加 uncertain 数组,列出所有不确定的字段名 4. 所有字段值必须使用中文输出(调研过程可用英文,但最终 JSON 值为中文) 5. **尤其注意"创作可迁移"分类下的字段**:必须把研究发现翻译成小说创作者可以直接在正文、设定、大纲中使用的具体建议,不能停留在抽象总结 ## 搜索策略 优先搜索以下类型的信息源(根据研究域选择侧重点): - 小说平台官方数据、榜单、推荐位信息 - 读者社区讨论、书评、本章说、论坛 - 行业研究报告、创作方法论文章 - 专业知识来源(技术文档、职业手册、学术论文) - 作家访谈、创作经验分享 - 场景/环境相关的纪实报道、纪录片、实地考察文章 ## 输出路径 {output_path} ## 验证 完成 JSON 输出后,运行验证脚本确保字段完整覆盖: python {research_dir}/validate_json.py -f {fields_path} -j {output_path} 验证通过后才算完成任务。 """ ``` **One-shot 示例**(假设调研"起点中文网都市悬疑读者偏好"): ``` ## 任务 作为小说创作者的深度研究助手,调研以下对象,输出结构化 JSON。 调研课题: 起点中文网都市悬疑题材 2025-2026 趋势 研究域: 题材趋势研究 调研对象: name: 读者偏好迁移 category: 读者反馈 description: 2025-2026 年起点中文网都市悬疑题材读者的口味变化、热门元素偏好与审美迁移趋势 ## 字段定义 读取 /project/起点都市悬疑趋势/fields.yaml 获取所有字段定义。 ## 输出要求 1. 按 fields.yaml 定义的字段输出 JSON 2. 不确定的字段值标注 [不确定] 3. JSON 末尾添加 uncertain 数组,列出所有不确定的字段名 4. 所有字段值必须使用中文输出 5. **尤其注意"创作可迁移"分类下的字段**:必须把研究发现翻译成小说创作者可以直接在正文、设定、大纲中使用的具体建议 ## 搜索策略 优先搜索以下类型的信息源: - 起点书评区、本章说、书友圈的读者反馈 - 知乎、龙空论坛的网文读者讨论 - 行业媒体对网文读者偏好变化的分析文章 - 起点官方发布的数据报告或品类分析 ## 输出路径 /project/起点都市悬疑趋势/results/读者偏好迁移.json ## 验证 完成 JSON 输出后,运行验证脚本确保字段完整覆盖: python /project/起点都市悬疑趋势/research/validate_json.py -f /project/起点都市悬疑趋势/fields.yaml -j /project/起点都市悬疑趋势/results/读者偏好迁移.json 验证通过后才算完成任务。 ``` ### Step 4: 等待与监控 - 等待当前批次完成 - 启动下一批 - 显示进度 ### Step 5: 汇总报告与质量检查点 全部完成后,必须输出以下**调研质量摘要**(借鉴 nuwa-skill Phase 1.5 检查点方法论),供用户确认后再进入 /research-report: ```markdown ## 调研质量摘要 | 维度 | 状态 | 说明 | | --- | --- | --- | | 完成条目 | N/N | | | 不确定字段 | M 个 | [列出关键不确定字段] | | 信息矛盾点 | K 处 | [列出主要矛盾,保留矛盾不调和] | | 高置信度发现 | P 条 | [列出 top 3 核心发现] | | 信息不足维度 | Q 个 | [标注缺口,诚实告知哪些问题未找到满意答案] | | 三重验证通过率 | X% | 核心发现/参考发现/待验证线索 分布 | ### 关键信号 - **矛盾点详情**:[逐条说明,矛盾是信号而非噪音] - **信息缺口**:[哪些想查但没查到] - **意外发现**:[未在原始大纲中但搜索中浮现的重要信息] ``` **用户确认调研质量 OK → 进入 /research-report。** 用户觉得某维度不够 → 补充调研后再继续。 > 这个检查点的意义:调研质量决定了最终研究报告的上限。垃圾进垃圾出——在这里拦截比报告落盘后再返工成本低得多。 ### Step 6: 断点记录 - 记录完成状态到 outline.yaml 的 execution 配置中 - 标记已完成/失败的 items ## 信息质量规则(Agent 须遵守) 以下规则来自 nuwa-skill 品控方法论,在对每个 item 执行深度搜索时强制遵守: ### 来源优先级 搜索结果必须遵循主 SKILL.md 中"信息来源分级与黑名单"的规定——优先使用平台官方数据、一线从业者亲述、读者一线反馈;禁用知乎匿名回答、微信公众号、百度百科等信息源黑名单中的来源。 ### 矛盾保留 遇到不同来源对同一事物的描述不一致时,**并列呈现**,标注各自来源类型与可信度,不强行调和。矛盾本身就是有价值的创作信号。 ### 诚实边界 每个 item 的 JSON 输出中,必须通过 `uncertain` 数组标注所有不确定的字段。不确定包括: - 信息来自单一来源且无法交叉验证 - 信息时效性存疑(超过 2 年且未找到更新) - 来源可信度低(自媒体、个人博客、匿名帖子) - 搜索未覆盖到(该维度公开信息极少) ### 深度搜索要求 - 禁止只搜第 1 页就停止——最有价值的信息往往在第 2-3 页 - 对每个 item 至少使用 3 个不同的搜索查询变体 - 优先搜索"一线从业者的碎碎念"而非"官方操作手册"——前者对创作者更可写 - 后台执行: 是 - Task Output: 禁用(agent 完成时有明确输出文件) - 断点续传: 是
-
-
research-en
-
research
-
SKILL.md 4.3 KB
--- name: deep-research-preliminary allowed-tools: Read, Write, Glob, WebSearch, Task, AskUserQuestion description: Conduct preliminary research on a topic and generate research outline. For academic research, benchmark research, technology selection, etc. user-invocable: false --- <!-- ===== Layer 1: 永久缓存 ===== --> # Research Skill - Preliminary Research ## Trigger `/research <topic>` ## Workflow ### Step 1: Generate Initial Framework from Model Knowledge Based on topic, use model's existing knowledge to generate: - Main research objects/items list in this domain - Suggested research field framework Output {step1_output}, use AskUserQuestion to confirm: - Need to add/remove items? - Does field framework meet requirements? ### Step 2: Web Search Supplement Use AskUserQuestion to ask for time range (e.g., last 6 months, since 2024, unlimited). **Parameter Retrieval**: - `{topic}`: User input research topic - `{YYYY-MM-DD}`: Current date - `{step1_output}`: Complete output from Step 1 - `{time_range}`: User specified time range **Hard Constraint**: The following prompt must be strictly reproduced, only replacing variables in {xxx}, do not modify structure or wording. Launch 1 web-search-agent (background), **Prompt Template**: ```python prompt = f"""## Task Research topic: {topic} Current date: {YYYY-MM-DD} Based on the following initial framework, supplement latest items and recommended research fields. ## Existing Framework {step1_output} ## Goals 1. Verify if existing items are missing important objects 2. Supplement items based on missing objects 3. Continue searching for {topic} related items within {time_range} and supplement 4. Supplement new fields ## Output Requirements Return structured results directly (do not write files): ### Supplementary Items - item_name: Brief explanation (why it should be added) ... ### Recommended Supplementary Fields - field_name: Field description (why this dimension is needed) ... ### Sources - [Source1](url1) - [Source2](url2) """ ``` **One-shot Example** (assuming researching AI Coding History): ``` ## Task Research topic: AI Coding History Current date: 2025-12-30 Based on the following initial framework, supplement latest items and recommended research fields. ## Existing Framework ### Items List 1. GitHub Copilot: Developed by Microsoft/GitHub, first mainstream AI coding assistant 2. Cursor: AI-first IDE, based on VSCode ... ### Field Framework - Basic Info: name, release_date, company - Technical Features: underlying_model, context_window ... ## Goals 1. Verify if existing items are missing important objects 2. Supplement items based on missing objects 3. Continue searching for AI Coding History related items within since 2024 and supplement 4. Supplement new fields ## Output Requirements Return structured results directly (do not write files): ### Supplementary Items - item_name: Brief explanation (why it should be added) ... ### Recommended Supplementary Fields - field_name: Field description (why this dimension is needed) ... ### Sources - [Source1](url1) - [Source2](url2) ``` ### Step 3: Ask User for Existing Fields Use AskUserQuestion to ask if user has existing field definition file, if so read and merge. ### Step 4: Generate Outline (Separate Files) Merge {step1_output}, {step2_output} and user's existing fields, generate two files: **outline.yaml** (items + config): - topic: Research topic - items: Research objects list - execution: - batch_size: Number of parallel agents (confirm with AskUserQuestion) - items_per_agent: Items per agent (confirm with AskUserQuestion) - output_dir: Results output directory (default: ./results) **fields.yaml** (field definitions): - Field categories and definitions - Each field's name, description, detail_level - detail_level hierarchy: brief -> moderate -> detailed - uncertain: Uncertain fields list (reserved field, auto-filled in deep phase) ### Step 5: Output and Confirm - Create directory: `./{topic_slug}/` - Save: `outline.yaml` and `fields.yaml` - Show to user for confirmation ## Output Path ``` {current_working_directory}/{topic_slug}/ ├── outline.yaml # items list + execution config └── fields.yaml # field definitions ``` ## Follow-up Commands - `/research-add-items` - Supplement items - `/research-add-fields` - Supplement fields - `/research-deep` - Start deep research -
validate_json.py 6.6 KB
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import json import sys from collections import defaultdict from pathlib import Path import yaml CATEGORY_MAPPING = { "basic_info": ["basic_info", "Basic Info"], "technical_features": ["technical_features", "technical_characteristics", "Technical Features"], "performance_metrics": ["performance_metrics", "performance", "Performance Metrics"], "milestone_significance": ["milestone_significance", "milestones", "Milestone Significance"], "business_info": ["business_info", "commercial_info", "Business Info"], "competition_ecosystem": ["competition_ecosystem", "competition", "Competition Ecosystem"], "history": ["history", "History"], "market_positioning": ["market_positioning", "market", "Market Positioning"], } _SKIP_KEYS = {"_source_file", "uncertain"} def load_fields_yaml(fields_path): with fields_path.open(encoding="utf-8") as f: data = yaml.safe_load(f) items = [ (field["name"], category["category"], field.get("required", False)) for category in data.get("field_categories", []) for field in category.get("fields", []) ] all_fields = {name for name, _, _ in items} required_fields = {name for name, _, required in items if required} field_categories = {name: category for name, category, _ in items} return all_fields, required_fields, field_categories def extract_json_fields(data, category_mapping=None): category_mapping = CATEGORY_MAPPING if category_mapping is None else category_mapping nested_keys = {k for keys in category_mapping.values() for k in keys} fields = set() stack = [(data, True)] while stack: obj, is_category_level = stack.pop() if isinstance(obj, dict): for k, v in obj.items(): if k in _SKIP_KEYS: continue if is_category_level and k in nested_keys: if isinstance(v, dict): stack.append((v, True)) continue fields.add(k) elif isinstance(obj, list): stack.extend((item, is_category_level) for item in obj if isinstance(item, dict)) return fields def validate_json(json_path, all_fields, required_fields, field_categories): with json_path.open(encoding="utf-8") as f: data = json.load(f) json_fields = extract_json_fields(data) covered = all_fields & json_fields missing = all_fields - json_fields extra = json_fields - all_fields missing_required = missing & required_fields missing_by_category = defaultdict(list) for field in missing: missing_by_category[field_categories.get(field, "Unknown")].append(field) return { "file": json_path.name, "total_defined": len(all_fields), "covered": len(covered), "missing": len(missing), "extra": len(extra), "coverage_rate": len(covered) / len(all_fields) * 100 if all_fields else 100, "missing_required": sorted(missing_required), "missing_optional": sorted(missing - required_fields), "missing_by_category": {k: sorted(v) for k, v in missing_by_category.items()}, "extra_fields": sorted(extra), "valid": len(missing_required) == 0, } def print_result(result, verbose=True): status = "PASS" if result["valid"] else "FAIL" line = "=" * 60 print(f"\n{line}") print(f"[{status}] {result['file']}") print(line) print(f"Coverage: {result['coverage_rate']:.1f}% ({result['covered']}/{result['total_defined']})") if result["missing_required"]: print(f"\n[ERROR] Missing required fields ({len(result['missing_required'])}):") print("\n".join(f" - {f}" for f in result["missing_required"])) if verbose and result["missing_optional"]: missing_required = set(result["missing_required"]) print(f"\n[WARN] Missing optional fields ({len(result['missing_optional'])}):") for cat in sorted(result["missing_by_category"]): optional = [f for f in result["missing_by_category"][cat] if f not in missing_required] if optional: print(f" [{cat}]: {', '.join(optional)}") if verbose and result["extra_fields"]: extra = result["extra_fields"] print(f"\n[INFO] Extra fields ({len(extra)}):") print(f" {', '.join(extra[:10])}") if len(extra) > 10: print(f" ... and {len(extra) - 10} more") def main(): import argparse parser = argparse.ArgumentParser(description="Validate whether JSON files cover all fields defined in fields.yaml") parser.add_argument("--fields", "-f", type=str, help="Path to fields.yaml", default="fields.yaml") parser.add_argument("--json", "-j", type=str, nargs="*", help="JSON file paths to validate") parser.add_argument("--dir", "-d", type=str, help="Directory containing JSON files", default="results") parser.add_argument("--quiet", "-q", action="store_true", help="Show summary only") args = parser.parse_args() fields_path = Path(args.fields) if not fields_path.exists(): for p in (Path.cwd() / "fields.yaml", Path.cwd().parent / "fields.yaml"): if p.exists(): fields_path = p break if not fields_path.exists(): print(f"[ERROR] fields.yaml not found: {fields_path}") sys.exit(1) print(f"Field definition file: {fields_path}") all_fields, required_fields, field_categories = load_fields_yaml(fields_path) print(f"Total fields: {len(all_fields)} (required: {len(required_fields)}, optional: {len(all_fields) - len(required_fields)})") json_files = ( [Path(p) for p in args.json] if args.json else sorted(Path(args.dir).glob("*.json")) if Path(args.dir).exists() else [] ) if not json_files: print("[WARN] No JSON files found") sys.exit(0) results = [] for json_path in json_files: if not json_path.exists(): print(f"[WARN] File not found: {json_path}") continue result = validate_json(json_path, all_fields, required_fields, field_categories) results.append(result) print_result(result, verbose=not args.quiet) line = "=" * 60 print(f"\n{line}") print("Summary") print(line) passed = sum(1 for r in results if r["valid"]) avg_coverage = sum(r["coverage_rate"] for r in results) / len(results) if results else 0 print(f"Validation passed: {passed}/{len(results)}") print(f"Average coverage: {avg_coverage:.1f}%") if passed < len(results): sys.exit(1) if __name__ == "__main__": main()
-
-
research-add-fields
-
SKILL.md 1003 B
--- name: deep-research-add-fields description: Add field definitions to existing research outline. allowed-tools: Bash, Read, Write, Glob, WebSearch, Task, AskUserQuestion user-invocable: false --- <!-- ===== Layer 1: 永久缓存 ===== --> # Research Add Fields - Supplement Research Fields ## Trigger `/research-add-fields` ## Workflow ### Step 1: Auto-locate Fields File Find `*/fields.yaml` file in current working directory, auto-read existing fields definitions. ### Step 2: Get Supplement Source Ask user to choose: - **A. User direct input**: User provides field names and descriptions - **B. Web Search**: Launch agent to search common fields in this domain ### Step 3: Display and Confirm - Display suggested new fields list - User confirms which fields to add - User specifies field category and detail_level ### Step 4: Save Update Append confirmed fields to fields.yaml, save file. ## Output Updated `{topic}/fields.yaml` file (in-place modification, requires user confirmation)
-
-
research-add-items
-
SKILL.md 866 B
--- name: deep-research-add-items description: Add items (research objects) to existing research outline. allowed-tools: Bash, Read, Write, Glob, WebSearch, Task, AskUserQuestion user-invocable: false --- <!-- ===== Layer 1: 永久缓存 ===== --> # Research Add Items - Supplement Research Objects ## Trigger `/research-add-items` ## Workflow ### Step 1: Auto-locate Outline Find `*/outline.yaml` file in current working directory, auto-read. ### Step 2: Get Supplement Sources in Parallel Simultaneously: - **A. Ask user**: What items to supplement? Any specific names? - **B. Ask if Web Search needed**: Launch agent to search for more items? ### Step 3: Merge and Update - Append new items to outline.yaml - Display to user for confirmation - Avoid duplicates - Save updated outline ## Output Updated `{topic}/outline.yaml` file (in-place modification)
-
-
research-deep
-
SKILL.md 3.5 KB
--- name: deep-research-deep description: Read research outline, launch independent agent for each item for deep research. Disable task output. allowed-tools: Bash, Read, Write, Glob, WebSearch, Task user-invocable: false --- <!-- ===== Layer 1: 永久缓存 ===== --> # Research Deep - Deep Research ## Trigger `/research-deep` ## Workflow ### Step 1: Auto-locate Outline Find `*/outline.yaml` file in current working directory, read items list, execution config (including items_per_agent). ### Step 2: Resume Check - Check completed JSON files in output_dir - Skip completed items ### Step 3: Batch Execution - Batch by batch_size (need user approval before next batch) - Each agent handles items_per_agent items - Launch web-search-agent (background parallel, disable task output) **Parameter Retrieval**: - `{topic}`: topic field from outline.yaml - `{item_name}`: item's name field - `{item_related_info}`: item's complete yaml content (name + category + description etc.) - `{output_dir}`: execution.output_dir from outline.yaml (default: ./results) - `{fields_path}`: absolute path to {topic}/fields.yaml - `{output_path}`: absolute path to {output_dir}/{item_name_slug}.json (slugify item_name: replace spaces with _, remove special chars) **Hard Constraint**: The following prompt must be strictly reproduced, only replacing variables in {xxx}, do not modify structure or wording. **Prompt Template**: ```python prompt = f"""## Task Research {item_related_info}, output structured JSON to {output_path} ## Field Definitions Read {fields_path} to get all field definitions ## Output Requirements 1. Output JSON according to fields defined in fields.yaml 2. Mark uncertain field values with [uncertain] 3. Add uncertain array at the end of JSON, listing all uncertain field names 4. All field values must be in English ## Output Path {output_path} ## Validation After completing JSON output, run validation script to ensure complete field coverage: python ~/.claude/skills/research/validate_json.py -f {fields_path} -j {output_path} Task is complete only after validation passes. """ ``` **One-shot Example** (assuming researching GitHub Copilot): ``` ## Task Research name: GitHub Copilot category: International Product description: Developed by Microsoft/GitHub, first mainstream AI coding assistant, ~40% market share, output structured JSON to /home/weizhena/AIcoding/aicoding-history/results/GitHub_Copilot.json ## Field Definitions Read /home/weizhena/AIcoding/aicoding-history/fields.yaml to get all field definitions ## Output Requirements 1. Output JSON according to fields defined in fields.yaml 2. Mark uncertain field values with [uncertain] 3. Add uncertain array at the end of JSON, listing all uncertain field names 4. All field values must be in English ## Output Path /home/weizhena/AIcoding/aicoding-history/results/GitHub_Copilot.json ## Validation After completing JSON output, run validation script to ensure complete field coverage: python ~/.claude/skills/research/validate_json.py -f /home/weizhena/AIcoding/aicoding-history/fields.yaml -j /home/weizhena/AIcoding/aicoding-history/results/GitHub_Copilot.json Task is complete only after validation passes. ``` ### Step 4: Wait and Monitor - Wait for current batch to complete - Launch next batch - Display progress ### Step 5: Summary Report After all complete, output: - Completion count - Failed/uncertain marked items - Output directory ## Agent Config - Background execution: Yes - Task Output: Disabled (agent has explicit output file when complete) - Resume support: Yes
-
-
research-report
-
SKILL.md 3.8 KB
--- name: deep-research-report description: Summarize deep research results into markdown report, cover all fields, skip uncertain values. allowed-tools: Read, Write, Glob, Bash, AskUserQuestion user-invocable: false --- <!-- ===== Layer 1: 永久缓存 ===== --> # Research Report - Summary Report ## Trigger `/research-report` ## Workflow ### Step 1: Locate Results Directory Find `*/outline.yaml` in current working directory, read topic and output_dir config. ### Step 2: Scan Optional Summary Fields Read all JSON results, extract fields suitable for TOC display (numeric, short metrics), e.g.: - github_stars - google_scholar_cites - swe_bench_score - user_scale - valuation - release_date Use AskUserQuestion to ask user: - Which fields to display in TOC besides item name? - Provide dynamic options list (based on actual fields in JSON) ### Step 3: Generate Python Conversion Script Generate `generate_report.py` in `{topic}/` directory, script requirements: - Read all JSON from output_dir - Read fields.yaml to get field structure - Cover all field values from each JSON - Skip fields with values containing [uncertain] - Skip fields listed in uncertain array - Generate markdown report format: Table of contents (with anchor links + user-selected summary fields) + Detailed content (by field category) - Save to `{topic}/report.md` **TOC Format Requirements**: - Must include every item - Each item displays: number, name (anchor link), user-selected summary fields - Example: `1. [GitHub Copilot](#github-copilot) - Stars: 10k | Score: 85%` #### Script Technical Requirements (Must Follow) **1. JSON Structure Compatibility** Support two JSON structures: - Flat structure: Fields directly at top level `{"name": "xxx", "release_date": "xxx"}` - Nested structure: Fields in category sub-dict `{"basic_info": {"name": "xxx"}, "technical_features": {...}}` Field lookup order: Top level -> category mapping key -> Traverse all nested dicts **2. Category Multi-language Mapping** fields.yaml category names and JSON keys can be any combination (CN-CN, CN-EN, EN-CN, EN-EN). Must establish bidirectional mapping: ```python CATEGORY_MAPPING = { "Basic Info": ["basic_info", "Basic Info"], "Technical Features": ["technical_features", "technical_characteristics", "Technical Features"], "Performance Metrics": ["performance_metrics", "performance", "Performance Metrics"], "Milestone Significance": ["milestone_significance", "milestones", "Milestone Significance"], "Business Info": ["business_info", "commercial_info", "Business Info"], "Competition & Ecosystem": ["competition_ecosystem", "competition", "Competition & Ecosystem"], "History": ["history", "History"], "Market Positioning": ["market_positioning", "market", "Market Positioning"], } ``` **3. Complex Value Formatting** - list of dicts (e.g., key_events, funding_history): Format each dict as one line, separate kv with ` | ` - Normal list: Short lists joined with comma, long lists displayed with line breaks - Nested dict: Recursive formatting, display with semicolon or line breaks - Long text strings (over 100 chars): Add line breaks `<br>` or use blockquote format for readability **4. Extra Fields Collection** Collect fields that exist in JSON but not defined in fields.yaml, put in "Other Info" category. Note to filter: - Internal fields: `_source_file`, `uncertain` - Nested structure top-level keys: `basic_info`, `technical_features` etc. - `uncertain` array: Display each field name on separate line, don't compress into one line **5. Uncertain Value Skipping** Skip conditions: - Field value contains `[uncertain]` string - Field name is in `uncertain` array - Field value is None or empty string ### Step 4: Execute Script Run `python {topic}/generate_report.py` ## Output - `{topic}/generate_report.py` - Conversion script - `{topic}/report.md` - Summary report
-
-
-
research-report
-
SKILL.md 5.9 KB
--- name: 通用-深度研究-研究报告 description: 将 deep 调研结果汇总为小说创作者可直接使用的 Markdown 研究报告,覆盖所有字段,跳过不确定值。报告落盘到项目或题材的 `写作研究/` 目录。 allowed-tools: Read, Write, Glob, Bash, AskUserQuestion user-invocable: false --- <!-- ===== Layer 1: 永久缓存 ===== --> # 通用-深度研究-研究报告 ## 触发方式 `/research-report` ## 执行流程 ### Step 1: 定位结果目录 在当前工作目录查找 `*/outline.yaml`,读取 topic、research_domain 和 output_dir 配置。 ### Step 2: 扫描可选摘要字段 读取所有 JSON 结果,提取适合在目录中显示的字段(数值型、简短指标),例如: - market_share(市场份额) - reader_rating(读者评分) - growth_trend(增长趋势) - search_heat(搜索热度) - publication_count(作品数量) 使用 AskUserQuestion 询问用户: - 目录中除了 item 名称外,还需要显示哪些摘要字段? - 提供动态选项列表(基于实际 JSON 中存在的字段) ### Step 3: 生成 Python 转换脚本 在 `{topic}/` 目录下生成 `generate_report.py`,脚本要求: - 读取 output_dir 下所有 JSON - 读取 fields.yaml 获取字段结构 - 覆盖每个 JSON 的所有字段值 - 跳过值包含 `[不确定]` 的字段 - 跳过 uncertain 数组中列出的字段 - 生成 Markdown 报告格式:目录(带锚点跳转+用户选择的摘要字段)+ 详细内容(按字段分类)+ **创作可迁移总结** - 保存到 `{topic}/report.md` **目录格式要求**: - 必须包含每一个 item - 每个 item 显示:序号、名称(锚点链接)、用户选择的摘要字段 - 示例:`1. [读者偏好迁移](#读者偏好迁移) - 增长趋势: ↑15% | 搜索热度: 高` #### 脚本技术要点(必须遵循) **1. JSON 结构兼容** 支持两种 JSON 结构: - 扁平结构:字段直接在顶层 `{"name": "xxx", "market_share": "xxx"}` - 嵌套结构:字段在 category 子 dict 中 `{"市场数据": {"name": "xxx"}, "内容特征": {...}}` 字段查找顺序:顶层 → category 映射 key → 遍历所有嵌套 dict **2. Category 多语言映射** fields.yaml 的 category 名与 JSON 的 key 可能是任意组合(中中、中英、英中、英英)。必须建立双向映射: ```python CATEGORY_MAPPING = { "市场数据": ["market_data", "市场数据"], "内容特征": ["content_features", "内容特征"], "读者反馈": ["reader_feedback", "读者反馈"], "专业知识": ["domain_knowledge", "professional_knowledge", "专业知识"], "人物特征": ["character_traits", "人物特征"], "场景细节": ["scene_details", "场景细节"], "技法要素": ["technique_elements", "技法要素"], "创作可迁移": ["transferable_insights", "创作可迁移"], } ``` **3. 复杂值格式化** - list of dicts:每个 dict 格式化为一行,用 ` | ` 分隔 kv - 普通 list:短列表用逗号连接,长列表换行显示 - 嵌套 dict:递归格式化,用分号或换行显示 - 长文本字符串(超过 100 字符):添加换行符 `<br>` 或使用 blockquote 格式,提高可读性 **4. 额外字段收集** 收集 JSON 中有但 fields.yaml 中没定义的字段,放入"其他信息"分类。注意过滤: - 内部字段:`_source_file`、`uncertain` - 嵌套结构顶级 key:`市场数据`、`内容特征` 等 - `uncertain` 数组:需要逐行显示每个字段名,不要压缩成一行 **5. 不确定值跳过** 跳过条件: - 字段值包含 `[不确定]` 字符串 - 字段名在 `uncertain` 数组中 - 字段值为 None 或空字符串 **6. 创作可迁移总结(新增,强制)** 报告末尾必须生成一个 **"创作可用结论与抓手"** 部分,将全部研究发现翻译成小说创作者可以直接使用的行动建议: - 按"可直接用于正文"、"可用于设定/大纲"、"需要进一步研究"三级分类 - 每条建议必须具体到:可以写什么场景、可以怎么用、可以用在什么类型的情节中 - 这是整个研究报告的核心价值产出,不能跳过或敷衍 ### Step 6: 报告质量自检(检查点3) 报告生成完成后,执行以下自检清单(借鉴 nuwa-skill Phase 4 质量验证方法论): ```markdown ## 报告质量自检清单 ### 结构完整性 - [ ] 包含 `## 研究课题` - [ ] 包含 `## 研究方法与来源` - [ ] 包含 `## 核心发现`(区分核心/参考/待验证三级) - [ ] 包含 `## 创作可用的结论与抓手`(≥3 条具体建议) - [ ] 包含 `## 诚实边界`(信息截止日期 + 信息缺口 + 不确定项 + 置信度总评) - [ ] 包含 `## 信息来源`(区分一手/二手,标注可信度) ### 质量验证(三重验证) - [ ] 每条"核心发现"有 ≥2 个独立来源支撑? - [ ] "创作可用的结论与抓手"中的每条建议都具体到"可写什么场景/怎么用/用在哪类情节"? - [ ] 超过 50% 的核心发现通过"有区分度"验证(不是常识)? ### 诚实边界 - [ ] 明确写了信息截止日期? - [ ] 列出了所有 `[不确定]` 和 `[待验证]` 条目? - [ ] 给出了整体置信度总评(高/中/低)及理由? - [ ] 标注了信息不足的维度? ### 矛盾处理 - [ ] 报告中的矛盾发现已保留(未强行统一)? - [ ] 矛盾双方都标注了来源类型与可信度? ``` ### Step 7: 询问报告落盘路径 使用 AskUserQuestion 询问用户: - 报告应保存到哪个目录?(建议保存到项目或题材目录的 `写作研究/` 下) - 是否需要同时生成一份精简版(仅含"创作可用结论与抓手")? ### Step 8: 执行脚本 运行 `python {topic}/generate_report.py` ## 输出 - `{topic}/generate_report.py` - 转换脚本 - `{topic}/report.md` - 完整研究报告 - `{写作研究目录}/{研究域简称}_{课题简述}.md` - 最终落盘文件(可选精简版)
-
-
SKILL.md 24 KB
--- name: 通用-深度研究 description: "专用于小说写作的结构化深度研究 Skill。支持对题材趋势、平台生态、专业知识、场景环境、人物原型、写作技法、读者市场等研究域,执行大纲生成→并行深搜→报告输出的全流程深度调研。关键词:深度研究、写作研究、题材调研。" argument-hint: "研究什么课题?例如:起点中文网都市悬疑题材2025-2026趋势。可选指定研究域:题材趋势/平台生态/专业知识/场景环境/人物原型/写作技法/读者市场。" user-invocable: true --- # 通用-深度研究 > **题材路由**:若 .github\题材专用Skills\ 目录存在对应的 <题材>-深度研究 Skill,则: > - 将题材特性骨架路由到 <题材>-深度研究,该 Skill 位于 .github\题材专用Skills\ 目录。 > - 命中本技能时,必须优先强制加载当前 Skill 与 <题材>-深度研究。 这不是"随便搜一下看看有什么资料"的浅浏览动作,也不是只给几条搜索结果链接的敷衍行为,更不是把通用百科知识当成可落地的写作研究结论。 本 Skill 的目标,是把"小说作者需要深入调研的课题"拆成**可规划、可深搜、可验证、可落盘、可被其他 Skill 引用**的完整工作流: - 先按小说写作的**七大研究域**确定调研方向与维度; - 再生成结构化的调研大纲(items + fields),**人机确认**后进入并行深搜; - 每个调研条目由专用搜索代理深度挖掘,逐项收集创作可用的结构化信息; - 最后汇总为可直接保存到 `调研报告/`(项目强相关)或 `写作研究/`(通用/题材相关)目录下的 Markdown 报告。 基于 [Deep-Research-skills](https://github.com/Weizhena/Deep-Research-skills) 项目架构,改造为小说写作专用版本。 <!-- ===== Layer 3: 场景缓存 ===== --> ## 核心命令 | 命令 | 说明 | |------|------| | `/research <topic>` | 初步调研:确定研究域→生成 outline.yaml + fields.yaml | | `/research-deep` | 并行深度搜索:逐项启动搜索代理,收集结构化数据 | | `/research-report` | 汇总生成可直接落盘的 Markdown 研究报告 | | `/research-add-items` | 追加调研条目 | | `/research-add-fields` | 追加调研字段 | ## 工作流程 ``` /research "起点中文网都市悬疑题材 2025-2026 趋势" ↓ 确定研究域:题材趋势研究 ↓ 生成大纲(items: Top10 作品 / 读者偏好 / 签约趋势… + fields) ↓ 【检查点1】用户确认/修改调研条目与维度 /research-deep ↓ 并行 web-search-agent 逐项深搜 ↓ 结果写入 results/ ↓ 【检查点2】调研质量摘要 → 用户确认 /research-report ↓ 汇总为 起点中文网都市悬疑题材趋势研究.md ↓ 【检查点3】诚实边界 + 三重验证自检 ↓ 判断落盘位置:题材级通用研究 → 落盘到 都市悬疑/写作研究/ (若为项目强相关,则落盘到 项目根/调研报告/) ``` ## 小说写作七大研究域 本 Skill 将小说写作的研究需求归纳为以下七域。每次 `/research` 启动时,必须先从七域中确认**主研究域**,再生成对应的调研条目与字段。 ### 一、题材趋势研究 某题材在目标平台的热度走向、饱和度、创新空间、读者偏好迁移、新兴子类型。 **典型课题**: - "起点中文网 2026 年都市题材细分赛道趋势" - "番茄小说女频爱情题材热门元素演变" - "悬疑推理题材在免费平台与付费平台的差异化表现" **服务 Skill**:`通用-设计题材定位框架`、`通用-平台签约评估框架` ### 二、平台生态研究 某平台的读者画像、内容偏好、推荐机制、签约标准、流量分配规则、作者生态。 **典型课题**: - "七猫免费小说平台的读者画像与阅读行为特征" - "知乎盐选专栏的选题偏好与过稿标准" - "起点中文网 2026 年推荐资源体系与获取条件" **服务 Skill**:`通用-平台签约评估框架`、`通用-多平台小说适配` ### 三、专业知识研究 某种职业、技术、程序、科学原理的真实细节——用于增强故事设定的真实性、专业感与不可替代性。 **典型课题**: - "法医 DNA 检验的真实流程、时间线与常见误区" - "中国刑警命案侦办的标准程序与内部术语" - "区块链技术原理及其在社会治理中的可能应用" **服务 Skill**:`通用-设计故事设定`、`通用-执行场景单元` ### 四、场景/环境研究 某个真实地点、时代、建筑类型、城市空间的具体特征——用于增强场景描写的质感与说服力。 **典型课题**: - "2003 年广州城中村的日常生活细节" - "上海陆家嘴金融写字楼的职场生态与空间特征" - "中国县级公安局的建筑布局与内部氛围" **服务 Skill**:`通用-执行微空间受限场景`、`通用-创建小说正文` ### 五、人物原型研究 某类人群的行为模式、语言习惯、心理特征、社会处境——用于增强人物传记的真实感与辨识度。 **典型课题**: - "中国基层刑警的职业倦怠与心理应对机制" - "2020 年代中国一线城市独居女性的生活状态与社交模式" - "程序员转行外卖骑手的真实经历与社会心态" **服务 Skill**:`通用-设计人物传记`、`通用-执行对话冲突` ### 六、写作技法研究 某种叙事手法、节奏控制、对话技巧、悬念设计、爽点编排的原理与经典案例。 **典型课题**: - "章末钩子的 12 种经典类型与起点爆款案例拆解" - "长篇小说的中段防崩策略与结构设计" - "第一人称与第三人称在悬疑推理中的叙事效果对比" **服务 Skill**:`通用-强化章末钩子`、`通用-强化章节开头`、`通用-去AI味重写`、`通用-正文润色` ### 七、读者/市场研究 某读者群体的偏好、付费习惯、阅读场景、弃书原因、讨论热点。 **典型课题**: - "起点男频核心付费读者对'降智'内容的敏感阈值" - "免费平台读者与付费平台读者在爽点偏好上的差异" - "2025-2026 年中国网文读者的阅读时长、场景与设备分布" **服务 Skill**:`通用-平台签约评估框架`、`通用-多平台小说适配`、`通用-分析竞对作品` ## 与 `通用-分析竞对作品` 的边界与协作 本 Skill 与 `通用-分析竞对作品` 是**互补关系**,不是替代关系: | 维度 | 通用-深度研究 | 通用-分析竞对作品 | |------|-------------|-----------------| | 研究对象 | 题材、平台、知识、技法、读者等广泛课题 | 具体竞对作品的四层深拆 | | 产出形式 | 研究报告(Markdown),项目强相关 → `调研报告/`,通用/题材相关 → `写作研究/` | 竞对分析报告,落盘到 `竞对分析/` | | 研究粒度 | 可覆盖宏观趋势到微观细节 | 聚焦单书/多书的深拆对比 | | 典型触发 | "帮我研究都市悬疑2026趋势" | "分析排行榜前5本书为什么强" | **协作路径**: - 深度研究的产出(如题材趋势报告)可作为竞对分析的**前置知识**——帮助确定榜单上哪些作品更值得深拆。 - 竞对分析的结论(如某竞品的强项与短板)可作为深度研究的**条目输入**——深入某个竞品暴露的知识缺口。 - 两个 Skill 可在同一任务中先后调用:先做领域深度研究建立认知底盘,再做竞对深拆锁定具体标杆。 ## 研究报告落盘位置规范 研究报告的落盘位置根据研究内容与项目的关系分为两类: ### 项目强相关 → `调研报告/` 若研究课题**直接服务于某个具体的小说项目**(如为"项目X"调研专业知识、场景环境、人物原型等),报告应落盘到**该项目根目录下的 `调研报告/`** 子目录。 典型场景: - 为当前正在创作的小说调研专业知识(如法医流程、区块链原理)→ `调研报告/` - 为当前项目的人物原型做研究(如基层刑警职业状态)→ `调研报告/` - 为当前项目的场景做环境考证(如 2003 年广州城中村)→ `调研报告/` > 判断标准:如果研究结论只对当前这个项目有直接用途,放入 `调研报告/`。 ### 通用/题材相关 → `写作研究/` 若研究课题**不绑定具体项目**,而是通用的题材趋势、平台生态、写作技法、读者市场研究,或仅与某个题材相关但不指向特定小说项目,应落盘到**项目根目录下的 `写作研究/`** 子目录。 典型场景: - "起点中文网 2026 年都市题材细分赛道趋势"(题材通用)→ `写作研究/` - "番茄小说女频爱情题材热门元素演变"(题材通用)→ `写作研究/` - "章末钩子的 12 种经典类型与起点爆款案例拆解"(写作技法通用)→ `写作研究/` > 判断标准:如果研究结论可供多个项目复用、或属于题材级别的知识沉淀,放入 `写作研究/`。 ### 落盘前检查 - 若目标目录下已存在与本次课题相关的研究报告,**必须先读取并纳入参考**,避免重复研究同一课题——但可以更新、深化、补充。 - 研究报告文件名规范:`{研究域简称}_{课题简述}.md`,例如: - 项目强相关:`专业知识_法医DNA检验流程.md`(放在 `调研报告/` 下) - 题材通用:`题材趋势_起点都市悬疑2026趋势.md`(放在 `写作研究/` 下) - 其他 Skill(如 `通用-设计故事设定`、`通用-设计人物传记`)在需要时可以通过引用 `调研报告/` 或 `写作研究/` 下的报告来获取研究结论。 ## 研究产物落盘规范(强制) - 默认产物是**可直接引用的 Markdown 研究报告**,必须写回文件,不能只在聊天中讨论。 - 报告必须包含:`## 研究课题`、`## 研究方法与来源`、`## 核心发现`、`## 创作可用的结论与抓手`、`## 信息来源`。 - "创作可用的结论与抓手" 部分必须把研究发现翻译成**作者可以直接在正文、设定、大纲中使用的具体建议**,不能停留在抽象总结。 - 每条关键结论尽量标注信息来源与置信度(高/中/低),不确定处必须写明。 - 落盘位置按 **【研究报告落盘位置规范】** 执行:项目强相关 → `调研报告/`,通用/题材相关 → `写作研究/`。 - 若研究过程中发现与现有旧报告冲突,以本轮新证据为准,并在报告中显式标注冲突与更新理由。 ### 诚实边界(强制) 每份研究报告必须包含"诚实边界"段落,明确写出本研究的局限: - **信息截止日期**:调研时间点,之后的变化未覆盖。 - **信息缺口声明**:哪些维度公开信息极少、哪些结论基于有限样本推测。 - **不确定项清单**:明确列出本研究中标记为 `[不确定]` 的字段与条目。 - **置信度总评**:对整体研究结论的可信度给出高/中/低总评及理由。 - **反常识声明**:如果某个结论与主流认知不一致,明确标注并说明证据强度。 > 一份不告诉你局限在哪的研究报告,不值得信任。 --- ## 信息质量验证框架(Nuwa 三重验证) 并非所有搜到的信息都值得写进研究报告。从 nuwa-skill 的心智模型验证方法论迁移而来的三层过滤,确保每条写入报告的结论都经得起推敲: ### 验证1:跨源复现 同一发现/趋势/模式是否出现在至少 **2 个独立来源**中? - 例:"都市悬疑读者偏好社会派"——需要在起点书评区 + 行业分析 + 知乎读者讨论中均出现,才算成立 - 仅一个来源出现 → 降级为"待验证线索",标注 `[待验证]` - 多个来源互相矛盾 → 进入矛盾处理流程(见下节) ### 验证2:创作可迁移(生成力) 这个发现能否**推导出具体的创作建议**?能否指导作者写出某个场景、设计某个人物、调整某个节奏? - 能生成 ≥2 条具体创作建议 → 通过 - 只能停留在"某题材很火""读者喜欢XX"的抽象总结 → 不通过,丢弃或深化搜索 - 生成力是区分"研究结论"与"搜索摘要"的核心标准 ### 验证3:有区分度(排他性) 这个发现是**"不说也知道"的常识**,还是真正有信息量的洞察? - 例:"网文需要强冲突" = 常识,不纳入核心发现 - 例:"起点都市悬疑题材中,社会派推理的章均本章说数是纯刑侦派的 2.3 倍" = 有信息量的洞察 - 常识性发现可作为背景铺垫,但不得占据"核心发现"的篇幅 ### 三重验证结果分类 | 通过重数 | 定级 | 处理方式 | |---------|------|---------| | 三重全过 | **核心发现** | 写入报告核心发现,可被其他 Skill 作为高置信度输入引用 | | 通过两重 | **参考发现** | 写入报告,标注置信度"中",注明未通过的维度 | | 仅通过一重 | **待验证线索** | 写入报告附录,标注 `[待验证]`,不做强结论 | | 零重通过 | **丢弃** | 不纳入报告(可能是特定语境下的随口一说,或搜索噪声) | --- ## 信息来源分级与黑名单 ### 信息源优先级(从高到低) | 优先级 | 来源类型 | 揭示什么 | 可信度 | |--------|---------|---------|--------| | **最高** | 平台官方数据(起点榜单/番茄数据/后台截图) | 客观市场表现 | ★★★★★ | | **最高** | 一线从业者亲述(作者访谈/编辑公开分享/行业会议纪要) | 真实创作生态 | ★★★★★ | | **高** | 读者一线反馈(本章说/书评区/书友圈——直接打开作品页查看) | 即时读者反应 | ★★★★ | | **高** | 学术论文/行业报告 | 系统性分析 | ★★★★ | | **中** | 行业媒体分析(非自媒体) | 二手分析 | ★★★ | | **中** | 社交平台读者讨论(知乎/小红书/微博) | 读者舆论 | ★★★(需交叉验证) | | **低** | 自媒体/个人博客的分析文章 | 个人观点 | ★★(仅作参考) | | **最低** | AI 生成的综述/总结 | 可能包含幻觉 | ★(不得单独作为结论依据) | ### 信息源黑名单(永远排除) 以下来源不纳入研究材料: - **知乎匿名回答 / 无来源声称**:无法核验身份与资质,信息失真率高 - **微信公众号文章(封闭生态类)**:无法验证原始出处、大量洗稿转述 - **百度百科 / 百度知道**:信息陈旧且不可靠 - **内容农场 / SEO 水文**:拼凑内容,无一手信息 - **未标明来源的"网文数据"**:无法核实的数据等同于编造 中文权威渠道替代方案:36氪、极客公园、晚点LatePost、财新、第一财经、虎嗅、少数派、机器之心;网文行业类优先使用作家访谈原文、平台官方公告、阅文年报等可核验来源。 --- ## 矛盾与不确定性处理原则 研究过程中遇到矛盾信息,是**信号而非噪音**。矛盾往往暴露了选题的张力所在——对创作者来说,张力就是可写的空间。 ### 三种矛盾类型 | 类型 | 特征 | 处理方式 | |------|------|---------| | **时间性矛盾** | 同一事物在不同时间点表现不同(如某题材 2024 年火爆、2025 年降温) | 记录变化轨迹,标注时间窗口,以最新数据为主但保留历史参照 | | **来源性矛盾** | 不同来源对同一事物的描述不一致(如平台榜单 vs 读者口碑有偏差) | 并列呈现双方的证据与立场,分析偏差的可能原因,不做硬性调和 | | **观点性矛盾** | 不同群体对同一事物的评价相反(如某写法在资深读者中受追捧、在新读者中被弃读) | 标注分歧双方的人群画像,这种分歧本身就是"创作者的选择空间" | ### 错误处理方式(禁止) - ❌ 选一边忽略另一边,装作矛盾不存在 - ❌ 编一个调和的解释,把矛盾"圆"掉 - ❌ 因为不确定就删掉整条发现 ### 信息不足时的处理 | 情况 | 处理 | |------|------| | 某个维度公开信息极少 | 标注"信息不足",降低该维度的置信度 | | 只有二手信息 | 标注为"据[来源]报道,未经一手核验" | | 信息相互矛盾且无法判断主次 | 并列呈现,让使用者自行判断 | | 关键数据无法获取(如均订/追读) | 使用代理信号(如榜单排名/本章说数)并显式标注为代理 | --- ## 调研质量检查点 调研不是一次性跑完就够了。借鉴 nuwa-skill 的分阶段质量控制,在关键节点设置检查点,垃圾进垃圾出——在这里拦截比报告落盘后再返工成本低得多。 ### 检查点 1:大纲确认后(/research 产出 → /research-deep 启动前) 向用户展示调研大纲摘要并确认: ``` 调研大纲摘要 ├── 研究课题: [topic] ├── 主研究域: [domain] ├── 辅助研究域: [sub-domains,如有] ├── 调研条目: [N] 项 ├── 调研字段: [M] 个 ├── 信息缺口预判: [初步判断哪些维度信息可能稀缺] └── 继续 /research-deep? ``` ### 检查点 2:深度搜索结束后(/research-deep 完成 → /research-report 启动前) 自动统计并展示调研质量摘要: ``` ┌──────────────────┬──────────┬──────────────────────────┐ │ 维度 │ 状态 │ 关键发现 │ ├──────────────────┼──────────┼──────────────────────────┤ │ 完成条目 │ N/N │ │ │ 不确定字段 │ M 个 │ [列出关键不确定字段] │ │ 信息矛盾点 │ K 处 │ [列出主要矛盾] │ │ 高置信度发现 │ P 条 │ [列出 top 3] │ │ 信息不足维度 │ Q 个 │ [标注缺口] │ │ 三重验证通过率 │ X% │ 核心/参考/待验证分布 │ └──────────────────┴──────────┴──────────────────────────┘ ``` 用户确认调研质量 OK → 进入 /research-report。用户觉得某维度不够 → 补充调研后再继续。 ### 检查点 3:报告落盘前(/research-report 产出后) 自检清单: - [ ] 报告包含"诚实边界"段落? - [ ] 每条核心发现都有 ≥2 个来源支撑? - [ ] "创作可用的结论与抓手"中有 ≥3 条可直接使用的具体建议? - [ ] 不确定的信息已显式标注? - [ ] 矛盾发现已保留(而非强行统一)? - [ ] 报告文件名符合 `{研究域简称}_{课题简述}.md` 规范? - [ ] 已确认落盘位置正确(项目强相关 → `调研报告/`、通用/题材相关 → `写作研究/`)? - [ ] 已检查目标目录下无重复研究? --- ## 调研品味守则 遇到判断困难时回看这些原则。来自 nuwa-skill 品控方法论的本土化。 | 原则 | 说明 | |------|------| | **长文 > 金句** | 一篇 3000 字的行业分析比 50 条碎片帖子更揭示深层结构 | | **争议 > 共识** | 最被争议的写法/趋势最能揭示创作机会——共识意味着红海 | | **变化 > 固定** | 同一事物的演变轨迹比静态快照有更多信息量 | | **从业者 > 评论者** | 一线作者/编辑的碎碎念可能比行业媒体的总结更有创作价值 | | **负面 > 正面** | 读者说"为什么弃书"比"为什么喜欢"更值得研究——弃书原因指向创作底线 | | **细粒度 > 宏观** | "某职业的真实工作流程"比"某职业的行业概况"对创作者更有用 | ### 绝不做的事 - 把 AI 生成的综述/百科当一手信息 - 编造不存在的数据或趋势 - 在信息不足时强行生成"看上去完整"的结论 - 忽略与主流认知矛盾的发现 - 对搜索结果的第 1 页浅尝辄止——最有价值的信息往往在第 2-3 页 ## 调研技能自身的刻意练习方法(新增——吸收自知乎专栏「中国网络文学研究」#28) 深度研究本身就是一项可刻意练习的职业技能。以下四法是专栏作者总结的通用写作练习法,同样适用于提升调研与报告产出质量: ### 1. 拆解式阅读 找一份优秀的研究报告或一篇高质量的行业分析,不把它当读者看,把它当教材看。逐项问自己: - 这个调研的调研条目是如何设计的?为什么选这些维度? - 核心发现是如何从原始信息中提炼出来的?用了什么分类框架? - "创作可用的结论与抓手"是怎样翻译成具体行动的? - 如果让我重做这个课题,我会在哪些维度深化? ### 2. 仿写式练习 拆解一份高水平研究报告的结构和论证方式,然后用同样的方式做一个完全不同课题的报告。这不是复制内容,而是复制方法论。 ### 3. 限时调研 给自己设一个时间限制:一个中等难度的调研课题必须在 X 小时内完成。限时强迫你:放弃完美主义,先完成再完美;逼出本能判断力,很多好的研究判断恰恰是不经过度思考时浮现的。 ### 4. 针对性短板训练 不要每次都做全流程调研。如果你的报告总是"核心发现不够sharp",那就专门练"从原始材料中提取关键洞察"这一步,连续练 5 个不同课题,每个不超过 500 字。 > 来源:知乎专栏「中国网络文学研究」#28《小说写得不好?别灰心,网文写作是可以刻意练习的职业技能》顾里木图的小酒馆 > 置信度:中 — 四法在该专栏为通用写作练习法,此处根据调研场景做了适配改写;方法本身合理但缺乏报告写作方向的专项验证 --- ## 输出示例 ``` {课题_slug}/ ├── outline.yaml # 调研条目 + 执行配置 ├── fields.yaml # 字段定义 ├── results/ # 逐项搜索结果 │ ├── item_1.json │ ├── item_2.json │ └── ... ├── generate_report.py # 报告生成脚本 └── report.md # 最终研究报告 ``` ### 落盘路径示例 **项目强相关(放入 `调研报告/`)**: ``` 专业知识_法医DNA检验流程.md # → 项目根/调研报告/ 场景环境_2003广州城中村日常.md # → 项目根/调研报告/ 人物原型_中国基层刑警职业状态.md # → 项目根/调研报告/ ``` **通用/题材相关(放入 `写作研究/`)**: ``` 题材趋势_起点都市悬疑2026趋势.md # → 题材名/写作研究/ 或 项目根/写作研究/ 平台生态_七猫免费小说读者画像.md # → 题材名/写作研究/ 或 项目根/写作研究/ 写作技法_章末钩子12种经典类型.md # → 项目根/写作研究/ ``` ## 致谢 - 原作者:[Weizhena](https://github.com/Weizhena) - 底层框架:Deep-Research-skills - 灵感:RhinoInsight — Improving Deep Research through Control Mechanisms for Model Behavior and Context - 小说写作改造:本工作区 Skill 体系 - 信息质量验证框架与诚实边界方法论:借鉴自 [nuwa-skill(女娲·Skill造人术)](https://github.com/alchaincyf/nuwa-skill) —— 心智模型三重验证、矛盾处理原则、调研品味守则、分阶段质量检查点等品控方法论 ## 继续读取的 references(强制读取门禁) **以下所列 references 文件必须通过 `read_file` 工具逐文件读取,不得因"已有相关知识"、"之前执行时已读过"、"该文件只是参考"为理由跳过任何一条。** 每条 references 按其标注的必读等级强制执行: - 标注 **必读** 的文件:必须读取,少一条即视为流程违规,不得开始执行流程。 - 未标注必读的文件:必须读取,但读取后可仅提取与当前任务直接相关的段落,不要求逐字通读。 - 若文件路径指向的文件不存在(如引用的外部路径未就位),必须在日志中显式记录 `reference_missing_{refName}`,不得静默跳过。 > 以下 references 为当前 skill 目录下的补充文件,**强制读取**。 - references/元数据归档.md — 元数据归档
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.