yomiyasu 语料库解读:异步消息队列可靠性设计的技术文章如何被推敲成自然日文 【免费下载链接】yomiyasuAI生成の日本語を自然な日本語へ推敲するAgent Skill / Agent Skill for Refining AI-Generated Japanese into Natural Japanese项目地址https://gitcode.com/gh_mirrors/yo/yomiyasu点击查看免费下载导读本文以 yomiyasu 项目语料库中的一篇真实样例——tests/corpus/yomiyasu_rewritten/01_tech_arch_sonnet_default_bl.md——为骨架完整讲解「异步消息队列可靠性设计」这一技术主题从 AI 生成、黑名单抑制再到 yomiyasu 推敲的全过程。读者将同时掌握两条能力一是消息队列可靠性设计的四项核心对策at-least-once 与幂等、指数退避与 DLQ、Transactional Outbox、可见性超时与队列深度监控二是理解 yomiyasu 的推敲原则如何在真实技术文章中落地并能在自己的写作中复现这套「改写—静态检查—差分检查」的流程。一、这篇样例从哪里来语料库的生成管线与命名规则yomiyasu 项目在 tests/corpus 下维护了一套用于验证与回归的日文语料库其中yomiyasu_rewritten/目录存放的 48 个文件是「按 yomiyasu 原则推敲后的输出」。本篇关联文档01_tech_arch_sonnet_default_bl.md正是其中之一。要理解这份文件先看它的命名01_tech_arch主题序号与短名。在 scripts/build_corpus.py 的TOPICS表中01_tech_arch对应提示词「非同期メッセージングキューを用いたマイクロサービスの耐障害性設計について、技術解説記事400字程度を書いてください。」——即一篇面向技术解说场景、约 400 字的微服务耐故障性设计文章。sonnet生成时使用的模型别名脚本通过claude -p ... --model sonnet调用。default文体变体。同一主题按 3 种文体各生成一份sonnet_default一般 Web 工程师、sonnet_formal企业级资深架构师、正式文体、sonnet_casual创业公司 tech lead、现场感文体。_bl后缀表示输入来源是「黑名单变体」blacklist_ai即生成时附加了禁止词指令的输出而不是无约束的原始输出。语料生成分为两步见 scripts/build_corpus.py 的main()生成原文对 8 个主题 × 3 种文体各生成两版——raw_ai/无约束原始输出共 24 份与blacklist_ai/附加禁止 AI 腔表达的提示后缀共 24 份。黑名单提示后缀原文为「手触り」「解像度」「地味に効く」「〜側に倒す」「静かに壊れる」「時間を溶かす」などのAIらしい表現は絶対に使わないでください。推敲重写rewrite_single_file将raw_ai/与blacklist_ai/的文件分别交给 yomiyasu 原则重写输出到yomiyasu_rewritten/黑名单来源的文件在目标名中追加_bl即01_tech_arch_sonnet_default_bl.md。也就是说本文要解析的这篇样例输入是「即使被明确禁止使用若干 AI 腔词汇、仍然残留结构问题」的 AI 日文技术文章输出是 yomiyasu 推敲后的版本。这种「禁止词拦不住、必须靠结构调整」的设定恰好对应了 README 中提到的传统方案局限之一禁止语替换只是表层对治无法解决不自然的结构本身。二、改写前的两种 AI 原文问题在哪里为了看清推敲做了什么先看同一主题在推敲前两个目录里的原始版本。无约束原始版tests/corpus/raw_ai/01_tech_arch_sonnet_default.md非同期メッセージングキューを挟むと、マイクロサービス間の結合は疎になる。ただし耐障害性は、キューを置いただけでは得られない。まず、キューはAt-least-once配信が基本なので、同じメッセージが複数回届く前提で設計する。コンシューマは冪等にし、メッセージIDを処理済みテーブルに記録して重複を弾く。次に、処理に失敗したメッセージの扱いを決める。即時再試行は障害中の下流に負荷を重ねるため、指数バックオフにジッタを加えて間隔を空ける。規定回数を超えたものはDead Letter Queueへ退避し、本流のキューを詰まらせない。DLQは溜まったら通知し、原因を調べて再投入する運用まで含めて設計する。送信側にも落とし穴がある。DB更新とメッセージ発行を別々に行うと、片方だけ成功して不整合が残る。更新と同じトランザクションでアウトボックステーブルに書き込み、別プロセスが発行するアウトボックスパターンを使えば防げる。最後に、キューの滞留数と最古メッセージの経過時間を監視する。スループットの低下は、障害の最初の兆候として現れる。黑名单版本篇样例的输入tests/corpus/blacklist_ai/01_tech_arch_sonnet_default.md非同期メッセージングキューを使ったマイクロサービスでは、サービス間の障害が連鎖しにくくなる一方、メッセージの重複や消失への対策が必要になる。第一に、配信保証はat-least-onceを前提に設計する。ブローカーは再送するため、コンシューマ側で冪等性を確保する。メッセージIDを処理済みテーブルに記録し、同じIDを受け取ったら処理をスキップする。第二に、失敗したメッセージの扱いを決めておく。一時的なエラーには指数バックオフとジッタを付けたリトライを適用する。上限回数を超えたメッセージはデッドレターキューDLQへ移し、本流の処理を止めない。DLQの滞留数には監視を設定し、原因を調査したうえで再投入する。第三に、データベース更新とメッセージ発行の不整合を防ぐ。更新と同じトランザクションでアウトボックステーブルにイベントを書き込み、別プロセスがキューへ発行するTransactional Outboxパターンを使う。最後に、コンシューマの処理時間にタイムアウトを設け、可視性タイムアウトより短くする。これにより、処理中のメッセージが別のコンシューマに重複して渡される事態を避けられる。キューの深さと処理遅延も指標として計測し、障害を早期に検知する。对照两份原文可以发现即使黑名单版避免了「静かに壊れる」「地味に効く」这类点名禁止的词汇它仍然带有典型 AI 腔特征——非生物主语的连发「キューは…」「ブローカーは…」、主语的省略与动作主体不明谁设计谁监控、名词连缀与サ变名词的过度压缩、以及「弾く」「詰まらせない」等口语化比喻。这正是 yomiyasu 要处理的核心问题不在个别禁用词而在统语结构与主述对应。三、推敲后的正文与逐段解析以下为关联文档 tests/corpus/yomiyasu_rewritten/01_tech_arch_sonnet_default_bl.md 的完整正文共 4 个自然段574 字随后逐段解析其技术含义与改写依据。非同期メッセージングキューを使ったマイクロサービスでは、一つのサービスの障害が他のサービスへ波及しにくくなる。その代わり、開発者はメッセージの重複と消失に備える必要がある。第一に、配信保証はat-least-onceを前提に設計する。ブローカーが同じメッセージを再送することがあるため、コンシューマ側で冪等に処理する。処理済みテーブルにメッセージIDを記録し、同じIDのメッセージを受け取ったら処理をスキップする。第二に、失敗したメッセージの扱いを決めておく。一時的なエラーには、指数バックオフとジッタを付けてリトライする。上限回数を超えたメッセージはデッドレターキューへ移し、後続のメッセージの処理を止めない。運用担当者はデッドレターキューに溜まったメッセージ数を監視し、原因を調べてから再投入する。第三に、データベースの更新とメッセージの発行がずれないようにする。Transactional Outboxパターンでは、更新と同じトランザクションでアウトボックステーブルにイベントを書き込み、別プロセスがそのイベントをキューへ発行する。最後に、コンシューマの処理時間にタイムアウトを設け、可視性タイムアウトより短くする。こうすると、処理中のメッセージが別のコンシューマにも渡される事態を防げる。キューの深さと処理遅延も計測し、障害を早期に検知する。对策一at-least-once 前提下的幂等消费第一段明确了异步队列系统设计的总前提队列让服务间故障传播变弱代价是重复与丢失必须由开发者主动应对。第二段给出第一个对策——配信保证按 at-least-once 设计由于 broker 可能重发同一消息消费端必须以幂等方式处理将消息 ID 记录到已处理表processed table收到相同 ID 的消息时直接跳过。注意推敲后的行文把动作主体明确化了是「開発者」需要准备、「コンシューマ側」需要幂等处理而不是原文那样让「キュー」「ブローカー」充当抽象主语。这与 SKILL.md「主語と目的語の明確化」中「原文や提供文脈から分かる主体を必要な位置で示し、誰の行為かを確かめる」的原则一致——补主语的边界是「原文可确定的范围」不能虚构动作主体。对策二指数退避 抖动、DLQ 隔离与人工再投入第三段处理失败消息临时错误用「指数バックオフジッタ」重试超过上限的消息移入 Dead Letter QueueDLQ不让后序消息的处理被阻塞运营人员监控 DLQ 积压数量、调查原因后重新投递。推敲版相比黑名单原文有两处关键改写原文「本流の処理を止めない」→ 推敲版「後続のメッセージの処理を止めない」明确了「不被停止的」具体对象符合 SKILL.md 对「指示代名词/省略对象只在可确定时补回」的要求。原文「DLQの滞留数には監視を設定し」→ 推敲版「運用担当者は…監視し、原因を調べてから再投入する」把无主语的动作落实为运营人员的职责恢复了「誰が何をどうする」的统语结构。对策三Transactional Outbox 保证 DB 更新与消息发布一致第四段处理发送侧若数据库更新与消息发布分两步执行可能一边成功一边失败而留下不一致。Transactional Outbox 模式的要点是把事件写入与业务更新放在同一个事务里写进 outbox 表再由独立进程将该事件发布到队列。推敲版把「使えば防げる」的省略判断补成了「ずれないようにする」并完整写出该模式的机制主语「別プロセスがそのイベントをキューへ発行する」使技术原理无需读者回读前文即可理解。对策四可见性超时与队列深度监控最后一段给出消费者侧的兜底为消费者处理时间设置超时并使其短于可见性超时visibility timeout避免处理中的消息被重新交给另一个消费者而重复处理同时持续计量队列深度queue depth与处理延迟以便早期发现故障——吞吐下降往往是故障的第一征兆这也是原始版与黑名单版都保留的判断。四、源码级佐证推敲原则如何在样例中落地yomiyasu 的推敲不是自由发挥而是由 SKILL.md 与参考文档定义的可复现规则。本篇样例的每个改写动作都能在仓库中找到对应条款。1. 主述与动作主体的复原SKILL.md「主語と目的語の明確化」要求主语只在原文可确定时补充不得虚构担当者。样例中「開発者」「運用担当者」「コンシューマ」都是原文语境能确定的角色属于合法复原而原文的「キューが」「設計が」这类非生物主语被转写成人类动作与「擬人化の解消」条款中「道具や概念に感情や意志を持たせた表現を直す。道具やシステムの客観的な動作を述べる非生物主語は残す」的分寸完全对应——本例直的是「谁负责设计/监控」不是把系统的客观行为硬拗成人的行为。2. 比喩动词与口语比喻的具体化references/slop-catalog.md 提供了比喩动词的对照与限制不是机械替换表如「壊れる」只在与整合性文脉明确时才可写成「整合性が失われる」否则用同宽度的「おかしくなる/使えなくなる」「黙って/静かに」要保留「気づかないうちに」的不察觉含义。对照本例原文「重複を弾く」的「弾く」、黑名单版「本流の処理を止めない」的口语化表达在推敲版中都换成了「処理をスキップする」「後続のメッセージの処理を止めない」这类技术性、直陈性的表述同时保留了「不发生阻塞」这一核心含义。3. 文长、读点与装饰的目安SKILL.md「文長と読点の調整」给出编辑目安平均文长 3045 字、1 文 02 个读点references/domains/tech.md 进一步规定技术文章太字 1000 字 12 处、箇条書き 15% 以下为目安且「装飾としての文末コロンやダッシュ記号は除く」。本篇样例是纯地文、无标题无列表无加粗、全文为「です・ます」敬体——它体现了「不要用装饰弥补信息密度」的取向信息靠内容本身传达而不是靠格式强调。README 中「不要な太字や過度な箇条書きを抑え、前後のつながりが自然な地の文へ再構築しました」的表述与此一脉相承。4. 信息不增补SKILL.md「情報の不増補足さない」是最优先约束之一。仔细对比两份原文与推敲版可见推敲版没有新增任何原文不存在的数值如具体重试次数、超时秒数、没有新增失败原因、没有新增「〜が大切です」式的评价句。凡是原文未给明具体参数的地方例如「上限回数」「可視性タイムアウト」的具体值推敲版一律保持原文的未指定状态这正是「胜手に足さない」原则的直接体现——也是把本文档当作「合格样例」而非「增补范例」的原因。五、用仓库工具验证这篇样例yomiyasu 附带了两个 Python 检查工具均只用标准库见 scripts/语料库正是它们与基准数据的验证对象。静态检查对样例运行 scripts/yomiyasu_lint.py可检查 AI 腔词汇比喩动词、过度的太字/箇条書き、絵文字、文末コロン、同一文末连续等以及「太字因标点邻接而可能不被渲染」的bold_not_rendered候选项。其输出为分数与 PASS/指摘例如 AIっぽさ 検査レポート (スコア: 100/100) ・文字数: 1420 | 行数: 85 ・太字頻度: 1,000字あたり 1.4 個 (推奨: 2.0以下 / 警告: 3.0超) ・箇条書き比率: 8.2% (推奨: 15%以下 / 警告: 25%超) ------------------------------------------------------------ [PASS] 設定された検査ルールによる指摘はありません。基准数据语料库的汇总结果保存在 tests/corpus/benchmark_results.json。其中yomiyasu_rewritten组共 48 个文件、平均得分 97.9本篇关联文档01_tech_arch_sonnet_default_bl.md的记录为score: 100、char_count: 574、朴素比喩动词匹配 1 处、lookaround_findings: 0。需要强调的是该 JSON 的生成脚本 scripts/benchmark_corpus.py 的文档字符串也写明检测件数的比率不是精度或误报率score 只表示「按设定规则未发现指摘」不证明文章自然或意义被保持。差分检查推敲前后对比使用 scripts/yomiyasu_diff.py# 原文与推敲后对比指定文书的立场 python3 scripts/yomiyasu_diff.py 元の文.md 書き直した文.md --stance説明 # 只看文末类型分布敬体・常体・立场 python3 scripts/yomiyasu_diff.py --endings 対象文.md该工具点检语词的增减、文末类型与立场勧め/決まり/説明的变化以及太字显示用于人工复核「有没有偷偷加料或删料」。它同样是候选提示而非意义等价性的自动判定——README 与 SKILL.md 都反复强调指摘为零不代表自然机械清零不是目的。六、实战把推敲流程迁移到自己的技术文章结合本篇样例与仓库文档在自己的写作中复现这套流程只需三步第 1 步给出草稿与推敲指令。将 AI 生成或自己起草的日文文本直接粘贴并指定领域この文章を技術記事向けに読みやすくして。 ここに修正したい文章を貼り付け领域可用自然语言「技術記事向けに」或显式写法「ドメイン tech」指定省略时按输入内容自动判定。技术文章对应的领域指针在 references/domains/tech.md全文原则在 SKILL.md比喩与构文目录在 references/slop-catalog.md 与 references/gemini-syntax.md。第 2 步静态检查。把改写结果保存为 Markdown运行python3 scripts/yomiyasu_lint.py article.md # 常规检查 python3 scripts/yomiyasu_lint.py article.md --strict # CI/钩子用的严格模式有指摘返回退出码1 python3 scripts/yomiyasu_lint.py article.md --json # JSON 输出对每个指摘回到原文与上下文判断文脉明确的技术术语不必强行改写承担评价功能的「大事です」、承载主张的否定「AではなくB」都要保留。第 3 步差分复核。用yomiyasu_diff.py对比改写前后确认没有增删原文之外的信息、文末与文书立场勧め/決まり/説明一致。结合本篇样例的教训推敲的价值不在于禁用词列表而在于把「誰が何をどうする」还原清楚——就像这篇队列设计文章最终版本的每个对策都能指出动作主体开发者、消费端、运营人员、独立进程同时一个多余的数字或条件都没有被发明出来。适用限制README 与 SKILL.md 均明确工具针对特定语法做简单检查不是完整 Markdown 渲染器[PASS]不代表自然、也不代表所有环境都能正确显示太字意义是否保持需要人对照原文判定。与其他日文校正技能并用时指示可能冲突输出紊乱时应先临时禁用同类技能。赞分享【免费下载链接】yomiyasuAI生成の日本語を自然な日本語へ推敲するAgent Skill / Agent Skill for Refining AI-Generated Japanese into Natural Japanese项目地址https://gitcode.com/gh_mirrors/yo/yomiyasu点击查看免费下载相关推荐yomiyasu 推敲案例剖析将 AI 生成的异步消息队列可靠性笔记改写为自然日语yomiyasu 推敲案例剖析将 AI 生成的异步消息队列可靠性笔记改写为自然日语 本文导读 本篇以 yomiyasu 仓库测试语料库中的一篇技术类样本yomiyasu 推敲实战解析从同步 HTTP 连锁超时到异步队列三种可靠性设计如何被改写为自然日语yomiyasu 推敲实战解析从同步 HTTP 连锁超时到异步队列三种可靠性设计如何被改写为自然日语 本篇文章以仓库语料中的一篇 AI 生成技术文本非同期用 yomiyasu 推敲 AI 生成的技术文章以异步消息队列容错设计为例的改写实战用 yomiyasu 推敲 AI 生成的技术文章以异步消息队列容错设计为例的改写实战 本文以 yomiyasuよみやす的测试语料 01_tech_arch上一篇DataHub Mode 数据源接入指南从 BI 报告到表级血缘的元数据采集实战下一篇YouTube.js 解析器节点详解GridShelfView 网格货架视图的字段映射与实战使用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考