k-skill 中世韩语风格转换器实战:korean-middle-korean 确定性文体改写全解析 📅 发布时间:2026/9/17 14:21:19 👁 浏览次数: k-skill 中世韩语风格转换器实战korean-middle-korean 确定性文体改写全解析【免费下载链接】k-skill한국인을 위한 스킬 모음집 - 에이전트를 한국인으로项目地址: https://gitcode.com/GitHub_Trending/ks/k-skillkorean-middle-korean 是 k-skill 技能仓库中面向韩语创作场景的文体转换技能它把现代韩语句子改写为带中世韩语훈민정음/중세국어观感的仿古文体用于玩梗、幽默创作而非学术复原。本文以 instruction.md 为核心骨架结合 korean_middle_korean.js 源码与 test_korean_middle_korean.js 测试完整讲解其设计契约、CLI 用法、规则流水线与可验证性读完后你可以直接用一条命令把任意韩语句子变成중세국어풍风格并解释每一步替换依据。这个技能解决什么问题当用户提出이 문장을 한국 중세 국어로 바꿔줘훈민정음 느낌 나는 밈 문장으로 변환해줘중세국어풍으로 농담을 써줘아래 글을 옛 국어 말투로 바꿔줘这类需求时直接让 LLM 自由发挥会导致每次转换强度和标注都不一致。该技能用确定性的规则集把仿中世韩语这一创作性需求固定成一份最小契约将部分现代韩语助词改写为中世风格拼写例如은/는 → ᄋᆞᆫ、을/를 → ᄋᆞᆯ、에서 → 애将部分现代语尾改写为ᄒᆞ-系古语尾例如했다 → ᄒᆞ엿다〮、하는 → ᄒᆞᄂᆞᆫ、말하는 → ᄆᆞᆯᄒᆞᄂᆞᆫ将日期单位改写为年、月、日给部分汉字词混入 Hanja 提示例如熱愛說、俳優、學校将 URL、邮箱、Markdown 链接、inline/fenced code span 视为结构令牌原样保留不做转换对人名、数字、专有名词采用best-effort策略规则匹配不上时保留原文而不是强行改写Hanja 提示通过宽范围全局替换应用因此即使看起来像合成词或专有名词的字符串内部也可能被改写。从源码结构看这些承诺被硬编码在 korean_middle_korean.js 的createReport流水线中是可以用测试和实际运行反复验证的确定性行为而不是提示词层面的尽力而为。为什么需要独立技能确定性契约instruction.md 明确指出이 스킬은 학술적 복원이 아니라 창작용 스타일 변환이다本技能是创作用风格转换而非学术复原。配套的 docs/features/korean-middle-korean.md 进一步解释了独立成技能的三点理由同一输入产出同一输出规则固定、顺序固定结果可复现替换过程可审计所有应用过的规则都会写入replacements数组用户可以逐条核对定位被文档化明确声明这是风格转换而非学术复原避免用户误以为是严谨的古文献翻译。这一契约由源码中的PROFILE middle-korean-style-v1与CONTRACT字符串落地见 korean_middle_korean.js。docs/features中的文档还约定了一条重要的兼容性策略middle-korean-style-v1的输出变化属于影响兼容性的契约变更新增规则或调整顺序时必须同步更新回归测试与文档示例。适用边界何时使用当用户明确希望获得中世韩语风格/훈민정음 感觉/古语 meme 风格的转换时使用典型触发语이 문장을 한국 중세 국어로 바꿔줘훈민정음 느낌 나는 밈 문장으로 변환해줘중세국어풍으로 농담을 써줘아래 글을 옛 국어 말투로 바꿔줘何时禁止使用需要学术论文、古文翻译、훈민정음 해례본 式严谨标注的工作法律、医学、合同等因语义误解而危险的文档出于仇恨、骚扰、名誉损害目的的嘲讽式转换。响应时应诚实说明这是중세국어풍/창작용 변환不得断言为精确的中世韩语翻译。环境准备Node.js 18运行 helper 脚本的运行时环境skill 目录内包含 helperkorean-middle-korean技能目录下的 scripts/korean_middle_korean.js无需任何 API 密钥这是一个纯本地、纯规则的确定性工具。技能的元数据定义在 skill.json 中名称korean-middle-korean类别writing区域ko-KR阶段phase: v1许可证 MIT。通过 CLI 首次使用时可以执行npx -y nomadamas/k-skill0 instruct korean-middle-korean获取实时指令用npx -y nomadamas/k-skill0 files korean-middle-korean查看随 CLI 捆绑的辅助文件清单见 SKILL.md。CLI 用法详解参数总览parseArgskorean_middle_korean.js规定了严格的参数契约参数含义约束--text TEXT直接传入待转换文本三种输入源--text/--file/--stdin必须且只能提供一种--file PATH从文件读取文本UTF-8同上--stdin从标准输入读取文本同上--format json\|text输出格式默认json仅接受json或text否则报unknown format--help/-h打印用法帮助不受单一输入源约束错误场景在源码中有明确校验--text缺值抛--text requires a value同时传入多个输入源抛provide exactly one input source: --text, --file, or --stdin未知参数抛unknown argument: ...。测试 test_korean_middle_korean.js 专门验证了这些边界。四种常用命令# 1. 直接传入文本默认 JSON 输出 npx -y nomadamas/k-skill0 exec korean-middle-korean scripts/korean_middle_korean.js -- --text 민수는 3월 5일 학교에서 공부했다. # 2. 仅输出转换后的文本 npx -y nomadamas/k-skill0 exec korean-middle-korean scripts/korean_middle_korean.js -- --text 열애설을 인정했다. --format text # 3. 从文件读取并输出纯文本 npx -y nomadamas/k-skill0 exec korean-middle-korean scripts/korean_middle_korean.js -- --file ./input.txt --format text # 4. 管道输入JSON 输出 cat input.txt | npx -y nomadamas/k-skill0 exec korean-middle-korean scripts/korean_middle_korean.js -- --stdin --format json注意npx ... exec korean-middle-korean scripts/korean_middle_korean.js --后面的--用于把后续参数透传给脚本本身。在仓库本地调试时也可以直接用 node 运行同一入口测试套件正是这么做的见 test_korean_middle_korean.jsnode korean-middle-korean/scripts/korean_middle_korean.js --text 학교에서 공부했다. --format text # 输出: 學校애 공부ᄒᆞ엿다〮.真实运行示例以민수는 3월 5일 학교에서 공부했다.为例默认 JSON 输出如下实际运行验证{ profile: middle-korean-style-v1, input: 민수는 3월 5일 학교에서 공부했다., output: 민수ᄋᆞᆫ 3月 5日 學校애 공부ᄒᆞ엿다〮., replacements: [ { kind: date, from: 월→月, to: $1月, count: 1 }, { kind: date, from: 일→日, to: $1日, count: 1 }, { kind: lexicon, from: 학교, to: 學校, count: 1 }, { kind: ending, from: 공부했다→공부ᄒᆞ엿다〮, to: 공부ᄒᆞ엿다〮, count: 1 }, { kind: particle, from: 은/는→ᄋᆞᆫ, to: $1ᄋᆞᆫ, count: 1 }, { kind: particle, from: 에서→애, to: $1애, count: 1 } ], contract: Deterministic Korean Middle Korean-style rewrite: public-domain orthographic flavor rules, fixed broad lexicon replacements, archaic particles/endings, Sino-Korean Hanja hints, protected URL/email/Markdown-code spans, and best-effort preservation for names/numbers when no rule matches. }注意人名민수因为没有命中任何规则而被原样保留这正是 best-effort 策略的直接体现数字3、5也被保留仅单位월/일被替换为月/日。输出 SchemacreateReportkorean_middle_korean.js返回固定五字段结构字段类型说明profilestring恒为middle-korean-style-v1标识规则版本inputstring原始输入outputstring转换后的文本replacementsarray每条规则的应用记录{ kind, from, to, count }contractstring契约描述说明本转换是确定性仿古改写replacements中的kind共四类对应流水线中的四个规则族date日期单位替换년→年、월→月、일→日lexicon词典固定替换如열애설→熱愛說ending语尾替换如했다→ᄒᆞ엿다〮particle助词替换如은/는→ᄋᆞᆫ以及와的保留记录。用户若想了解转换依据直接引用replacements数组逐条说明即可。--format text则只输出output字段的纯文本。源码级解析转换流水线整个转换是一条确定性的规则链顺序在createReport中固定。规则顺序本身属于 v1 契约的一部分——测试 test_korean_middle_korean.js 验证了最后一条 date 记录必须出现在第一条 lexicon 记录之前保证日期先于词典处理。第一步结构令牌保护protectSpanskorean_middle_korean.js在任何替换之前先把五类结构文本抽离为私有区字符令牌\uE000{n}\uE001UE000/UE001处理完后再由restoreSpans原样还原fenced code 块[\s\S]*?inline code[^\n]*Markdown 链接text含可选 titleURLhttps?://...邮箱userdomain.tld。这意味着即使链接文字或代码内容里含학교、했다等命中词也绝不会被改写。测试 test_korean_middle_korean.js 对此有完整覆盖URL、邮箱、Markdown 链接、inline code、fenced code 均被保持原样而块外的普通文本照常转换。第二步日期单位规范化output replaceRegex(output, /(\d)년/g, $1年, replacements, date, 년→年); output replaceRegex(output, /(\d)월/g, $1月, replacements, date, 월→月); output replaceRegex(output, /(\d)일/g, $1日, replacements, date, 일→日);2015년 7월 21일→2015年 7月 21日。注意这里的일仅在紧跟数字时替换避免误伤普通名词。第三步词典固定替换LEXICON数组korean_middle_korean.js定义了 22 条字面量替换按数组顺序逐个应用每次替换都会在replacements中记录lexicon条目原文替换后야 이이맛국노야맛國노〮야설마쇼ᄆᆞ새벽샛ᄇᆡ긔〮배우俳優구자욱이랑구자욱과거리街里손잡고손ᄋᆞᆯ 자ᇙ고걸어다니는거러다니ᄂᆞᆫ모습모ᄉᆡᆸ〮찍혀찍히야열애설熱愛說터지고터ᄂᆞᆺ고인정했지만인졍ᄒᆞ엿거ᄂᆞᆫ인정했다인졍ᄒᆞ엿다〮인정인졍맛보기한맛보기〮ᄒᆞᆫ느낌이랄까닏믁이ᄅᆞᆯ가〯기분이구나기븐〮이로다말해ᄆᆞᆯᄒᆞ야사건일학교學校从实现看replaceLiteral用text.split(from).length - 1统计命中次数korean_middle_korean.js再以split/join做全局替换。测试 test_korean_middle_korean.js 特意验证了宽范围替换的特性배우자는 학교에서 일했다.会得到俳優자——即배우被替换后剩余的자原样保留说明 Hanja 提示按子串全局生效复合词内部也可能被改写。第四步语尾替换六个正则规则korean_middle_korean.js其中하는、된、것이냐使用前瞻(?\s|[,.?!]|$)限定在词边界处才命中말하는 → ᄆᆞᆯᄒᆞᄂᆞᆫ공부했다〮? → 공부ᄒᆞ엿다〮〮?兼容已有声调点的输入했다〮? → ᄒᆞ엿다〮하는(词尾) → ᄒᆞᄂᆞᆫ된(词尾) → ᄃᆞᆫ것이냐(句尾) → 것이냐〮。第五步助词替换四个正则规则korean_middle_korean.js前置字符匹配集为[가-힣ᄀ-ᇿA-Za-z0-9一-龥]同样只在词边界处替换X은/X는 → XᄋᆞᆫX을/X를 → XᄋᆞᆯX에서 → X애X와 → X와保留不变但在replacements中记录一条와 보존审计痕迹。第六步标点归一化与结构还原output output.replace(/\s([,.;:?!])/g, $1); // 去掉标点前的多余空白 output restoreSpans(output, protectedInput.protectedSpans); // 还原受保护片段从实际输出熱愛說이 이런 기븐〮이로다라고可以看出引号等结构片段在保护后得以精确还原而句点前的空白被归一化。响应与使用策略回答以output字段为中心必要时先展示转换结果明确用词是중세국어풍/창작용 변환中世韩语风格/创作用转换而不是정확한 중세국어 번역精确的中世韩语翻译若用户强调必须保留原文语义可在转换文后追加一句의미 보존 확인语义保留确认若用户看起来需要学术级准确性应主动说明该技能的创作定位与局限并提示需要专业古文献审查。工作流建议接收文本 → 通过k-skill exec运行 helper → 返回output→ 用户索要依据时汇总replacements应用记录 → 判断场景需要时提前声明创作型定位。验收与测试instruction.md的 Done when 清单定义了完成标准npx -y nomadamas/k-skill0 exec korean-middle-korean scripts/korean_middle_korean.js -- --help能正常打印帮助--text、--file、--stdin三种输入全部可用JSON 与 text 两种输出格式全部可用示例输出中应出现日期2015年 7月 21日、Hanja俳優、街里、熱愛說以及中世风格的助词、语尾与声调点〮/〯——即 issue #270 中演示的典型特征。仓库提供了覆盖上述契约的完整回归测试 test_korean_middle_korean.js本地运行方式node --test scripts/test_korean_middle_korean.js测试覆盖了issue #270 长样本的声调点/Hanja/日期断言、人名与数字的 best-effort 保留、URL/邮箱/Markdown/code span 的保护、createReport的元数据与replacements证据、v1 规则顺序契约、parseArgs输入源约束以及--text/--file/--stdin三种 CLI 路径含安装在 skill 目录内运行时學校애 공부ᄒᆞ엿다〮.的断言。你也可以用同样的命令做冒烟验证npx -y nomadamas/k-skill0 exec korean-middle-korean scripts/korean_middle_korean.js -- --text 민수는 3월 5일 학교에서 공부했다. --format text总结korean-middle-korean 把仿中世韩语这一主观创作需求工程化为可复现、可审计的确定性规则链结构令牌保护保证链接与代码不被污染日期/词典/语尾/助词四个规则族按固定顺序产出middle-korean-style-v1风格文本replacements数组让每次改写都有据可查而 best-effort 策略守住人名数字的语义底线。对于需要在 Agent 工作流中稳定产出옛 국어 말투的创作场景这是一个开箱即用、无密钥依赖、可被测试锁定的标准方案。【免费下载链接】k-skill한국인을 위한 스킬 모음집 - 에이전트를 한국인으로项目地址: https://gitcode.com/GitHub_Trending/ks/k-skill创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考