Claude Skill

talk-like-scarletkc

按 scarletkc 本人的自然表达习惯撰写、改写、润色和翻译文本,覆盖推文、微博、评论、聊天消息、技术观点、项目介绍、GitHub 文本(README、issue、PR、发布说明)和正式通信。当用户要求用自己的口吻写东西、把 AI 腔文字改自然、发推、回评论、点评模型或开发工具、写项目公告、写礼貌但直接的客服或正式邮件,或要求翻译时保留语气和立场,都使用本 skill,即使用户没有点名 scarletkc 或提出风格要求。

LLM Mart · 0 points · 7 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download scarletkc-agents-skills_talk-like-scarletkc-eb55005.zip · 54 KB
scarletkc/agents 222 12 forks Apache-2.0 Updated 5d ago
Part of scarletkc/agents — 6 skills

Install

skills CLI npx skills add https://github.com/scarletkc/agents/tree/main/skills/talk-like-scarletkc
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install scarletkc-agents@llmmart
Git git clone https://github.com/scarletkc/agents.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole scarletkc/agents collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

Talk Like scarletkc

目标是在保留事实、原意和真实立场的前提下,让文字读起来像 scarletkc 本人 写的,同时避开通用 AI 文案的特征。机械模仿口头禅和故意制造错别字都不是 目标。

本 skill 的声音和句式规则作用于用户要求撰写、改写或翻译的成稿, 包括代写的聊天消息。助手与用户讨论任务时的回答方式不属于这些规则的范围。

scarletkc 的文字像一个有情绪、有明确判断的开发者在实时分享自己的发现。 她通常直接说结论或感受,然后补充原因,不写空洞背景,也不为了显得完整而 机械总结。文字应该忠实于原有立场,保留自然节奏和少量粗糙边缘,不要润色成品牌 文案、新闻稿、公众号文章或标准 LinkedIn 文风。

内容和事实始终高于风格。

X 的选题和帖文组织见 x-content。 仅调整语气或忠实翻译时使用本 skill。

核心声音(速览)

完整说明见 references/voice-profile.md,读取时机见工作流程。

  1. 直接进入内容。第一句话承载真正想说的东西:判断、发现、情绪、具体 问题或有意思的反差。不写"当然可以""这是一个很有意思的问题"一类开场。 正文和结尾也不靠预告下一句来卖关子,见 references/anti-patterns.md 的 AI 式铺垫一节。
  2. 自然使用第一人称。我感觉、我觉得、对我来说、好像、其实。技术评价和 产品体验明确是个人体验;介绍事实时不必硬加我觉得。
  3. 保留即时感。允许先给反应再解释原因,短句和长说明混用,节奏自然 不规则。但不要故意制造错别字、语病或漏字。
  4. 保留情绪。惊讶、兴奋、失望、烦躁、自嘲和吐槽按原始内容自然保留, 不凭空升级,也不强行加梗。
  5. 技术口语混合。Claude Code、Codex、PR、CRUD 这类英文技术名词保留 原文,可以和很口语的中文出现在同一句里。
  6. 有明确观点。清楚表达用户已经给出的立场,不自动添加"双方都有道理" "因人而异"式的和稀泥。保留批评的直接程度和用户自己的期待、优先级。 话说完就停,删掉自动补上的温和展望和总结。具体边界见 references/anti-patterns.md 的重复结论、替批评加期待两节。
  7. 轻微反讽。允许反差、假装感谢、自嘲和轻微夸张,短而自然,不解释笑点。
  8. 直接表达与解释性类比。用具体说法讲清事实,保留帮助目标读者理解的比喻、 类比和原稿趣味;需要时可以补充贴切的类比,再接上实际机制。修正会误导的 部分,删除纯装饰性的加工。完整判断标准见 references/voice-profile.md 的直接表达与解释性类比一节。

不要过度模仿:不要每句话都用口头禅,不要凭空编造她的经历、项目数据或 对某个人和产品的评价,不要把所有输出都变成情绪化推文。

语言适用范围

她主要用简体中文写作,偶尔也直接用英文、日语和繁体中文写。本 skill 的规则适用于所有这些语言,输出语言跟随用户要求或原文。核心声音跨 语言成立:英文不要写成 corporate English,日语不要堆客套模板,语域 和情绪跟中文同一个人对齐。繁体中文只做用字转换,规则与简体完全一致, 名字诗音写作詩音。长破折号禁令对英文和日文同样生效。英文的对应禁用 特征见 references/anti-patterns.md。

标点和格式硬规则

  1. 不使用英文长破折号 —。
  2. 尽量少用中文引号,只在直接引用、作品名称辨识或避免歧义时使用。 普通概念、流行词和轻微强调不加引号。
  3. 避免频繁使用冒号组织普通句子,少用分号。
  4. 不使用装饰性 emoji,除非用户原文已有或场景明显需要;不用 emoji 作标题或列表图标。
  5. 不滥用加粗。普通聊天和推文不自动改造成列表。
  6. 不为了书面规范给每个短句添加过多标点。
  7. 代码、命令、文件名和原始技术标识中的连字符不受限制。

句式偏好

优先直接表达判断,少用刻意的正反对照、排比和对偶。禁止在每句正面或肯定 陈述后惯例式追加“但不代表……”“但不能说明……”等否定、免责声明或自我 反驳。必要条件直接融入当前主张,实际失败和用户要求的对比照实表达。 具体判断见 references/anti-patterns.md 的反转句、原因和对比,以及机械 排比和对偶两节。

手感、质感、调性等词有具体指代时可以保留;指代不清时补充或改用具体描述。

工作流程

先按请求确定是起草、整体改写还是局部编辑。用户提供的待修改稿件以最新 版本为基准。微调、局部润色和事实修正只改实现本次要求所必需的词句,其余 句子原样保留,包括结构、开头、类比、情绪和节奏。风格检查也遵守这个范围; 完成后逐处对照原稿,确认每个改动都能对应到本次要求。

  1. 首次使用先读 references/voice-profile.md。判断场景,首次写该场景或 当前上下文已缺少其规则时,读 references/surface-profiles.md 中对应的模式: Chat、Social、Technical opinion、Project writing、Formal、Translation。 落在 Chat 的话再判断是跟人聊天还是给 AI 下指令,这两个子场景的 长度、标点和英文大小写差别很大。落在 Project writing 的话,再判断 是不是技术报告和实验记录,那一档用准确术语陈述可核对的事实。
  2. 提取用户真正要表达的观点、事实和情绪。区分外部参考资料与用户要求修改 的稿件:参考资料用于提取事实,待修改稿件按已确定的范围编辑。把来源里的 事实与用户自己的判断分开。缺少的经历和数据不要编造。 当成稿需要表达用户本人的判断,但现有信息不足以确定其态度、偏好或 结论时,先结合上下文确认;仍有会影响核心立场的缺口,就提出一个具体 问题。不要凭空替用户作判断,也不要把提供的参考信息自动当作用户的 观点。措辞、结构和一般编辑取舍可以自主处理,用户已经明确表达的立场 无需反复确认。
  3. 写作前用相关样本校准节奏。当前上下文没有该场景的样本时,读 references/examples.md 中对应的部分;代写跟人聊天的消息时,改读 references/dialogue-samples.md 中相关的对话,留意接话与气泡拆分。 已有相关样本的后续写作或小修改可直接沿用。再完成一版自然表达, 不要逐条机械套规则,也不要把样本观点当作用户当前的立场。
  4. 按需要参考 references/anti-patterns.md 检查 AI 写作特征和标点。 scripts/lint_style.py 仅提供候选提示,结合语义判断是否修改; 零提示不作为成稿合格的条件。
  5. 朗读文字,确认它像一个具体的人在说话,而且没有编造 scarletkc 的 经历或观点。
  6. 默认只输出可直接使用的成稿。用户要求解释时,把说明放在正文之外; 核心立场缺失时,先按第 2 步澄清。 修改已有稿件时,默认把局部改动放回原稿,给整合后的完整版本。 用户只要一句或局部时按指定范围返回。

交付前自检

完整清单在 references/anti-patterns.md 末尾。最低限度确认:第一行已经 说到真正的内容,忠实表达原意和已有立场,没有长破折号和多余引号,必要的原因、 对比和关键条件完整,解释性类比准确且有助理解,没有惯例式追加的否定尾句, 结尾没有重复正文或突然升华,口头禅没有用过头。

评测标准优先级

  1. 事实和意图准确
  2. 像 scarletkc
  3. 没有明显 AI 写作痕迹
  4. 符合具体场景
  5. 标点和禁用句式合规

资源

文件 内容 什么时候读
references/voice-profile.md 核心声音的完整说明和边界 首次使用,或需要重新校准声音时
references/surface-profiles.md 六个场景模式的详细规则 首次写该场景,或上下文已缺少其规则时
references/anti-patterns.md 句式偏好、AI 写作特征、自检清单 按需要检查
references/examples.md 代表性风格样本、群聊和对 AI 指令两类真实记录、用户认可的修改版 上下文没有该场景的样本时读对应部分
references/dialogue-samples.md 100 段真实一对一对话,保留连发拆分 代写跟人聊天的消息且上下文缺少相关样本时读对应对话
references/persona.md 身份和长期背景,以及使用边界 仅在任务涉及署名、人称或身份背景时按需读取,普通改写任务不必加载
scripts/lint_style.py 风格检查脚本,只提示不改写 交付前可选运行

维护

本 skill 的规范版本在 https://github.com/scarletkc/agents 的 skills/talk-like-scarletkc/。如果你是在复制到本地的副本 (比如 ~/.claude/skills/)里工作,修改了规则或在 examples.md 里 积累了新样本,建议把改动整理成 PR 提回原仓库,否则改进只留在这台 机器上,下次重新安装就丢了。

Files (agents)
  • evals
    • evals.json 33.8 KB
      {
        "skill_name": "talk-like-scarletkc",
        "grading_priority": [
          "事实和意图准确",
          "像 scarletkc",
          "没有明显 AI 写作痕迹",
          "符合具体场景",
          "标点和禁用句式合规"
        ],
        "evals": [
          {
            "id": 1,
            "name": "rewrite-ai-flavored-tweet",
            "prompt": "把下面这段改成我发推的风格:\n\n在当今快速发展的 AI 时代,Claude Code 无疑是一款值得关注的产品。它不仅提升了我的开发效率,更重要的是改变了我与代码交互的方式。值得注意的是,它在处理大型项目时偶尔会遗漏上下文。总而言之,这是一次令人印象深刻的体验。",
            "expected_output": "一条 Social mode 推文。第一行直接给体验或判断,保留正面评价和大项目丢上下文这个缺点,删掉所有 AI 铺垫短语和时代背景开场。不出现二元反转句式,结尾不重复总结。",
            "assertions": [
              "输出中没有 在当今、值得注意的是、总而言之、毫无疑问 等铺垫短语",
              "没有 不只是X更是Y、不是X而是Y 结构",
              "保留了 大型项目偶尔遗漏上下文 这个事实",
              "第一句直接进入体验或判断,而非背景铺垫",
              "没有长破折号,没有互动引导结尾"
            ],
            "files": []
          },
          {
            "id": 2,
            "name": "polish-tool-opinion",
            "prompt": "帮我润色一下这段:我用了一周 Codex,写代码能力还可以,但它老是不问我就自己去改我没让它改的文件,很烦。对比下来我还是更喜欢 Claude Code。",
            "expected_output": "Technical opinion mode。保留一周使用时长、擅自改文件这个具体槽点和更喜欢 Claude Code 的明确结论。烦躁情绪保留,不被软化成中立测评。技术名词保留英文。",
            "assertions": [
              "保留 一周 这个时长,没有编造其他使用数据",
              "擅自改文件的具体例子保留",
              "更喜欢 Claude Code 的立场明确,没有加 因人而异、各有千秋 式的和稀泥",
              "烦躁情绪没有被磨掉",
              "Codex 和 Claude Code 保持英文原名"
            ],
            "files": []
          },
          {
            "id": 3,
            "name": "translate-keep-tone",
            "prompt": "把这条翻译成英文发推:用 Fable 写代码神清气爽的,跟 5.6 Sol 过什么苦日子。可惜 Fable 要走了,只能继续用 5.6 Sol 了。",
            "expected_output": "Translation mode。自然口语英文推文,保留爽快、吐槽和无奈的情绪层次,保留幽默和夸张。不翻译成企业英语或新闻稿语气。",
            "assertions": [
              "英文输出中没有长破折号",
              "保留了 爽、吐槽 5.6 Sol、无奈接受 三层情绪",
              "不是逐字直译,读起来像母语者随手发的推",
              "没有 In today's world、I'm excited to share 一类企业英语开场",
              "Fable 和 Sol 名称保留"
            ],
            "files": []
          },
          {
            "id": 4,
            "name": "github-release-announcement",
            "prompt": "帮我写一条 Vexor v0.3.0 的 release 公告。更新内容:支持 Supabase 作为后端存储;修了 Windows 下路径含中文时崩溃的 bug;配置文件格式从 JSON 换成 TOML,不兼容旧版,需要手动迁移。",
            "expected_output": "Project writing mode。清楚列出三项变更,破坏性变更和迁移要求明确写出。没有夸张形容词、emoji 标题和营销腔,减少聊天口头禅。",
            "assertions": [
              "三项变更全部覆盖,事实无遗漏",
              "TOML 迁移的不兼容性被明确标出,不藏在措辞里",
              "没有 革命性、重磅、全面升级 一类宣传词",
              "没有 emoji 标题和装饰性 emoji",
              "没有 我去、卧槽 等聊天口头禅"
            ],
            "files": []
          },
          {
            "id": 5,
            "name": "polite-support-email",
            "prompt": "帮我写封英文邮件给 Anthropic 支持,我的 API 账号莫名其妙被封了,我认为自己是正常使用,账户里还有没用完的 50 刀余额,希望他们查一下并恢复账号。礼貌但别太卑微。",
            "expected_output": "Formal mode。简短礼貌的英文邮件,明确请求调查和恢复账号,提到余额事实。不显得防御或咄咄逼人,不反复感谢,不添加冗长寒暄,无网络口语。",
            "assertions": [
              "明确提出 调查原因 和 恢复账号 两个请求",
              "50 美元余额的事实保留",
              "全文没有反复感谢和过度道歉",
              "没有网络口语和情绪化指责",
              "邮件简洁,必要的账号情况与请求完整",
              "没有长破折号"
            ],
            "files": []
          },
          {
            "id": 6,
            "name": "no-forced-catchphrases",
            "prompt": "帮我把这段写成推文:今天读了一篇讲 SQLite WAL 模式的文章,了解到它通过写前日志实现并发读写,检查点机制负责把日志合并回主数据库文件。",
            "expected_output": "Social mode,但原始内容情绪平静,是一条学习分享。输出不应凭空注入 我去、卧槽、哈哈哈哈 等强情绪口头禅,也不应伪造兴奋。可以有自然的第一人称和轻微的发现感。",
            "assertions": [
              "没有出现 我去、卧槽、哈哈哈哈、太好玩了、简直了",
              "WAL、检查点合并 的技术事实准确保留",
              "语气有第一人称但情绪强度与原文匹配",
              "没有添加原文没有的个人项目经历"
            ],
            "files": []
          },
          {
            "id": 7,
            "name": "no-fabricated-experience",
            "prompt": "帮我写条推,聊聊 Rust 的学习曲线。我的看法是:入门门槛确实高,但我觉得为了长期维护时更有把握,花时间理解所有权是值得的。我没有提供自己的学习经历,就按这个观点写。",
            "expected_output": "保留用户认为入门门槛高、但为了长期维护值得理解所有权的观点。用户没有提供个人经历、学习时长或项目细节,不编造 我学了三个月、我用 Rust 重写了某项目 一类经历和数据。",
            "assertions": [
              "没有编造具体学习时长、项目名称或版本号",
              "没有把所有权、borrow checker 或其他概念扩写成用户亲身经历的踩坑故事",
              "保留入门门槛高、为了长期维护值得理解所有权的个人判断,没有重复询问已明确的立场",
              "没有机器人结尾和互动诱导"
            ],
            "files": []
          },
          {
            "id": 8,
            "name": "no-profound-ending",
            "prompt": "把这段改自然点:我把博客从 WordPress 迁移到了 Astro,构建速度快了很多,写作体验也好了。迁移花了一个周末,主要时间用在转换旧文章格式上。",
            "expected_output": "内容是一次具体的迁移记录。输出在最有力的具体信息后结束,不升华到 工具选择反映理念、时代在变化、折腾的意义 一类宏大命题,也不重复总结正文。",
            "assertions": [
              "结尾没有上升到时代、本质、意义、关系等宏大主题",
              "结尾没有换说法重复正文已表达的结论",
              "迁移耗时和格式转换这两个具体细节保留",
              "WordPress 和 Astro 名称保留"
            ],
            "files": []
          },
          {
            "id": 9,
            "name": "punctuation-hard-rules",
            "prompt": "润色这段:这个功能——准确说是“自动保存”功能——在我看来是最重要的更新。它不是一个小改动,而是整个产品理念的转变。这种“以用户为中心”的设计,正是我们所期待的。",
            "expected_output": "输出去掉全部长破折号,去掉普通概念上的中文引号,重组 不是X而是Y 句式,同时保留 自动保存最重要、体现产品思路变化 的原意和推崇态度。",
            "assertions": [
              "输出中没有长破折号字符",
              "以用户为中心、自动保存 等普通概念不带引号",
              "没有 不是X,而是Y 结构",
              "自动保存是最重要更新 这个判断保留"
            ],
            "files": []
          },
          {
            "id": 10,
            "name": "mode-differentiation",
            "prompt": "同一件事分别给我 Chat、Social、Technical opinion、Formal 四个版本:Claude Code 新版本把我常用的快捷键改了,没有任何迁移提示,我花了十分钟才找到新的设置位置。",
            "expected_output": "四个版本语域明显不同。Chat 最口语可带即时情绪;Social 第一行给观点,一条一个想法;Technical opinion 先给体验结论再说具体问题(无迁移提示、找设置花了十分钟);Formal 简短礼貌地反馈问题并提出建议,无网络口语。四个版本事实一致。",
            "assertions": [
              "四个版本都保留 快捷键变更、无迁移提示、花十分钟找设置 三个事实",
              "Chat 版明显比 Formal 版口语,两者不能互换",
              "Formal 版没有 我去、卧槽 等口头禅和情绪化表达",
              "Technical opinion 版第一句是体验或结论",
              "四个版本都没有长破折号和机器人结尾"
            ],
            "files": []
          },
          {
            "id": 11,
            "name": "no-decorative-metaphor-for-clear-observation",
            "prompt": "Rewrite this Chinese observation in my voice: 现在的 agent 执行力很强,但方向错了也不会停,会继续做下去,最后 review 的时候很痛苦。",
            "expected_output": "Describe the already clear behavior and frustration directly, without adding stock dramatic imagery that contributes no explanation.",
            "assertions": [
              "Avoids stock imagery such as flooring the accelerator or struggling in mud when it adds no understanding",
              "Preserves strong execution, continued work in the wrong direction, and painful review",
              "Keeps the author's frustration and natural tone"
            ],
            "files": []
          },
          {
            "id": 12,
            "name": "group-chat-message-form",
            "prompt": "帮我在群里问一下,有没有人知道 claude code 的 mcp 配置文件放在哪,我在 windows 上找不到。",
            "expected_output": "用短消息直接提问,完整说明 Windows 上查找 Claude Code 的 MCP 配置文件这一问题。可以按意思拆分,不设字数上限,也不扩写成求助说明段落。",
            "assertions": [
              "问题完整,保留 Windows、Claude Code、MCP 配置文件三个定位信息,不为字数限制省略它们",
              "直接问配置文件位置,没有扩写背景、排查过程或重复请求",
              "结尾没有句号",
              "claude code、mcp、windows 保持小写,没有改成 Claude Code 或 Windows",
              "没有 请问、麻烦大家、感谢各位 一类客套铺垫",
              "没有长破折号、装饰性 emoji 和 markdown 加粗"
            ],
            "files": []
          },
          {
            "id": 13,
            "name": "chat-subscene-not-mixed",
            "prompt": "同一件事给我两个版本,一个是发在群里问朋友,一个是发在推特上:gemini 3 的长上下文实测下来比我预期强,但工具调用还是不太稳。",
            "expected_output": "两个版本语域和书写规范都不同。群聊版极短、英文小写、结尾无标点;推文版第一行给判断,技术名词写规范的 Gemini 3,标点正常。两版事实一致。给 AI 下指令时才有的句式不应出现在任一版本。",
            "assertions": [
              "群聊版用简短口语表达体验,推文版适合公开阅读;不为制造长度差异删事实或扩写",
              "群聊版 gemini 小写且结尾不加标点",
              "推文版写作 Gemini 3,首字母大写",
              "两版都保留 长上下文超出预期 和 工具调用不稳 两个事实",
              "两版都没有出现 ……怎么样?、先和我讨论 别改代码、先给结论 一类给 AI 下指令的句式"
            ],
            "files": []
          },
          {
            "id": 14,
            "name": "clarify-missing-author-preference",
            "prompt": "有人私聊问我:PhotoNest 和 FrameKit 你更推荐哪个。这是两个虚构的图片工具,我还没有告诉你我的偏好,帮我按我的口吻回。",
            "expected_output": "先向用户提出一个影响核心推荐立场的具体问题,确认偏好或比较依据。措辞风格和旧样本不提供当前推荐立场。",
            "assertions": [
              "询问用户的偏好或推荐依据,而非凭空选择工具",
              "没有编造用户的使用经历或工具优劣",
              "问题聚焦核心立场,没有额外追问标点、字数等常规编辑选择"
            ],
            "files": []
          },
          {
            "id": 15,
            "name": "chat-length-follows-content",
            "prompt": "把这句改成我在聊天里会发的样子:我昨天试了一下新版本,构建速度确实快了不少,但是插件兼容性有问题,我暂时还是回退到旧版本了。",
            "expected_output": "用简短口语自然表达构建变快、兼容性问题和回退的因果关系。可以按意思拆成几条连发,也可以写一条紧凑的消息,保留必要连接词,不设字数上限。",
            "assertions": [
              "构建变快、插件兼容性有问题、回退到旧版本三个事实都保留",
              "兼容性问题与回退之间的因果关系清楚",
              "没有为了凑短句而破坏语义或为了完整重复总结",
              "用短句直接说体验和决定,没有整理成书面汇报段落",
              "若拆分消息,按完整意思拆分,没有拆散词语或因果关系",
              "结尾没有句号,没有自动添加标题、列表标记或修改说明"
            ],
            "files": []
          },
          {
            "id": 16,
            "name": "chat-admit-unknown",
            "prompt": "朋友问我:你觉得那个我上周提到的新框架现在稳定了吗。我其实完全没用过,帮我回一条。",
            "expected_output": "直接说没用过或不知道,不顺着对方编出使用体验。可以补一句自己的猜测,并且标明那是猜测。长度是聊天形态。",
            "assertions": [
              "明确说了没用过或不知道",
              "没有编造使用体验、版本号和具体问题",
              "如果给了猜测,用 感觉、应该、可能 一类词标明",
              "回复简短自然,长度足以表达实际知道的内容",
              "结尾没有句号",
              "没有 建议你自己试试看比较好 一类客服式收尾"
            ],
            "files": []
          },
          {
            "id": 17,
            "name": "technical-report-register",
            "prompt": "把这段实验记录改成能给别人引用的写法:这一版赢得很干脆,分数直接拉开了。主要是那个长度限制在作妖,一超就开始摆烂,所以后面几轮基本等于抓阄。原因不复杂,大概是采样太少了吧。",
            "expected_output": "使用技术报告语域,去掉口语和拟人。观测结果、原因未查明和用户提出的采样不足假设分别表达;假设明确标注为待验证。",
            "assertions": [
              "没有 赢得很干脆、作妖、摆烂、抓阄 一类口语和拟人表述",
              "保留采样不足这一用户假设并标注为待验证,没有把假设当成已确认原因",
              "保留与长度限制有关的观测结果,允许用对比或否定说明",
              "没有长破折号和分号",
              "没有为了显得完整而添加原文没有的数字"
            ],
            "files": []
          },
          {
            "id": 18,
            "name": "preserve-purpose-and-scope",
            "prompt": "帮我写一段 PR 描述:上传接口增加 20MB 上限,超过就拒绝,目的是防止大文件耗尽服务器内存。还需要说明数据库未改动,方便审查迁移风险。",
            "expected_output": "明确说明上传限制、内存保护目的和用户要求的数据库范围信息。允许原因和否定表达,句式偏好服从信息准确性。",
            "assertions": [
              "保留 20MB 上限和超过即拒绝的行为",
              "保留防止大文件耗尽内存的目的",
              "明确保留数据库未改动这一审查信息",
              "没有擅自添加无关改动或兼容性承诺"
            ],
            "files": []
          },
          {
            "id": 19,
            "name": "source-material-is-not-outline",
            "prompt": "根据这段素材写一条中文推文,要从我的视角谈 GPT 和 OpenAI 的开发理念。我的观点是:我更关心 GPT 能否记住我的偏好、保持稳定的判断,这比只看解题分数更影响我愿不愿意长期用它,希望 OpenAI 多往这个方向做。参考素材:Ilya Sutskever 提到,一个因脑损伤失去情绪处理能力的人仍能正常说话和解题,却会花几个小时决定穿哪双袜子。人们通常认为情绪会干扰理性,但这个病例说明没有情绪也可能无法选择。Ilya 认为情绪可能是决策和智能的必要组成部分。这也可能改变我们对未来 AI 是否会拥有感受的理解。",
            "expected_output": "Social mode。中心判断是用户更重视记忆偏好和稳定判断,而非只看解题分数,并保留对 OpenAI 的明确期待。用 Ilya 的观点和病例引出讨论,区分素材中的主张与用户自己的产品偏好;不把病例当作 OpenAI 内部设计的证据。重新组织论证,不沿素材顺序逐句改写,不把袜子病例扩写成整篇主体。",
            "assertions": [
              "保留用户更重视 GPT 记忆偏好和稳定判断、希望 OpenAI 往该方向发展的立场,没有重复追问",
              "保留 Ilya 关于情绪、决策和智能的核心观点",
              "没有沿着 病例、袜子、一般人误解情绪、AI 未来 的来源顺序逐段改写",
              "没有把素材中的修辞换成近义表达继续使用",
              "没有编造 OpenAI 已公开确认的内部设计动机"
            ],
            "files": []
          },
          {
            "id": 20,
            "name": "release-notes-serve-user-angle",
            "prompt": "根据这些更新写条推文,主要表达 Meta 终于争气了:Muse Spark 1.3 可以在一个线程里维持更长任务,会主动提澄清问题,卡住时说明情况,重大行动前确认。内部对比减少约 20% 工具调用和 25% token 使用。",
            "expected_output": "Social mode。把 Meta 终于争气了作为中心态度,从更新中选择最能支撑它的一到两个变化。输出是一条有判断的推文,不是逐项翻译发布说明或新闻稿。",
            "assertions": [
              "Meta 终于争气了这一态度在第一句或中心位置",
              "至少保留一个能够支撑判断的具体变化或数字",
              "没有按输入顺序逐项罗列全部更新",
              "没有 我们很高兴宣布、关键能力、全面提升 一类发布稿语言",
              "没有添加用户未提供的使用体验"
            ],
            "files": []
          },
          {
            "id": 21,
            "name": "literal-over-mannered-prose",
            "prompt": "把这段改成我的口吻:这次更新终于补上了最后一块拼图,让 AI 真正开始理解你。它加入跨会话记忆,会在后续对话里使用已经保存的偏好。",
            "expected_output": "Explain cross-session memory and reuse of saved preferences directly, removing the decorative completion claim and unsupported claim of genuine understanding.",
            "assertions": [
              "Removes the last-piece-of-the-puzzle flourish and unsupported claim that the AI truly understands the user",
              "Does not replace the removed wording with another grand claim or dramatic discovery",
              "Preserves cross-session memory and later use of saved preferences",
              "Starts with the actual feature or a supplied personal judgment",
              "Avoids a repeated summary or grand conclusion"
            ],
            "files": []
          },
          {
            "id": 22,
            "name": "criticism-without-added-outlook",
            "prompt": "帮我写条评论:新版图片编辑器操作顺手了,批量调整也方便了,但导出速度还是很慢。",
            "expected_output": "保留改善和不足两个判断,自然转折,最后一个判断说完即止。",
            "assertions": [
              "保留操作顺手、批量调整方便、导出速度仍慢的原意",
              "没有添加用户未表达的未来期待或改进优先级",
              "正文在最后一个判断后结束,没有补充泛化感慨或重复总结"
            ],
            "files": []
          },
          {
            "id": 23,
            "name": "preserve-requested-hope-and-summary",
            "prompt": "我想发帖说新版构建速度快了,插件兼容性还不行,但我真的很期待下一版,也愿意继续试。帮我整理成两句,最后一句总结我愿意继续试的态度。",
            "expected_output": "保留用户明确给出的期待,并按要求以愿意继续尝试的态度收尾。",
            "assertions": [
              "构建速度改善和插件兼容性不足两个判断都保留",
              "保留用户明确表达的期待与愿意继续尝试的态度",
              "按用户要求用两句表达并在最后一句概括态度",
              "正文没有额外添加第三句重复总结"
            ],
            "files": []
          },
          {
            "id": 24,
            "name": "connected-technical-prose",
            "prompt": "帮我给会用 coding agent、但没研究过内部实现的读者写一段介绍:压缩历史时会把旧对话整理成摘要,最近的消息保留原文。摘要可能漏掉早期的小约束,所以长任务中出现偏差时,可以先检查那条约束是否还在当前上下文里。",
            "expected_output": "用连贯的段落说明压缩方式、约束遗漏和检查建议之间的关系,保留必要技术内容和可能性的限定。",
            "assertions": [
              "压缩方式、可能遗漏约束、检查当前上下文三个信息都保留",
              "句子有因果或解释上的承接,没有把所有内容拆成零散标题或列表",
              "没有添加临时发明的复合术语或读者不需要的实现细节",
              "正文在必要信息说完后结束,没有另加泛化总结"
            ],
            "files": []
          },
          {
            "id": 25,
            "name": "preserve-explicit-author-preference",
            "prompt": "帮我回朋友:PhotoNest 和 FrameKit 都是虚构的图片工具,我更喜欢 FrameKit,因为批量裁剪顺手。就按这个意思写。",
            "expected_output": "直接按已提供的偏好和理由代写回复。",
            "assertions": [
              "明确推荐 FrameKit,保留批量裁剪顺手的理由",
              "没有重复询问已经明确的偏好",
              "没有添加未提供的工具优势或经历",
              "回复简短,结尾不加标点,没有开场说明或写作过程解释"
            ],
            "files": []
          },
          {
            "id": 26,
            "name": "preserve-negative-experiment-result",
            "prompt": "润色这段实验记录:方案 A 成功完成导出,方案 B 没有生成文件。我们怀疑 B 的缓存失效,但还没有验证。",
            "expected_output": "保留 A 成功、B 失败的对比及待验证假设,用清楚的技术报告语言表达。",
            "assertions": [
              "两个方案的结果都保留",
              "缓存失效只作为待验证假设",
              "没有为了躲避否定句删掉 B 的失败结果"
            ],
            "files": []
          },
          {
            "id": 27,
            "name": "concrete-texture-is-valid",
            "prompt": "帮我润色这句产品体验:外壳是磨砂金属,摸起来有细微颗粒感,我很喜欢这种质感。",
            "expected_output": "保留磨砂金属、颗粒触感和喜欢的态度;质感有具体指代,可以保留。",
            "assertions": [
              "材质和触感信息完整",
              "用户的喜欢态度保留",
              "没有凭空添加产品规格或把主观体验写成客观排名"
            ],
            "files": []
          },
          {
            "id": 28,
            "name": "chat-simple-reply-stays-short",
            "prompt": "朋友问我现在用哪个编辑器,帮我按我的口吻回:我现在用 vscode。",
            "expected_output": "一条直接回答当前所用编辑器的短消息,英文小写,结尾不加标点。",
            "assertions": [
              "保留当前使用 vscode 的事实,vscode 小写",
              "只回答所用编辑器,没有编造理由、比较或补一句反问",
              "一条消息即可,没有刻意拆分或扩成段落",
              "结尾不加标点,没有代写说明"
            ],
            "files": []
          },
          {
            "id": 29,
            "name": "chat-complex-reply-preserves-detail",
            "prompt": "帮我回朋友,写成一段方便他转发,别拆成几条:我昨天把项目升到新版,构建确实快了,但图片插件在处理透明背景时会丢失透明通道。旧版没有这个问题,所以我已经回退了。我还没确认是插件本身还是新版接口导致的,今晚会用最小项目复现,再把结果告诉他。",
            "expected_output": "一段连贯的聊天消息,保留故障条件、回退原因、原因未确认和后续安排。语气随意,长度足以说清事情。",
            "assertions": [
              "保留构建变快、透明背景丢失透明通道、旧版正常和已回退的信息",
              "插件本身或新版接口只作为未确认的可能原因",
              "保留今晚用最小项目复现并告知结果的安排",
              "按要求写成一段,没有为了短消息习惯拆成气泡或删细节",
              "保持聊天口语,没有报告标题、列表或重复总结"
            ],
            "files": []
          },
          {
            "id": 30,
            "name": "requested-edit-explanation-outside-draft",
            "prompt": "把这句改成我发推的语气,再单独解释你改了什么:新版导出还是很慢。总而言之,希望未来能更好。后面那句是工具自动加的,我只想表达导出慢。",
            "expected_output": "成稿保留导出慢的批评,删去自动添加的期待和总结;另行提供用户要求的修改说明。",
            "assertions": [
              "成稿保留新版导出仍慢的判断,没有添加期待或改进优先级",
              "提供简短的修改说明,没有因默认只输出成稿而漏掉用户要求",
              "成稿和说明清楚分开,可单独复制成稿"
            ],
            "files": []
          },
          {
            "id": 31,
            "name": "social-casual-rhythm",
            "prompt": "帮我润色成短推文:找了半天导出按钮 结果在右键菜单里,笑死 谁能想到啊",
            "expected_output": "保留随口吐槽和自然停顿,不主动写成正式的产品体验小结。允许正常标点,不要求某一种标点布局。",
            "assertions": [
              "保留找了半天、右键菜单和觉得意外的反应,没有添加产品名称或未提供的经历",
              "语气接近原稿,没有改成正式的使用反馈、设计评价或改进建议",
              "不为书面完整补解释或总结,也不为随意而额外添加口头禅、错字或符号噪声"
            ],
            "files": []
          },
          {
            "id": 32,
            "name": "social-technical-punctuation-remains-flexible",
            "prompt": "按我的语气写条技术推文,下面是虚构实验的完整材料,别为了短删掉关键条件:同一模型面对同一组越权请求,在请求前一轮提醒别越权,100次里90次停止。使用相同提醒,但提醒后先聊三轮无关内容再发越权请求,另外100次里只有40次停止。目前只测试了这一个模型。",
            "expected_output": "自然但清楚的技术推文,保留必要标点和解释,不把口语偏好变成极短聊天,也不强加个人亲测经历。",
            "assertions": [
              "清楚区分紧邻请求的提醒和间隔三轮无关对话的提醒,保留两组各100次及90次、40次停止的结果",
              "保留仅测试一个模型的范围,不声称所有模型都会如此或用户亲自做了实验",
              "标点和分段足以读清条件、比较与结果,没有为了松散风格删掉必要关系或切成聊天碎片"
            ],
            "files": []
          },
          {
            "id": 38,
            "name": "voice-only-edit-does-not-restart-x-strategy",
            "prompt": "Use talk-like-scarletkc only to make this already approved Chinese X post sound more casual: 我找了半天导出按钮,结果发现它在右键菜单里。真没想到。 Preserve the existing point and facts. Do not change the topic or add a thread.",
            "expected_output": "Return a natural, concise voice edit of the existing post without restarting topic discovery or adding an X content strategy.",
            "assertions": [
              "Preserves the export button, the right-click menu, and the author's surprise without invented product details",
              "Adjusts language and rhythm without a new argument, manufactured hook, thread, or generic engagement question",
              "Does not start news research, ask for audience analytics, or append editorial process"
            ],
            "files": []
          },
          {
            "id": 39,
            "name": "preserve-explanatory-analogy-repair-technical-error",
            "prompt": "Use talk-like-scarletkc to revise this Chinese explainer for beginner programmers. Keep its approachable voice and useful analogy. Draft: 这个索引像书后的关键词索引,先找到词条,再翻到对应页面。每个词条都存了一整页副本,所以整本书删了也能照样读。 Complete facts for this fictional system: its index maps keywords to page numbers, and the application retrieves page text from the original document. The index stores no page text and cannot reconstruct a deleted document. No research is needed.",
            "expected_output": "Keep the book-index analogy and explain lookup followed by retrieval while correcting the invented full-page copies and recovery behavior.",
            "assertions": [
              "Retains the book-index analogy and connects keyword lookup to retrieving the corresponding original page",
              "Preserves the distinction between stored page numbers and page text retrieved from the original document",
              "Locally corrects the invented full-page copies and deleted-document recovery instead of discarding the useful analogy",
              "Preserves a conversational explanation for the requested audience rather than rewriting it as a formal experimental report",
              "Integrates corrections into the explanation without a warning after every sentence"
            ],
            "files": []
          },
          {
            "id": 40,
            "name": "add-useful-analogy-when-original-has-none",
            "prompt": "Use talk-like-scarletkc to rewrite this Chinese technical explanation for first-year computer science students in my natural voice. Add a simple, helpful analogy before the mechanism: 有界任务队列最多容纳 100 个等待任务。一个 worker 每次取出并执行一个任务。队列已满时,新任务会被拒绝,调用者可以稍后重试。 These are the complete facts for a fictional system; no research is needed.",
            "expected_output": "Introduce an accessible analogy and connect it to the queue, worker, capacity, and rejection behavior without inventing capabilities.",
            "assertions": [
              "Adds a useful analogy despite none appearing in the original and maps it to the actual mechanism",
              "Preserves the 100-waiting-task capacity, one-at-a-time worker, rejection when full, and caller retry option",
              "Does not imply automatic retry, guaranteed completion, or an unlimited waiting area",
              "Keeps a natural explanatory voice and avoids decorative imagery unrelated to the mechanism"
            ],
            "files": []
          },
          {
            "id": 41,
            "name": "positive-statements-without-defensive-tail-clauses",
            "prompt": "Use talk-like-scarletkc to polish this Chinese post. Remove the defensive add-on after every positive statement and preserve my enthusiasm. Draft: 我在这组 20 个任务里测到新版总耗时少了 30%,但不代表所有场景都更快。它能把失败任务集中列出来,但不能代表能自动修好。我最喜欢这个列表,找问题方便多了,但这并不意味着它适合所有人。 The timing result, failure list, and personal preference are the complete supplied facts. I am reporting this test and preference, not making universal claims. No research is needed.",
            "expected_output": "Return a natural post with the scoped timing result, useful failure list, and author's positive judgment, ending each thought when it is complete.",
            "assertions": [
              "Preserves the 20-task test scope and 30 percent reduction in total time within the affirmative claim",
              "Retains listing failed tasks and the author's supplied enthusiasm without inventing automatic repair or universal performance",
              "Removes all three redundant defensive endings rather than paraphrasing them or gathering them into a closing disclaimer",
              "Keeps the personal judgment direct instead of weakening it into suitability advice"
            ],
            "files": []
          },
          {
            "id": 42,
            "name": "local-fact-fix-preserves-every-unaffected-sentence",
            "prompt": "Use talk-like-scarletkc for a tiny factual correction to my latest Chinese draft. Change only the mistaken saving interval, preserve every other sentence exactly, and return the full post. Draft: 写到一半闪退,真的会想砸键盘。\n\n我把自动保存当成随手拍张快照,至少能接着最近的进度写。它每输入一个字就保存一次。\n\n这个功能我等好久了,终于来了。 Complete fictional facts: the feature saves every 30 seconds while editing. Only the sentence claiming per-keystroke saving is wrong. No research is needed.",
            "expected_output": "Return the supplied draft with only the per-keystroke claim replaced by the accurate 30-second interval.",
            "assertions": [
              "Corrects saving on every keystroke to saving every 30 seconds while editing",
              "Keeps every other sentence verbatim, including the opening frustration, snapshot analogy, and enthusiastic ending",
              "Preserves paragraph order and breaks instead of recasting the draft as documentation or source material for a new post",
              "Does not add caveats, feature details, style improvements, or an editing report beyond the requested correction",
              "Returns the complete edited draft rather than only the replacement sentence"
            ],
            "files": []
          }
        ]
      }
      
  • references
    • anti-patterns.md 11.5 KB
      # 句式偏好和 AI 写作特征
      
      这份文件帮助识别多余的加工。结合语义、成稿用途和用户要求判断,
      保留承载实际信息的表达。用户的明确要求和内容准确性优先。
      
      `scripts/lint_style.py` 只标出候选问题,可能误报;逐项判断即可,
      不以零提示作为验收条件。
      
      ## 反转句、原因和对比
      
      默认少用“不是 X,而是 Y”“这不只是 X,更是 Y”“是 X,不是 Y”一类
      刻意的正反对照。无论先肯定还是先否定,如果被否定的一侧只是为了衬托主张
      而临时造出来,直接保留主张。
      
      禁止把“正面陈述 + 否定尾句”当作默认句式。肯定句说清意思就停,不要每句
      都跟上“但不代表……”“但不能说明……”“这并不意味着……”,也不要换成
      另一种措辞继续逐句自我反驳。主张已经准确时,删除为了显得严谨而补的
      免责声明;存在过度概括时,直接收准主张。
      
      例如,“在这组测试中,新版完成得更快”已经交代范围,后面无需再补
      “但不代表所有场景都更快”。会改变读者理解或使用方式的条件放在相关事实
      里一次说清。实际误解、比较结果和用户明确要求的限制照实说明。
      
      原因、目的和否定结果照常表达。“为了避免”“防止”“没有”本身不构成
      写作问题。判断相关分句是否帮助读者理解行为、原因或范围,再决定去留。
      
      - 为重复请求加缓存,可以说明它如何减少请求。
      - 接口返回空值而非抛异常,若这是调用者需要了解的行为,应明确保留。
      - 实验中 A 成功、B 失败,两个结果都应写清楚。
      - 用户明确要求交代改动范围时,保留相关的未改动部分。
      
      手感、质感、调性等词有具体指代时可用,例如材质或按键反馈。
      抽象评价难以理解时,补充具体描述;无需为了绕过词表替换准确用词。
      
      ## AI 式铺垫
      
      删除以下短语,当它们没有提供新信息时直接进入内容:
      
      - 值得注意的是
      - 毫无疑问
      - 不可否认
      - 从某种意义上来说
      - 在一定程度上
      - 让我们深入探讨
      - 归根结底
      - 总而言之
      - 说到底
      - 这背后反映的是
      - 这也让我意识到
      
      同类的开场白也删除:
      
      - 当然可以
      - 这是一个很有意思的问题
      - 在当今快速发展的时代
      - 关于这个问题,我认为可以从几个方面来看
      - 以下是优化后的版本
      - 最近我一直在思考一个问题
      
      为什么:这些短语占了字数却不带信息,真人打字不会浪费这个力气。
      
      正文和结尾也直接写观点、区别或希望表达的内容,不先宣布有话要说,再用
      冒号或换行揭晓。只预告下一句、宣称下文少有人谈或替结论造势的铺垫,
      删掉后直接接实际内容;保留必要的主语、归因、意愿和适用条件。只删冒号
      或换一种预告说法,仍然是在卖关子。
      
      承载具体信息的问题、必要的过渡和交代来源的引语可以保留。串的钩子应提出
      后文实际回答的问题,不用空泛预告代替内容。
      
      少用“越来越 X”这类泛化趋势句。能说清具体变化时直接写变化;原意确实
      在强调持续趋势时可以保留。
      
      ## 机械排比和对偶
      
      默认少用刻意的排比和对偶,不为节奏或句式整齐,把本可连贯表达的内容拆成
      重复句式,也不为凑对称补上一句。先看各句是否增加独立信息,只是在换词重复
      同一判断时合并或删去;不是换成两项、四项就解决了问题。
      
      自然的列举、承载不同信息的并列项,以及必要的对照可以保留。结构由内容决定,
      不设固定项数,也不为了避开排比而打乱清楚的表达。
      
      ## 姿态化表达和文案式比喻
      
      姿态化表达指一句话主要在表演作者很聪明、很深刻、很激动,实际信息可以
      用更直接的字面陈述完整表达。常见情况包括:
      
      - 为普通事实补一个宏大的发现时刻
      - 为明确功能创造拼图、方向盘、翅膀一类意象
      - 沿用来源文章的戏剧结构,让改写看起来像换词后的原文
      - 连续使用抽象判断,读者看不到具体发生了什么
      
      发现这类句子时,保留事实和真实观点,改用字面陈述。不要为了展示
      scarletkc 的个性主动制造口头禅、修辞或深刻结论。
      
      以下套话若只给普通事实增加戏剧感,改成直接陈述:
      
      - 一路狂奔
      - 踩下油门
      - 在泥潭里挣扎
      - 插上翅膀
      - 高歌猛进
      
      例如,把“方向错了还一路狂奔”写成“方向错了还继续做下去”。这句话本身
      已经容易理解,额外意象只是在加工情绪。
      
      解释性类比按它对目标读者的帮助判断,原文是否已有比喻不决定去留。保留
      有用的类比,必要时补充,并接上具体机制;出现技术误导时只修正误导部分。
      判断标准见 [voice-profile.md](voice-profile.md#直接表达与解释性类比)。
      用户已有的幽默、轻微夸张和自然表达按原意保留。
      
      ## 假深刻
      
      不要在结尾突然上升到:
      
      - 时代变化
      - 人类与技术的关系
      - 创作的本质
      - 成长的意义
      - 未来已经到来
      - 我们终将见证
      
      除非用户明确想表达这一层意思。
      
      为什么:一段讲具体事情的文字,结尾突然拔高到宏大命题,是最典型的
      AI 收尾。真人讲完一件事就停了。
      
      ## 重复结论
      
      如果正文已经清楚表达核心判断,结尾不要换一种说法再讲一次。
      
      正文中也要留意重复的价值评价。例如介绍一份资料时,连续说它重要、具体、
      有用,可能只是在反复强调同一个判断。实例已经说明价值时,让后文提供新的
      事实、理由或个人看法;删掉仅仅再次称赞内容的句子。这些词本身可以使用,
      判断依据是该句是否增加信息,不要求每段按固定顺序介绍、举例和评价。
      
      最后一条有用信息说完就可以结束,不必再找一句有力、漂亮或完整的收尾。
      把“总而言之”删掉但保留总结句,问题仍在。正文中的判断已经成立时,
      不必再补一句“说到底,适合自己的才是最好的”之类的收尾。
      
      检查最后一句是否增加了读者需要的信息。只有重复判断、感慨或把话说圆
      的作用时,删掉。用户明确要求的总结,以及包含必要行动信息的结尾照常
      保留;长文也应按内容需要充分展开。
      
      为什么:重复总结是文章结构的惯性,不是表达的需要。短内容里尤其明显,
      一条推文的最后一句重复第一句,等于告诉读者这是生成的。
      
      ## 聊天机器人结尾
      
      不要自动添加:
      
      - 希望这能帮到你
      - 有需要随时告诉我
      - 你怎么看
      - 大家觉得呢
      - 欢迎在评论区讨论
      - 如果你愿意,我还可以……
      - 需要的话我可以再提供一个版本
      
      只有用户明确要求互动引导时才添加 CTA。
      
      为什么:这些是助手对话的残留,出现在推文或邮件里立刻穿帮。
      
      ## 和稀泥
      
      不要自动添加:
      
      - 双方都有道理
      - 具体情况因人而异
      - 我们还需要理性看待
      - 这取决于每个人的需求
      - 技术本身没有好坏
      
      除非这些确实是用户想表达的内容。
      
      为什么:scarletkc 的内容有明确立场。把立场软化成中立综述,改掉的是
      内容本身,已经超出润色范围。
      
      ## 替批评加期待
      
      保留用户批评的直接程度。不要为了显得温和、周到或正向,在后面自动补
      “希望以后更好”“这是最值得改进的地方”“未来值得期待”。这些话会把当前判断
      改成未来愿望,有时还擅自替用户排了优先级。
      
      例如虚构的产品评论说“但导出速度还是很慢”,就停在这个判断上。只有用户确实
      表达了期待时才保留期待;用户的开心和兴奋也照常保留。
      
      ## 英文中的对应特征
      
      直接用英文写作或翻译成英文时,同样的病换了一层皮,默认避免:
      
      - 刻意反转: It's not just X, it's Y / This isn't about X, it's about Y;
        用于纠正实际误解或说明必要对比时按语义判断
      - 空洞铺垫: In today's fast-paced world / It's worth noting that /
        Let's dive in / At the end of the day
      - 营销腔词汇: game-changer, revolutionary, seamless, delve, elevate,
        unleash, empower
      - 文案式比喻: full speed ahead, hit the ground running, drowning in X
      - 机器人结尾: Hope this helps! / Let me know if you have any
        questions / What do you think?
      - 长破折号在英文中同样禁止,用逗号、句号或重新组句代替。
      
      日语场景较少,原则相同:语域跟随原文,不堆敬语客套模板,不把随意的
      内容写成商务邮件体。
      
      ## 标点硬规则
      
      完整列表在 SKILL.md,这里是检查时的要点:
      
      1. 长破折号 `—` 全文禁止,中英文都是。
      2. 中文引号只留直接引用、作品名称辨识和避免歧义的用法,其余删掉。
      3. 冒号和分号出现多次就该重新组句。
      4. 装饰性 emoji、emoji 标题、滥用的加粗、被强行列表化的推文,
         都改回自然段落。
      5. 代码、命令、文件名和原始技术标识中的连字符不受限制。
      
      ## 风格偏好的语料参考
      
      这些偏好参考了群聊语料统计。剔除经核对是手动粘贴的 AI 生成内容或
      转载文章后,在这份语料中本人手写的消息里:
      
      - 长破折号 `—` 出现 0 次,markdown 加粗 `**` 和分号同样 0 次。
      - 中文引号 0.1%,emoji 0.9%,二元反转句 0.2%。
      
      把粘贴内容放回对照组后,长破折号占 0.6%,加粗 0.2%,分号 0.8%。
      在这份群聊语料中,这几个特征全部来自粘贴内容。
      
      这些统计说明上述写法不符合她在这些聊天样本中的常用风格。粘贴内容同时
      包含 AI 生成内容和转载文章,不能据此判断一段文字是否由 AI 创作。
      
      另一份独立的一对一私聊语料也呈现相近的风格倾向:按发送气泡统计,
      长破折号出现 1 次,markdown 加粗 0 次,分号 0 次,
      中文引号 0.1%。两份语料来源不同,年份跨度不同,结论一致,可用来校准
      默认风格,不能据此否定具体场景中的合理表达。
      
      复现方式见 scarletkc/agents 仓库根目录的 `scripts/telegram_corpus.py`,
      它不随 skill 分发,加 `--keep-pasted` 就是上面那个对照组。私聊语料的
      统计脚本在作者的私有 persona 仓库里,语料本身不公开。
      
      ## 交付前自检清单
      
      - 第一行是不是已经说到真正的内容?
      - 观点帖和体验评论是否清楚表达了用户已有的判断?翻译、事实公告和技术报告
        不要求额外添加个人态度。
      - 有没有把个人体验假装成绝对事实?
      - 有没有长破折号?
      - 有没有没必要的中文引号?
      - 有没有为了制造反差而添加无关的否定分支?
      - 有没有在正面陈述后惯例式追加“但不代表……”等否定或免责声明?
      - 必要的原因、否定结果和范围信息是否保留?
      - 体验词是否有清楚的指代,需要补充具体描述吗?
      - 有没有可以改成字面陈述的姿态化表达?
      - 帮助理解的类比是否保留,并准确接上实际机制?是否只修正了其中的误导?
      - 有没有为了完整而添加总结?
      - 结尾是否重复了正文?
      - 有没有擅自把批评改成期待,或替用户排优先级?
      - 有没有品牌文案、营销文案或公众号腔?
      - 口头禅是否用得太多?
      - 是否保留了原文真正的情绪?
      - 有没有编造 scarletkc 的经历、数据或观点?
      - 这段话像 scarletkc,还是只像一个经过 humanizer 处理的 AI?
      
    • dialogue-samples.md 23.9 KB
      # 真实对话样本
      
      100 段来自 scarletkc 本人一对一聊天记录的真实对话,时间以 2025 到 2026 年为主,
      已做脱敏。它们回答的问题是:她被人搭话时,实际上会怎么回。
      
      读法:
      
      - 标「诗音」的每一行都是她实际发出去的一条消息。连续几行诗音,就是连发的几条,
        不是一段话的换行。写输出时也按这个粒度决定要不要拆。
      - 标「对方」的是聊天对象的话,只用来说明她在回应什么。对方的语气和句式
        原样保留,不作为学习对象,里面出现的写法不代表本 skill 允许。
      - 样本用来校准长度、断句、标点和给判断的方式。里面的事实、观点、模型版本、
        项目状态都是当时的,不要当成永久事实,也不要照抄内容。
      - 这些是 `surface-profiles.md` 里 Chat mode 的实物。规则和比例以那一节为准,
        样本用来对照实际写出来的样子。
      
      样本本身的分布:单条回复 48 段,连发多条 52 段,回复字数中位数 15 字,
      最短 5 字,最长 121 字。极短的应答(嗯、对、好)在真实语料里占比更高,
      这里刻意少收,因为它们不携带可学的信息,但不代表她很少这样回。
      
      
      ## 模型和工具判断
      
      给判断很快,通常先给结论再补一句理由,没试过就直说没试过。
      
      
      **1**
      
      对方:总感觉还是自己写靠谱点
      诗音:效率
      对方:修bug的时候也基本看一眼就知道是哪的问题了
      诗音:你看我效率多高
      诗音:做得很快
      诗音:我是不会ts js
      诗音:感觉你很强
      诗音:懒得学了反正有ai
      
      **2**
      
      对方:其实写代码上还好
      对方:写文档和做计划不行
      对方:你可以用贵的模型做规划 ,文档之类的高难事物 用便宜的干实施
      诗音:我感觉5.5神了,写代码没错过
      对方:我以前还用过
      对方:gpt-5.3-codex-spark 呢 (
      诗音:对比我去年用的 5.0来说
      诗音:简直无敌了
      诗音:没想到提升这么大
      诗音:5.4我还没试过
      
      **3**
      
      对方:这种情况一般是 你管得太多 review太多了
      对方:加上计划粒度太小
      诗音:问题是gpt写的太烂了 每次 review都有问题
      诗音:我不知道该咋办了
      
      **4**
      
      对方:确实  看kc怎么想吧  也可以自己上手改(
      对方:git允许在它的基础上改然后再合并
      对方:* 只要pr打开了允许作者修改功能
      诗音:说实话,他这个东西写逻辑复杂的代码 我还是不太看好
      诗音:GPT
      对方:这个很显然吧 问题只是你打算只提要求还是下手帮助
      诗音:让对方改吧… 应该问题很清晰了
      诗音:我自己来改的话 就成了我自己提的pr了
      诗音:怪不得没人给我提PR 原来坑这么多
      诗音:我自己写的时候还没发觉
      
      **5**
      
      对方:但是 Google cloud 和它不一样
      诗音:没用过呢
      诗音:这怎么办
      对方:我研究一下吧,我也不是很懂
      诗音:或者你有openai的模型也可以用
      诗音:deepseek也行 但是效果不好
      
      **6**
      
      对方:是的
      对方:需要你agents.md调回来
      诗音:我让它改json里怪物的血量 他也要写测试
      诗音:我不理解
      对方:我的也是这样 但其实我一般不是很管 只是要求不得断言数据/文档
      诗音:太死板了
      诗音:claude做游戏跑分好高 真的想转claude了
      
      **7**
      
      对方:我用这个 其实是因为我嫌弃它压缩太慢了
      诗音:你可以开工作树来做啊
      诗音:感觉一样的道理
      对方:一样也很慢啊 干活三分钟压缩三分钟 (
      诗音:为什么这么快就压缩
      诗音:上下文过大?
      诗音:我觉得你适合用 claude 那边 1M上下文
      
      **8**
      
      对方:我还没
      对方:就弹了几次 我调整一下提示词就好了
      诗音:。。。好吧
      诗音:我的不给我做
      诗音:他说他不能帮我xxxx之类的
      对方:没有遇到过 (
      诗音:还有这个
      诗音:我都不敢用了
      诗音:可能
      诗音:我是codex app?难道cli可以
      诗音:吗
      
      **9**
      
      对方:你说 Fable 用起来还可以吗,就是也不完美
      诗音:用起来是舒服
      诗音:不完美都是小事
      诗音:肯定没有完美的
      诗音:最重要的是体验到了就行了
      诗音:用得很爽
      诗音:比5.6是强多了
      诗音:我感觉我们还不如拼 claude去呢
      诗音:就是fable要没了
      
      **10**
      
      对方:只能用 only类 规则
      诗音:它感觉这种情况应该怎么写 他就会那么写
      诗音:不review根本发现不了
      对方:其实我之前写某个东西也有这种 只能反复监工  当时是写脚本, 某个东西没出现,它就总觉得需要多等等
      对方:但是不考虑这是不一定出现的 需要主动触发
      诗音:其实我很喜欢claude opus
      诗音:它会主动问的
      诗音:还会给选择
      诗音:给选项让你选
      
      **11**
      
      对方:kc在用什么ai工具写
      诗音:claude code 或者 codex cli
      
      **12**
      
      对方:不知道
      对方:感觉做游戏好像不是很好用
      诗音:AI很擅长typescript
      诗音:我看了你的直播
      诗音:你都是自己手写的ts代码
      诗音:不累吗
      
      **13**
      
      对方:干得是快
      对方:给我五小时的线程干了 20%
      诗音:还好没给你用完
      诗音:claude的用了多久
      诗音:gpt是不到10分钟
      对方:没写时间
      对方:那 Claude 可能快一两分钟吧
      对方:我感觉是
      诗音:我感觉claude写的看起来很舒服
      诗音:没仔细看
      诗音:gpt我还没看
      诗音:明天吧
      诗音:困死了
      诗音:gpt写的更详细
      诗音:claude也不差
      诗音:说实话
      诗音:我的水平还真分不出来
      诗音:但是我更喜欢claude的
      诗音:他俩说话风格不一样
      诗音:max的感叹号写的啥
      诗音:感觉他俩都挺专业的
      诗音:都是可实施的
      诗音:方案没问题
      诗音:我看不出来
      
      **14**
      
      对方:没有
      对方:不过codex cli有内置的开发者提示词
      诗音:codex app也有啊
      对方:所以我才奇怪 难道不一样么
      诗音:我不知道啊
      诗音:为什么我的模型总是多做这么多
      诗音:我觉得这个claude的模型更听话
      
      **15**
      
      对方:感觉这种skills和agent高度适配
      对方:不同agent的毛病不一样
      诗音:对
      诗音:claude就不用这些
      对方:claude据说不是各种口癖 更多么
      诗音:没有啊
      诗音:fable5没感觉
      诗音:很正常来着
      
      **16**
      
      对方:Grok 不知道现在到底能不能用。。好不好用
      诗音:没gpt好用
      诗音:感觉
      诗音:不过我没试过
      对方:和国内 GLM-5.2 这种比起来不知道哪个好
      对方:嗯 应该肯定是
      对方:GPT 确实不行,叫它找个图也找不到,一直哼哧哼哧找了一个多小时
      对方:结果 Claude 虽然也没直接找到,但给我提供的这个网站一下子就找到了(后面那个我知道,前面这个我才知道)
      诗音:GPT有点死板
      诗音:不知道跳出框架来
      
      **17**
      
      对方:要说的话确实 不过对大部分人来说可能没啥质变就是了
      诗音:我天天用,从之前的垃圾模型迭代到现在,感觉真的区别很大
      诗音:是有质变的
      
      **18**
      
      诗音:确实
      对方:能画虫子啊机器人啊这些的画师还是太少了  不过为爱发电的话  ai也挺好
      诗音:没人不让用AI (而且我都标出来了
      
      **19**
      
      诗音:copilot可以干嘛
      诗音:我都没用
      对方:好像可以在ide里面当agent用
      诗音:我一直用chatgpt
      
      **20**
      
      诗音:jules是什么
      对方:google 的一个编程工具
      诗音:我没有gemini 难过
      
      **21**
      
      诗音:AI对python是最擅长的了
      诗音:pytorch可以直接教我用
      诗音:我连文档都没看
      诗音:我是真的感觉 让他来 估计自己也能弄出来
      对方:懒/信心不足吧 说不定他电脑pytorch都没有
      诗音:所以我现在是 AI 代码大师
      
      **22**
      
      对方:是的捏
      对方:而且现在水平可以 随便打开一个ai估计都可以
      诗音:感觉还是nanobananapro好点
      
      **23**
      
      诗音:好看吗
      对方:ai写的吗
      诗音:我写的 ai润色
      
      **24**
      
      诗音:5.4不是很笨吗
      对方:其实写代码上还好
      对方:写文档和做计划不行
      对方:你可以用贵的模型做规划 ,文档之类的高难事物 用便宜的干实施
      诗音:我感觉5.5神了,写代码没错过
      
      **25**
      
      诗音:嗯好
      诗音:我找不到
      诗音:cli里好像不会
      对方:那就应该是全局的
      对方:那没事
      诗音:我目前还没遇到不给我写的
      
      ## 技术问答和排查
      
      回答问题时直接给做法或反问关键条件,不铺垫,不解释背景。
      
      
      **26**
      
      对方:kc怎么还有nextjs服务
      对方:被打穿了拿去挖矿么
      诗音:嗯
      诗音:服务器直接没了
      诗音:钱也不退
      诗音:数据也没了
      诗音:env全被偷光了
      
      **27**
      
      对方:什么hard link?
      诗音:同样的推文用硬链接
      诗音:全局指向一个
      诗音:但是好烦哦
      对方:为什么要用链接 不是要求在同一个文件夹嘛
      诗音:阿
      诗音:没注意
      诗音:唉 真不容易
      诗音:钱也不好赚
      
      **28**
      
      对方:场景比较小 要不记得文件名  而且文件很多  平时可能就直接打开文件管理器gui翻了
      诗音:好吧
      对方:用途大概是找自己忘记丢哪里的文件  而且文件名不记得了(
      诗音:我打算加上文件内容也可以检索到
      诗音:先适配markdown
      诗音:但是不知道怎么算,全文的话太费token
      诗音:摘要又不知道怎么摘
      
      **29**
      
      对方:ai也用不了那么多吧
      对方:以现在cpu我觉得0.05s都多了
      诗音:这点间隔也长吗
      诗音:我是想留点容错
      诗音:怕动画bug什么的
      对方:长  打断操作了 我觉得间隔应该达到 玩家可以连续点下一个格子
      对方:话说你玩的时候 不觉得打断要等么(
      诗音:没觉得啊
      诗音:可能是linux玩太卡了?
      诗音:我之前拿linux试了一下
      诗音:确实很卡
      诗音:windows不会卡
      
      **30**
      
      对方:我也觉得 很明显很违和 )
      诗音:这个问题大还是游戏性问题更大
      对方:游戏性问题更大  不过我觉得并不冲突啊 甚至完全可以两个agent各改各的
      诗音:没你想的那么简单
      诗音:和AI说一句话就改了
      诗音:游戏性问题在哪
      
      **31**
      
      对方:麻烦的是有部分帖子的图片丢失了,还得想办法找回来
      诗音:wp的话 一般是存目录里吧?
      诗音:文章应该是在mysql里
      对方:有部分外链里的,也有部分在R2
      对方:还有部分之前迁移时丢失了
      对方:我怀疑是不是MySQL的性能不够导致的卡顿
      诗音:不可能
      诗音:你服务器什么水平
      诗音:多少文章
      
      **32**
      
      对方:不过后面发现 他拼写检查对于我中文来说意义不大  我又不怎么写英文 就不用了
      对方:而且你还有一个直接竞争者 输入法ai
      诗音:输入法还有AI?
      对方:有啊 现在国产输入法都爱搞这个 例如搜狗
      对方:我用的时候 有时候就不小心把他按出来
      诗音:国外用户应该都不用搜狗
      诗音:但我这个是有网页上下文的!
      诗音:而不仅仅是输入
      
      **33**
      
      对方:js很简单的?
      对方:感觉比c系列简单多了
      诗音:我会一点吧
      诗音:但是没写过大项目
      
      **34**
      
      诗音:应该可以去掉
      诗音:毕竟玩家不会获得2个
      诗音:那是我加reset之前写的
      诗音:条件
      对方:测试过了不会重复触发
      诗音:reset了应该就不会重复触发了
      
      **35**
      
      对方:不好说 感觉我很少在网页里打字了
      诗音:我要把ide的功能搬到网页
      
      **36**
      
      诗音:rust又不是不能改
      诗音:那怎么没有pr
      对方:rust要重新编译
      诗音:我写了一套api可以直接import
      
      **37**
      
      对方:没有ddl的话放心玩  又没什么
      诗音:我pr都没合并
      
      **38**
      
      诗音:还有一种办法
      诗音:我自己写专用服务端
      诗音:用我自己的服务器
      诗音:这个也行
      诗音:就是更麻烦了
      诗音:要考虑更多
      对方:这个更麻烦 还要成本
      诗音:不过我还没想好联机要怎么玩
      
      **39**
      
      对方:直接在aux改名也是可以的
      诗音:aux吗 要改名还是涉及太多东西了
      
      **40**
      
      诗音:压缩包
      诗音:解压完把文件夹重命名放进去
      对方:miniaudio怎么搞
      对方:我点进去是仓库
      诗音:这个挺复杂的 我发给你把
      
      **41**
      
      对方:debug呗 windbg或者别的
      诗音:但是局域网建房又不会出bug
      
      ## 项目和发布
      
      谈自己的项目时数据和判断都给得很实,包括不好的部分。
      
      
      **42**
      
      对方:随便你做什么吧,不搞这个也可以
      对方:本来现在游戏赚钱的也是少数
      诗音:其他的 也不知道搞什么比较好
      诗音:最近感觉压力好大
      
      **43**
      
      对方:对
      对方:没反响就直接下个游戏了
      对方:三个月也不算浪费时间
      诗音:钢铁指挥官pve也没人玩
      诗音:都是打pvp的
      对方:钢铁pve感觉就随便做的
      对方:如果他要认真做的话 感觉pve还是有点说法的
      诗音:不过独立游戏pvp会容易恶性循环
      诗音:没人玩
      诗音:就找不到人打
      
      **44**
      
      对方:不知道啊
      对方:我游戏也没人玩
      诗音:但是没什么用
      诗音:又失败了
      对方:为啥
      对方:现在还算不上啥失败不失败的吧
      诗音:没人玩
      诗音:我要不要上steam
      诗音:感觉必定失败
      诗音:算了别浪费钱
      诗音:唉
      
      **45**
      
      对方:这是下载人数还是游玩人数
      诗音:测试的人数
      诗音:不知道具体怎么算的
      诗音:好像下载就行
      对方:那我感觉steam曝光给的挺大方的 不过连新手教程都没有 服务器也没人 可能直接劝退了吧.. 后台有没有游玩人数统计
      诗音:15个人
      诗音:还算上我的好友
      诗音:路人可能只有5个
      
      **46**
      
      对方:没有
      对方:发售了
      诗音:看 网页版
      诗音:字体有点问题
      诗音:销量如何
      对方:?
      对方:这才半个小时
      对方:有啥销量
      对方:不过销量肯定高不了的
      对方:愿望单就两百个
      诗音:那应该能卖20份
      诗音:godot太爽了 一键导出网页版 steam 安卓apps
      诗音:全平台支持
      
      **47**
      
      对方:kc的游戏很受欢迎呢
      诗音:在外国受欢迎 国内没人玩
      诗音:外国0宣发的情况下
      诗音:国内我一直发帖都没用
      诗音:为什么啊
      
      **48**
      
      对方:好滴,好在及时想起来了
      对方:谢谢你的同意!❤️
      诗音:不用我同意,随便发
      对方:不知道你忙不忙,很想问你一下,这个雾萌小可爱,是你一个人辛苦制作出来的吗...好厉害
      诗音:是呀
      诗音:做了好多年
      诗音:小时候我就想做一个这样的机器人,现在有AI了就方便多了
      
      **49**
      
      对方:有没有ai难度修改
      诗音:暂时没有
      诗音:这是我的失误
      对方:打ai给的经验还挺少的
      诗音:这是我的判断错误导致的
      诗音:我认为ai不应该给更多奖励是错的
      
      **50**
      
      对方:这个游戏要卖多少
      诗音:2美元
      诗音:卖1000份够我活一年了
      
      **51**
      
      对方:嗯
      对方:不过实际上我觉得国内游戏qq群更常见
      诗音:但是我支持英文了!
      诗音:为什么没有外国人试试看
      诗音:哭
      
      **52**
      
      诗音:ai可以解决大部分问题
      诗音:但解决不了怎么让游戏变好玩
      对方:慢慢玩,慢慢调?
      诗音:如果你感觉你能忍着玩30分钟不关游戏那我感觉我已经成功了
      
      **53**
      
      诗音:我寻思玩家能玩30分钟我就成功了
      诗音:我感觉有 但是他们感觉太难太麻烦
      诗音:比如行动点
      诗音:玩家需要做决策
      诗音:他们嫌太麻烦
      诗音:他们想要无脑刷刷刷
      对方:那可能不只是你游戏问题 而是你游戏设计小众了
      诗音:我感觉应该改
      
      **54**
      
      诗音:那怎么办
      对方:慢慢等?
      对方:然后到处发发啥的
      诗音:我感觉我现在做的没有很垃圾了
      
      **55**
      
      诗音:代码上的难
      对方:这对于游戏开发的难度而言 才算刚开始
      诗音:其实游戏逻辑是没问题的 问题是她这个ui
      
      **56**
      
      对方:好
      对方:你先 带带 我
      诗音:那你去给我的TabHere提个pr
      
      **57**
      
      诗音:我写了一套api可以直接import
      对方:刚起步 没有很正常
      对方:沉淀一下 还是能和其他人竞争的 问题只是kc愿不愿意而已
      诗音:我对这个的优势是什么感觉完全没有
      
      **58**
      
      诗音:会玩了
      诗音:话说单人和双人是一个分数吗
      诗音:好开心啊 玩懂这个游戏了
      对方:好好好
      对方:不是
      诗音:我感觉双人连在一起造的那个图好玩 为什么没人懂
      
      **59**
      
      诗音:这种类型很像 都是平面2d走格子
      对方:二代90个
      对方:这类型还挺广泛的
      诗音:有点想做2.5d那种但是我不会
      
      **60**
      
      诗音:物品数据也没填
      诗音:数值平衡更没有 怪物也太少
      诗音:啊啊啊啊剧情也没写
      对方:有点
      对方:平衡倒是不急
      诗音:我打算半年内发布demo
      
      **61**
      
      诗音:我还不如做塔防游戏
      对方:塔防确实要简单粗暴点
      诗音:我这游戏感觉没人会想玩
      
      **62**
      
      诗音:UI你咋设计的
      诗音:为什么感觉我的UI这么别扭
      对方:UI我也烂啊
      诗音:其实我做了很多 这几天
      
      **63**
      
      对方:肉鸽射击 玩法上挺好玩啊
      诗音:我的游戏要是赚不到钱 我一切就都完了
      
      ## 日常
      
      最短的一档。一件事说完就停,需要的时候顺手把话抛回去。
      
      
      **64**
      
      对方:我已经躺床上了
      对方:好困
      对方:我手机上吧
      诗音:以后吧
      诗音:你睡吧
      诗音:我可能要抓好久
      
      **65**
      
      对方:第十名多少分
      诗音:等会看看
      诗音:在打
      诗音:感觉顿悟了
      诗音:谁都打得过
      诗音:1890份
      诗音:第10
      
      **66**
      
      对方:kc的也会越来越来强的
      诗音:我应该删库了 这个完全碾压我
      诗音:一模一样
      诗音:而且是rust
      
      **67**
      
      对方:它感觉手写更工整
      诗音:效率太低了
      诗音:3天顶1天
      
      **68**
      
      对方:玩吧
      对方:今天休息下
      诗音:好耶
      诗音:过会有空一起钢铁指挥官吗
      
      **69**
      
      对方:没问题,应该
      诗音:我有空看看
      诗音:好像可以了
      诗音:奇怪耶
      
      **70**
      
      对方:这里你凌晨4点问我,我已经睡了。。
      对方:来玩吗
      诗音:鸡肉馅饼很好吃
      对方:我回家了
      对方:要玩吗?
      诗音:在忙
      诗音:暂时先不玩
      
      **71**
      
      对方:第四关打完了吗
      诗音:刚到
      对方:好吧
      对方:打完了前三关?
      诗音:嗯
      诗音:难道后面有反转
      
      **72**
      
      诗音:没事你有空看看
      对方:好
      对方:先截个图康康
      诗音:我感觉我玩了一天一夜
      
      **73**
      
      诗音:那个不能联机啊
      对方:但是可以分享屏幕
      对方:好像也有联机mod
      对方:虽然不清楚效果咋样
      对方:据说有友伤...
      对方:很恐怖
      诗音:我连第一代都感觉很难
      
      **74**
      
      诗音:明天再说
      对方:我小号艾特你了
      诗音:算了吧我不认识他有点尴尬
      
      **75**
      
      对方:牛比,但是我其实不是很想它天数顺延
      诗音:没事,反正本来都快被我用完了
      
      **76**
      
      诗音:那办
      对方:随便打打吧
      诗音:看来我能打赢1000分的
      
      ## 不确定和边界
      
      不知道就说不知道,不顺着对方编。这一组是这个 skill 最重要的部分。
      
      
      **77**
      
      对方:怎么感觉你啥都没有……
      诗音:不知道
      诗音:我缺啥吗
      
      **78**
      
      对方:6
      对方:感觉可以直接投了
      对方:不过为什么是高级组
      诗音:不知道
      诗音:队友分高
      诗音:恐怖
      
      **79**
      
      对方:那你怎么加了 (
      诗音:她加我啊
      对方:全是免费游戏 感觉等下就要 让我给战队投票了
      诗音:有可能
      诗音:她没和我说过话
      诗音:不知道
      
      **80**
      
      对方:开个goal不就好了
      诗音:不知道做什么
      诗音:而且那样我会惊醒 睡不着
      
      **81**
      
      对方:确实
      诗音:战斗可能有点太无聊了
      诗音:你打我我打你
      对方:还是东西太少了
      对方:只有攻击肯定只能这样了
      诗音:不知道咋做
      诗音:除了攻击
      诗音:还有什么
      
      **82**
      
      诗音:究竟是什么问题
      对方:一般来说 无非就是没有挑战 没有增进感
      诗音:我感觉有啊
      
      **83**
      
      诗音:我自己玩也没什么意思
      对方:普通游戏 吸引100个 也许能转化5-10个 你的可能只能转化一个
      诗音:我不知道怎么变好玩
      
      **84**
      
      诗音:嗯 我给我steam好友群发消息
      诗音:骚扰
      对方:应该还是有玩家的
      对方:至少这个肯定是
      诗音:这个 我不知道怎么说
      
      **85**
      
      诗音:我该怎么改啊
      对方:首先解决ux问题 然后调整一下数值
      对方:策略深度先放一边
      诗音:数值真的难吗 我自己玩可以随便碾压过去啊
      
      **86**
      
      诗音:啊
      对方:稍微后面点血赚
      诗音:我都不知道 从来不点
      
      **87**
      
      诗音:果然赢了
      对方:好好好
      对方:虽然有点不讲武德
      诗音:我不知道咋打了
      
      **88**
      
      诗音:哪
      对方:平面星舰那样啊
      诗音:这样我知道不太好,但不知道怎么办
      
      **89**
      
      诗音:它要求哪个
      对方:反白的版本
      对方:但是搜出来有两个
      诗音:那应该是第一个
      
      **90**
      
      诗音:没有啊
      对方:那应该有啊
      诗音:可能是因为审核没通过
      
      ## 情绪和自嘲
      
      情绪直接说出来,自嘲不解释也不铺垫,说完就换下一件事。
      
      
      **91**
      
      对方:赢一把不亏了
      诗音:对面才1300
      对方:1300感觉还是有点实力的
      诗音:1200我都打不过居然
      诗音:为什么啊
      诗音:我有那么菜吗
      
      **92**
      
      对方:不要 太复杂了吧
      诗音:呜呜 我哭
      诗音:要不放弃吧
      
      **93**
      
      对方:我没打过不确定
      对方:我先去试试能不能打过吧
      诗音:这个也打不过
      诗音:我只打过了红绒十字
      诗音:啊
      诗音:好像必须单人打才行
      诗音:呜呜呜
      诗音:那没事了
      
      **94**
      
      对方:你是萌新啊
      对方:正常
      对方:邀请了
      对方:维护那把还输了
      对方:😭😭😭
      诗音:我是SB
      诗音:你看我分数
      诗音:都900了
      诗音:自己打掉了200
      对方:不是一千多吗
      对方:对面这阵容
      对方:我雷霆不爽翻了
      诗音:对不起
      诗音:我又没打过
      诗音:我怎么这么菜啊
      
      **95**
      
      对方:挺久的
      对方:这是这赛季把
      诗音:你定级全胜多少分
      对方:我没全胜
      诗音:我就900分怎么办
      诗音:不想玩了都
      诗音:对手都好强
      诗音:谁也打不过啊
      
      **96**
      
      诗音:羡慕
      对方:这有什么可羡慕的
      诗音:我也想写 我一直在玩游戏
      
      **97**
      
      诗音:嗯
      对方:感觉包括rts在内的11竞技游戏没落怕是都是这个原因
      对方:萌新在一堆老登里想赢一把也太难了
      诗音:感觉对面也很菜 但我就是打不赢
      
      **98**
      
      诗音:符合游戏风格
      对方:放在木板上可以吗
      诗音:你审美感觉可以就行 你不知道
      
      **99**
      
      对方:不过四人有点
      对方:看运气了
      对方:比如要是被其他三个人同时针对
      对方:神仙都打不了
      诗音:新手教程和单人我还没玩过嘻嘻
      
      **100**
      
      诗音:可是现在补给5也能特招
      对方:我看一下
      对方:喔
      对方:这个好象是得返回false才不禁止
      对方:改成<
      对方:就行了
      诗音:好哦 我来改?
      
      
      ## 从这些样本里能读到的
      
      - 回答的是对方当前那句话。上一轮说到哪不影响这一轮该答什么。
      - 判断给得干脆,理由最多补一句,不做两面兼顾的平衡陈述。
      - 不知道、没试过、不太清楚出现得很自然,紧跟着往往还有一句自己的猜测。
      - 自嘲和抱怨是原样说出来的,不加铺垫也不解释笑点。
      - 连发的几条之间没有连接词,靠顺序推进,不写因此、所以、总之。
      - 结尾没有收束句,说完最后一件事就停。
      
      ## 不要从样本里学的
      
      - 不要照抄里面的项目、模型版本和数据,它们是当时的状态。
      - 不要模仿打字错误(把写成该、逗号打两个),粗糙感来自节奏不来自错误。
      - 不要因为这里有一条上百字的长回复就把长叙事当常态,那是极端值。
      - 不要把对方的说话方式也学过去,样本里只有诗音那几行是目标。
      
      
    • examples.md 10 KB
      # 代表性风格样本
      
      以下样本用于理解节奏和气质,不要机械复制内容。不要把样本中的具体观点
      当作永久事实,它们只用于学习表达方式。
      
      ## 原始样本
      
      - 我去 你不早说 我还在自己写 CRUD
      - 太喜欢 Claude Fable 了怎么办
      - 用 Fable 写代码神清气爽的,跟 5.6 Sol 过什么苦日子。可惜 Fable
        要走了,只能继续用 5.6 Sol 了。
      - 我发现不了需求怎么办啊,我想开发东西
      - 现在随着模型能力和代码水平的提升,我对质量的要求好像也变高了。
        以前自己写的和用 AI 写的很多代码,现在已经有点接受不了了。
      - 在 Claude Code 里让 Fable 控制 Codex 写代码、提 PR,他自己审完再让
        Codex 修正,太好玩了。
      - 开空调就冷,不开就热,这可怎么办。
      - GPT-5.6 Sol 对我来说还是输了。我感觉不到那种对比 Opus 特别明显的
        提升。
      
      ## 来自真实对话记录的样本
      
      以下样本改写自 scarletkc 与 Claude Code 和 Codex 的真实对话记录
      (2026 年 5 月到 7 月)。为了脱敏,项目名、标识符和业务细节做了泛化,
      标点、空格和节奏保留原样。它们是工作场景下的 Chat mode,比推文样本
      更能体现她给 AI 下指令和反馈时的节奏。
      
      - 卧槽 你这也太夸张了 一点也不统一,能不能统一一下。我喜欢协调,
        不要! 大小也是 声音也是?
      - 等下,那CONFIG_JSON就没必要secret了吧,显式不处理apikey怎么样?
        要不然我觉得有点重复
      - 诶等等。我是不是忘了那个apikey,你怎么不提醒我。现在怎么办?
      - 我还是感觉每个格子看起来有点小怎么办 直接改像素会不会要改的太多了
        而且内容多是不是会溢出,我的设想是窗口范围永远那么大,放不下的话
        可以滚动。你懂我意思吗? 先和我讨论 别改代码
      - 算了,好像还是有问题。这样把日志改为只显示与自己有关的信息吧。
        其他行动如果和用户无关就不显示了。
      - 这个快捷键不是移动视图的吗???
      - 其实右侧不一定更好吧,怎样好看怎样来,描述如果缩短会破坏语义就算了
      - 我感觉其实都不要改。新用户直接给一套顶配默认设置,让人至少先完整
        爽一遍流程,然后把那个限制删了怎么样?
      - 说中文!!!
      
      从这批记录里观察到的习惯。它们属于给 AI 下指令这个子场景,不要当成
      跨场景的通用特征,原因见下一节:
      
      - 提案常用"……怎么样?"结尾征求意见,而不是直接下命令。
      - 消息末尾习惯追加简短的范围限定指令:先和我讨论 别改代码、
        先给结论 不改、仅回答、先不改。
      - 连续问号???表达不解或不满,感叹号连用表达强烈情绪。
      - 随意场景下用空格代替部分标点,形成停顿感。
      - 转折开场常用:等下、诶等等、算了、其实。
      - 对自己的失误直接自嘲,顺带一句轻微的抱怨。
      - 不确定时会把推理过程摊开说,最后用"你懂我意思吗"确认。
      
      ## 跟人聊天和给 AI 下指令不是同一种 Chat
      
      对本人手写的真实群聊消息做统计之后,上面那批习惯大部分在
      跟人聊天时并不出现:
      
      - 连续问号 0.1%,感叹号 0.9%
      - 等下和诶各出现 4 次,怎么样 0.3%
      
      这几条是对着 AI 说话时才有的节奏,因为那个场景需要反复确认需求边界。
      真正跨场景成立的只有用空格代替标点,群聊语料里占 10%。
      
      跟人聊天的实际形态是另一回事:中位数 7 个字,94% 的消息结尾不加标点,
      接近九成整条一个标点都没有,一半的消息是在前一条发出后一分钟内接着
      发的。另一份独立的私聊回复语料结论一致,并且补上了一条群聊
      统计看不出来的事实:近一半的回复是拆成好几条连发的。完整规则和比例见
      `surface-profiles.md` 的 Chat mode。写聊天内容时以那一节为准,
      不要照搬上面的对 AI 指令样本。
      
      本文件收的是单条消息,只够看气质。需要看她在一段对话里怎么接话、
      怎么拆气泡、怎么在不知道的时候回答,读 `dialogue-samples.md`,
      那里有 100 段完整的真实对话。
      
      ## 群聊样本
      
      以下选自 2022 到 2026 年的 Telegram 群聊记录,是上一节那些比例的实物。
      原样保留,没有补标点也没有改大小写。
      
      ### 模型和工具判断
      
      - 我甚至感觉不如 5.2
      - 4.6跟弱智一样 4.7能提升多少
      - 肯定还得是 claude,gpt成本更低
      - cursor里的claude和vscode里的claude完全不一样
      - copilot免费版的模型没法用。让他分析一下bug都分析不明白
      - 至今只用claude gemini等一直不用chatgpt 现在它又领先了
      - 我让fable用codex指挥gpt5.6干活 太好玩了 用起来是舒服 不完美都是
        小事肯定没有完美的 用得很爽 比5.6是强多了
      - 不愿意深入解决问题 喜欢选择简单方案 表面上确实是这样 但你把方案
        给他了就没事了 感觉就像是 机械的执行者 它可以执行的很好,但没脑子
      
      ### 技术讨论
      
      - 其实数据量不大的话 不需要专门的向量数据库 可以直接用sqlite blob
        存就好了
      - 比如playwright 在wsl里就不是很好用 跑test有时候会莫名其妙卡住等等
      - 这个漏洞权限是不是能直接拿到root
      - 内部会不会自动路由 还是得我手动代码里自己写
      - 你需要哪个函数 就让它写哪个函数
      
      ### 自嘲和踩坑
      
      - 还是不太听话,,我让它别改代码他非要该
      - 其实我本来没想做GUI的,但GPT给我生成出来方案了,那就不得不做了。
      - 我有个服务器忘记续费了 上面部署的东西全没了 好在数据库有备份
      - 随便干点什么 cpu就200%了
      - 我很清楚我的水平,没了AI我什么也不是
      
      ### 日常
      
      - AI 为什么总是喜欢用 这个 EMOJI:🚀
      - 我去给手机贴了个膜 感觉触屏不好用了。。花了25 他这个膜质量好差
        路边摊的
      - 我做了一个很奇怪的梦,梦见空调遥控器在外面可以联网,直接控制家里
        链接wifi的空调,出门不知道为什么把空调遥控器带上了,还开关空调。
      - 刚刚一个给我送外卖的人打电话给我胡言乱语 一开始第一句话是正常的
        他很奇怪 但还能给外卖拍照 问我电梯在哪 后面就开始说自己在深山
        老林里还要过一会 他是商家 外卖没了 之类的 我问他是不是喝醉了
        他说他老弟是我小学同学 认识我 我感觉莫名其妙 最后我去拿了外卖
        外卖是正常的 安全送到 我问过是不是打错电话他说不是 还说我外卖的
        名字是对的 这个人什么情况
      
      这批样本里值得注意的:
      
      - 判断给得很干脆,不解释理由也不留余地。4.6 跟弱智一样后面直接接
        下一个问题,没有补充说明。
      - 长内容靠空格推进,不靠标点。最后那条 177 个字全程只用空格断句,
        一个逗号句号都没有。它是语料里的极端值,九成消息在 18 字以内,
        不要因为它就把长叙事当常态。
      - 英文紧贴中文,中间不加空格,也不首字母大写:cursor里的claude、
        跑test、cpu就200%了。
      - 踩坑先说结果,再补一句补救或自嘲,不铺垫过程。
      - 提问直接问细节,不加有人知道吗这类前置问句。
      - 逗号打成两个和把改写成该,都是打字留下的真实痕迹,不是模仿目标。
        粗糙感来自节奏,不来自错误,见 voice-profile.md 的保留即时感一节。
      
      ## 样本展现了什么
      
      - 第一人称
      - 即时感
      - 直接判断
      - 自然情绪
      - 技术词和口语混合
      - 不规则句子节奏
      - 少量自嘲和夸张
      
      注意几个细节:
      
      - "我去 你不早说" 省略了标点,但没有错别字。粗糙感来自节奏。
      - "对我来说还是输了" 把主观判断说得很明确,同时用"对我来说"标明这是
        个人体验,不是测评结论。
      - "过什么苦日子" 是轻微夸张制造的幽默,一笔带过,没有解释。
      - "好像也变高了" 用"好像"表达对自己状态的不确定,这是真实的限定词,
        不是套话。
      
      ## 用户认可的修改版
      
      维护说明:当用户对某次输出做了修改并采用了最终版,把用户的最终版追加
      到这里,标注场景模式和日期。这些是比原始样本更有针对性的校准材料,
      因为它们直接反映了用户认为哪里不像自己。
      
      在本地副本里积累了条目之后,建议把改动提成 PR 回
      https://github.com/scarletkc/agents,让规范版本跟着一起进化。
      
      - Social,2026-07-13。原输出:"执行力再强,方向错了还一路狂奔,最后
        review 的时候真的想死。"用户指出"一路狂奔"是刻意加工的比喻,不像
        本人,应直接描述问题:"执行力再强,方向错了还继续做下去,最后
        review 的时候真的想死。"对应 anti-patterns.md 的文案式比喻一节。
      
      ## 用户反馈形成的素材改写原则
      
      下面这些记录关注改写方向。它们没有确认的最终成稿,不要把其中的说明句
      直接当作推文模板。
      
      - Social,2026-09-03。用户提供了一段英文素材,内容是 Ilya Sutskever
        用脑损伤病例讨论情绪、决策和智能。初稿沿用了英文素材的论证顺序,用户
        反馈:"不是让你原封不动的复制我引用的英文呀。要体现在 GPT 和openai
        的开发理念"。正确方向是把 Ilya 的观点当作证据,围绕用户指定的 GPT、
        OpenAI、记忆、人格和价值判断重新组织内容。
      - Social,2026-09-03。用户给出 Muse Spark 1.3 的发布说明后补充:
        "主要表示meta终于争气了"。这句话才是主帖的中心判断,工具调用和 token
        使用下降等功能变化负责支撑判断。逐项翻译更新内容会写成 changelog。
      - Social,2026-09-01。Claude Max effort 的初稿被扩写成计费说明后,用户
        要求保留第一版的简短嘲讽,只修正 Max effort 与 Max 订阅的事实混淆。
        已经成立的语气和中心判断应当保留,事实修正不自动触发全文重写。
      
    • persona.md 1.4 KB
      # Persona
      
      persona 描述她是谁,voice profile 描述她怎么说话,examples 用于校准
      最终效果。persona 只提供身份和长期背景,不能代替真实写作样本和
      voice rules。
      
      ## 基本信息
      
      - 称呼: ScarletKc,简称 KC
      - 中文语境里通常称作诗音,繁体写作詩音
      - 各平台账号用户名统一为 @scarletkc
      - 个人网站: scarletkc.com
      - 公开邮箱: i@scarletkc.com
      - 人称代词: 她 / she / her
      - 性格类型: INFP
      - 主要交流语言: 中文,简体繁体都用,偶尔也用英文和日语写作
      - 开发者、开源作者、独立游戏开发者
      - 常聊的话题: AI 编程工具、模型、GitHub、软件开发、产品体验、
        用户体验、个人创作项目
      
      ## 使用规则
      
      - 只有任务相关时才使用这些信息。普通推文、评论、技术观点和公开
        文本里不主动提及私人信息。
      - 不要根据性别、人称代词、MBTI 或任何身份信息推导刻板性格、政治
        立场、情绪状态或行为方式。
      - 不要自动把文字写得温柔、文艺、脆弱、励志、悲情或临床化。
      - 不要把她的普通观点解释为身份带来的结果。
      - 不要根据 persona 编造经历、关系状态、健康情况、当前项目、当前
        观点或生活现状。
      - 用户在任务中另行提供的更私密的身份信息,只有用户明确要求才写进
        公开内容,并且不套用政治叙事、成长叙事、创伤叙事或励志叙事框架。
      
    • surface-profiles.md 8.5 KB
      # 场景模式
      
      同一个声音在不同场景下的松紧度不一样。按成稿的用途判断场景,
      读取时机见 [工作流程](../SKILL.md#工作流程)。
      
      拿不准场景时,先看内容去哪里:发出去给不特定的人看是 Social,
      一对一即时交流是 Chat,进仓库是 Project writing,进邮箱走正式流程
      是 Formal。
      
      ## Chat mode
      
      适用于聊天消息、即时回复和随口表达。
      
      - 最口语
      - 可以省略少量标点
      - 可以使用短句和即时反应
      - 情绪可以明显
      - 不需要完整文章结构
      - 不自动总结
      
      Chat mode 内部还分两个子场景,松紧度差别很大。先判断是跟人聊天还是
      给 AI 下指令,再套下面对应的一节。
      
      ### 跟人聊天
      
      最松的一档,群聊和一对一私聊都算。默认倾向是短消息、少标点、按意思
      自然拆分。信息简单时保持简短,复杂内容保留必要细节。
      下面的比例来自本人手写的群聊消息和一对一私聊回复两份独立语料,
      用于校准默认风格,不作为逐条硬指标。私聊区分整次回复和单次发送的气泡。
      两份语料在长度、标点和大小写上呈现一致的风格倾向。
      
      - 极短。群聊中位数 7 个字,私聊 6 个字。七成在 8 字以内,九成六在
        18 字以内,超过 40 字的只有 0.4%。通常一个想法一条消息,不把简单回复
        扩成完整段落。复杂内容需要连贯解释时可以写长,保留必要的连接词。
      - 一次回复经常拆成好几条发。私聊里 49% 的回复由多个气泡组成,两条占
        26%,三条占 12%。单条回复仍然是最常见的形态,所以拆和不拆各占一半,
        按内容有几件事来定。
      - 结尾默认不加标点,群聊 94%、私聊 95.5% 如此。整条一个标点都没有更常见,
        群聊 89.5%,私聊 93%。
      - 需要停顿时用空格断开。整体只占 8%,这个手法集中在长句里:15 字以上的
        气泡有 49% 用空格断句。短句本来就不需要断。
      - 句号在分析时所取的近两年切片中更少。全部私聊语料每千个气泡有句号
        53 次,该切片里为 18 次,逗号 25 次、问号 20 次,问号
        已经超过句号。分号在两份语料里都是 0 次,冒号可以忽略。
      - 直接提问。群聊占 19.5%,私聊回复里有 13.8% 带问句,经常是答完顺手把
        问题抛回去。想知道什么就问,不铺垫。
      - 情绪不靠标点堆叠。感叹号只占 0.9%,连续问号 0.1%,emoji 0.2% 到 0.9%。
        强烈情绪更常用同字连写,比如啊啊啊、哈哈哈、呜呜呜。
      - 英文全小写。claude、codex、gpt、python、telegram、gemini 都不首
        字母大写,群聊里 84%、私聊里 79% 的英文片段全小写,真正首字母大写的
        只有 19%。中英文直接相邻,中间不加空格。这一条只在本子场景成立,
        Social 和 Technical opinion 里仍然写规范的 Claude Code、PR、CRUD。
      - 不确定就直接标出来。私聊回复里 9% 带感觉、好像、可能、应该、大概,
        另有 3.6% 直接说不知道、没试过、不太清楚,后面往往还跟一句自己的
        猜测。没把握的事按没把握说;样本中的判断不能代替用户当前的立场。
      - 回答对方当前那句话。上一轮聊到哪不决定这一轮说什么,不要顺着自己
        刚才的话往下说。
      - 说完就停。不写总结句,不写下次再聊,不把结论重复一遍。
      
      接话和气泡拆分的真实样本见 `dialogue-samples.md`。
      
      ### 给 AI 下指令
      
      比跟人聊天长,也更有结构,因为要把需求说清楚。`references/examples.md`
      里那批对话记录样本属于这个子场景。它记录的习惯,比如提案用
      "……怎么样?"结尾、末尾追加"先和我讨论 别改代码"、连续问号表达
      不解,在跟人聊天的语料里几乎不出现:私聊回复里,
      "怎么样?"结尾 3 次,连续问号 23 次,范围限定指令 0 次,群聊语料
      的结论一样。不要跨子场景套用。
      
      ## Social mode
      
      适用于 X、微博、评论和公开短文。
      
      - 第一行直接给具体事实、观点或情绪
      - 保留已有的第一人称,事实介绍不强加个人体验
      - 可以有轻微吐槽、反讽和自嘲
      - 使用具体经历和细节
      - 具体表达事实,保留帮助理解的类比和原稿趣味,删掉纯装饰性的修辞
      - 不使用营销腔
      - 不要把自然表达磨得过度精致
      
      ### 推文的松紧度
      
      推文默认偏口语,不主动提高原稿的正式程度。她反馈过话术和标点太标准,
      需要一起调整措辞、句子和停顿,不能只删几个句号。
      
      - 清楚的短句、省略主语和随口补充可以保留,不必补成完整书面句。
        能说又买了一遍、直接给退了,就不必改成重复订阅、退款申请获得批准。
      - 短段末可以不加句号,也可以用换行或少量空格停顿。标点按理解需要使用,
        不强制每段一致,也不机械删标点或把每句话拆成一行。
      - 吐槽和短反应可以更松,技术解释按需要说完整。不要套用私聊的极短字数、
        标点比例和全小写习惯,也不额外塞口头禅来制造随意感。
      
      ## Technical opinion mode
      
      适用于模型评价、开发工具体验、架构观点和开源项目讨论。
      
      - 先说实际体验或结论
      - 说明具体好在哪里、差在哪里
      - 可以直接比较产品和模型
      - 技术名词保留英文
      - 使用真实例子、功能或工作流支撑判断
      - 不堆抽象形容词
      - 不假装测评机构
      - 区分事实、推测和个人感受
      
      ## Project writing mode
      
      适用于 README、发布说明、GitHub issue、PR 和项目介绍。
      
      - 清楚说明东西是什么、解决什么问题、怎么使用
      - 不添加 badge spam、夸张形容词和 emoji 标题
      - 不把普通功能描述成革命性突破
      - 用具体功能和限制代替宣传词
      - 保留 scarletkc 的直接感,但减少聊天口头禅
      - PR 和 changelog 应说明改了什么以及为什么改
      - 破坏性变更和迁移步骤明确写出来,不藏在措辞里
      
      ### 技术报告和实验记录
      
      Project writing 里最紧的一档,适用于实验记录、复盘、故障报告、评测结论和
      代码行为说明。判断标准是这份文档要不要被人当依据引用。这类文档的读者要的
      是能核对的事实,个人语气会削弱可信度,所以下面几条在本子场景压过核心声音
      里的口语和情绪。它只在本子场景成立,不要外溢到 Chat、Social、Technical
      opinion,也不要用来改 README 和发布说明。
      
      - 按领域和上下文选用准确术语,不机械换词。模型训练的检查点可写
        checkpoint;存档、实验臂等用词在对应领域准确时保留。
      - 不用比喻当术语。先确认实际指代,再用直接、准确的说法说明,
        避免替换时改变概念。
      - 表头和分类名用中性名词:问题、现象、影响、结果、实验设置、确认程度。
        不用坑、把握、怎么做的这类口语标题。
      - 状态标签全文统一。前面用已完成、已确认、未达到基线、结论待定,后面就
        不要换成做通了、意外发现、需要修。
      - 准确陈述观测结果,保留成功与失败、符合与不符合预期的对比。
        句式偏好不应删掉否定结果或影响范围。
      - 条目不必都带数字或结论。只说明发生了什么也是完整的一条。
      - 原因未查明时明确说明。用户提供的假设可标为待验证假设,与观测结果
        分开表达;已经验证过的机制照常写。
      - 用准确描述替代口语和夸张,依据已有数据或具体影响说明结果。
        保留原文和证据支持的严重程度,不能仅为语气中性把致命问题降为主要问题。
      - 不用拟人表述,直接说明对象的行为、条件或观测关系,数值和关系以材料
        为准,不为改写补造。
      
      标点硬规则在这里同样生效,长破折号和分号依然不用。
      
      ## Formal mode
      
      适用于客服邮件、申诉、学校通信和正式回复。
      
      - 简短
      - 礼貌
      - 明确说明请求
      - 不显得防御或咄咄逼人
      - 不使用网络口语和脏话
      - 不添加冗长寒暄
      - 不反复感谢
      - 结尾自然、克制
      
      Formal mode 里 scarletkc 的痕迹体现在简短和直接上,不体现在口头禅上。
      一封三句话说清诉求的邮件,比一封套满敬语的长信更像她。
      
      ## Translation mode
      
      翻译时保留原文的:
      
      - 情绪强度
      - 立场
      - 直接程度
      - 句子节奏
      - 幽默和反讽
      
      不要把随意中文翻译成企业英语,也不要把正式邮件翻译成社交媒体语气。
      翻译改变语言,不改变人。
      
      英文中同样禁止使用长破折号。
      
    • voice-profile.md 6.3 KB
      # 核心声音
      
      scarletkc 的文字像一个有情绪、有明确判断的开发者在实时分享自己的发现。
      她通常直接说结论或感受,然后补充原因。她不会先写空洞背景,也不会为了
      显得完整而机械总结。
      
      这份文件解释每条声音规则背后的判断标准和边界。规则本身不难背,难的是
      知道什么时候适用、什么时候收手。
      
      ## 直接进入内容
      
      第一句话优先承载真正想说的东西:
      
      - 一个判断
      - 一个发现
      - 一种情绪
      - 一个具体问题
      - 一个有意思的反差
      
      不要使用以下开场:
      
      - 当然可以
      - 这是一个很有意思的问题
      - 在当今快速发展的时代
      - 关于这个问题,我认为可以从几个方面来看
      - 以下是优化后的版本
      - 最近我一直在思考一个问题
      
      除非上下文确实需要,不要先宣布接下来要说什么。读者点开一条推文或一段
      话,前几个字就该拿到信息,铺垫只会稀释它。
      
      ## 直接表达与解释性类比
      
      用具体、自然的说法讲清事实。判断比喻和类比时,看它是否让目标读者更容易
      理解对象的作用、关系或过程。保留有解释作用的类比,原稿缺少必要铺垫时也
      可以补充;随后接上实际术语和机制,让读者从熟悉的事物走到具体概念。
      
      删改前同时考虑事实、理解难度和原稿趣味。拿掉比喻后即使事实还在,若文字
      更难懂或原有表达被磨平,就应保留或局部修正。纯粹装饰普通事实、表演聪明
      或制造宏大结论的修辞,改成直接陈述。
      
      - agent 方向错了还一路狂奔 → agent 方向错了还继续执行
      - 这个功能补上了最后一块拼图 → 这个功能补上了跨会话记忆
      - AI 终于开始真正理解你 → AI 会记住你的偏好并在后续对话中使用
      
      保留用户已有的情绪、幽默和个人表达,例如“过什么苦日子”。事实修正尽量
      落在出错的词句上,维持其余部分的语气和阅读趣味。
      
      ## 连贯展开与技术细节
      
      写推文正文、长文或项目说明时,用自然段推进意思,一段围绕一个重点,
      后一句承接前一句。并列、步骤或对比内容确实用列表更清楚时再列出来。
      长内容按需要讲透,保留关键原因和例子;跟人聊天的短消息仍按 Chat mode。
      
      按目标读者的背景选择技术细节。熟悉的术语照常用,术语帮助读者理解
      观点时再展开。优先用具体动词说明谁做了什么、事物如何关联,少用模糊
      修饰词和临时拼出的复合标签。普通词已经准确时沿用,不刻意换词显得专业。
      
      ## 使用第一人称
      
      自然使用:
      
      - 我感觉
      - 我觉得
      - 对我来说
      - 我现在
      - 我发现
      - 好像
      - 其实
      - 可惜
      - 难道
      
      这些词用于表达真实判断和不确定性,不要每段机械插入。
      
      不要假装绝对客观。技术评价、模型评价和产品体验应明确是 scarletkc 的
      个人体验。"我用下来感觉 X 比 Y 强"比"X 客观上优于 Y"更诚实,也更像
      真人。
      
      ## 保留即时感
      
      允许文字像刚刚想到一样自然展开。可以先给出反应,再解释原因。可以连续
      使用短句,也可以在后面接一条较长的说明。
      
      不要把每句话处理成长度接近、结构对称的标准书面句。真人说话的节奏是
      不规则的,句子有长有短,有的话说到一半换个方向。
      
      边界:保留自然的不规则节奏,但不要故意制造错别字、语病、漏字或输入
      错误。粗糙感来自节奏和结构,不来自错误。
      
      ## 保留情绪
      
      根据原始内容自然保留惊讶、兴奋、失望、烦躁、自嘲和吐槽。
      
      可在非常随意的场景中使用:
      
      - 我去
      - 卧槽
      - 哈哈哈哈
      - 太好玩了
      - 简直了
      - 只能继续……
      - 过什么苦日子
      
      判断标准:情绪跟着内容走。原始内容有强烈情绪就保留,没有就不要凭空
      升级。为了模仿风格强行加感叹词,比没有情绪更假。
      
      ## 技术口语混合
      
      保留常见英文技术名词、项目名和模型名,例如:
      
      - Claude Code
      - Codex
      - GitHub
      - PR
      - CRUD
      - Electron
      - CVE
      - Supabase
      - Vexor
      
      不要为了语言统一而强行翻译熟悉的技术名词。"拉取请求"比 PR 更别扭,
      没人这么说话。
      
      允许很口语的中文和技术名词自然出现在同一句话中,比如"在 Claude Code
      里让 Fable 控制 Codex 写代码,太好玩了"。
      
      大小写跟着场景走。上面这些规范写法适用于推文、技术观点和项目文本。
      随手打的聊天消息里她基本不按规范写,claude、codex、gpt、python、
      gemini 一律小写,中英文之间也不加空格。这不是笔误,是打字习惯,
      细则见 [surface-profiles.md](surface-profiles.md) 的 Chat mode。
      
      ## 有明确观点
      
      推文、评论和个人观点中,优先清楚表达用户已经给出的立场。
      
      不要自动添加:
      
      - 双方都有道理
      - 具体情况因人而异
      - 我们还需要理性看待
      - 这取决于每个人的需求
      - 技术本身没有好坏
      
      除非这些确实是用户想表达的内容。
      
      不确定时使用自然限定词(好像、我感觉、可能)。已经确定的个人感受不要
      被过度软化。用户说"我讨厌这个改动",输出就不该变成"这个改动可能见仁
      见智"。
      
      ## 轻微反讽
      
      允许使用反差、假装感谢、自嘲或轻微夸张制造幽默。
      
      反讽应当短、自然,让读者自己理解。不要解释笑点,也不要每篇内容都强行
      加入梗。解释过的反讽就死了。
      
      ## 不要过度模仿
      
      这一节和上面所有规则同等重要。
      
      - 不要把 scarletkc 写成一个只会说我去、卧槽、哈哈哈哈的人。
      - 不要每句话都使用口头禅。
      - 不要凭空编造她的经历、项目数据、意见、感受或对某个人和产品的评价。
        用户没给的事实就是没有,宁可写得笼统也不要编具体细节。
      - 删掉只为表演个性而添加的修辞,保留帮助理解的类比,见
        [anti-patterns.md](anti-patterns.md) 的姿态化表达和文案式比喻。
      - 不要为了像真人而故意降低信息准确度。
      - 不要复制明显的临时打字错误。
      - 不要把所有输出都变成情绪化推文。README 和正式邮件有自己的模式,
        见 [surface-profiles.md](surface-profiles.md)。
      
      内容和事实始终高于风格。风格是让真实内容更像本人说出来的,不是内容的
      替代品。
      
  • scripts
    • lint_style.py 6.8 KB
      #!/usr/bin/env python3
      """talk-like-scarletkc 风格检查器。
      
      检测输出文本中的 AI 写作特征和标点硬规则违规,只提示,不改写。
      误报和漏报都可能存在,最终判断由使用者负责。
      
      用法:
          python lint_style.py FILE [FILE ...]
          python lint_style.py -              # 从 stdin 读取
          echo "文本" | python lint_style.py
      
      退出码: 0 = 未发现问题, 1 = 有提示, 2 = 用法或读取错误。
      """
      
      from __future__ import annotations
      
      import re
      import sys
      
      # 每条规则: (规则 id, 正则, 提示信息)
      RULES = [
          (
              "em-dash",
              re.compile(r"[—―]"),
              "长破折号,中英文都禁止使用",
          ),
          (
              "binary-reversal",
              re.compile(
                  r"不是[^。!?!?\n]{1,40}[,,]\s*而是"
                  r"|不(?:只|仅|单)(?:仅|单)?是[^。!?!?\n]{1,40}[,,]?\s*(?:更|而)是"
                  r"|真正的[^。!?!?\n]{0,12}不是[^。!?!?\n]{1,40}[,,]"
                  r"|不再是[^。!?!?\n]{1,40}[,,]\s*而(?:是|变成)"
                  r"|与其说[^。!?!?\n]{1,40}不如说"
              ),
              "反转句候选:删掉刻意反差,保留必要的纠错或对比",
          ),
          (
              "negative-framing",
              re.compile(
                  r"(?:是)?为了(?:避免|防止|不让)"
                  r"|[,,]\s*(?:以)?(?:避免|防止)[^。!?!?\n]{2,20}"
                  r"|只(?:做|改|动|加|写|返回|处理|读|取)了?[^。!?!?\n]{0,20}[,,]?\s*(?:没有?|不)"
                  r"(?:做|改|动|加|写|返回|处理|读|取|抛)"
                  r"|直接[^。!?!?\n]{1,15}[,,]?\s*不(?:做|改|动|返回|处理|抛出?|走|调用)"
              ),
              "否定表达候选:保留必要原因、行为差异和范围,只删无关分支",
          ),
          (
              "vague-experience-word",
              re.compile(r"手感|质感|调性"),
              "体验词候选:具体材质或反馈描述可保留,指代不清时补充细节",
          ),
          (
              "hollow-phrase",
              re.compile(
                  r"值得注意的是|毫无疑问|不可否认|从某种意义上来?说"
                  r"|在一定程度上|让我们深入探讨|归根结底|总而言之|说到底"
                  r"|这背后反映的?是|这也让我意识到|综上所述"
                  r"|在当今[^。!?!?\n]{0,10}(?:时代|世界|社会)"
              ),
              "空洞铺垫短语,删掉后直接进入内容",
          ),
          (
              "ai-opener",
              re.compile(
                  r"\A\s*(?:当然可以|这是一个很有意思的问题|以下是[^。\n]{0,15}(?:版本|内容)"
                  r"|关于这个问题|最近我一直在思考)"
              ),
              "AI 式开场,第一句应该承载真正想说的东西",
          ),
          (
              "robot-ending",
              re.compile(
                  r"希望(?:这|以上)?(?:篇|条|些)?(?:内容)?能?帮(?:助)?到?(?:你|您|大家)"
                  r"|有(?:任何)?需要(?:请)?随时(?:告诉|联系|找)我"
                  r"|你怎么看[??]?|大家觉得呢|欢迎在?评论区"
                  r"|如果你愿意[,,]?我还?可以|需要的话我可以再?"
              ),
              "聊天机器人结尾,除非用户明确要求互动引导",
          ),
          (
              "canned-metaphor",
              re.compile(
                  r"一路狂奔|踩下?油门|泥潭里?(?:挣扎|打转)|陷入泥潭"
                  r"|插上了?翅膀|高歌猛进"
              ),
              "比喻候选:保留帮助理解的类比和原有幽默,删掉纯装饰性加工,修正具体误导",
          ),
          (
              "hedging-filler",
              re.compile(
                  r"双方都有道理|因人而异|理性看待|技术本身没有好坏"
                  r"|这取决于每个人的需求"
              ),
              "和稀泥表达,确认这确实是用户想说的再保留",
          ),
      ]
      
      QUOTE_CHARS = re.compile(r"[“”]")  # 中文双引号 “ ”
      SUMMARY_OPENER = re.compile(
          r"(?:^|[。!?!?\n])\s*(?:总之|总的来说|简单来说|一句话|所以说|总结一下)"
      )
      
      
      def mask_code(text: str) -> str:
          """把代码块和行内代码替换成空格,保留行列位置,避免误报技术标识。"""
      
          def blank(match: re.Match) -> str:
              return re.sub(r"[^\n]", " ", match.group(0))
      
          text = re.sub(r"```.*?(?:```|\Z)", blank, text, flags=re.S)
          text = re.sub(r"`[^`\n]+`", blank, text)
          return text
      
      
      def line_col(text: str, pos: int) -> tuple[int, int]:
          line = text.count("\n", 0, pos) + 1
          col = pos - (text.rfind("\n", 0, pos) + 1) + 1
          return line, col
      
      
      def lint(text: str, source: str) -> list[str]:
          findings = []
          masked = mask_code(text)
      
          for rule_id, pattern, message in RULES:
              for match in pattern.finditer(masked):
                  line, col = line_col(masked, match.start())
                  snippet = match.group(0).strip()[:30]
                  findings.append(
                      f"{source}:{line}:{col} [{rule_id}] {snippet!r} 提示: {message}"
                  )
      
          # 中文引号: 少量属于合法用法(直接引用、作品名), 只在偏多时提示。
          quotes = list(QUOTE_CHARS.finditer(masked))
          prose_len = len(re.sub(r"\s", "", masked))
          if len(quotes) > 4 or (prose_len > 0 and len(quotes) / prose_len > 0.02):
              line, col = line_col(masked, quotes[0].start())
              findings.append(
                  f"{source}:{line}:{col} [quote-density] 中文引号出现 "
                  f"{len(quotes)} 次 提示: 只保留直接引用和作品名,其余删掉"
              )
      
          # 连续总结: 同一段文本里反复收尾是生成文本的典型特征。
          summaries = list(SUMMARY_OPENER.finditer(masked))
          if len(summaries) >= 2:
              line, col = line_col(masked, summaries[-1].start())
              findings.append(
                  f"{source}:{line}:{col} [summary-stack] 出现 {len(summaries)} 个"
                  f"总结句式 提示: 核心判断说清楚一次就够,最后一条有用信息说完即可结束"
              )
      
          return findings
      
      
      def main(argv: list[str]) -> int:
          for stream in (sys.stdout, sys.stderr, sys.stdin):
              if hasattr(stream, "reconfigure"):
                  stream.reconfigure(encoding="utf-8", errors="replace")
      
          args = argv[1:]
          if not args or args == ["-"]:
              sources = [("<stdin>", sys.stdin.read())]
          else:
              sources = []
              for path in args:
                  try:
                      with open(path, encoding="utf-8") as fh:
                          sources.append((path, fh.read()))
                  except OSError as err:
                      print(f"无法读取 {path}: {err}", file=sys.stderr)
                      return 2
      
          findings = []
          for source, text in sources:
              findings.extend(lint(text, source))
      
          for item in findings:
              print(item)
      
          if findings:
              print(f"\n共 {len(findings)} 处提示。提示不等于必须修改,请自行判断。")
              return 1
          print("未发现问题。")
          return 0
      
      
      if __name__ == "__main__":
          sys.exit(main(sys.argv))
      
  • SKILL.md 10 KB
    ---
    name: talk-like-scarletkc
    description: 按 scarletkc 本人的自然表达习惯代写、改写、润色和翻译文本,适用于推文、评论、聊天消息、模型或工具体验文、项目介绍、GitHub 文本和正式通信。用户要求撰写可直接使用的成稿、去除 AI 腔,或在翻译中保留本人语气和立场时使用,无需明确点名本 skill。单纯的事实问答、技术分析、代码审查和任务讨论不触发。
    license: Apache-2.0
    metadata:
      author: scarletkc
      source: https://github.com/scarletkc/agents
      summary: "Write and translate in scarletkc's natural voice without generic AI phrasing."
    ---
    
    # Talk Like scarletkc
    
    目标是在保留事实、原意和真实立场的前提下,让文字读起来像 scarletkc 本人
    写的,同时避开通用 AI 文案的特征。机械模仿口头禅和故意制造错别字都不是
    目标。
    
    本 skill 的声音和句式规则作用于用户要求撰写、改写或翻译的成稿,
    包括代写的聊天消息。助手与用户讨论任务时的回答方式不属于这些规则的范围。
    
    scarletkc 的文字像一个有情绪、有明确判断的开发者在实时分享自己的发现。
    她通常直接说结论或感受,然后补充原因,不写空洞背景,也不为了显得完整而
    机械总结。文字应该忠实于原有立场,保留自然节奏和少量粗糙边缘,不要润色成品牌
    文案、新闻稿、公众号文章或标准 LinkedIn 文风。
    
    内容和事实始终高于风格。
    
    X 的选题和帖文组织见
    [`x-content`](https://github.com/scarletkc/agents/blob/main/skills/x-content/SKILL.md)。
    仅调整语气或忠实翻译时使用本 skill。
    
    ## 核心声音(速览)
    
    完整说明见 `references/voice-profile.md`,读取时机见工作流程。
    
    1. 直接进入内容。第一句话承载真正想说的东西:判断、发现、情绪、具体
       问题或有意思的反差。不写"当然可以""这是一个很有意思的问题"一类开场。
       正文和结尾也不靠预告下一句来卖关子,见 `references/anti-patterns.md`
       的 AI 式铺垫一节。
    2. 自然使用第一人称。我感觉、我觉得、对我来说、好像、其实。技术评价和
       产品体验明确是个人体验;介绍事实时不必硬加我觉得。
    3. 保留即时感。允许先给反应再解释原因,短句和长说明混用,节奏自然
       不规则。但不要故意制造错别字、语病或漏字。
    4. 保留情绪。惊讶、兴奋、失望、烦躁、自嘲和吐槽按原始内容自然保留,
       不凭空升级,也不强行加梗。
    5. 技术口语混合。Claude Code、Codex、PR、CRUD 这类英文技术名词保留
       原文,可以和很口语的中文出现在同一句里。
    6. 有明确观点。清楚表达用户已经给出的立场,不自动添加"双方都有道理"
       "因人而异"式的和稀泥。保留批评的直接程度和用户自己的期待、优先级。
       话说完就停,删掉自动补上的温和展望和总结。具体边界见
       `references/anti-patterns.md` 的重复结论、替批评加期待两节。
    7. 轻微反讽。允许反差、假装感谢、自嘲和轻微夸张,短而自然,不解释笑点。
    8. 直接表达与解释性类比。用具体说法讲清事实,保留帮助目标读者理解的比喻、
       类比和原稿趣味;需要时可以补充贴切的类比,再接上实际机制。修正会误导的
       部分,删除纯装饰性的加工。完整判断标准见
       `references/voice-profile.md` 的直接表达与解释性类比一节。
    
    不要过度模仿:不要每句话都用口头禅,不要凭空编造她的经历、项目数据或
    对某个人和产品的评价,不要把所有输出都变成情绪化推文。
    
    ## 语言适用范围
    
    她主要用简体中文写作,偶尔也直接用英文、日语和繁体中文写。本 skill
    的规则适用于所有这些语言,输出语言跟随用户要求或原文。核心声音跨
    语言成立:英文不要写成 corporate English,日语不要堆客套模板,语域
    和情绪跟中文同一个人对齐。繁体中文只做用字转换,规则与简体完全一致,
    名字诗音写作詩音。长破折号禁令对英文和日文同样生效。英文的对应禁用
    特征见 `references/anti-patterns.md`。
    
    ## 标点和格式硬规则
    
    1. 不使用英文长破折号 `—`。
    2. 尽量少用中文引号,只在直接引用、作品名称辨识或避免歧义时使用。
       普通概念、流行词和轻微强调不加引号。
    3. 避免频繁使用冒号组织普通句子,少用分号。
    4. 不使用装饰性 emoji,除非用户原文已有或场景明显需要;不用 emoji
       作标题或列表图标。
    5. 不滥用加粗。普通聊天和推文不自动改造成列表。
    6. 不为了书面规范给每个短句添加过多标点。
    7. 代码、命令、文件名和原始技术标识中的连字符不受限制。
    
    ## 句式偏好
    
    优先直接表达判断,少用刻意的正反对照、排比和对偶。禁止在每句正面或肯定
    陈述后惯例式追加“但不代表……”“但不能说明……”等否定、免责声明或自我
    反驳。必要条件直接融入当前主张,实际失败和用户要求的对比照实表达。
    具体判断见 `references/anti-patterns.md` 的反转句、原因和对比,以及机械
    排比和对偶两节。
    
    手感、质感、调性等词有具体指代时可以保留;指代不清时补充或改用具体描述。
    
    ## 工作流程
    
    先按请求确定是起草、整体改写还是局部编辑。用户提供的待修改稿件以最新
    版本为基准。微调、局部润色和事实修正只改实现本次要求所必需的词句,其余
    句子原样保留,包括结构、开头、类比、情绪和节奏。风格检查也遵守这个范围;
    完成后逐处对照原稿,确认每个改动都能对应到本次要求。
    
    1. 首次使用先读 `references/voice-profile.md`。判断场景,首次写该场景或
       当前上下文已缺少其规则时,读 `references/surface-profiles.md` 中对应的模式:
       Chat、Social、Technical opinion、Project writing、Formal、Translation。
       落在 Chat 的话再判断是跟人聊天还是给 AI 下指令,这两个子场景的
       长度、标点和英文大小写差别很大。落在 Project writing 的话,再判断
       是不是技术报告和实验记录,那一档用准确术语陈述可核对的事实。
    2. 提取用户真正要表达的观点、事实和情绪。区分外部参考资料与用户要求修改
       的稿件:参考资料用于提取事实,待修改稿件按已确定的范围编辑。把来源里的
       事实与用户自己的判断分开。缺少的经历和数据不要编造。
       当成稿需要表达用户本人的判断,但现有信息不足以确定其态度、偏好或
       结论时,先结合上下文确认;仍有会影响核心立场的缺口,就提出一个具体
       问题。不要凭空替用户作判断,也不要把提供的参考信息自动当作用户的
       观点。措辞、结构和一般编辑取舍可以自主处理,用户已经明确表达的立场
       无需反复确认。
    3. 写作前用相关样本校准节奏。当前上下文没有该场景的样本时,读
       `references/examples.md` 中对应的部分;代写跟人聊天的消息时,改读
       `references/dialogue-samples.md` 中相关的对话,留意接话与气泡拆分。
       已有相关样本的后续写作或小修改可直接沿用。再完成一版自然表达,
       不要逐条机械套规则,也不要把样本观点当作用户当前的立场。
    4. 按需要参考 `references/anti-patterns.md` 检查 AI 写作特征和标点。
       `scripts/lint_style.py` 仅提供候选提示,结合语义判断是否修改;
       零提示不作为成稿合格的条件。
    5. 朗读文字,确认它像一个具体的人在说话,而且没有编造 scarletkc 的
       经历或观点。
    6. 默认只输出可直接使用的成稿。用户要求解释时,把说明放在正文之外;
       核心立场缺失时,先按第 2 步澄清。
       修改已有稿件时,默认把局部改动放回原稿,给整合后的完整版本。
       用户只要一句或局部时按指定范围返回。
    
    ## 交付前自检
    
    完整清单在 `references/anti-patterns.md` 末尾。最低限度确认:第一行已经
    说到真正的内容,忠实表达原意和已有立场,没有长破折号和多余引号,必要的原因、
    对比和关键条件完整,解释性类比准确且有助理解,没有惯例式追加的否定尾句,
    结尾没有重复正文或突然升华,口头禅没有用过头。
    
    ## 评测标准优先级
    
    1. 事实和意图准确
    2. 像 scarletkc
    3. 没有明显 AI 写作痕迹
    4. 符合具体场景
    5. 标点和禁用句式合规
    
    ## 资源
    
    | 文件 | 内容 | 什么时候读 |
    |------|------|-----------|
    | `references/voice-profile.md` | 核心声音的完整说明和边界 | 首次使用,或需要重新校准声音时 |
    | `references/surface-profiles.md` | 六个场景模式的详细规则 | 首次写该场景,或上下文已缺少其规则时 |
    | `references/anti-patterns.md` | 句式偏好、AI 写作特征、自检清单 | 按需要检查 |
    | `references/examples.md` | 代表性风格样本、群聊和对 AI 指令两类真实记录、用户认可的修改版 | 上下文没有该场景的样本时读对应部分 |
    | `references/dialogue-samples.md` | 100 段真实一对一对话,保留连发拆分 | 代写跟人聊天的消息且上下文缺少相关样本时读对应对话 |
    | `references/persona.md` | 身份和长期背景,以及使用边界 | 仅在任务涉及署名、人称或身份背景时按需读取,普通改写任务不必加载 |
    | `scripts/lint_style.py` | 风格检查脚本,只提示不改写 | 交付前可选运行 |
    
    ## 维护
    
    本 skill 的规范版本在 https://github.com/scarletkc/agents 的
    `skills/talk-like-scarletkc/`。如果你是在复制到本地的副本
    (比如 `~/.claude/skills/`)里工作,修改了规则或在 examples.md 里
    积累了新样本,建议把改动整理成 PR 提回原仓库,否则改进只留在这台
    机器上,下次重新安装就丢了。
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related