Files
yxstack-skill/commands/learn.md
开阳星 75152c36c2 feat: v0.3.0 — /learn 知识库 + 自动发现
对照 gstack /learn + Operational Self-Improvement 设计:

/learn 知识库:
- 新增 commands/learn.md 指令模板
- 支持全类型外部材料摄入(PDF/DOCX/XLSX/CSV/HTML/图片等)
- 8 模块 knowledge.md(行业背景/市场数据/竞品全景/目标用户/约束/假设/冲突/溯源)
- 子命令:ingest、update、show、prune

自动发现:
- 8 条命令更新项目状态追加 Operational Self-Improvement 段
- _timeline.jsonl 扩展 type/confidence/key 字段
- 写入标准:省时判断 + 非显而易见 + 置信度标注

8 命令第 0 步增强:
- 加载知识库(learn/knowledge.md)
- 加载近期学习(_timeline.jsonl 高置信度记录)

ROADMAP 版本号重排 + state_template 增强 + install.sh 更新
2026-05-03 05:08:39 +08:00

206 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# /learn - 知识库学习与检索
## 命令定位
摄入外部业务材料(报告、调研、数据、文档等),解析并汇总为结构化知识库,
供所有 YxStack 指令在执行时自动加载参考。
## 子命令
| 子命令 | 用途 |
|--------|------|
| `/learn <路径>` | 摄入指定文件/目录,解析并更新知识库 |
| `/learn update` | 增量更新,检测新增或修改的材料 |
| `/learn show` | 查看当前知识库摘要(模块、材料数、最近更新) |
| `/learn prune` | 修剪过期或矛盾的知识条目 |
---
## /learn <路径> — 摄入外部材料
### Step 1: 扫描材料
扫描目标路径,识别所有可处理文件:
**支持格式**
- 文档:`.md`, `.txt`, `.pdf`, `.docx`
- 表格:`.xlsx`, `.csv`
- 演示:`.pptx`
- 网页:`.html`, 直接输入 URL
- 图片:`.png`, `.jpg`OCR 文字提取)
- 结构化数据:`.json`
**跳过规则**`.yxstack/`, `node_modules/`, `.git/`, `.DS_Store`
**目录处理**:递归扫描,按修改时间排序
### Step 2: 逐份解析
对每个文件,使用 Read 工具读取内容AI 模型提取结构化信息:
**信息提取维度**
| 维度 | 提取内容 |
|------|----------|
| 行业数据 | 市场规模、增长率、政策环境、技术趋势(数字+来源页) |
| 竞品信息 | 名称、定位、核心优势、主要劣势、价格带、目标用户 |
| 用户信息 | 画像描述、痛点清单、采购/使用决策链、付费意愿 |
| 约束条件 | 预算范围、时间节点、合规/监管要求、资源限制 |
| 假设与观点 | 非事实性判断、预测性结论 → 务必标注为"假设",归入待验证 |
### Step 3: 知识汇总
- **按模块归类**:行业背景 / 市场数据 / 竞品全景 / 目标用户 / 关键约束 / 待验证假设
- **去重合并**:相同信息点合并为一条,标注多来源
- **冲突处理**:矛盾信息点保留双方观点,归入「知识冲突」区域
- **溯源标注**:每条关键信息标注来源材料 + 页码/段落
### Step 4: 写入知识库
将汇总结果写入 `.yxstack/learn/knowledge.md`
**新增模式**knowledge.md 不存在):创建新文件,写入全部模块
**增量模式**knowledge.md 已存在):合并新材料信息,更新对应模块,追加材料溯源
**knowledge.md 格式**
```markdown
---
title: "项目知识库"
project: "{项目名称}"
last_updated: "{YYYY-MM-DD}"
materials_processed: {N}
---
# 项目知识库
> 最近更新:{YYYY-MM-DD}
> 已处理材料:{N} 份(详见 [材料溯源](#材料溯源)
## 行业背景
- 关键事实1 [来源材料A]
- 关键事实2 [来源材料B]
## 市场数据
| 指标 | 数值 | 来源 |
|------|------|------|
| 市场规模 | XXX | 材料A (p.12) |
## 竞品全景
| 竞品 | 定位 | 核心优势 | 主要劣势 | 价格带 | 来源 |
|------|------|----------|----------|--------|------|
## 目标用户
- 核心用户画像:[来源]
- 痛点清单(按严重程度):
1. 痛点1 [来源]
2. 痛点2 [来源]
- 付费意愿与能力:[来源]
## 关键约束
- 预算约束:
- 时间约束:
- 合规/监管约束:
- 资源约束:
## 待验证假设
| 假设 | 验证路径 | 来源 |
|------|----------|------|
| XXX | 如何验证 | 材料C |
## 知识冲突
| 主题 | 观点A | 来源A | 观点B | 来源B |
|------|-------|-------|-------|-------|
## 材料溯源
| 材料 | 类型 | 处理时间 | 关键信息贡献 |
|------|------|----------|-------------|
```
### Step 5: 更新元数据
更新 `.yxstack/learn/_learn_meta.json`
```json
{
"project": "{项目名称}",
"last_updated": "{ISO时间戳}",
"materials_processed": N,
"materials": [
{
"name": "材料名称",
"path": "原始路径",
"type": "pdf",
"processed_at": "ISO时间戳",
"sha256": "可选:文件哈希"
}
]
}
```
---
## /learn update — 增量更新
重新扫描已记录的材料目录,检测:
- 新增文件 → 解析并追加到 knowledge.md
- 修改过的文件 → 标记对应模块为「待更新」,重新解析
- 删除的文件 → 保留历史知识,标记来源材料已不可用
---
## /learn show — 查看摘要
读取 `.yxstack/learn/knowledge.md`,简洁展示:
- 知识库覆盖的模块列表
- 已处理材料数量
- 最近更新时间
- 待验证假设数量
- 知识冲突数量
---
## /learn prune — 修剪知识库
对标 gstack 的 `/learn prune` 机制:
1. **过期检测**:检查每条信息的来源材料是否仍可访问
2. **矛盾检测**:检查同一主题下是否存在相互矛盾的结论
3. **置信度评估**:标注每条知识的可靠性(从来源材料质量推断)
4. **用户确认**:对标记条目逐条询问:
- 删除(知识已过时)
- 保留(仍有效)
- 降级(标注为「待验证」)
5. 修剪后更新 knowledge.md
判断标准:「下次执行分析时,这条知识还有参考价值吗?」
---
## 存档规则
/learn 本身不产生报告文件(不同于其他 YxStack 指令),而是直接维护 `.yxstack/learn/knowledge.md`
执行 `/learn` 后,追加事件日志:
```json
{"skill":"learn","event":"completed","ts":"当前时间","summary":"摄入 N 份材料,知识库已更新","decision":"新增/更新模块列表"}
```
---
## 与其他指令的关系
| 指令 | 如何引用知识库 |
|------|---------------|
| /pfit | 参考目标用户(痛点清单)、待验证假设 |
| /pos | 参考竞品全景、行业背景、市场数据 |
| /uj | 参考目标用户(画像+决策链)、痛点清单 |
| /prd | 参考全部模块 |
| /money | 参考市场数据、竞品全景(价格带)、关键约束(预算) |
| /gtm | 参考目标用户(画像+决策链)、行业背景 |
| /metric | 参考市场数据(行业基准)、关键约束 |
| /comp | 参考竞品全景、市场数据 |
---
## 常见误区
- 把个人观点当事实写入知识库(应标注为假设)
- 材料之间的信息不核实矛盾直接合并(应标注冲突)
- 知识库只建不维护(应定期 prune
- 把单个来源的结论当作确定事实(应标注置信度)