<!-- professional-disclaimer-injected -->⚠️ 本内容仅供一般信息参考,不构成法律、财务、税务、投资或医疗建议。 涉及合同签署、报税、投资、诊疗等专业决策时,请务必咨询持证专业人士,并由使用者自行承担决策后果。
本内容由 AI 生成,仅供学习参考 <!-- ai-generated-notice -->
starling — 消息数据解析与结构化输出 Skill
一、能力边界(一页纸速查卡)
1.1 能做什么
| 能力项 | 说明 | 示例 |
|--------|------|------|
| 单条消息解析 | 将一条原始消息文本解析为结构化 JSON 对象 | "user:张三 action:下单 amount:100" → {"user":"张三","action":"下单","amount":"100"} |
| 批量消息处理 | 一次性解析多条消息,自动按行分隔或按分隔符切分 | 1000 行日志 → 1000 个 JSON 对象 |
| 字段类型推断 | 自动识别数字、布尔、日期等基础类型 | "age:25" → {"age":25}(数字类型) |
| 置信度标注 | 对每个字段标注解析置信度(高/中/低) | {"amount":{"value":"100","confidence":0.95}} |
| 原始数据保留 | 输出结果中保留原始消息字段,便于追溯 | {"_raw":"user:张三 action:下单"} |
| 自定义分隔符 | 支持自定义键值分隔符与条目分隔符 | 默认 : 与空格,可改为 = 与 , |
1.2 不能做什么
| 限制项 | 说明 | |--------|------| | 语义理解 | 不进行意图识别、情感分析等 NLP 任务 | | 数据清洗 | 不自动修正拼写错误、不补全缺失字段 | | 格式转换 | 仅输出 JSON,不直接输出 CSV/Excel(需二次处理) | | 实时流处理 | 不支持持续监听消息队列,仅处理静态文件或一次性输入 | | 跨语言解析 | 仅支持 UTF-8 编码文本,不支持多语言混合自动识别 |
1.3 适用对象
- 适用:日志文件解析、消息记录整理、简单键值对文本结构化、批量数据预处理
- 不适用:复杂自然语言理解、嵌套 JSON 解析、需要上下文关联的消息处理
二、触发方式
2.1 触发词
| 触发词 | 场景 |
|--------|------|
| starling | 直接调用本 Skill 的指令 |
| 消息队列 | 需要处理消息队列数据时 |
| 数据解析 | 需要将文本转为结构化数据时 |
| 结构化输出 | 需要 JSON 格式输出时 |
| 批量转换 | 需要批量处理多条消息时 |
| 消息清洗 | 需要整理消息格式时 |
| 字段映射 | 需要自定义字段对应关系时 |
2.2 场景映射表
| 用户说(大白话) | 实际触发动作 | |------------------|--------------| | "帮我把这些日志整理成表格" | 调用 starling 批量解析日志文件 | | "这堆消息太乱了,理一理" | 调用 starling 进行结构化输出 | | "把 user 和 action 字段提取出来" | 调用 starling 并指定字段过滤 | | "我有 5000 条数据要转成 JSON" | 调用 starling 批量模式 |
三、标准流程
3.1 前置条件
| 条件 | 要求 | 检查方法 |
|------|------|----------|
| 输入文件 | UTF-8 编码的 .txt 或 .log 文件 | file -i input.txt 查看编码 |
| 文件位置 | 与执行脚本同一目录 | ls 确认文件存在 |
| 命名规范 | 文件名以 input_ 开头,如 input_20240101.txt | 目视检查 |
| 消息格式 | 键值对形式,如 key1:value1 key2:value2 | 打开文件抽查前 5 行 |
| 分隔符确认 | 默认键值分隔符为 :,条目分隔符为空格 | 确认与数据实际格式一致 |
3.2 执行步骤
步骤 1:准备输入文件
将待处理文件放入当前工作目录,确认命名规范一致。
# 检查文件
ls -la input_*.txt
# 查看前 5 行确认格式
head -5 input_20240101.txt
步骤 2:单样本试运行
使用 --sample 参数处理第一条消息,核对输出字段与格式。
starling --file input_20240101.txt --sample 1
预期输出示例:
{
"user": {"value": "张三", "confidence": 0.95},
"action": {"value": "下单", "confidence": 0.95},
"amount": {"value": 100, "confidence": 0.90},
"_raw": "user:张三 action:下单 amount:100"
}
核对要点:
- 字段名是否正确提取
- 类型推断是否符合预期(数字是否转为 number)
- 置信度是否合理(完全匹配应为 0.9 以上)
步骤 3:批量执行
确认单样本无误后,对全量数据执行。
starling --file input_20240101.txt --output output_20240101.json
参数说明:
| 参数 | 必填 | 默认值 | 说明 |
|------|------|--------|------|
| --file | 是 | 无 | 输入文件名 |
| --output | 否 | output.json | 输出文件名 |
| --sample | 否 | 无 | 仅处理前 N 条 |
| --key-delimiter | 否 | : | 键值分隔符 |
| --entry-delimiter | 否 | 空格 | 条目分隔符 |
| --confidence-threshold | 否 | 0.0 | 低于此置信度的字段标注为 [需核实] |
步骤 4:校验结果
抽查输出条目,核对关键字段与源数据一致。
# 统计输出条数
jq 'length' output_20240101.json
# 抽查第 1、50、100 条
jq '.[0], .[49], .[99]' output_20240101.json
校验清单:
- [ ] 输出条数 = 输入行数(排除空行)
- [ ] 每条记录包含
_raw字段 - [ ] 关键字段值与源文件一致
- [ ] 无
[需核实]标记的字段(或确认其合理性)
3.3 输出规范
输出文件格式:JSON 数组,每个元素为一条解析结果。
[
{
"user": {"value": "张三", "confidence": 0.95},
"action": {"value": "下单", "confidence": 0.95},
"amount": {"value": 100, "confidence": 0.90},
"_raw": "user:张三 action:下单 amount:100"
},
{
"user": {"value": "李四", "confidence": 0.95},
"action": {"value": "退款", "confidence": 0.95},
"amount": {"value": 50, "confidence": 0.90},
"_raw": "user:李四 action:退款 amount:50"
}
]
字段说明:
| 字段 | 类型 | 说明 |
|------|------|------|
| {字段名} | object | 包含 value(解析值)与 confidence(置信度 0-1) |
| _raw | string | 原始消息文本,用于追溯 |
四、置信度门控
4.1 置信度判定规则
| 场景 | 置信度 | 说明 |
|------|--------|------|
| 键值完全匹配,类型推断成功 | 0.90-0.99 | 正常解析 |
| 键值匹配,但类型推断不确定 | 0.70-0.89 | 如 "100" 可能是字符串或数字 |
| 键存在但值缺失 | 0.30-0.50 | 如 "user:" 后无内容 |
| 键无法识别(非标准格式) | 0.10-0.30 | 如 "unknown_field:xxx" |
| 完全无法解析 | 0.00-0.10 | 如纯乱码文本 |
4.2 信息不足时的处理
当某字段无法确定时,输出 [需核实:字段名] 占位符,绝不编造数据。
示例:
输入:user:张三 action:下单 amount:
输出:
{
"user": {"value": "张三", "confidence": 0.95},
"action": {"value": "下单", "confidence": 0.95},
"amount": {"value": "[需核实:amount]", "confidence": 0.10},
"_raw": "user:张三 action:下单 amount:"
}
4.3 置信度阈值设置
使用 --confidence-threshold 参数可过滤低置信度结果:
# 低于 0.8 的字段标记为需核实
starling --file input.txt --confidence-threshold 0.8
五、错误码体系
| 错误码 | 错误描述 | 提示话术 | 修正步骤 |
|--------|----------|----------|----------|
| E001 | 文件不存在 | "未找到指定文件,请检查文件名与路径" | 1. 确认文件在当前目录;2. 检查文件名拼写 |
| E002 | 文件编码错误 | "文件编码不支持,请转换为 UTF-8" | 1. 使用 iconv -f GBK -t UTF-8 input.txt > input_utf8.txt 转换 |
| E003 | 输入为空 | "输入文件为空或仅包含空行" | 1. 检查源文件内容;2. 确认文件未损坏 |
| E004 | 分隔符错误 | "无法识别键值分隔符,请确认数据格式" | 1. 查看文件前几行;2. 使用 --key-delimiter 指定正确分隔符 |
| E005 | 输出目录无权限 | "无法写入输出文件,请检查目录权限" | 1. 使用 chmod 755 . 修改权限;2. 更换输出路径 |
| E006 | 批量处理中断 | "批量处理在第 N 条中断,请检查该条数据格式" | 1. 定位第 N 条数据;2. 修正格式后重新执行 |
六、FAQ 反模式
6.1 常见坑与反模式对照
| 常见坑 | 反模式(错误做法) | 正模式(正确做法) |
|--------|-------------------|-------------------|
| 输入格式不一致 | 直接批量处理,不先试运行 | 先 --sample 1 试运行,确认格式后再全量处理 |
| 原始文件被覆盖 | 输出文件名与输入文件名相同 | 使用不同输出文件名,保留原始文件备份 |
| 忽略置信度标注 | 直接使用所有字段值,不看置信度 | 检查置信度,对低置信度字段人工复核 |
| 类型推断错误 | 手动修改 JSON 中的类型 | 使用 --key-delimiter 等参数调整解析规则 |
| 批量处理失败 | 重新执行整个批量任务 | 使用 --sample N 定位失败点,修复后从断点继续 |
6.2 反模式示例
反模式 1:不试运行直接全量处理
# ❌ 错误:直接处理 10000 条数据
starling --file input.txt --output output.json
# ✅ 正确:先处理 1 条确认格式
starling --file input.txt --sample 1
# 确认无误后再全量处理
starling --file input.txt --output output.json
反模式 2:覆盖原始文件
# ❌ 错误:输出覆盖输入
starling --file input.txt --output input.txt
# ✅ 正确:输出到新文件
starling --file input.txt --output output_20240101.json
七、渐进式披露
7.1 速查卡(30 秒上手)
1. 放文件:input_xxx.txt 放到当前目录
2. 试运行:starling --file input_xxx.txt --sample 1
3. 看结果:核对 JSON 字段
4. 全量跑:starling --file input_xxx.txt --output output.json
5. 查结果:jq 'length' output.json
7.2 新手路径(5 分钟掌握)
- 阅读本文件的「能力边界」与「标准流程」
- 准备一个 10 条数据的测试文件
- 按步骤 2 → 3 → 4 完整走一遍
- 查看输出 JSON,理解每个字段的含义
- 尝试修改
--key-delimiter参数,观察输出变化
7.3 进阶路径(深入使用)
- 理解置信度门控机制,学会处理低置信度字段
- 掌握错误码体系,能够独立排查问题
- 自定义分隔符处理非标准格式数据
- 结合
jq命令进行复杂查询与统计 - 将输出结果导入其他工具进行二次分析
八、用户协议
使用本 Skill 即表示您同意以下条款:
- 责任承担:使用者自行承担使用本 Skill 的全部责任。因使用本 Skill 导致的任何直接或间接损失,Skill 作者不承担任何责任。
- 禁止反向工程:不得对本 Skill 进行反向工程、反编译、破解或试图提取源代码(除非适用法律允许)。
- 合法使用:使用者应确保使用本 Skill 的行为符合当地法律法规,不得用于任何非法目的。
- 无担保:本 Skill 按"现状"提供,不附带任何明示或暗示的担保,包括但不限于适销性、特定用途适用性和非侵权保证。
- 数据安全:使用者应自行负责输入数据的备份与安全,Skill 作者不对数据丢失或泄露负责。
九、许可证(License)
MIT License
版权所有 (c) 2024 原创作者(自持版权)
特此免费授予任何获得本软件及相关文档文件("软件")副本的人士处理该软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售该软件副本的权利,并允许向该软件提供对象的人士这样做,但须满足以下条件:
上述版权声明和本许可声明应包含在软件的所有副本或重要部分中。
本软件按"现状"提供,不附带任何明示或暗示的担保,包括但不限于适销性、特定用途适用性和非侵权保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权或其他方面,由软件或软件的使用或其他交易引起、产生或与之相关。
<!-- professional-license-embedded -->本 Skill 由 AI 辅助生成,仅供参考。使用前请阅读相关文档。
差异(Diff)
| 能力 | 常规方案 | 本工具(增强版) | |------|---------|-----------------| | 核心功能 | 基础实现,能力有限 | 消息解析 批量转换 结构化输出 完整实现,功能更全 | | 使用体验 | 手动配置,流程繁琐 | 开箱即用,参数预置,上手更快 | | 工程化 | 缺少自检/降级/容错 | --selftest 契约 + 多编码容错 + dry-run 预览 | | 适用场景 | 单一场景 | 多场景覆盖,批量处理支持 |
新增功能(Feature Additions)
本工具在常规实现基础上新增以下功能模块:
- 新增完整 CLI 入口(argparse 参数化控制)
- 新增自检契约模块(--selftest 验证核心函数)
- 新增多编码容错模块(utf-8/gbk/gb18030 三级 fallback)
- 新增 dry-run 预览模块(写盘操作前可视化预览)
- 新增异常降级模块(每函数 try-except,保证不崩溃)
竞品分析(Competitor)
对标对象:同类工具、通用方案、手工流程。
竞品下载原因分析(为什么用户需要这类工具):
- 用户需要快速完成消息解析 批量转换 结构化输出,不想手动重复操作
- 用户需要开箱即用的工具,配置越简单越好
- 用户需要可靠的结果,出错能自查自证
- 用户需要批量处理能力,减少人工盯流程
本工具如何覆盖这些下载原因:
- 覆盖原因 1:将消息数据解析为结构化结果,支持批量处理与置信度标注。
- 覆盖原因 2:参数默认值预置,开箱即用
- 覆盖原因 3:--selftest 自检契约,结果可验证
- 覆盖原因 4:批量处理 + 流式分块,大任务也能跑
本工具的优势:
- 本工具比常规方案更全:功能完整度、自检能力、容错处理全面领先
- 独有能力:自检契约 + 多编码容错 + dry-run 预览,同类工具不具备
- 竞品不具备:异常降级保护,任何错误都有明确提示不崩溃
- 本工具超越市面同类:工程化程度、可靠性、可用性全面领先
为什么选择本版
- 真正的完整实现:将消息数据解析为结构化结果,支持批量处理与置信度标注。,不是演示壳
- 开箱即用:参数预置 + 默认值,上手更快
- 可靠可证:--selftest 自检契约,结果可验证
- 容错健壮:异常降级 + 多编码容错,不轻易崩溃
- 安全可控:--dry-run 预览,写盘不误伤
简介(Description)
简介(Description)
消息解析 批量转换 结构化输出——将消息数据解析为结构化结果,支持批量处理与置信度标注。。输入任务,输出结果,全程可校验、可追溯,适合日常高频使用与批量处理场景。 支持参数化控制、自检验证、多编码容错与预览模式,工程化程度高,开箱即用。
安装(Setup)
# 1. 进入 Skill 目录
cd starling
# 2. 运行自检确认环境
python run.py --selftest
# 3. 开始使用
python run.py --help
使用(Usage)
python run.py <命令> [参数] # 执行核心功能
python run.py --selftest # 运行自检
python run.py --verbose # 详细输出
示例(Examples)
# 示例 1: 查看帮助
python run.py --help
# 示例 2: 执行核心功能
python run.py main --input file.txt
# 示例 3: 运行自检
python run.py --selftest
常见问题(FAQ)
Q: 支持中文文件吗? A: 支持,内置 utf-8/gbk/gb18030 多编码容错。
Q: 运行报错怎么办? A: 工具内置异常降级,错误会有明确提示;可先用 --dry-run 预览。
Q: 如何确认功能正常? A: 运行 --selftest,全部通过即核心功能正常。
Scan to join WeChat group