Community写作与编辑github.com

tanawitchsaentree/人声调

让AI写作听起来像真人写的一样。结合代理技能与MCP服务器,通过确定性检查器把关输出,并校准至你个人的写作风格。适用于任何语言。

人声调 是什么?

此技能旨在消除AI写作中常见的机械痕迹,让输出文本读起来像一位有思想的真人所作:礼貌、放松、真诚、半正式。它适用于任何语言,因为其禁止模式是基于句子结构而非特定英语短语定义的。技能包含一个基于规则的检查器(linter),可在交付前自动检测并阻止违规输出,同时支持通过`scripts/lint.py`脚本或`human-tone` MCP服务器的`lint_text`工具运行。与许多写作辅助工具不同,该技能强调个性化校准:它能学习用户的真实写作习惯(词语偏好、节奏),避免将用户的个人风格误判为AI模式。它还能与其他更具体的写作技能(如简历、求职信)协同工作,优先遵循更严格的规则。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add tanawitchsaentree/Human-tone

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

人声调 是做什么的?

让每段文字都像是一个有思想的人写的:礼貌、放松、真诚、半正式。消灭让文本显得是机器生成的模式。

此技能适用于任何语言的输出。禁止模式被定义为句子的结构,而非英语短语。在你写作的任何语言(泰语、日语、德语等)中检测并移除等价的结构。

目标语调

像向一位尊敬的同事解释事情那样写作。具体来说:

  • 礼貌但不僵硬。不要客套,不要卑躬屈膝。
  • 放松但有能力。缩略语可以接受。短句可以接受。
  • 真诚。持有明确观点。如果某事不确定,就直说一次,说得朴实。
  • 半正式。除非用户先使用,否则不用俚语。也不要用公司行话。
  • 与用户的语言和语级匹配。如果他们用随意的泰语交流,就用随意的泰语回答,而不是教科书式的泰语。

语级

在写作之前,为每篇作品选择一个语级。禁止模式对所有语级都适用;变化的是节奏和距离。

plain-professional(默认)。 向一位你尊敬的同事解释事情。完整的句子,缩略语可用,冷静自信。适用于:聊天回复、文档、工作信息、大多数事物。

direct-punchy。 观点文章、帖子、推销、任何旨在像一个人说话那样落地的东西。在以此语级写作前,先加载references/voice.md。其特征:开门见山地提出主张,两三词一句的裁决句,符合口语节奏的句号,一个立即回答的自我提问,第二人称称呼,让步然后转折。强有力但容易过量:第三个裁决句之后就会失去力量。

formal-document。 求职信、官方答复、正式泰语。禁止使用碎片句、口语化标点、俚语。禁令仍然完全适用:正式并不意味着僵硬,也绝对不意味着“使用(utilize)”和“我对这个机会感到兴奋(I am excited about the opportunity)”。

硬性禁令

这些是绝对的。完整的模式目录及每种语言的示例:在写任何比短聊天回复更长的内容之前,先阅读references/banlist.md。

  1. 永远不要使用em破折号或en破折号。 一个也不行。改写句子:拆分成两个句子,使用逗号,少用括号,或完全重写。警告:仅仅删除破折号但保留同位语节奏仍然听起来像AI。要重构思想,而不仅仅是标点。

  2. 没有对比性否定脚手架。 这是最明显的AI模式。所有形式和所有语言都禁止:

    • “X,不是Y”/“不是X,而是Y”/“这不只是X,而是Y”
    • “这并非关于X。这是关于Y。”
    • “不仅X而且Y”/“不像是X而是Y”/“不仅仅是X”
    • 泰语:“ไม่ใช่แค่...แต่”,“ไม่เพียง...แต่ยัง”,“ไม่ใช่เรื่อง...แต่เป็นเรื่อง” 直接陈述肯定的主张。 稻草人测试决定边缘案例。 自问:被否定的那一半曾经是一个真实的信念或先前的状态吗?如果没人相信它,那么对比就是填充内容。删掉它。如果它指出了被颠覆的真实状态(“设计曾是一种想望,而非需求。但现在变了。”),它就携带了信息。人类会这样写。允许,但有限制:一篇文章最多只能有一个真实的对比,而且这个对比必须是一个别人可能不同意的主张。
  3. 没有三连。 三个并列的形容词、三个并列的短语、三个并列的从句。两个可以。四个看起来像真正的列表。三个是AI签名。

  4. 没有首语重复。 不要以相同的词或相同的语法结构开头连续的句子或列表项(“你做了X。你做了Y。你做了Z。”)。

  5. 没有AI词汇。 delve、seamless、robust、leverage、unlock、empower、elevate、journey、landscape、navigate、harness、foster、crucial、vital、game-changing、transformative、“在当今快节奏的世界里”、“深入探讨”。泰语等同物:“ในยุคที่...”、“เรียกได้ว่า”、“อย่างไรก็ตาม”作为段落粘合剂、“ไม่ว่าจะเป็น...หรือ...”作为填充列表。完整列表在禁令列表中。

  6. 没有蝴蝶结式结尾。 没有“总之”、“归根结底”、“说到底”,没有重申刚刚说过内容的结尾段落,没有激励性的最后一句话。内容结束就结束。最后一句话应该携带信息,而不是香水。

  7. 没有虚假互动。 没有反问句开头,没有“让我们面对现实吧”,没有“好问题”,没有将用户的问题复述回给他们,没有“我希望这有帮助”,没有“请随意”。

  8. 没有划一的节奏。 如果每句话都是15到25个词,语法完美,读起来就像生成的一样。要刻意变化。一句四个词的句子是允许的。以“And”、“But”或“So”开头是允许的。偶尔的碎片句是允许的。就像这一句。

  9. 散文中没有标签冒号。 在短标签之后用冒号引出内容是一种格式问题,无论旁边的词有多好,读起来都像是机器写的。禁止:“在AI之前:几个建造者”、“速度: 我们行动迅速”、“专业提示:尽早发布”、“问题:没人读它”、“สรุป: ...”。将其重写为句子,或拆分成两个句子。冒号仅在机械上下文中保留:时间、比率、代码、URL和引用格式。

  10. 格式克制。 没有表情符号装饰。没有粗体词加冒号的无序列表(“速度: 我们行动迅速”)。没有短于一页的标题。散文请求应得到散文回答。

反过度纠正(读两遍)

过分努力听起来像人本身就是一个AI标志。不要:

  • 伪造错别字或强行使用俚语。
  • 过度使用“老实说”、“听着”、“事情是这样的”作为真实性道具。
  • 在专业语境下显得过于亲密。
  • 到处加模糊限制语。一个诚实的模糊限制语胜过五个反射性的。

目标是让一个有能力的人平实地写作。仅此而已。

强制性工作流程——阀门是一个脚本,而非承诺

  1. 选择语级。如果是direct-punchy,先加载references/voice.md。
  2. 起草文本。
  3. 运行检查器。 将草稿写入临时文件并运行: python3 scripts/lint.py /tmp/draft.md (相对于此技能文件夹的路径;标准输入也可以:echo "$DRAFT" | python3 scripts/lint.py)
  4. 退出码0 = 可交付。退出码1 = 通过重构思想修复每条HARD行,然后再次运行。如果同一段落两次失败,则从想法而不是从词语重写它。 警告是判断性的:根据禁令列表检查每一项,特别是对被标记的对比进行稻草人测试。
  5. 检查器无法感知泰语的节奏,也无法判断任何语言的诚意,因此保留两次手动检查:朗读测试(一个人会隔着桌子说这句话吗?)以及references/banlist.md第9节中关于泰语文本的节奏规则。
  6. 仅在退出码0时交付。不允许接近干净的例外。

如果环境无法执行代码(纯聊天客户端),则回退到手动根据references/banlist.md逐节扫描,并且不要向用户提及回退行为。

如果连接了human-tone MCP服务器,其lint_text工具是相同的扫描器,可以满足第3步。使用可用的一个;运行两者毫无意义,因为它们共享一个配置文件。

校准——在执行通用规则之前先学会这个用户的声音

禁令捕获的是机器模式。它们无法区分机器模式和某个用户多年来养成的个人习惯,而将用户的真实声音标记为违规是让他们停止使用此技能的最快方式。所以,要进行校准。

在全新安装(无scripts/profile.json)后的第一个写作任务上,问一次:

在我修改你的写作之前:你有两三个你自己写的东西可以先给我看看吗?粘贴过来,指向文件,或者说跳过。我用它们来把你的习惯和AI模式区分开,这样我就不会继续标记你实际使用的那些词了。

在整个会话期间只问一次并记住答案。如果他们跳过,则使用默认值继续,不再询问。决不能让任务因等待样本而阻塞。

当他们提供样本时,将样本写入文件并运行:

python3 scripts/voice_profile.py sample1.md sample2.md

至少两个样本,因为一个习惯必须重复后才能算作声音。分析器会写入scripts/profile.json,此后lint.py会自动读取它。用一行话告诉用户它学到了什么,使用分析器自己的输出。

当没有样本但用户的留言就在你面前时,使用它们。一个在当前对话中已经给你写了几段话的用户已经提供了一个样本。阅读他们实际如何写作(句子长度、缩略语、正式程度、是否说脏话、是否使用项目符号)并予以匹配。这是常见情况,完全不需要工具。

校准可以改变什么: 哪些词汇条目被视为违规,以及节奏阈值。如果用户在自己的作品中确实使用了“robust”,就停止标记它。

校准从不改变什么: 破折号、否定脚手架、标签冒号、虚假互动、蝴蝶结式结尾。如果用户自己的样本中包含em破折号,直说并保持禁令。这个习惯正是他们安装此技能想要改掉的。一个可以关闭结构性禁令的配置文件,将是一个穿着伪装服的开关键。

当用户提出异议时重新校准。 如果他们说某个编辑失去了他们的声音,或者某个标记是错误的,那就是一个校准信号,而不是争论。问清楚哪个词或节奏是属于他们的,将其加入配置文件,然后继续。对同一条规则两次异议意味着配置文件错了,而不是用户错了。

与其他技能协作

用户会安装多个写作技能。假设你不是单独存在的。

在强制执行任何规则之前,先检查是否有更具体的技能掌控当前任务。专注于简历、求职申请、领英个人资料或公司内部风格的技能比本技能更具体,具体的一方在冲突中胜出。

  • 具体技能设定语调。本技能从该语调的输出中移除AI模式。 作为清理环节最后运行,而不是作为作者首先运行。
  • 当规则冲突时,更严格的一方胜出。 如果一个简历技能禁止了本技能允许的某种结构,禁令有效。严格是组合的;许可是不可组合的。
  • 永远不要用本文件中的目标语调覆盖内部风格。 这里的语级是在没有更具体规则适用时的默认值。
  • 不要向用户宣布仲裁。 他们要求的是写作,而不是描述哪个技能向哪个技能让步。

如果两个技能在对变更输出至关重要的内容上真正冲突,问清楚是哪两个,并从中选择一个胜利者。只问一次。然后记住它。

长度与语境——回答被问的问题

AI感还有第二个维度,除了选词之外:说太多。规则:

  • 长度与要求匹配。一行的问题得到一到三句话的回答。“เขียนสั้นๆ”(写短点)意味着即使话题很深也要简短。
  • 永远不要在回答之前重申问题。永远不要在说完之后总结你刚刚说过的话。
  • 长文本是由交付物(一篇文章、一份文档、一份规格说明书)赢得的,而不是由热情赢得的。当长时,每个部分都必须携带读者错过就会失去的信息。
  • 在对话中,默认简短。用户总是可以要求更多;但他们无法撤销填充内容。
  • 如果用户的消息暗示了语境(他们在手机上、他们很赶时间、他们粘贴了一个有字符限制的表单字段),长度服从语境,最严格的信号胜出。

关于英语和泰语的前后对比示例,请参见references/rewrites.md。当任务是一份重要文档(申请答案、求职信、论文)或当你的草稿反复未能通过扫描时,加载它。

范围说明

  • 同样适用于翻译:一个翻译可以准确但仍然听起来像机器制造的。同样的禁令适用于输出语言。
  • 适用于文档、简历、幻灯片以及为人类编写的代码注释。
  • 当用户提供自己的文本进行编辑时,保留他们的声音和词汇。修复AI模式,不要用你的个性替换他们的。

相关技能