name: grounded-coding description: | 程序化扎根理论编码(Grounded Theory Coding)工具。对访谈记录或其他质性资料进行系统化的 开放编码(识别事件→提炼类属→分析类属)、主轴编码(典范模型关系分析)、选择性编码(核心类属→研究问题→故事线→理论对话), 每份访谈完成后自动保存为 Markdown 文件,所有访谈完成后按需生成汇总 Excel。 当用户提到需要进行扎根编码/扎根理论编码/开放编码/质性编码/grounded coding/open coding/ qualitative coding,或者提到需要对访谈资料/质性资料进行编码分析,或者上传/提供了访谈 记录的本地文件路径时触发此skill。即使用户只是笼统地说"帮我对这份访谈进行编码"、 "扎根编码分析"、"对访谈做开放编码"、"质性资料编码"、"帮我做扎根理论分析",也应触发此skill。
程序化扎根理论编码
对访谈记录或其他质性资料进行系统化的扎根理论编码分析。每份访谈依次执行开放编码与主轴编码(五个阶段自动连续执行),保存为 Markdown 文件;多份访谈积累后,按需进入选择性编码。
启动:获取基本信息
当用户触发此skill时,首先获取以下信息(如用户未提供,则主动询问):
- 质性资料路径:用户上传或提供的访谈记录/质性资料的本地文件路径(支持PDF、Word、TXT等格式)
- 研究领域:用户所在的研究领域(如教育学、管理学、社会学等)
- 研究主题:用户正在研究的具体主题
- 被访者信息:被访谈者的身份描述(如"某小学教师"、"创业者A"等)
- 研究议题焦点(可选):用户特别关注的研究议题或分析重点
- 访谈序号与既有编码表(持续比较关键信息):
- 这是你研究中的第几份访谈?(第一份 / 第N份)
- 如果是第二份及以后:之前访谈的累积编码表是否可以提供?
请提供文件路径,或直接粘贴类属列表,格式如下:
类属1:[类属名称] 包含编码:编码A, 编码B, ... 属性1:[名称](维度:[极端A] ←→ [极端B]) 属性2:[名称](维度:[极端C] ←→ [极端D]) 类属2:... - 如果是第一份访谈,直接开始全新建构。
如果用户在触发时已经提供了部分信息(如直接给出文件路径和研究主题),不要重复询问已知信息,只补充缺失的必要信息。
收到基本信息、读取质性资料全文后,在进入编码之前,询问研究者是否希望提供示范编码:
"在正式编码前,你可以选择: A. 研究者示范:你先对文本中任意一小段(3–5 个句群)做示范编码,AI 会识别你的编码风格,然后按你的风格完成后续开放编码 B. AI 直接编码:跳过示范,AI 按照标准原则直接开始
哪种方式?(选 B 或不回应则直接开始)"
若研究者选择 A(研究者示范):
- 请研究者提供示范片段及其对应编码(格式:
S1 "原文" → 编码标签) - AI 分析示范编码的风格特征,明确说明:
- 动名词使用程度:高度动名词化,还是更多名词短语?
- 抽象层次:贴近原文(描述性),还是已有一定理论提炼?
- 粒度:每个句群一个编码,还是允许多个?
- 用词风格:倾向本土化表达,还是理论术语?
- 输出风格确认:
"我理解你的编码风格是:[描述]。我将按照此风格完成后续开放编码。如有偏差,请随时纠正。"
- 按研究者风格继续执行五阶段流程
若研究者选择 B 或未回应:
直接进入五阶段,按标准原则编码。
执行流程(五阶段连续执行)
第一阶段:整体主题概览
阅读完全部质性资料后,提炼出几个大的主题方向,为后续微分析提供全局视野。
输出格式:
- 列出3-6个大的主题,每个主题附简要说明(1-2句话)
- 说明各主题在资料中的大致分布和权重
这一步的目的是让研究者在进入逐句编码之前,先对资料有一个整体认知框架。就像阅读一本书之前先浏览目录,整体主题概览帮助研究者明确后续微分析的方向和重点。
第二阶段:开放编码
开放编码是扎根理论的基础阶段,目标是从原始资料中逐步建构概念。包含三个连续步骤,对应从具体到抽象的逐步提升:
- 识别事件:逐项识别资料中的事项、事情、事务,进行命名(抽象层次较低)
- 提炼类属:对具体事件进行分类合并,形成概念(抽象层次较高)
- 分析类属:定义类属内容,分析特征,进行属性与维度分类
步骤一:识别事件(逐句微分析)
针对质性资料进行逐句微分析,逐项识别出资料中的事项、事情、事务,进行命名。这一步的抽象层次较低,紧贴原始资料——回答的是"这里发生了什么"。
编码原则:
- 逐句编码——按句群进行,不遗漏任何语句。只有纯粹的单词应答(独立成句,如仅有"嗯"、"对"、"好的")可以跳过,且必须在编码结果中标注"已跳过"。其余所有语句,无论看起来信息量多少,都必须给出编码。某句话是否重要,是研究者的判断权,不是 AI 的判断权;当不确定时,给出描述性编码(如"重复前述观点""表达不确定"),而不是跳过
- 优先使用动名词形式——GT 开放编码的标准格式是动名词(如"强调自主性""回避直接冲突""将平台规则合理化"),而非名词短语(如"自主性""冲突回避""规则合理化")。动名词保留了行动感和过程性,符合 GT 追问"正在发生什么"的分析取向。编码应简洁,通常 4–8 字,不宜过长
- 每个句群给出一个最合适的编码——同一个编码可以在不同句群重复出现(这说明该现象反复被提及)
- 紧扣研究议题——编码时重点关注与用户研究主题和研究议题相关的内容
- 禁止对仗整齐——编码标签的字数和句法结构应由数据内容决定,而非由输出形式决定。如果检查发现大多数编码字数相近、结构相同(如全部是四字动名词短语),说明在优化形式而非忠实于数据,必须主动打破这种整齐感。有些编码天然更长,有些更短,有些是受访者原话的动名词化,有些是描述性的过程短句,形态多样才符合 GT 的细粒度要求
在编码过程中,用"S+序号"标记每个句群(如S1、S2、S3...),便于后续引用和追溯。
输出数据结构:
句群序号 | 原文内容 | 事件命名(编码)
S1 | 原文... | 编码A
S2 | 原文... | 编码B
...
步骤二:提炼类属(含跨文本持续比较)
对步骤一识别出的具体事件进行分类合并,形成更高抽象层次的概念(类属)。这是从"描述"到"概念化"的关键跃升。
持续比较(Constant Comparison)是本步骤的核心操作。 S&C 的持续比较要求:每一个新编码都要与已有的全部编码/类属进行比较, 而不是孤立地对单份文本建构类属。
情况 A:第一份访谈(无既有编码表)
正常进行类属提炼。
归并原则:
- 不遗漏任何编码——每个事件命名都必须归入某个类属
- 类属数量适中——通常5-10个类属,过多则失去归并意义,过少则信息丢失
- 类属命名要求:
- 具有一定的抽象性——高于事件命名的概括层次
- 体现理论敏感度——能启发理论思考
- 兼顾本土化——不必强套西方概念,允许反映资料本身的特点
- 但也不要受制于现有理论——让类属从资料中自然涌现
情况 B:第二份及以后的访谈(有既有编码表)
持续比较分三步进行:
比较步骤 1:对每个新编码,优先尝试归入既有类属
逐一检查:这个新编码,是否描述了既有类属中已有的经验或现象?
- 是 → 归入既有类属,同时记录该编码是否在属性或维度上提供了新信息(属性扩展或维度极端的新证据)
- 否 → 暂标为"待判断——可能是新类属"
比较步骤 2:对"待判断"编码,判断是否构成新类属
检查所有"待判断"编码:
- 彼此之间是否存在共同的抽象指向?
- 它们描述的现象是否与全部既有类属都有本质差异?
- 如果是 → 建立新类属,命名,并说明与既有类属的区别
- 如果否 → 重新检视,看能否归入修订后的既有类属
比较步骤 3:检查是否需要修订既有类属
- 新文本是否让某个既有类属的边界变得模糊?(是否需要拆分?)
- 新文本是否揭示两个既有类属实为同一现象的不同侧面?(是否需要合并?)
- 新文本是否让某个类属的命名不再准确?(是否需要重命名?)
输出数据结构:
句群序号 | 原文内容 | 事件命名(编码) | 类属 | 类属状态(既有/新增/修订)
S1 | 原文... | 编码A | 类属X | 既有
S2 | 原文... | 编码B | 类属X | 既有(属性扩展:新的维度极端证据)
S3 | 原文... | 编码C | 类属Z | 新增
S4 | 原文... | 编码D | 类属X→类属X' | 修订(类属X因本次材料重命名为类属X')
...
步骤三:分析类属(属性与维度)
对每一个类属定义其内容、分析其特征、进行分类。这是开放编码的收尾工作,使类属从"标签"变为"有内涵的概念"。
概念定义:
- 属性(Property):类属的某些重要特征,使该类属区分于其他类属
- 维度(Dimension):属性的程度变化,通常用一对相反概念的连续统来表达(如强—弱、多—少、主动—被动、积极—消极)
分析要求:
- 每个类属提炼出2个属性
- 每个属性有2个维度(即两极)
- 形成四象限的理想类型分类(2属性×2维度极端值 = 4种类型)
- 结合原始资料中的具体描述来确定属性和维度,确保有据可依
- 为四象限的每种类型尝试给出一个简短的类型名称
输出格式(每个类属):
类属名称:XXX
属性1:[属性名称]
维度:[极端A] ←————→ [极端B]
属性2:[属性名称]
维度:[极端C] ←————→ [极端D]
四象限分类:
属性2-极端C 属性2-极端D
属性1-极端A 类型I名称 类型II名称
属性1-极端B 类型III名称 类型IV名称
备忘录提示(可选): 属性维度分析过程中,如果某个类属触发了推演冲动——觉得"这里有什么"——现在是写备忘录的好时机。直接说"备忘录"或描述你的想法,即可启动
memo-coach。分析动能稍纵即逝,不要等到编码全部完成再回想。
第三阶段:主轴编码(典范模型关系分析)
主轴编码的核心任务是使用**典范模型(Paradigm Model)**将类属之间的关系进行逻辑关联,形成理论化表述。这是从"描述现象"跨向"解释机制"的关键步骤。
典范模型框架(Strauss & Corbin):
因果条件(Causal Conditions)
↓ 触发
现象(Phenomenon)——核心关注的类属
↓ 发生在
情境脉络(Context)
↓ 受到
中介条件(Intervening Conditions)影响
↓ 行动者采取
行动/互动策略(Action/Interaction Strategies)
↓ 导致
结果(Consequences)
操作步骤
步骤 1:标注类属角色
逐一审视第二阶段提炼的每个类属,判断其在典范模型中可能扮演的角色。注意:一个类属在不同语境下可能扮演不同角色(如某类属在一组关系中是"条件",在另一组中是"结果")。
步骤 2:建立关系命题
尝试用典范模型的逻辑写出类属之间的关系,格式:
当 [因果条件] 时,在 [情境脉络] 的背景下,受到 [中介条件] 的影响,[行动者] 采取 [行动/策略] 的方式应对 [现象],导致了 [结果]。
不必追求一次写出完整命题——有些位置可能暂时空缺,标注"待后续数据补充"即可。
步骤 3:标注确定性
每个关系标注确定性水平:
- 有据:有多个句群直接支持(标注支持句群编号)
- 初现:仅 1–2 个句群支持,需后续访谈验证
- 推测:基于分析直觉,尚无直接证据
跨访谈演化
- 第一份访谈:典范模型是初步的、暂定的,很多关系标注为"初现"或"推测",这是正常的
- 后续访谈:每份新访谈完成开放编码后,重新审视典范模型:
- 哪些"初现"关系得到了新证据支持?(升级为"有据")
- 哪些关系被新证据质疑?(需修订方向或降级)
- 是否出现了新的关系路径?
- 典范模型的整体结构是否需要调整?
输出格式:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
典范模型关系分析
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
现象:[类属名称]
因果条件:
- [类属名] → [现象]:[关系说明](确定性:有据/初现/推测,证据:Sx, Sy)
情境脉络:
- [类属名]:[如何构成背景条件](确定性:...)
中介条件:
- [类属名]:[如何影响行动策略](确定性:...)
行动/互动策略:
- [类属名]:[行动者如何应对](确定性:...)
结果:
- [类属名]:[产生什么后果](确定性:...)
关系命题(暂定):
"当 [因果条件] 时,在 [情境脉络] 的背景下,受 [中介条件] 影响,
[行动者] 采取 [策略] 应对 [现象],导致 [结果]。"
未归位类属:
- [类属名]:暂无法在典范模型中定位,待后续数据
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
备忘录提示(可选): 典范模型的关系建立过程中,如果你发现某个类属的角色让你意外——比如原以为是"结果"的类属,换个角度看可能是"条件"——这种重新定位的时刻正是备忘录最有价值的时候。直接说"备忘录"或描述你的想法,即可启动
memo-coach。
第四阶段:编码统计摘要与类属演化记录
对编码结果进行量化统计,帮助研究者从数量角度理解资料结构:
- 总句群数
- 事件命名(编码)总数(去重后)
- 类属总数
- 每个类属包含的编码数量及占比
- 编码出现频次最高的前5个编码
如果是第二份及以后的访谈,额外输出"类属演化摘要":
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
类属演化摘要(本次持续比较结果)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【新增类属】(本份访谈中出现、既有编码表中没有的)
- [类属名]:[简要说明这个类属在本份材料中的表现]
【修订类属】(命名调整、拆分、合并)
- [旧类属名] → [新类属名]:[修订理由]
【属性维度扩展】(既有类属中出现了新的维度极端证据)
- [类属名] / [属性名]:新发现 [极端B] 方向的例证 [Sx]
【典范模型关系更新】
- [关系描述]:确定性从 [旧] → [新](新证据:Sx)
- 新增关系路径:[描述]
【未见证据的类属】(既有类属在本份材料中缺席)
- [类属名]:本份访谈中无对应编码(可能是被访者特殊性,或趋近饱和)
【饱和度初步判断】
本份访谈中,新增类属 [N] 个,修订类属 [M] 个,新增关系路径 [K] 条。
[若新增/修订极少,可注明:核心类属已趋于饱和,建议进行理论抽样以检验薄弱环节]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
这一摘要是研究者判断是否继续访谈(理论饱和)的重要依据,也是理论抽样方向的提示。
备忘录提示(可选): 类属演化摘要中如果出现了让你意外的变化——某个既有类属被迫修订、某个新类属突然出现——这种"意外"正是备忘录最需要捕捉的时刻。直接说出来,
memo-coach可以帮你把它推演成理论命题。
第五阶段:保存编码结果到 Markdown 文件(强制执行,不可跳过)
第四阶段完成后,必须立即调用 Write 工具将本份访谈的完整编码结果写入 Markdown 文件。不得仅在对话中输出而不写文件。
文件命名规则:coding_GT_[被访者编号或简称].md
(如 coding_GT_A.md、coding_GT_P1.md)
保存路径:当前工作目录(即项目目录根目录)
文件内容格式:
# 扎根编码:【被访者编号/简称】
编码日期:[日期]
研究主题:[研究主题]
## 一、整体主题概览
[第一阶段输出]
## 二、开放编码表
| 句群序号 | 原文内容 | 事件命名(编码) | 类属 |
|---------|---------|----------------|------|
| S1 | ... | ... | ... |
## 三、属性与维度分析
[每个类属的属性、维度、四象限]
## 四、典范模型关系分析
[第三阶段输出]
## 五、编码统计摘要
[第四阶段统计输出]
## 六、类属演化摘要(如适用)
[第四阶段演化摘要输出]
Write 工具调用完成后,告知研究者:
"本份编码已通过 Write 工具保存至
coding_GT_[被访者编号].md。如需继续下一份访谈,请提供文本;如所有访谈已完成,输入"生成Excel"可生成完整编码表。"
最终输出:生成完整 Excel(按需,所有访谈完成后)
当研究者说"生成Excel""所有访谈完成"或主动请求时,才执行此步骤。
将当前项目目录中所有 coding_GT_*.md 文件的数据整合,生成一份汇总所有访谈的 Excel 文件。
使用 scripts/export_coding.py 脚本生成。先将编码数据构造为 JSON,写入临时文件,再调用脚本。
Excel文件结构(5个工作表):
Sheet 1:完整编码表(所有访谈合并)
| 访谈编号 | 句群序号 | 原文内容 | 事件命名(编码) | 类属 |
|---|
Sheet 2:编码-类属汇总
| 类属 | 包含的编码 | 编码数量 |
|---|
Sheet 3:属性与维度
| 类属 | 属性1 | 属性1维度 | 属性2 | 属性2维度 | 四象限分类 |
|---|
Sheet 4:典范模型
| 现象 | 因果条件 | 情境脉络 | 中介条件 | 行动/互动策略 | 结果 | 关系命题 | 确定性 |
|---|
Sheet 5:编码统计 包含跨访谈的汇总统计数据
生成命令:
python3 <skill_path>/scripts/export_coding.py --output "<项目目录>/扎根编码_汇总.xlsx" --json-file /tmp/_grounded_coding_data.json
选择性编码(按需,核心类属浮现后)
当研究者说"进入选择性编码""开始整合理论""确定核心类属"时,执行此阶段。
前提:已完成至少 3–4 份访谈的开放编码与主轴编码,有足够的类属积累和典范模型关系基础。
选择性编码是扎根理论建构理论的关键步骤,目标是确定核心类属,围绕它整合所有类属,提出研究问题,构建故事线,并与既有理论展开对话。
步骤 1:确定核心类属
从累积的所有类属中,选择一个既有类属作为核心类属,或者构建一个共同上位概念作为核心类属。
核心类属的判断标准(S&C):
- 出现频率高:在多份访谈中反复出现
- 关联性强:与其他大多数类属存在实质性联系(在典范模型中处于枢纽位置)
- 解释力强:能统摄其他类属,说明"这里的核心现象是什么"
- 概念饱满:属性和维度已有充分的数据支撑
两种确定方式:
- 选择既有类属:从已有类属中选出最具统摄力的一个,说明理由
- 构建上位概念:如果没有单一类属能统摄全局,可以在既有类属之上构建一个更高抽象层次的概念作为核心类属,说明它如何整合多个类属
输出候选核心类属(1–3个),并说明每个的理由和确定方式。
步骤 2:依据核心类属提出研究问题
核心类属确定后,围绕它明确或修订研究问题。在扎根理论中,研究问题不是事先给定的,而是在分析过程中逐渐聚焦的。
操作:
- 基于核心类属,用一句话陈述"这个研究最终在回答什么问题"
- 对照研究者最初的宽泛切入点,说明研究问题如何从最初的开放探索聚焦到当前的理论焦点
- 检验研究问题是否是过程性问题("如何……""怎样……""什么条件下……"),而非静态描述性问题
输出格式:
核心类属:[名称]
研究问题(聚焦后):
[一句话陈述]
聚焦路径:
初始切入点:[研究者最初的宽泛问题]
→ 开放编码发现:[关键发现]
→ 主轴编码揭示:[核心关系]
→ 最终聚焦:[当前研究问题]
步骤 3:构建故事线(Storyline)
围绕核心类属,将所有类属按典范模型框架整合为一个连贯的理论叙事。
核心类属(Central Category):[名称]
因果条件(Causal Conditions):[触发核心现象的类属]
情境脉络(Context):[背景性条件类属]
中介条件(Intervening Conditions):[影响行动策略的类属]
行动/互动策略(Action/Interaction Strategies):[应对核心现象的类属]
结果(Consequences):[行动带来的结果类属]
用 1–2 段话写出分析故事线:
"在这个研究中,核心现象是 [核心类属]。它的发生受到 [条件类属] 的影响,发生在 [情境类属] 的背景下。行动者通过 [行动/策略类属] 加以应对,最终产生了 [结果类属] 的结果。"
对归位不确定的类属,标注"归属待研究者判断"。
步骤 4:理论对话
将涌现的理论与既有文献进行对话,明确本研究的理论贡献定位。
操作:
- 识别对话对象:核心类属和关系命题最接近哪些已有理论概念或框架?列出 2–3 个最相关的理论
- 比较异同:本研究的涌现理论与这些已有理论在哪些方面一致?在哪些方面不同或推进了?
- 定位贡献:本研究的理论发现对已有知识体系的贡献是什么——是验证、修正、扩展、还是挑战?
- 标注局限:诚实标注理论对话中的不确定性——哪些对话需要更多数据支持
注意:理论对话中涉及的文献必须是真实存在的。如果不确定某文献是否真实,必须明确告知"此文献需要你自行核实"。
步骤 5:理论命题草案
基于典范模型和故事线,提出 3–5 条可被后续数据检验的理论命题,格式:
命题 N:当 [条件] 时,[行动者] 倾向于采取 [策略],从而导致 [结果]。
每条命题附说明:目前有哪些数据支持,哪些维度尚待补充证据。
移交声明:选择性编码的核心类属确定和命题取舍是研究者的理论判断,以上结果仅供参考。建议在确定核心类属后,使用
negative-case-finder对命题进行反例压测。
过程中的对话输出
虽然编码过程是自动连续执行的,但在对话中仍然需要逐步呈现分析过程和中间结果,让用户能够跟踪分析进展。具体地:
- 第一阶段完成后:输出主题概览的文字说明
- 第二阶段完成后:依次输出事件命名表 → 含类属列的编码表 → 每个类属的属性与维度分析
- 第三阶段完成后:输出典范模型关系分析
- 第四阶段完成后:输出编码统计摘要(含类属演化摘要和典范模型关系更新)
- 第五阶段完成后:告知用户 Markdown 文件的保存路径
编码质量原则
编码过程中始终遵循以下原则:
- 忠于原始资料——编码必须有原文依据,不能凭空臆造
- 保持开放性——不预设理论框架,让概念从资料中涌现
- 持续比较——每处理一个新编码,都要与既有编码和类属进行比较:这个现象在此前的访谈中出现过吗?属性是否一致?是否需要修订类属边界?这是跨文本比较,不是单份文本内的一致性检查
- 理论敏感性——对资料中隐含的概念和关系保持敏感,但不受既有理论束缚
- 饱和性检查——如发现某些编码反复出现且不再产生新的属性或维度,在统计摘要中注明可能已达到理论饱和
- 三阶段递进——开放编码建构概念(是什么),主轴编码建立关系(怎么关联),选择性编码整合理论(核心是什么、如何解释)。三个阶段的抽象层次逐步提升,不可跳跃
语言
- 默认使用中文进行编码和输出
- 如果质性资料为英文,则编码词汇用英文,但分析说明仍用中文(除非用户要求英文输出)
- 编码词汇尽量简洁,以动名词形式为主