尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
k-skill 实战:用 korean-character-count 技能对韩文文本做确定性字数/行数/字节数统计
k-skill 实战用 korean-character-count 技能对韩文文本做确定性字数/行数/字节数统计【免费下载链接】k-skill한국인을 위한 스킬 모음집 - 에이전트를 한국인으로项目地址: https://gitcode.com/GitHub_Trending/ks/k-skill本文以 k-skill 仓库中korean-character-count技能核心文档位于 packages/k-skill-cli/skills/korean-character-count/instruction.md为骨架深入讲解如何对自我介绍书、申请书、自由叙述型表单等字数限制敏感的韩文文本进行零 LLM 估算、纯确定性的字符数、行数与字节数统计。读完本文你将掌握该技能的default/neis两种计数契约、nomadamas/k-skillCLI 的完整调用方式、JSON/Text 两种输出格式的含义以及从源码与测试层面验证的底层实现原理。为什么需要确定性计数技能存在的前提在 k-skill 的韩文 Agent 技能体系中很多场景要求一字不差的精确统计帮我精确数一下这篇自我介绍有没有超过 1000 字按 UTF-8 字节数帮我计算这段文本行数和字节数也一起告诉我韩文、英文、emoji 混排的句子不要估算用代码数字数限制往往对 1 个字符的差异都非常敏感而 LLM 靠目测预估字数存在不可复现的问题。因此该技能的设计核心是不对输入做任何擅自的 trim 或规范化处理只按照文档化的计数契约进行确定性统计。这与 SKILL.md 中定义的技能定位一致——Count Korean text deterministically with exact grapheme, line, and byte contracts。计数契约default与neis两套规则原文档用两份 Contract 明确定义了计数口径这是整个技能的法律条文本文完整继承并做细化解释。default契约维度规则characters字符数基于Intl.Segmenter(ko, { granularity: grapheme })的 Unicode extended grapheme clusterbytes字节数Buffer.byteLength(text, utf8)即 UTF-8 实际编码长度lines行数空字符串为0非空字符串为换行序列个数 1CRLF按1 次换行计而非 2 次也就是说在default契约下字符不是 JavaScript 的 UTF-16 code unit也不是 Unicode code point而是用户感知的一个书写单位grapheme cluster。例如由초성중성종성组合而成的韩文字节序列会被正确合并为 1 个字符\r\n这种双字节换行序列也只算 1 次换行。neis契约neis是专为 NEIS나이스韩国教育行政信息系统/ 学校生活记录簿等需要单独字节规则的提交场景设计的兼容 Profile维度规则characters与default相同仍按 graphemelines与default相同bytes韩文 grapheme 计3 字节ASCII grapheme 计1 字节Enter/换行序列计2 字节其余字符回退为 UTF-8 实际字节长度从源码 korean-character-count/scripts/korean_character_count.js 可以印证这一实现countNeisGraphemeBytes依次判断纯 ASCII1B、含韩文/组合标记3B否则调用countUtf8Bytes做 UTF-8 回退例如组合附加符\u0301和 emoji都按 UTF-8 实际字节数计。环境准备Node.js 18必须支持Intl.Segmenter源码ensureSegmenter()在 Node 18 以下会直接抛错Intl.Segmenter is required. Use Node.js 18 or newer.见 korean-character-count/scripts/korean_character_count.jshelper 脚本scripts/korean_character_count.js已随nomadamas/k-skillCLI 打包无需任何 API Key纯本地确定性计算。标准工作流原文档定义的四步流程是 Agent 执行该技能时的主路径直接接收文本或从文件 / STDIN 读取文本通过npx -y nomadamas/k-skill0 exec korean-character-count scripts/korean_character_count.js --执行确定性计数选择需要的 Profiledefault/neis与输出格式json/text将结果原样返回并同时告知是依据哪一套契约统计的。注意命令中的--是k-skill exec与子命令参数之间的分隔符其后的--text、--file、--stdin、--profile、--format等选项都交给 helper 脚本自身解析。CLI 用法与完整示例原文档给出了 5 条可直接复制的示例命令本文完整保留并补充其行为说明# 直接统计内联文本 가나다默认 default 契约JSON 输出 npx -y nomadamas/k-skill0 exec korean-character-count scripts/korean_character_count.js -- --text 가나다 # 统计包含 CRLF 换行与 emoji 的文本$... 让 bash 解释 \r\n npx -y nomadamas/k-skill0 exec korean-character-count scripts/korean_character_count.js -- --text $첫 줄\r\n둘째 줄 # 换用 neis 契约 text 纯文本输出 npx -y nomadamas/k-skill0 exec korean-character-count scripts/korean_character_count.js -- --text $첫 줄\n둘째 줄 --profile neis --format text # 从文件读取 UTF-8 文本使用 default 契约 npx -y nomadamas/k-skill0 exec korean-character-count scripts/korean_character_count.js -- --file ./essay.txt --profile default # 从 STDIN 管道读取文本使用 neis 契约 cat essay.txt | npx -y nomadamas/k-skill0 exec korean-character-count scripts/korean_character_count.js -- --stdin --profile neis直接运行源码脚本也支持同样的参数测试用例即按此方式调用见 scripts/test_korean_character_count.jsnode scripts/korean_character_count.js --text 가나다 --format json node scripts/korean_character_count.js --file ./essay.txt --profile default node scripts/korean_character_count.js --stdin --profile neis参数解析规则源码级从 parseArgs 可以看到严格的参数约束输入源三者--text/--file/--stdin必须且只能指定一个重复或混用会抛出Provide exactly one input source with --text, --file, or --stdin.--profile只接受default或neis否则报Unknown profile: ...--format只接受json或text否则报Unknown format: ...未显式指定输入源时若 stdin 是 TTY交互终端则报错否则自动回退为--stdin模式--help/-h打印完整帮助信息后退出。输出字段详解json格式默认返回结构化报告text格式则逐行输出同样字段。一个完整 JSON 报告的counts对象包含字段含义charactersgrapheme cluster 个数契约中的字符数characters_without_whitespace去除纯空白 grapheme 后的字符数code_pointsUnicode code point 个数Array.from(text).lengthutf16_code_unitsJS 字符串lengthUTF-16 code unit 数lines行数空串为 0bytes当前契约下的字节数neis时等于bytes_neis否则等于bytes_utf8bytes_utf8UTF-8 实际编码字节数bytes_neisNEIS 兼容规则字节数同时contract字段会携带本次计数所依据的字符 / 字节 / 行契约描述Agent 可直接将其原样呈现给用户。例如韩文/英文/空格/换行/emoji 混排样本한\r\n둘째 줄在测试中统计为 7 个字符、2 行见 scripts/test_korean_character_count.js。源码实现剖析三个核心算法仓库根目录的 korean-character-count/scripts/korean_character_count.js 是完整实现另在 packages/k-skill-cli/skills/korean-character-count/scripts/korean_character_count.js 与 scripts/korean_character_count.js 存在 CLI 打包/转发入口后者require前者并转发main。1. 字符计数grapheme 分词function segmentGraphemes(text) { return Array.from(ensureSegmenter().segment(text), ({ segment }) segment); }Intl.Segmenter以韩语区域设置ko、grapheme粒度切分遵循 Unicode Standard Annex #29UAX #29的 extended grapheme cluster 规则保证组合韩文、带组合符号的字母、emoji 与 ZWJ 序列都被当作单一可见字符。2. 行数计数五种换行序列统一折算const LINE_BREAK_PATTERN /\r\n|[\n\r\u2028\u2029]/gu;countLines将CRLF、LF、CR、U2028行分隔符、U2029段分隔符全部视为1 次换行空字符串返回0否则返回匹配次数1。测试가\r\n나\r다\u2028라\u2029마统计为 5 行正是五种换行序列各计 1 次的结果见 scripts/test_korean_character_count.js。3. NEIS 字节数逐 grapheme 计价countNeisBytes先按换行序列切块每块内的 grapheme 走countNeisGraphemeBytes计价ASCII 记 1 字节、含韩文/组合标记记 3 字节、其余回退 UTF-8 字节每个换行序列额外记 2 字节。测试用例给出两个可手算的验证值countNeisBytes(가A 1\n나) 15韩文가3、A1、空格1、11、换行2、나3、4UTF-8 回退合计 15countNeisBytes(한글) 6、countNeisBytes(ABC) 3。测试验证与质量保障仓库为该技能提供了完整的 Node 内置测试套件 scripts/test_korean_character_count.js覆盖createReport的默认契约统计正确性grapheme、行数、UTF-8 字节五种换行序列CRLF/CR/LF/U2028/U2029均按 1 次计NEIS 规则下韩文 3B / ASCII 1B / 换行 2B / 非韩文 UTF-8 回退如组合符与 emoji参数解析的单输入源约束与 profile 校验混用输入源、重复--text、非法 profile 均报错CLI 三种输入方式--text/--file/--stdin的端到端正确性。这些用例同时印证了技能文档中 Done when 的验收标准返回结果必须同时包含字符数、行数与字节数default与neis的契约差异必须在文档中明确--help可用且必须存在混合韩/英/空格/换行/emoji 输入下的测试。响应策略Agent 使用规范原文档明确了 Agent 输出时的行为边界本文完整继承不要估算直接使用 helper 结果原样输出同时告知用户本次使用的是哪个 Profile默认情况下使用default契约仅当提交目标如 NEIS / 学校生活记录簿明确要求独立契约时才切换到neis。底层标准参考实现所依赖的三项公开标准原文档 Notes 部分Unicode extended grapheme cluster 规则Unicode Standard Annex #29UAX #29字符编码规范WHATWG Encoding StandardNode.jsBuffer.byteLength语义Node.js Buffer API 文档。小结korean-character-count是 k-skill 中一个小而精确的确定性工具型技能以Intl.Segmenter的 grapheme 切分定义字符数以统一换行模式折算行数以 UTF-8 与 NEIS 双契约定义字节数并通过严格参数校验与自动化测试保证可复现。对任何需要在韩文表单、自我介绍书或 NEIS 提交场景中精确控制文本长度的 Agent 工作流都可以直接复用本文给出的命令与契约说明。【免费下载链接】k-skill한국인을 위한 스킬 모음집 - 에이전트를 한국인으로项目地址: https://gitcode.com/GitHub_Trending/ks/k-skill创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

Flask 命令行接口(CLI)完全指南:应用发现、开发服务器、dotenv 与自定义命令实战

Flask 命令行接口(CLI)完全指南:应用发现、开发服务器、dotenv 与自定义命令实战

Flask 命令行接口(CLI)完全指南:应用发现、开发服务器、dotenv 与自定义命令实战 【免费下载链接】flask The Python micro framework for building web applications. 项目地址: https://gitcode.com/gh_mirrors/fl/flask 本文以 Fla…

📅 2026/9/18 7:19:37
BIM与GIS融合实战:从IFC到3D Tiles的转换与坐标对齐

BIM与GIS融合实战:从IFC到3D Tiles的转换与坐标对齐

简介:这份PDF围绕BIM与GIS技术在智慧园区建设中的落地应用展开,面向园区规划、工程管理与信息化建设人员,系统梳理了GIS与BIM的基本概念、应用范围及核心区别,并结合首钢园区实际工作进展,说明从专项团队组建、现状调研…

📅 2026/9/18 7:19:37
ChatGPT内容转Word文档的5种技术方案详解

ChatGPT内容转Word文档的5种技术方案详解

1. 从ChatGPT到Word文档的完整实现方案在内容创作领域,我们经常需要将AI生成的内容转换为标准办公文档格式。最近在技术社区看到不少同行讨论如何把ChatGPT的输出内容快速整理成Word文档,这确实是个高频需求。作为每天要处理大量文档的技术写作者&#x…

📅 2026/9/18 7:14:37
MORE NEWS

更多资讯

📰

从SLAM到空间智能:英特尔谈室内机器人核心技术

前阵子英特尔技术团队做了一场主题为“空间智能:室内机器人SLAM技术展望”的线上分享,我看完之后第一反应是:这大概是近两年讲SLAM讲得最系统的一次公开内容。很多人一提SLAM就想到扫地机器人绕圈、想到激光雷达转个不停,但英特尔…

📰

pdf.js 内置 Brotli 解码器解析:external/brotli 模块、release-brotli 构建任务与 /BrotliDecode 解码链路

pdf.js 内置 Brotli 解码器解析:external/brotli 模块、release-brotli 构建任务与 /BrotliDecode 解码链路 【免费下载链接】pdf.js PDF Reader in JavaScript 项目地址: https://gitcode.com/gh_mirrors/pd/pdf.js 导读 本篇文章围绕 pdf.js 仓库中 exter…

📰

10kV供配电设计全流程:从负荷计算到保护整定

简介:工厂10kV供配电设计课程设计完整文档,面向电气工程、自动化等专业本科生及供配电设计入门者,系统梳理10kV工厂供配电设计全流程。压缩包内仅1个doc文件,容量814KB,内容涵盖设计内容与要求、负荷计算与无功补偿、变…

📰

STM32频率测量实战:输入捕获与FFT选型、代码与避坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Tempo 项目中的 Participle:用 Go 结构体标签构建死简单解析器的完整实战指南

Tempo 项目中的 Participle:用 Go 结构体标签构建死简单解析器的完整实战指南 【免费下载链接】tempo Grafana Tempo is a high volume, minimal dependency distributed tracing backend. 项目地址: https://gitcode.com/GitHub_Trending/tempo1/tempo part…

📰

PyQt5企业级开发:架构设计与性能优化实战

1. PyQt项目开发全景解析作为Python生态中最成熟的GUI框架之一,PyQt在企业级应用开发中占据重要地位。最近在重构一个遗留的PyQt5项目时,我系统梳理了从环境搭建到部署上线的完整构造流程。与常见的教程不同,本文将重点分享实际工程中那些容易…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬