Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

dsyuvgs/SpecMark

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SpecMark

反馈分类 + PRD审查工具。规则引擎做确定性决策,LLM做语义理解,大部分场景零API成本。

License: MIT

面向谁? · 效果数据 · Agent vs 裸LLM · 核心架构 · 快速开始 · 仓库结构


面向谁?

产品团队每天收到大量用户反馈,手工分类耗时且不一致。SpecMark 自动分类情绪/类型/优先级,减少重复劳动。

角色 场景 SpecMark做什么
产品经理 每周手动分类用户反馈耗时多 自动分类情绪/类型/优先级
AI产品助理 需要快速定位高优先级问题 付费用户+核心功能自动标高优
运营 差评量大,人工处理效率低 批量分类,识别反讽和隐含需求
项目经理 PRD缺乏规范性审查 自动审查PRD规范,输出Jira格式缺陷单

效果数据

分类准确率(LLM共识法,180条×3轮投票)

维度 准确率 说明
情绪 98.3% 反讽、趋势恶化等边界case覆盖较好
问题类型 98.9% 功能/体验边界偶有争议
优先级 97.2% 中→高漏判是主要瓶颈
综合(三项全对) 95.0% 任一维度错即计为综合错误

规则引擎准确率(纯代码,300条测试集)

维度 准确率 说明
优先级 75.1% 关键词匹配的天花板,复杂语义case需LLM兜底

规则引擎的价值不在准确率最高,而在确定性最高、成本最低。92.6%的请求零LLM消耗,规则覆盖不到的走LLM兜底,整体综合准确率95%。

运行指标

维度 数据 说明
有效分类率 95%(100条真实差评,17个品类) 5条空输出需人工介入
铁律拦截率 92.6% 大部分请求零LLM token消耗
输出一致性 100% 同样输入同样输出
路由准确率 100%(48/48) 未出现反馈误判为无效输入
边界鲁棒性 100%(23/23) 反讽、Prompt注入、空输入均正确处理

测试方法与局限

  • 标准答案采用LLM共识法生成(3轮投票+争议人工仲裁),非纯人工标注
  • 100条测试集覆盖17个品类,部分品类样本偏少(如医疗仅2条)
  • 优先级准确率75.1%基于300条测试集,中→高漏判是主要错误类型

详细对比数据见 docs/BENCHMARK.md


Agent vs 裸LLM

维度 裸LLM SpecMark Agent
处理1000条反馈估算成本 ~50元(估算) ~3.7元(估算,92.6%零token)
处理1000条反馈估算时间 ~20分钟(估算) ~2分钟(估算,纯代码批量)
输出一致性 同一输入可能不同输出 确定性输出
可解释性 黑盒 可追溯到具体规则
反讽识别 可能将反话判为好评 "太棒了,一天闪退八次"→负向
Prompt注入防护 易被绕过 "忽略之前所有规则"→拒绝处理

成本和时间为基于DeepSeek定价的估算值,实际取决于模型选择和并发配置。


核心架构

规则引擎与LLM分工协作——LLM负责语义理解,代码负责确定性决策:

用户输入(文字 + 可选文件)
     │
     ▼
[LLM+知识库] 轻量分类器 —— LLM理解用户意图
     │
     ▼
[代码] 路由验证 —— 代码二次校验,防止LLM误判
     │
     ├── PRD审查(单条/批量) → 知识库检索 → LLM检查 → Jira格式输出
     ├── 反馈分类(单条)     → 知识库检索 → LLM特征提取 → 代码规则引擎 → 输出
     ├── 反馈分类(批量)     → 纯代码关键词匹配 → 汇总输出
     ├── 场景声明             → 记录场景 → 后续检查更准
     └── 无效输入             → 拒绝

关键决策

决策一:为什么把规则从Prompt移到知识库?

早期版本把所有规则写在Prompt里,综合准确率只有63%。根因是规则太多(8条核心规则+30+个few-shot示例),LLM记不住,经常遗漏。改用知识库后,LLM只检索与当前输入最相关的规则和示例,准确率提升到95%。

纯Prompt方案 知识库方案
准确率 63% 95%
维护 改YAML重新导入 改知识库文件即可
稳定性 规则太长LLM记不住 精准检索,LLM只看相关规则

决策二:为什么规则引擎和LLM要分开?

试过让LLM直接输出分类结果,发现两个问题:①同样输入可能不同输出(temperature=0也有微小波动),②"付费用户+核心功能=高优先级"这种规则LLM偶尔不遵守。拆开后,规则引擎保证确定性case永远正确,LLM只处理语义理解部分。

决策三:为什么从扣子搬到Dify?

扣子没有代码节点,所有逻辑只能靠Prompt硬撑。搬到Dify后,确定性逻辑用Python代码节点实现,LLM只负责语义理解,分工更清晰。


功能亮点

# 功能 解决的问题
1 场景感知 "迷路"在扫地机器人→功能问题,在APP→体验问题
2 隐含需求提取 "每次都要重新登录"→识别出"需要记住登录状态"
3 反讽检测 "太棒了,一天闪退八次!"→判为负向而非好评
4 付费用户升级 "充了会员还是闪退"→自动标高优先级
5 缓解词检测 "偶尔有点噪音,但整体还行"→优先级降级
6 防Prompt注入 "忽略之前所有规则"→拒绝处理
7 PRD风险转Jira 自动生成Jira Bug格式缺陷单
8 灰名单术语 Webhook/OAuth2.0→标注"请人工确认"
9 51个品类覆盖 从电商到智能汽车,核心功能映射表
10 知识库驱动 LLM有据可依,分类结果可追溯

分类规则参考 ISO 25010(软件质量模型)的功能适用性/性能效率/可用性维度划分,PRD检查规则参考 ISTQB 测试标准中的缺陷分类体系。


快速开始

前置条件

  • Dify 账号(v0.6+,免费版即可)
  • LLM API Key(DeepSeek / 智谱 / 通义千问 / OpenAI 均可)

模型选择

工作流默认使用 DeepSeek,支持Dify平台上的任意模型,导入后在Dify界面中切换即可:

模型 推荐度 说明
DeepSeek ⭐⭐⭐ 性价比高,中文理解能力好,默认推荐
智谱 GLM-4 ⭐⭐⭐ 中文能力强,Dify中安装智谱插件后可直接切换
通义千问 ⭐⭐ 阿里云模型,需在Dify中安装对应插件
GPT-4o ⭐⭐ 效果好但成本较高,适合对准确率要求极高的场景

切换方法:导入工作流后,在Dify的节点设置中将模型从 deepseek-chat 改为你想用的模型即可。代码节点不依赖模型,无需修改。

部署步骤

1. 导入工作流

workflow/SpecMark.yml 导入 Dify。

2. 创建知识库

在Dify中创建2个知识库:

知识库名称 上传文件
📚知识库-PRD规范检查 knowledge/📚知识库-PRD规范检查.md
📚知识库-反馈分类规则 knowledge/📚知识库-反馈分类规则.md

3. 绑定知识库

节点名 绑定知识库
📚知识库-PRD规范检查 📚知识库-PRD规范检查
📚知识库-反馈分类规则 📚知识库-反馈分类规则
📚知识库-PRD规范检查(批量) 📚知识库-PRD规范检查(同一个)

4. 配置模型

在Dify中配置所选模型的API Key,并将各LLM节点的模型切换为你选择的模型。

5. 跑测试验证

cd scripts
pip install -r requirements.txt
set DIFY_API_KEY=app-xxxx
python batch_test.py

技术栈

本项目的核心是 Dify 工作流(YAML)+ 知识库(Markdown),Python 脚本仅用于测试和基准对比。GitHub 仓库语言显示 Python 是因为测试脚本占了代码量,实际运行不依赖 Python 环境。

层级 技术 选型理由
平台 Dify 可视化工作流编排,降低部署门槛
工作流 YAML(代码节点 + LLM节点 + 知识库节点) 代码做确定性决策,LLM做语义理解,知识库提供规则
模型 DeepSeek(默认)/ 智谱 / 通义 / GPT 可插拔,按需选择
知识库 Markdown 规则和few-shot示例,LLM按需检索
测试 Python + aiohttp 异步并发批量测试
评估 LLM共识法 3轮投票+争议仲裁,提升标注效率

仓库结构

SpecMark/
├── README.md                           ← 你正在看的
├── LICENSE                             ← MIT许可证
├── .gitignore
├── workflow/
│   └── SpecMark.yml                    ← 主工作流,导入Dify就能用
├── knowledge/
│   ├── 📚知识库-PRD规范检查.md           ← PRD检查规则
│   └── 📚知识库-反馈分类规则.md           ← 反馈分类规则+品类映射+few-shot
├── tests/
│   ├── README.md                       ← 测试数据说明
│   ├── test_set_100.csv                ← 100条测试集
│   ├── test_set_200.csv                ← 200条测试集
│   └── test_set_300.csv                ← 300条测试集
├── scripts/
│   ├── batch_test.py                   ← 批量测试脚本
│   ├── benchmark_agent.py              ← Agent vs 裸LLM基准测试
│   ├── generate_reviews.py             ← 生成测试评价
│   ├── test_output_samples.py          ← 输出样例验证
│   └── requirements.txt                ← 依赖
└── docs/
    ├── DESIGN.md                       ← 设计决策+迭代历程
    ├── LOGIC.md                        ← Agent完整逻辑说明
    ├── BENCHMARK.md                    ← 效率对比数据+输出样例
    ├── ARCHIVE_BUILD.md                ← 归档:早期构建流程
    └── ARCHIVE_DESIGN.md               ← 归档:早期设计文档

许可证

MIT


致谢

产品设计、规则制定和迭代方向由作者完成。

About

产品规范标记AI Agent——批量对用户反馈标注及对PRD进行智能分类与风险检

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.