# Questioner

> 课题研究提问引擎。综合知识审计报告、用户插入问题、既定框架，生成每轮最有价值的问题列表，驱动后续检索。是整个研究循环的核心引擎——问题的质量决定研究的深度。通常由 autodidact skill 调用，也可单独使用。

- **Type:** Skill
- **Install:** `agentstack add skill-damonchen-anan-autodidact-skill-questioner`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [DamonChen-anan](https://agentstack.voostack.com/s/damonchen-anan)
- **Installs:** 0
- **Category:** [AI & ML](https://agentstack.voostack.com/c/ai-and-ml)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [DamonChen-anan](https://github.com/DamonChen-anan)
- **Source:** https://github.com/DamonChen-anan/autodidact-skill/tree/main/skills/questioner

## Install

```sh
agentstack add skill-damonchen-anan-autodidact-skill-questioner
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Questioner — 提问引擎

整个研究循环的核心驱动器。综合多路输入，生成本轮最有价值的问题列表。问题的质量决定检索的方向，检索的方向决定知识库的深度——questioner 的工作做得好，研究才能真正深入而不是在表面打转。

---

## 输入来源（多路合并）

每轮开始时，从以下来源收集输入：

1. **知识审计报告**（第2轮起，最重要）
   读取 `outputs/rounds/round__check.md`（上一轮的审计报告）
   重点提取：知识漏洞、未解释的新概念、来源缺失的结论

2. **用户插入问题**（随时可能有）
   读取 `outputs/user_questions.md`（若存在），提取 `## 待处理` 下的问题列表
   这是用户在循环过程中主动插入的问题，优先级高，必须纳入本轮

3. **未处理的新 raw 文件**（用户贡献素材时）
   对比 research_state.json 中已记录的 raw 文件列表，找出新增文件
   扫描这些文件的内容，提取其中涉及的新主题和新问题

4. **历史问题列表**（去重用）
   从 `outputs/research_state.json` 读取所有历史问题文本

5. **课题描述 + 既定框架**（冷启动 / 补充）
   第1轮（wiki 为空）：完全依赖框架生成问题
   后续轮次：框架作为补充，确保没有遗漏的系统性方向

---

## 执行步骤

### 第一步：判断冷启动还是深化模式

- **冷启动**（第1轮，wiki/ 为空或不存在）：
  先识别课题类型（见下方规则），再按既定框架生成 L1/L2 基础问题
  跳过审计报告读取（不存在）

- **深化模式**（第2轮起）：
  以审计报告为主要输入，框架为补充
  **优先读取**审计报告最后一节"建议下一轮重点方向"，将这些方向转化的问题优先级设为 `high`
  再处理其余知识漏洞和未解释概念

**课题类型识别规则**（冷启动时用）：

| 关键词信号 | 课题类型 |
|---|---|
| "什么是""原理""如何工作""概念""理解" | 概念理解 |
| "方案""技术""方法""实现""架构" | 技术研究 |
| "行业""市场""规模""玩家""竞争""调研" | 行业调研 |
| "创业""机会""商业模式""用户""痛点" | 创业方案 |

不确定时默认用"概念理解"框架的 L1+L2 问题作为起点，第2轮再根据审计报告调整方向。

### 第二步：收集候选问题

**来源A：审计报告转化**（深化模式）
将审计报告中每个发现转化为可检索的具体问题：
- "wiki/期权策略.md 提到'波动率曲面'但没有解释" → "期权波动率曲面（Volatility Surface）是什么？如何用于策略选择？"
- "wiki/备兑开仓.md 中关于历史收益率的结论缺乏来源支撑" → "国内ETF期权备兑开仓策略的实际历史回测数据？"

**来源B：用户插入问题**
直接纳入，标注来源为 `user`，优先级设为 `high`

**来源C：新 raw 文件触发**
扫描新文件内容，提取其中引入的新概念和新方向，转化为问题

**来源D：框架补充**
对照既定框架，检查是否有系统性方向完全未覆盖，补充进来

### 第三步：既定提问框架（冷启动和框架补充用）

根据课题类型选择：

**概念理解**
- L1：准确定义是什么？与相近概念有何区别？
- L2：核心组成部分/工作原理？主要变体？
- L3：解决了什么问题？有哪些局限性？
- L4：什么场景下适合使用？与替代方案对比？

**技术研究**
- L1：定义和边界是什么？
- L2：主流技术方案有哪些？各自的技术路线？
- L3：优劣对比？前沿进展？工程实践挑战？
- L4：什么场景下哪个方案最合适？未来趋势？

**行业调研**
- L1：行业/市场的边界和定义？
- L2：市场规模？主要玩家？市场份额和定位？
- L3：主流商业模式？驱动因素和制约因素？近期动态？
- L4：趋势和机会？潜在风险？

**创业方案**
- L1：目标用户是谁？核心痛点是什么？
- L2：现有解决方案有哪些？各自的不足？
- L3：差异化机会？商业模式？关键成功要素？
- L4：可行性评估？最大风险点？验证路径？

### 第四步：过滤与去重

1. **历史去重**：读取 `research_state.json` 中 `all_questions_ever` 数组，直接用每条记录的 `text` 字段做语义比较，核心意图相同的去掉
2. **已覆盖过滤**：wiki/ 中已有充分答案的去掉（但审计报告指出的"来源缺失"不算充分覆盖）
3. **可检索性过滤**：过于宏观、无法对应具体搜索行为的问题，拆解或去掉

### 第五步：优先级排序

优先级从高到低：
1. 用户插入问题（`source: user`）
2. 审计报告中的知识漏洞和未解释概念
3. L1 基础定义问题（其他问题依赖它）
4. 框架补充的系统性问题

同层级内，与课题核心目标最相关的优先。

### 第六步：输出

输出 5-10 个问题，写入 `outputs/rounds/round__questions.json`：

```json
{
  "questions": [
    {
      "id": "rq1",
      "text": "问题文本",
      "layer": "L1-定义",
      "priority": "high",
      "source": "audit|user|framework|raw",
      "depends_on": [],
      "rationale": "为什么这轮要问这个问题，来自哪个发现"
    }
  ],
  "overlap_ratio": 0.3,
  "deduped_questions": [
    {"text": "被去重的问题文本", "matched_history_id": "r1q2"}
  ],
  "incorporated_user_questions": ["用户插入的问题文本1", "用户插入的问题文本2"]
}
```

**`overlap_ratio`**：本轮最终输出问题中，与 `all_questions_ever` 中任意历史问题语义相似的数量 / 本轮最终输出问题总数。分母统一用**输出数**（过滤后），不用候选数。第1轮固定为 `null`（无历史问题可比较）。autodidact 用此字段判断终止条件"问题重叠率 > 0.7"。

**`deduped_questions`**：本轮被去重过滤掉的候选问题列表，每条记录被去重的问题文本及其匹配的历史问题 id，便于审查去重行为是否合理。

`incorporated_user_questions` 字段列出本轮已纳入的用户插入问题原文，供 autodidact 更新 `user_questions.md` 的 `## 已处理` 区块。若本轮无用户插入问题，该字段为空数组。

同时在对话中输出摘要：
```
## 第 N 轮问题列表（共 X 个）

来源分布：审计报告 X 个 / 用户插入 X 个 / 框架补充 X 个
问题重叠率：X%（与历史问题对比）

**[high]** 问题文本（来源：audit/user/framework）
**[high]** 问题文本
**[medium]** 问题文本

已写入：outputs/rounds/round_N_questions.json
→ Step 1 完成，继续执行 Step 2（信息检索）
```

---

## 核心原则

- **问题要具体可检索**：每个问题都应能对应到具体的搜索行为，"这个领域的一切"这类问题没有价值
- **审计报告优先于框架**：框架是冷启动工具，深化阶段要跟着知识漏洞走
- **不要因为"resolved比例高"就收敛**：只要审计报告还有发现，就应该继续生成有价值的问题
- **课题边界**：始终围绕原始课题，不因发现有趣关联话题而跑偏；但课题的自然延伸（如研究期权时延伸到波动率策略）是合理的

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [DamonChen-anan](https://github.com/DamonChen-anan)
- **Source:** [DamonChen-anan/autodidact-skill](https://github.com/DamonChen-anan/autodidact-skill)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-damonchen-anan-autodidact-skill-questioner
- Seller: https://agentstack.voostack.com/s/damonchen-anan
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
