# Tacit Mining

> 隐性知识挖掘：通过结构化对话提取用户"只可意会不可言传"的判断标准。 基于 Polanyi 隐性知识理论 + CDM/Laddering/Repertory Grid 方法。 触发词：挖隐性知识、深度访谈、了解我、聊聊我的想法、tacit、 你还不够了解我、我想让你更懂我、挖一挖。 不应被"写文章""采写""排版"等写作/发布类指令触发。

- Skill: `xiaohuailabs/tacit-mining` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add xiaohuailabs/tacit-mining`
- Raw SKILL.md: https://api.skillmd.com/api/skills/xiaohuailabs/tacit-mining/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: xiaohuailabs (https://skillmd.com/u/xiaohuailabs)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/xiaohuailabs/tacit-mining

---


# tacit-mining — 隐性知识挖掘

> "We know more than we can tell." — Michael Polanyi
>
> 不问"你知道什么"，问"那次你做了什么"——从行为反推知识。

## 设计原理（执行时不输出，仅指导行为）

Polanyi 核心洞察：直接问"你怎么判断的"会把辅助意识拉到焦点位置，破坏隐性知识本身的运作，得到的往往是事后合理化而非真实认知过程。

因此本技能**禁止直接提问抽象标准**，所有问题必须锚定在具体事件/作品/决策上。

## 关键路径

| 路径 | 用途 |
|------|------|
| `memory/tacit/` | 提取的隐性知识碎片 |
| `memory/tacit/map.md` | 隐性知识地图（索引） |
| `memory/MEMORY.md` | 关键发现同步到主索引 |
| `Calude 文档/创作工作台/成品/` | 写作域素材来源 |
| `素材库/推文/` | 选题域素材来源 |
| `style-learn/data/index.jsonl` | 用户修改记录（如有） |

## 动作路由

| 用户说 | 动作 |
|--------|------|
| "挖隐性知识" "深度访谈" "了解我" "聊聊" "tacit" | → **mine** |
| "看看挖到了什么" "隐性知识地图" "tacit map" | → **review** |
| "这条不对" "删掉这条" "更新这条" | → **correct** |

---

## mine（核心动作）

### Step 1：选域 + 拉素材

五个挖掘域，用 AskUserQuestion 让用户选（或根据上下文自动判断）：

| 域 | 说明 | 素材来源 |
|----|------|---------|
| **writing** | 写作品味：什么算好文章、什么是"AI味" | 最近成品文章、用户修改 diff、style-learn 记录 |
| **topic** | 选题直觉：为什么选这个不选那个 | 已写 vs 跳过的推文、素材库 |
| **product** | 产品判断：什么产品值得关注/推荐 | 产品动态文章、知识库产品档案 |
| **aesthetic** | 视觉审美：封面、排版、配图的偏好 | 选过的样式/封面、排版主题 |
| **audience** | 读者感知：读者要什么、怎么和读者沟通 | 发布过的文章、阅读数据（如有） |

**拉素材**：根据选定的域，自动拉取最近 2 周的具体素材作为对话锚点。

```
writing → Glob 成品/ 最近 5 篇文章路径
        → 检查 style-learn index.jsonl 有无 pending/recent
topic   → Glob 素材库/推文/ 最近 20 条
        → 对比已写成文章的 vs 跳过的
product → Glob 成品/产品动态/ 最近 5 篇
        → Glob 知识库/产品档案/
aesthetic → 读最近使用的排版主题、封面样式
audience → 读最近发布文章（如有阅读数据）
```

准备好 3-5 个具体素材作为提问锚点后，进入 Step 2。

### Step 2：对话挖掘（5-8 轮）

**节奏控制**：每轮只问一个问题。等用户回答后才进入下一轮。不连珠炮。

**每轮结构**：

```
[提问] → 用户回答 → [可选追问 1-2 次] → [Teachback 复述] → 用户确认/纠正 → [存碎片] → 下一轮
```

#### 提问方法库（按优先级轮换使用，不重复同一方法连续 2 轮）

**方法 A：关键事件锚定**（Critical Incident + Situated Recall）
> 从一个具体事件切入，引导用户重建当时的情境和判断。

模板：
- "你最近写的[文章名]，有没有哪个地方你改了好几遍才满意？当时卡在什么地方？"
- "这 5 条推文你选了写[A]没写[B]，当时脑子里闪过什么念头？"
- "你职业生涯中有没有一篇自己特别满意的文章？是什么让它特别？"

追问探针（来自 ACTA 6 探针，选适合的用）：
- 预判力："你是怎么知道这个会火/不会火的？"
- 注意力："有什么细节是你一眼就注意到但别人可能会忽略的？"
- 即兴："你有没有临时改过做法，结果反而更好？"

**方法 B：对比逼近**（Repertory Grid 简化版）
> 三个放一起比，找出用户自己都没意识到的区分维度。

模板：
- "这三篇文章[A/B/C]，你觉得哪两篇更像？和第三篇差在哪？"
- "这两个产品你都写了，但感觉你对[A]更有热情，是这样吗？差在哪？"
- "给你两个标题[X/Y]，你选哪个？为什么？"

追问：
- "你说的[区分词]具体是什么意思？能给个例子吗？"
- "这个标准的反面是什么？什么样的东西你绝对不会做？"

**方法 C：Laddering 追问**（Attribute → Consequence → Value）
> 从表面偏好一层层追到底层价值观。每次只爬一条梯子。

模板：
- 属性层："你说这篇[好/不好]，具体哪个地方？"
- 后果层："[属性]好/不好会导致什么？对读者意味着什么？"
- 价值层："为什么这件事对你来说特别重要？"

关键：当用户卡住时，不继续问"为什么"，而是引导回忆具体经历。
"有没有一次因为[没做到这个]导致了不好的结果？"

**方法 D：反事实探测**（Counterfactual Probing）
> 每次只变一个变量，像做实验一样。

模板：
- "如果这篇文章[删掉开头那段/换个标题/不放对比表格]，你觉得会怎样？"
- "如果这个产品不是[某公司]出的，而是[另一家]出的，你还会写吗？"
- "如果当时[时效性过了/竞品已经报道了]，你还会选这个题吗？"

**方法 E：隐喻捕捉**（Metaphor Elicitation）
> 不主动使用。当用户说出"感觉""像""好像""味道""手感"等词时激活。

追问模板：
- "你说'这篇有点重'，什么样的重？像什么？"
- "你说'AI味'，如果要形容这个味道，它像什么食物/什么场景？"
- "'网感'对你来说是什么感觉？身体上有反应吗？比如看到一个好选题的时候。"

#### 追问纪律

- 用户答"对""差不多""是的" → Teachback 后存碎片，进入下一轮
- 用户答"不是""不完全是" → 最多追问 2 次，仍然说不清 → 记录为"模糊信号"，标注原话，不强行提炼规则
- 用户答很长一段 → 提炼 1-2 条核心洞察，Teachback 确认
- 用户说"不想聊这个""换一个" → 立即换方向，不追问原因
- 用户情绪上来了（回忆到挫折/成就感）→ 顺着情绪走，这时候最容易出真东西

#### Teachback 格式

每轮结束前，用一句话复述提炼的洞察：

```
"所以你的判断标准是：[规则]。对吗？"
```

例：
- "所以你觉得产品动态的核心不是介绍功能，而是帮读者判断'我该不该用'。对吗？"
- "所以你删开头那段是因为'铺垫太久读者会跑'——你的底线是前两段必须有信息。对吗？"

用户确认 → 存碎片。用户纠正 → 用纠正后的版本存。

### Step 3：存碎片

每条提炼的洞察存为独立碎片文件：

**路径**：`memory/tacit/tacit_{domain}_{序号}.md`

**格式**：

```markdown
---
name: tacit_{domain}_{关键词}
description: {一句话描述这条隐性知识}
type: user
domain: {writing|topic|product|aesthetic|audience}
method: {A|B|C|D|E}
confidence: {confirmed|fuzzy}
created: {YYYY-MM-DD}
---

## 表现（Behavior）
{用户做了什么——具体事件/选择/修改}

## 规则（Rule）
{从行为中提炼的判断标准}

## 边界（Boundary）
{什么情况下这条可能不适用——如果用户没说清，写"待验证"}

## 原话（Verbatim）
> {用户的原始表述，保留口语感}

## 来源
{哪次对话、哪篇文章/推文触发的}
```

**写入预检**：存之前 grep `memory/tacit/` 查是否已有同主题碎片。有则合并更新，无则新建。

### Step 4：更新地图

每次 mine 结束后，更新 `memory/tacit/map.md`：

```markdown
# 隐性知识地图

> 从对话中挖掘的判断标准。confirmed = 用户确认，fuzzy = 说不清但有信号。

## writing（写作品味）
- [标题直给不铺垫](tacit_writing_001.md) — 前两段必须有信息量 [confirmed]
- ...

## topic（选题直觉）
- ...

## product（产品判断）
- ...

## aesthetic（视觉审美）
- ...

## audience（读者感知）
- ...
```

### Step 5：收尾

一次 mine 结束后：

1. 输出本次挖掘小结：挖了几轮，提炼了几条，哪些 confirmed 哪些 fuzzy
2. 建议下次可以挖的方向（基于还没覆盖的域或素材）
3. 如果有 fuzzy 条目，建议下次用具体素材回来验证

**不要**：不总结理论、不解释方法论、不给鸡汤。只报结果。

---

## review（回顾验证）

读取 `memory/tacit/map.md`，按域展示所有已提取的隐性知识。

对每个域：
- 显示条目数和 confirmed/fuzzy 比例
- 列出所有条目（一句话版本）
- 问用户："有没有哪条现在觉得不对了？或者想补充的？"

用户指出问题 → 直接更新碎片文件 + map.md。

---

## correct（修正）

用户说"这条不对"时：
1. 定位到具体碎片文件
2. 读取当前内容
3. 问用户"哪里不对？应该是什么？"
4. 更新碎片，在文件底部加 `## 修正记录` 段落记录变更

---

## 与其他系统的衔接

### → MEMORY.md
当某个域积累了 5+ 条 confirmed 洞察时，在 MEMORY.md 的「我了解的你」段落添加/更新该域的隐性知识摘要。不搬碎片细节，只写一句话概括。

### → writing-guide.md
writing 域的 confirmed 洞察如果涉及写作规则，同步到 writing-guide.md 的相关段落。标注 `[tacit]` 来源。

### → style-learn
mine 过程中如果用户提到了具体文章的修改理由，这些理由同时喂给 style-learn 的品味层。

### → voice-ptt
当 voice-ptt 可用时，mine 的对话流可以走语音。技能本身不依赖 voice-ptt，但语音输入能让用户更自然地表达。

---

## 反模式（禁止）

1. **禁止问抽象问题**："你的写作风格是什么？" "你怎么定义好文章？" ——这些会触发事后合理化
2. **禁止连珠炮**：一次只问一个问题，等回答
3. **禁止强行提炼**：用户说"说不清"就记为 fuzzy，不要替用户总结他没说的话
4. **禁止长篇解释方法论**：用户不需要知道 CDM 和 Laddering 是什么
5. **禁止一次挖超过 8 轮**：认知疲劳会降低回答质量
6. **禁止跨域跳跃**：一次 mine 只挖一个域，深比广重要

