sepia
De-AI writing skill for any Agent Skills-compatible agent (77+ via the Skills CLI), with native plugins for Claude Code, Codex, Grok Build, and Antigravity. Narrative-architecture repair for fiction, venue-matched rules for professional prose. Based on StoryScope (arXiv:2604.03136).
原始仓库简介 · 中文摘要待补充 · agent-skills / ai-writing / antigravity / claude-code / codex / developer-tools
README / 项目原文
sepia
De-AI writing at the layer that actually gives AI away. Fiction gets its narrative architecture repaired before anyone touches word choice; professional documents (release notes, PR replies, postmortems, tickets, technical articles) each get rules matched to their venue.
A portable Agent Skill: any agent that speaks the standard can load it, and the Skills CLI, which supports 77+ agents, installs it with one command. Claude Code, Codex, Grok Build, Antigravity, and QwenPaw additionally get native plugin packaging. One canonical SKILL.md, no per-platform forks. Four operations: write, review (diagnose only), refactor (minimal edits), recreate (full rewrite).
Table of Contents
- Why another humanizer
- Operation entries
- Experimental: composing with voice skills
- Sentence rhythm and Chinese calibration
- Install
- Uninstall
- Layout
- Star History
- Sources
- Support
- License
Why another humanizer
Every popular humanizer edits word choice and syntax. StoryScope (Russell et al., 2026: 61,608 stories, human + 5 frontier LLMs) showed that a classifier using narrative-structure features alone detects AI fiction at 93.2% macro-F1. In the same study's LAMP-edited condition, where human editors had rewritten the surface style, detection dropped only from 95.5% to 93.9%. The tells that survive are architectural: themes explained by the narrator, single-track causally-tidy plots, emotions rendered only as bodily sensation, no real-world references, no reader, linear time, endings resolved by protagonist growth and acceptance.
sepia turns those measured gaps, together with the related studies digested in research/, into a three-pass writing and revision protocol for fiction:
| Pass | Layer | Examples |
|---|---|---|
| 1 | Narrative architecture (fiction) | stop explaining the theme, loosen the causal chain, back-load revelations, mix emotion modes, sparse character networks, name real things |
| 2 | Discourse flow | de-template the paragraph-question sequence, fix the mid-story sag, vary rhythm and positions |
| 3 | Surface style | the classic layer: clichés, syntax templates, vocabulary, register |
A 30-feature diagnosis rubric and per-model fingerprints across two layers apply when the writing or executing model is known:
| Model family | Narrative layer (StoryScope) | Sentence-level prose layer (Vendor prompting guides) |
|---|---|---|
| Claude | Measured | Claude Fable 5.1 and Mythos 5.1, Fable 5 and Mythos 5, Opus 5, Opus 4.8 |
| GPT | Measured | GPT-5.6, GPT-6 Astra |
| Gemini | Measured | Gemini 3 and 3.1 |
| DeepSeek | Measured | Consulted (no guidance published) |
| Kimi | Measured | Consulted (no guidance published) |
Notice: Vendors that publish no prompt guidance are recorded as consulted, not guessed.
Professional prose fails differently, and the structure-level finding holds there too: a 2026 replication of StoryScope on 2,250 company blog posts against 11,250 AI mirrors separated them at 98.0 macro-F1 from structural features alone, with the AI shape described as tidy and self-announcing (SLOPSHAPE-2026 in the ledger, arXiv:2609.15369; a preprint whose features are LLM-scored; it tested detection of original and model-self-reworded posts, never human editing). The studies digested in research/ point at filler that carries no information, hedging where a judgment was needed, chatbot leftovers, register that ignores the venue, and formatting that looks stamped out. Each document type gets a thin rule file on top of one shared checklist:
| Domain | The gist |
|---|---|
| Release notes / announcements | user impact first, artifacts per claim, no marketing inflation |
| PR / issue replies | answer first, cite file:line, no reflex praise, length ∝ stakes |
| Postmortems | blameless toward people, merciless toward mechanisms; timestamps, dead ends, owned action items |
| Tickets / work orders | title = outcome, testable acceptance criteria, link don't repeat |
| Technical articles | open at the problem, one real dead end, one committed opinion, numbers with conditions |
| Long-form journalism (features, investigations, data stories) | lead and body in two registers, quotations keep their spoken texture, every number carries a comparison, no summary ending |
Governing principle: Calibrate to the human distribution, don't invert the AI one. Humans sit at moderate values; a story with every rule applied is a new fingerprint. The skill selects 3–5 moves per story and leaves slack.
Operation entries
The complete plugin package gives Claude Code, Codex, Grok Build, Antigravity, and QwenPaw a general router plus five direct entries. On QwenPaw the package registers no commands of its own; the host's /<skill-name> dispatch serves each installed skill:
| Operation | Claude Code | Codex | Grok Build | Antigravity | QwenPaw | Meaning |
|---|---|---|---|---|---|---|
| write | /sepia-write |
$sepia-write |
/sepia-write |
/sepia-write |
/sepia-write |
Create new prose |
| review | /sepia-review |
$sepia-review |
/sepia-review |
/sepia-review |
/sepia-review |
Diagnose without editing |
| refactor | /sepia-refactor |
$sepia-refactor |
/sepia-refactor |
/sepia-refactor |
/sepia-refactor |
Make minimal in-place edits |
| recreate | /sepia-recreate |
$sepia-recreate |
/sepia-recreate |
/sepia-recreate |
/sepia-recreate |
Rewrite from the source facts and intent |
| hemingway | /sepia-hemingway |
$sepia-hemingway |
/sepia-hemingway |
/sepia-hemingway |
/sepia-hemingway |
Write or refactor fiction with the built-in Hemingway voice applied |
The general /sepia (Claude Code, Grok Build, Antigravity, and QwenPaw) or $sepia (Codex) router remains available. What was verified on each platform is stated under Install.
Notice: Standalone wrapper installation is unsupported. The operation wrappers depend on their sibling canonical skill; install the complete plugin package.
Experimental: composing with voice skills
Since v0.4.0, sepia defines an interface for stacking a voice or style skill on top of it — a minimalism method, a brand voice, a persona guide. It is opt-in: tell sepia the voice skill is in play, and it loads references/voice-skills.md over the normal route. No external voice is loaded unless you say so.
The interface contract operates under fixed precedence rules across operations and routes:
| Rule dimension | Contract specification |
|---|---|
| Architecture | sepia's architecture decisions come first. |
| Move selection | Voice moves are applied selectively (3–5 signature moves per piece, fewer when a sparse shape or the facts offer fewer; formula endings deliberately broken sometimes). |
| Review diagnostics | Review reports the voice's known costs instead of fixing them away. |
| Uniformity enforcement | Uniformity findings keep full strength: a voice does not excuse a metronome. |
| Professional register | On professional routes, the venue still sets the register. |
| Conflict resolution | Direct conflicts come back to you. |
Notice: The voice-skills interface is grounded in one blind review experiment on a strict-minimalism specimen — a worked example, not measured evidence.
Two built-in profiles ship under references/voices/, alongside a persona profile kind with declared override rights:
| Profile | Target routes | Source & characteristics | Opt-in & invocation |
|---|---|---|---|
Hemingway (references/voices/hemingway.md) |
Fiction and professional prose | Iceberg omission for fiction, the Kansas City Star rules for professional prose; each move traced to its source | Direct entry /sepia-hemingway (or $sepia-hemingway). On fiction, asking for strong de-AI on a story counts as opting in (sepia announces the profile and how to decline). Without an opt-in, a fiction review only reports when the text fits the profile and loads nothing. |
Taiwan long-form journalism (references/voices/tw-journalism.md) |
Professional routes only | Nine narrative shapes with their moves, drawn from private human-side journalism measurement and its close reading | Opt-in phrase: "apply the Taiwan journalism voice". Follows the same rules as Hemingway. |
Persona template (references/voices/PERSONA-TEMPLATE.md) |
Author-defined | One writer's style with declared override rights; checked by scripts/check_persona.py |
Author-created profile. Template at references/voices/PERSONA-TEMPLATE.md. |
Nyaneko (references/voices/personas/nyaneko.md) |
Professional routes only | Built-in companion voice written from the maintainer's voice specification with her own exemplars | Opt-in phrase: "apply persona Nyaneko" or 「套用 persona Nyaneko」. |
Writing with a persona: a short how-to
sepia's rules remove tells. Warmth has another source: the writer knowing who is speaking, and to whom. One case from this project's own release, with nothing measured: the v0.12.0 Threads post was drafted twice by the same model from the same release notes. The first prompt handed it a skeleton (version line, bullets, fixes, engineering note, update line) and got a form filled in. The second prompt handed it an identity, "I maintain this project and just shipped v0.12.0; talk to my followers in my own voice; how you organise it is yours", plus the notes as the only fact source and the platform's limits, and got the post the maintainer kept. A sepia review of that post then found its tells clustered at the opening and the close (an opening about how the change came to be, a maxim ending, a few absolutes), and a refactor took them out without touching the middle.
The order that worked:
- Identity first.
- Facts separately, as the only source.
- Constraints stated as platform limits, with the structure left to the model.
- sepia as the check.
Do not use tools; everything you need is below.
I am <who>, writing for <whom>, about <what just happened>. Use my own voice; how to organise it is yours.
Platform limits: <length, markup, mentions>.
Facts come only from the notes below; numbers and identifiers must match them.
===== notes =====
<the source document>
A persona profile is that identity written down once so every piece starts from it: what they are to the reader, what their first sentence does, how warmth attaches to a fact, what they never do, and pieces in their own voice as exemplars. The template is references/voices/PERSONA-TEMPLATE.md, the built-in references/voices/personas/nyaneko.md is a worked example, and the interface validator checks the profile structure:
python3 scripts/check_persona.py <file>
Write your own; the exemplars carry more than the description does.
Sentence rhythm and Chinese calibration
The style pass checks the spread of sentence lengths, the one syntactic measure on which every study that measured it agrees: human text varies more within a passage, in English and in Chinese.
| Syntactic measure | Status | Empirical basis |
|---|---|---|
| Sentence length spread | Checked signal | Within-passage variance is consistently higher in human text across English and Chinese studies. Evidence and numbers are in research/rhythm-syntax.md. |
| Mean sentence length | Discarded | Measured directions contradict each other across corpora. |
| Punctuation counts | Discarded | Measured directions contradict each other across corpora. |
| Paragraph length | Discarded | Measured directions contradict each other across corpora. |
Chinese text loads references/languages/zh.md, calibrating the style pass across four distinct evidence layers:
| Layer / Source | Nature of evidence | Corpus & calibration details |
|---|---|---|
| HC3 (2023) | Measured corpus | Human-vs-machine Chinese corpus baseline. |
| Traditional Chinese journalism | Human-side empirical measurement | About two thousand articles from one unnamed Taiwanese publication spanning about ten years (corpus not distributed; digest in research/zh-news-corpus.md). |
| Contrast group | Machine-side empirical contrast | 119 synthetic pieces across three models using one shared base prompt with a one-line variant for one model. |
| Taiwan conventions | Normative standard | Short normative section of Taiwan writing conventions drawn from public standards and first-tier consensus. |
Notice: The limits of all three empirical Chinese sources are stated in
references/languages/zh.md.
Install
Notice: Every command below is written for user scope — install once, use it in every project.
Any agent (Skills CLI, 77+ agents)
npx skills add Nanako0129/sepia -g # -g = user scope; the default is project
npx skills update sepia -g # update
npx skills remove sepia -g # uninstall
Installs on every agent the Skills CLI supports — Cursor, Cline, Windsurf, Copilot, OpenCode, goose, and more. Pick your agents when prompted. Runtime behavior outside the five platforms below has not been exercised by us; the skill is plain markdown under the Agent Skills standard, so file an issue if your agent trips on it.
Notice: "Verified" means the install completes and the sepia entries appear. The five native plugin installers were each exercised with a live install (QwenPaw's by its contributor). Whether the entries then behave as documented has not been checked platform by platform.
Claude Code
# install
claude plugin marketplace add Nanako0129/sepia
claude plugin install sepia@sepia --scope user
# update
claude plugin marketplace update sepia
claude plugin update sepia
Tip: The in-session
/plugin installdialog asks you to pick a scope — choose User there.
Codex
# install
codex plugin marketplace add Nanako0129/sepia
codex plugin add sepia@sepia
# update — refresh the marketplace snapshot, then re-add to pick up the new version
codex plugin marketplace upgrade sepia
codex plugin add sepia@sepia
Grok Build
# install
grok plugin install Nanako0129/sepia --trust
# update
grok plugin update
Grok also auto-discovers a Claude Code install of sepia if you have one; either route works.
Antigravity
# install directly from GitHub
agy plugin install https://github.com/Nanako0129/sepia
QwenPaw
# install: qwenpaw takes a local directory (or a zip URL), so clone first;
# the package's skills symlink resolves inside the clone
git clone https://github.com/Nanako0129/sepia
qwenpaw plugin install ./sepia/.qwenpaw-plugin
# uninstall
qwenpaw plugin uninstall sepia
Notice: Contributor-verified on QwenPaw 2.2.1 (#250, #289; not reproduced by the maintainer): the install completes, the packaged
skillssymlink is followed into a real tree byshutil.copytree, and/sepia <text>and/sepia-write <text>each start an agent turn through the host's skill dispatch. The other four entries use the same dispatch and were not run one by one. If the package cannot read its skills (a zip install, or a checkout without symlink support), it logs one error and registers nothing; install from a git clone instead.
Project scope (alternative)
When one repo should pin its own copy, commit skills/sepia/ into that repo as .agents/skills/sepia (Codex + Antigravity) or .claude/skills/sepia (Claude Code).
Uninstall
Each tool uses its native command:
# Claude Code
claude plugin uninstall sepia@sepia --scope user
# Codex
codex plugin remove sepia@sepia
# Grok Build
grok plugin uninstall sepia
# Antigravity
agy plugin uninstall sepia
# QwenPaw
qwenpaw plugin uninstall sepia
Layout
sepia/
├── plugin.json # Antigravity packaging
├── skills/
│ ├── sepia/ # canonical skill (Agent Skills standard)
│ │ ├── SKILL.md # routing, operations, calibration rules, guardrails
│ │ └── references/ # passes, rubric, fingerprints, domain rules, languages/zh.md, voice-skills (experimental)
│ ├── sepia-write/SKILL.md # thin fixed-operation wrappers
│ ├── sepia-review/SKILL.md
│ ├── sepia-refactor/SKILL.md
│ ├── sepia-recreate/SKILL.md
│ └── sepia-hemingway/SKILL.md # fiction write/refactor with the built-in voice
├── .claude-plugin/ # Claude Code packaging (plugin.json, marketplace.json)
├── .codex-plugin/ # Codex packaging
├── .qwenpaw-plugin/ # QwenPaw packaging (plugin.json, plugin.py, skills symlink)
├── .agents/ # Codex/Antigravity workspace-mode discovery + Antigravity workflow
└── research/ # digested evidence base with sources
Star History
Star history growth over time for Nanako0129/sepia.
Sources
Full digests with links are in research/. Primary studies include:
| Source | Venue / Identifier |
|---|---|
| StoryScope | arXiv:2604.03136 |
| LAMP | CHI 2025 |
| Measuring AI Slop | arXiv:2509.19163 |
| Reinhart et al. | PNAS 2025 |
| Russell et al. | ACL 2025 |
| NarraBench | arXiv:2510.09869 |
| Echoes in AI | PNAS 2025 |
| QUDsim | COLM 2025 |
| Beguš | 2024 |
| Beyond Checkmate | EMNLP 2025 |
| Nonaka & Perry | 2025 |
| Chakrabarty et al. | 2026 |
| Shan, Lee & Hao | 2026 |
| Rohrbacher et al. | 2026 |
| Sourati et al. | 2026 |
Support
You can use sepia for free without an account. The research behind every rule is open. Ongoing costs are just maintainer time and two kinds of model quota: delegating literature surveys to research agents that read primary papers, and running live models to test rule changes on A/B stories and cross-platform end-to-end reviews before shipping. You can support the project on Patreon.
License
MIT
sepia
从真正让 AI 露馅的那一层下手去 AI 味。小说在调整措辞之前先修复叙事架构;专业文档(发布说明、PR 回复、复盘报告、工单、技术文章)各自匹配符合场景的规则。
这是一套 Agent Skill。只要支持该标准的 agent 均可直接加载,支持 77+ 款 agent 的 Skills CLI 仅需单条命令即可完成安装。Claude Code、Codex、Grok Build、Antigravity 和 QwenPaw 额外提供了原生插件包。全平台共用一份标准 SKILL.md,不对各个平台建立独立分支。提供四种操作:write、review(仅诊断)、refactor(最小改动)与 recreate(整篇重写)。
目录
为什么还需要另一个 humanizer
常规去 AI 工具大多只在字词和句法上打转。StoryScope(Russell et al., 2026: 61,608 篇故事,包含人类创作与 5 款前沿 LLM)表明,分类器仅凭叙事结构特征检测 AI 小说的 macro-F1 就达到 93.2%。同一项研究的 LAMP 编辑条件下(人类编辑改写了表层风格),检测率也只从 95.5% 降到 93.9%。留存的特征都位于架构层:叙述者直接阐释主题、因果关系过于工整的单线情节、情绪只靠身体感受呈现、没有现实世界的参照、读者缺席、时间全程线性,以及靠主角成长与接纳收束的结局。
sepia 将这些实测差距,连同 research/ 里梳理的相关研究,转化为针对小说写作与修订的三 pass 流程:
| Pass | 层次 | 例子 |
|---|---|---|
| 1 | 叙事架构(小说) | 避免直接解释主题、松开因果链、把揭露往后放、混用情绪呈现模式、稀疏的角色网络、点名真实事物 |
| 2 | 篇章推进 | 去除段落—问题序列模板、改善故事中段节奏松散的问题、变换节奏与位置 |
| 3 | 措辞风格 | 多数 humanizer 处理的层面:陈词滥调、句法模板、用词、语域 |
另附一套 30 项特征的诊断标准;当已知起草或执行模型时,会在两个层次套用各模型专属的指纹:
| 模型家族 | 叙事层(StoryScope) | 句子级散文层(厂商提示词指南) |
|---|---|---|
| Claude | 实测 | Claude Fable 5.1 与 Mythos 5.1、Fable 5 与 Mythos 5、Opus 5、Opus 4.8 |
| GPT | 实测 | GPT-5.6、GPT-6 Astra |
| Gemini | 实测 | Gemini 3 与 3.1 |
| DeepSeek | 实测 | 已查阅(未公开发布指南) |
| Kimi | 实测 | 已查阅(未公开发布指南) |
注意: 未公开提示词指南的厂商记录为已查阅,不予猜测。
专业文档暴露破绽的方式不同,而结构层的结论在这里同样成立:2026 年的一项研究把 StoryScope 复制到商业博客文章上,2,250 篇真人文对上 11,250 篇 AI 镜像,仅用结构特征就以 98.0 macro-F1 区分两者,AI 那一侧被描述为「整齐、自我预告」(ledger 代号 SLOPSHAPE-2026,arXiv:2609.15369;预印本,特征由 LLM 评分;测的是对原文与模型自我改写稿的检测,没有测过人工编辑)。research/ 里梳理的研究指出的问题是:没有信息量的填充文字、需要判断时闪烁其词、聊天机器人的残留语气、无视具体场合的语域、像一个模子印出来的排版。每类文档都在一份共用检查清单之上,各配一份精简的规则文件:
| 领域 | 要点 |
|---|---|
| 发版说明/公告 | 用户影响放在前面、每项宣称附佐证、避免营销化表达 |
| PR/issue 回复 | 先给答案、引用 file:line、避免条件反射式称赞、篇幅与事情的重要程度相称 |
| 事故复盘 | 不追究个人责任,深入分析机制;附时间戳、记录经历过的无效路径、每个行动项都有负责人 |
| 工单 | 标题写结果、验收条件可测试、可通过链接引用,避免重复 |
| 技术文章 | 从问题切入、记录一条真实经历过的无效路径、提出一个明确判断、数字附上适用条件 |
| 长篇新闻(特稿、调查、数据报道) | 导语与正文采用两种语体、引语保留口语质感、每个数字都带比较基准、不写总结式结尾 |
核心原则: 以人类分布为校准基准,不要直接反转 AI 分布。人类写作的各项指标大多落在中段区间,把每条规则都用上的故事反而会形成一套新的特征指纹。本 skill 针对每篇故事只挑选 3–5 种手法套用,给文本留出余地。
操作入口
完整的插件包为 Claude Code、Codex、Grok Build、Antigravity 和 QwenPaw 带来了一个通用路由以及五个直达入口。QwenPaw 的插件包不自行注册命令,由 QwenPaw 原生的 /<skill-name> 分派调用已安装的 skill:
| 操作 | Claude Code | Codex | Grok Build | Antigravity | QwenPaw | 用途 |
|---|---|---|---|---|---|---|
| write | /sepia-write |
$sepia-write |
/sepia-write |
/sepia-write |
/sepia-write |
撰写新内容 |
| review | /sepia-review |
$sepia-review |
/sepia-review |
/sepia-review |
/sepia-review |
只诊断,不修改 |
| refactor | /sepia-refactor |
$sepia-refactor |
/sepia-refactor |
/sepia-refactor |
/sepia-refactor |
在原文上做最小修改 |
| recreate | /sepia-recreate |
$sepia-recreate |
/sepia-recreate |
/sepia-recreate |
/sepia-recreate |
根据原始事实与意图重新撰写 |
| hemingway | /sepia-hemingway |
$sepia-hemingway |
/sepia-hemingway |
/sepia-hemingway |
/sepia-hemingway |
应用内置海明威语气写作或改写小说 |
通用的 /sepia(Claude Code、Grok Build、Antigravity 与 QwenPaw)或 $sepia(Codex)路由依旧可用。各平台具体验证了哪些内容,参见安装一节。
注意: 各操作 wrapper 均依赖同级的规范 skill,不支持单独安装,请直接安装完整的插件包。
实验性功能:叠加语气/风格 skill
从 v0.4.0 开始,sepia 定义了一套接口,允许在上层叠加声音或风格类 skill(极简主义方法、品牌语调、persona 指南)。采用 opt-in 机制:明确告知 sepia 启用了声音 skill 后,它才会在常规路由之上加载 references/voice-skills.md;不说就不加载外部声音。
接口契约在各操作与路径间遵循固定的优先级规则:
| 规则维度 | 接口规范 |
|---|---|
| 架构 | sepia 的架构决策先行。 |
| 手法选择 | 声音手法的套用必须节制(每篇选取 3–5 种代表手法,叙事形态稀疏或事实不足时更少;偶尔有意打破公式化的收尾)。 |
| 诊断审查 | review 会报告该声音已知的代价,不代改。 |
| 均匀性检查 | 均匀性 finding 维持原样:有了声音也不能写成节拍器。 |
| 专业语域 | 在专业写作路径上,语域仍由发布场合决定。 |
| 冲突解决 | 一旦发生直接冲突,交由你定夺。 |
注意: 这套声音 skill 接口源自针对一份极简主义样本的盲审实验,属单一案例,并非量测证据。
references/voices/ 下内置了两套 profile,并附带一种拥有声明式覆盖权的 persona profile:
| Profile | 适用路径 | 来源与特征 | Opt-in 与调用方式 |
|---|---|---|---|
海明威(references/voices/hemingway.md) |
小说与专业散文 | 小说采用冰山式省略,专业文体遵循堪萨斯城星报规则;每项手法均标明出处 | 直达入口 /sepia-hemingway(或 $sepia-hemingway)。在小说路径上,要求强力去除故事里的 AI 味才算 opt-in(sepia 会说明正在套用哪个 profile 以及如何关闭)。未 opt-in 时,小说 review 发现文本符合该 profile 时仅做提示,不加载任何内容。 |
台湾深度报道(references/voices/tw-journalism.md) |
仅限专业路径 | 九种叙事形态各自的手法,来自私下测量的繁体中文新闻语料及其细读 | opt-in 短语:「套用台灣深度報導 voice」或 "apply the Taiwan journalism voice"。遵守与海明威相同的规则。 |
Persona 模板(references/voices/PERSONA-TEMPLATE.md) |
作者自定义 | 单一写作者的风格,带声明式覆盖权;由 scripts/check_persona.py 校验 |
由作者创建 profile。模板位于 references/voices/PERSONA-TEMPLATE.md。 |
Nyaneko(references/voices/personas/nyaneko.md) |
仅限专业路径 | 内置的伙伴声线,依维护者撰写的语音规格与示范句编写 | opt-in 短语:"apply persona Nyaneko" 或 「套用 persona Nyaneko」。 |
用 persona 写东西:一段简短教程
sepia 的规则负责去掉 AI 味。温度另有来源:写的人知道自己是谁在对谁说话。这个项目自己的一个案例,只是观察、没有测量:v0.12.0 的 Threads 帖子用同一个模型、同一份 release notes 写了两次。第一次的提示给了骨架(版本行、条列、修正、工程备注、更新方式),出来是照表填格。第二次的提示给的是身份,「我是这个项目的维护者,刚发了 v0.12.0,用我自己的口吻讲给关注者听,怎么组织由你决定」,加上 notes 当唯一事实来源和平台限制,出来的是维护者留下来用的那篇。之后用 sepia review 扫那篇,tell 集中在开头与收尾(历程铺陈、格言式结尾、几个绝对化的词),refactor 去掉它们,中间没动。
验证有效的顺序是:
- 先给身份。
- 事实另附,作为唯一来源。
- 限制只写平台限制,结构留给模型。
- 最后以 sepia 作为检查。
不要使用工具,需要的东西都在下面。
我是〈谁〉,写给〈谁〉看,讲的是〈刚发生的什么事〉。用我自己的口吻;怎么组织由你决定。
平台限制:〈长度、标记、提及〉。
事实只能来自下面的 notes,数字与编号要对得上。
===== notes =====
〈来源文件〉
persona profile 就是把这个身份写下来一次,之后每篇都从它出发:他和读者是什么关系、第一句做什么、温度挂在什么事实上、绝不做什么,以及几篇他自己声音的范文。模板位于 references/voices/PERSONA-TEMPLATE.md,内置的 references/voices/personas/nyaneko.md 是一份完整示例,接口校验脚本负责检查 profile 结构:
python3 scripts/check_persona.py <file>
鼓励你写自己的一套;范文承载的内容比描述更多。
句长节奏与中文校准
style pass 重点检查句长的变化幅度。这是量测过它的研究里唯一方向一致的句法指标:无论英文还是中文,人类文本在同一段落内的方差均表现得更大。
| 句法指标 | 状态 | 实证依据 |
|---|---|---|
| 句长变化幅度 | 纳入检查的信号 | 无论是英文还是中文研究,人类文本在同一段落内的方差均表现得更高。具体证据与数据见 research/rhythm-syntax.md。 |
| 平均句长 | 舍弃 | 各语料库的测量方向相互矛盾。 |
| 标点数量 | 舍弃 | 各语料库的测量方向相互矛盾。 |
| 段落长度 | 舍弃 | 各语料库的测量方向相互矛盾。 |
中文文本会加载 references/languages/zh.md,跨越四个不同的证据层次对 style pass 进行校准:
| 层次/来源 | 证据性质 | 语料与校准详情 |
|---|---|---|
| HC3(2023) | 实测语料库 | 人机对照中文语料库基准。 |
| 繁体中文新闻 | 人类侧实证测量 | 来自一家未具名台湾出版方的约两千篇文章,跨度约十年(语料未公开;摘要见 research/zh-news-corpus.md)。 |
| 对照组 | 机器侧实证对照 | 涵盖三个模型的 119 篇合成文,采用同一份基础提示词(其中一个模型包含一行变体)。 |
| 台湾惯例 | 规范标准 | 取自公开规范与一级共识的简短台湾写作惯例规范章节。 |
注意: 上述三种实证中文来源的局限性均已在
references/languages/zh.md中说明。
安装
注意: 下列所有命令均按 user scope 编写——一次安装,即可在所有项目中直接使用。
任何 agent(Skills CLI,支持 77+ 个 agent)
npx skills add Nanako0129/sepia -g # -g = user scope; the default is project
npx skills update sepia -g # update
npx skills remove sepia -g # uninstall
只要是 Skills CLI 支持的 agent 均可安装(Cursor、Cline、Windsurf、Copilot、OpenCode、goose 等)。安装过程中按提示选择你使用的 agent 即可。对于下方五款平台以外的运行时表现,我们尚未进行过实机测试;本 skill 基于 Agent Skills 标准编写,属于纯 Markdown 文件,如果你的 agent 运行遇到问题,欢迎提交 issue。
注意: 所谓「验证」,是指安装流程能够顺利走完并出现 sepia 相关的入口。五款原生插件安装程序均进行过实机安装测试(QwenPaw 由贡献者完成)。安装后各入口的具体行为尚未逐个平台进行实测。
Claude Code
# install
claude plugin marketplace add Nanako0129/sepia
claude plugin install sepia@sepia --scope user
# update
claude plugin marketplace update sepia
claude plugin update sepia
提示: 会话中的
/plugin install弹窗会要求选择 scope——请在此处勾选 User。
Codex
# install
codex plugin marketplace add Nanako0129/sepia
codex plugin add sepia@sepia
# update — refresh the marketplace snapshot, then re-add to pick up the new version
codex plugin marketplace upgrade sepia
codex plugin add sepia@sepia
Grok Build
# install
grok plugin install Nanako0129/sepia --trust
# update
grok plugin update
如果你本地已经通过 Claude Code 安装过 sepia,Grok 也能自动检测到;两种安装途径均可正常使用。
Antigravity
# install directly from GitHub
agy plugin install https://github.com/Nanako0129/sepia
QwenPaw
# install: qwenpaw takes a local directory (or a zip URL), so clone first;
# the package's skills symlink resolves inside the clone
git clone https://github.com/Nanako0129/sepia
qwenpaw plugin install ./sepia/.qwenpaw-plugin
# uninstall
qwenpaw plugin uninstall sepia
注意: 由贡献者在 QwenPaw 2.2.1 上实机验证(#250、#289,维护者未自行复现):安装流程能顺利走完,插件包中打包的
skills符号链接会被shutil.copytree展开为真实目录,/sepia <text>与/sepia-write <text>都会通过 QwenPaw 的 skill 分派启动 agent。另外四个入口走同一分派,没有逐个实测。若插件包读不到 skill(zip 安装,或不支持符号链接的 checkout),会记录一条错误并且不注册任何内容,请改用 git clone 安装。
Project scope(替代方案)
当某个仓库需要锁定独立副本时,可将 skills/sepia/ 作为 .agents/skills/sepia(Codex + Antigravity)或 .claude/skills/sepia(Claude Code)提交至该仓库。
卸载
各个工具均使用各自的原生命令:
# Claude Code
claude plugin uninstall sepia@sepia --scope user
# Codex
codex plugin remove sepia@sepia
# Grok Build
grok plugin uninstall sepia
# Antigravity
agy plugin uninstall sepia
# QwenPaw
qwenpaw plugin uninstall sepia
目录结构
sepia/
├── plugin.json # Antigravity packaging
├── skills/
│ ├── sepia/ # 标准 skill(Agent Skills standard)
│ │ ├── SKILL.md # routing、operations、calibration rules、guardrails
│ │ └── references/ # passes、rubric、fingerprints、domain rules、languages/zh.md、voice-skills(实验性)
│ ├── sepia-write/SKILL.md # 固定单一操作的薄 wrapper
│ ├── sepia-review/SKILL.md
│ ├── sepia-refactor/SKILL.md
│ ├── sepia-recreate/SKILL.md
│ └── sepia-hemingway/SKILL.md # fiction write/refactor with the built-in voice
├── .claude-plugin/ # Claude Code packaging (plugin.json, marketplace.json)
├── .codex-plugin/ # Codex packaging
├── .qwenpaw-plugin/ # QwenPaw packaging (plugin.json, plugin.py, skills symlink)
├── .agents/ # Codex/Antigravity workspace-mode discovery + Antigravity workflow
└── research/ # digested evidence base with sources
Star 趋势
Nanako0129/sepia 随时间变化的 Star 增长历史趋势。
参考资料
完整摘要与链接见 research/。主要研究包括:
| 来源 | 发表场合/标识符 |
|---|---|
| StoryScope | arXiv:2604.03136 |
| LAMP | CHI 2025 |
| Measuring AI Slop | arXiv:2509.19163 |
| Reinhart et al. | PNAS 2025 |
| Russell et al. | ACL 2025 |
| NarraBench | arXiv:2510.09869 |
| Echoes in AI | PNAS 2025 |
| QUDsim | COLM 2025 |
| Beguš | 2024 |
| Beyond Checkmate | EMNLP 2025 |
| Nonaka & Perry | 2025 |
| Chakrabarty et al. | 2026 |
| Shan, Lee & Hao | 2026 |
| Rohrbacher et al. | 2026 |
| Sourati et al. | 2026 |
赞助
sepia 任何人都能免费使用,不需要注册账号。每条规则背后的研究全部公开。项目的实际开销只有维护者的时间与两种模型额度:委派研究 agent 阅读论文原文进行文献调查,以及在规则变更上线前使用真实模型跑 A/B 对照小说与跨平台的端到端审查。欢迎在 Patreon 上支持本项目。
许可证
MIT