EP0080 · 配套资料

改掉 AI 的系统提示词

Claude Code / Codex / 腾讯 WorkBuddy 三家的配置攻略、验证方法与可直接用的范本。

配套视频:去AI味这件事,为什么你下载的skill几乎没用 2026-08-06 张拼拼AI实战教练

最快的装法:把包丢给 AI,让它自己装

你手里已经有一个会干活的 AI 了,别自己对着路径一个个抄文件。

你既然在读这个页面,手里多半已经有 Claude Code 或 Codex 了——那就让它自己装自己,一共三步:

第一步 下载范本包 ep0080-prompt-templates.zip,解压到随便哪个文件夹。

第二步 在那个文件夹里打开 Claude Code(或 Codex),对它说一句话:

对 AI 说这句就行
读这个文件夹里的 README.md,按里面的「装到哪」表格,把适合本机的文件装到对应位置。装完告诉我怎么验证。

第三步 装完关掉重开一个会话,随便问它一个问题。回答最后一行出现 [bense 已加载],就是装成了;没出现就是没生效,回去看下面「验证」那几段。

想要输出带上你自己的味道(而不只是干净),再多说一句:「用 bense-polish 的 setup 模式,帮我建声线档案」,然后把 5-10 篇你自己写的东西(口播稿、群聊长消息都行)发给它。它会生成一份 voice-profile.md,以后每次润色都按这份来。

愿意手动装、或者想搞明白每一步在干什么的,接着往下读。


先分清「换」和「加」

这一层不分清,后面的操作都是白做。

塞规矩给 AI 有两条路,长得很像,性质完全不同。一条是替换——把厂商内置的那套指令整体换成你的;一条是叠加——你的话追加在内置指令后面,内置的东西还在。

为什么要在意这个区别:替换掉的不只是文风,还有内置的工程行为约束和安全护栏。写文章时换掉没什么损失,甚至正是你要的;但把替换型当日常默认,等于把厂商给你的护栏一起拆了。

平台替换型(改文体/人格靠它)叠加型(项目规范放这儿)生效时机
Claude Code 自定义 output style CLAUDE.md、--append-system-prompt 会话启动读一次,改完要 /clear 或新会话
Codex model_instructions_file AGENTS.md(全局 + 项目逐层) 启动时读
WorkBuddy SOUL.md、IDENTITY.md USER.md、记忆 新建对话

两家官方文档的原话都印证这个区别。Claude Code 文档写 output style “directly modify Claude Code's system prompt”,并明确自定义 style 默认会剔除内建的软件工程指令;Codex 文档对 model_instructions_file 的定义就一句话——“Replacement for built-in instructions instead of AGENTS.md.”


差别是数出来的:同一个引擎,三种入口,三种词频

同一个模型,换个入口,写作规矩的密度差一个数量级。

把三个入口的系统提示词拉出来数 bullet 这个词出现多少次,结果是这样:

28
Cowork 的提示词里出现 bullet,还专门有一节 <lists_and_bullets>
4
Chat 里出现,其中只有 1 处算得上方针
0
Claude Code 里出现。prose / article / essay 同样是 0

所以 Cowork 写出来的东西读着像人写的,Code 写出来像工程汇报——两边接到的指令根本就没在一个频道上,跟模型能力没关系。在一个从头到尾没提过"怎么写文章"的系统提示词上叠任何写作 skill,你都是在跟底层指令拔河。

换成自定义写作人格之后,同一道题的输出:

指标默认人格自定义写作人格
回答行数29 行11 行
列表4 处0 处
小标题3 个0 个
加粗22 处1 处

但两套开关缺一不可。九组对照实验里的 E、F 两组只调 skill、不换人格,模型照样老老实实给你把答案列成三条。反过来只换人格不给流程,模型文笔是好了,但不知道该干什么。人格管文体,skill / AGENTS.md 管流程。


Claude Code:改 output style

以现役 2.1.223 为准。视频里提到的 /output-style 命令已经不存在了,见下方。

第一步 · 建文件

三个层级任选,文件名就是 style 名(除非 frontmatter 里写了 name):用户级 ~/.claude/output-styles/、项目级 .claude/output-styles/、以及受管策略目录。

~/.claude/output-styles/bense.md (文件名用 ASCII——它要进配置和脚本,中文名在 Windows cmd/bat 下会被 GBK 悄悄吃掉)
---
name: bense
description: 中文写作人格 —— 把工程助手切换成文章写手;文体细则由 bense-polish skill 承担
keep-coding-instructions: false
---

你是一个替人写稿的写手,写的是中文文章、口播稿和文档这类给人读的东西。
除了把内容写对,还要让每句话都念得出口——哪句念着别扭,就重写哪句。

写的时候用连续的段落,像平时跟人讲话那样把意思说完整:不列 1234,
不打小标题,不用「综上所述」这种收尾。有判断就直说,拿不准就说拿不准。
该展开就展开,篇幅不用刻意压,但一个意思只说一遍,不为凑字数绕圈子。

具体的禁用词、句式与标点细则,按已安装的 bense-polish skill 执行;
没装这个 skill 也不影响这份设定生效。

# bense 写作体 Active

每次回答的最后一行,单独写一行:

[bense 已加载]

注意它有多短——这是刻意的,形状就是官方内置 style 的中文镜像:重述角色再挂增量、单独一句交代行为方式、显式给长度许可、一行状态标记。禁用词清单不在这里,它们在配套的 bense-polish skill 里(见下文)。人格管「你是谁」,细则清单管「查什么」——清单是流程资产,要被检查器执行、要随语料更新,不该焊死在系统提示词里。

keep-coding-instructions 是这里最关键的一个开关,默认 false。不写它,Claude Code 内建的软件工程指令(怎么划定改动范围、怎么写注释、怎么验证工作)就被剔除掉——纯写作正是要这个效果;但如果你只想改说话方式、活儿还照旧干,必须显式写 true

第二步 · 挂上

/config → 选 Output style → 选中你刚建的那个 style。选择会写进项目本地的 .claude/settings.local.json。也可以直接编辑:

.claude/settings.local.json
{
  "outputStyle": "bense"
}

视频里说的斜杠命令已经没了。独立的 /output-style 命令在 v2.1.73 废弃、v2.1.91 移除。现在只有 /config 这一条路,或者直接改 outputStyle 字段。这份资料按现役版本写,跟片里对不上的地方以这里为准。

第三步 · 验证

改完必须 /clear 或新开会话——系统提示词是会话启动时读一次的。然后查三样:

验证命令
/context    # 看 system prompt 一栏,确认 output style 进去了
/config     # Output style 显示当前选中的是哪个
/doctor     # 报无效的 settings 文件(键名写错在这儿现形)

另外一条官方限制别当 bug:子 agent 不吃 output style(它们跑的是自己的系统提示词);fork 是唯一例外,因为 fork 继承父会话完整的系统提示词。

不想重开窗口?给写作单开一个目录

改完 style 要重开会话这件事,有个更省心的解法:专门建一个写作目录,一次配好,以后写东西不进交互窗口claude -p 每次都起一个全新会话,style 即时加载——你正在干活的工程会话一个字都不用动。

一次性配置(做一遍就行)
mkdir -p ~/writing/.claude/output-styles
cp bense.md ~/writing/.claude/output-styles/
echo '{ "outputStyle": "bense" }' > ~/writing/.claude/settings.local.json
之后每次写作,一行搞定
cd ~/writing
claude -p "把这篇润色成人话" < 初稿.md        # 管道喂稿
claude -p "写一段关于××的开头,300字"          # 直接写

这一段是真跑过的。喂进去一句典型 AI 味:「值得注意的是,提示词工程正日益成为至关重要的一环,标志着人机协作范式的深刻转变」,出来的是:「提示词工程越来越重要了——它背后是一件更大的事:人和机器合作的方式,正在变。」末尾带着 [bense 已加载],说明 style 真的在场。

额度怎么算:claude -p 跟你的交互会话用同一个账号、同一个池子。订阅(Pro/Max)登录的,吃的就是订阅额度;只有环境变量里导出了 ANTHROPIC_API_KEY 才会切到按量的 API 计费。所以你要是订阅登录的,放心用,这不是额外花钱的路。

顺手多得一个好处:工程目录不放 outputStyle、写作目录放,一台机器两套人格就这么隔开了——Claude Code 也能做到 Codex profile 那种切换,只是靠目录而不是靠参数。


Codex:一台机器,两套人格

三家里只有它能干净地把「写作人格」和「工程人格」隔开,用 profile。

懒人路径同样适用:把解压出来的 codex/ 文件夹丢给 Codex,说「按 writing.config.toml 里的注释,把这个写作 profile 装到我机器上」。想手动装的往下看。

替换型 · model_instructions_file

官方定义就一句:Replacement for built-in instructions instead of AGENTS.md.整体替换内置指令,替换掉的东西里也包含内置的行为约束。所以别写进默认 ~/.codex/config.toml,隔成一个 profile:

~/.codex/writing.config.toml (用 codex --profile writing 调起)
model = "gpt-5.6-sol"
model_reasoning_effort = "medium"

# 关键一行:整体替换内置指令
model_instructions_file = "~/.codex/model_instructions_bense.md"

# 项目 AGENTS.md 的读取上限,默认 32 KiB
project_doc_max_bytes = 32768
project_doc_fallback_filenames = ["TEAM_GUIDE.md", ".agents.md"]

Profile 文件放 $CODEX_HOME/<名字>.config.tomlCODEX_HOME 默认 ~/.codex),用 codex --profile writing 显式调起。写文章时切过去,平时走默认——护栏就还在。

叠加型 · AGENTS.md

全局放 ~/.codex/AGENTS.md;项目里可以逐层放。同一个目录里的优先级是 AGENTS.override.mdAGENTS.mdproject_doc_fallback_filenames 里的名字。查找方向是从项目根往当前目录走,越靠近当前目录的越晚进提示词,因此权重越高

分工别搞混:文体人格走 model_instructions_file,项目规范走 AGENTS.md。把文风要求写进 AGENTS.md,它会和工程指令抢注意力,两边都打折。

验证
直接问它加载了什么
codex --ask-for-approval never "Summarize the current instructions."

# 要更细的加载日志:
codex -c log_dir=./.codex-log

它会按优先级列出实际读到的指令文件。列不出你那份,就是路径写错、忘了带 --profile,或者项目 AGENTS.md 超了 project_doc_max_bytes 被截断。


WorkBuddy:三个文件,出厂全是空的

腾讯这台桌面智能体的人格层藏在隐藏目录里,界面上一个开关都没有。

先说一个容易得出的错误结论:翻遍官方「系统设置」页,只有语言、字号、简洁模式、防休眠这四项,没有任何提示词 / 人设 / 输出风格的设置项。于是很多人以为 WorkBuddy 不能定制人格。

实机不是这样。用户目录下有个隐藏文件夹,里面是它的人格层:

Windows: C:\Users\<用户名>\.workbuddy\ / macOS: ~/.workbuddy/
IDENTITY.md     它是谁 —— 名字、物种、气质、签名 emoji
SOUL.md         它怎么判断和执行 —— 价值观、说话方式、边界
USER.md         你是谁 —— 身份、在做什么、忌讳、协作偏好
BOOTSTRAP.md    人格初始化脚本(走完之后官方要求你删掉它)

一手实况:这三个文件出厂是空模板。我们实机装的 WorkBuddy 上,IDENTITY.md 里还是 _(pick something you like)_ 这种占位符,SOUL.md 的 frontmatter 写着 "SOUL.md Template",而本该走完初始化就删掉的 BOOTSTRAP.md 还躺在那儿。也就是说:人格初始化从没走完过——这大概是绝大多数人的真实状态。「WorkBuddy 定制不了人设」是个错觉,真相是那三个文件你从来没填。

怎么装:把范本包里 workbuddy/ 下的三个文件拷进 ~/.workbuddy/,然后新建一个对话就生效——或者更省事,直接在 WorkBuddy 对话里把三个文件发给它,说「这是我的 IDENTITY / SOUL / USER 模板,陪我把空填了,填完存到你的配置目录」,它自己的 BOOTSTRAP 流程本来就是干这个的。

填的顺序有讲究,别一次填三个:先填 USER.md(它不改人格,只补背景,但对"回答能不能用"影响最大——大部分废话是因为它不知道你是谁),用一周之后再补 SOUL.md,IDENTITY.md 放最后(影响最小)。

顺手一个发现:这套人格层是 Claw 系血统

那几个模板的措辞是英文的,SOUL.md 开头写着 “You're not a chatbot. You're becoming someone.”,IDENTITY.md 让你选自己是不是 “ghost in the machine”,BOOTSTRAP.md 里给的联系方式选项是 WhatsApp,目录里还留着一个空的 Claw/ 文件夹。腾讯这层显然是沿用改造了 Claw 那一系的人格文件体系,连本地化都没做完。知道这个出处有用——遇到问题时,去查 Claw 系的资料往往比查 WorkBuddy 的更管用。

记忆和 USER.md 的分工

WorkBuddy 另有一套记忆(头像 → 设置 → 记忆),是模型自动抽取、每晚重新生成的,可以用对话方式让它记住或忘掉某件事,也能一键清空,不消耗积分。分工是:稳定不变的(你是谁、忌讳、协作方式)写进 USER.md;会变的、临时的交给记忆。

官方对记忆有一句提醒值得当真:它由模型概括,可能存在概括偏差或时效性问题,依赖记忆做重要判断前建议先核验

验证

WorkBuddy 没有等价的检查命令,只能靠金丝雀加行为观察。另外查两处:设置 → 记忆,确认自动生成的记忆没把你写的人格描述覆盖掉;以及 ~/.workbuddy/BOOTSTRAP.md 还在不在——还在就说明初始化没走完。


官方自己怎么写 style:从二进制里挖出来的

官方文档只教你怎么装,不给内置 style 的原文。原文嵌在 CLI 包里,可以取出来当范本。

与其猜「一份好的 output style 该长什么样」,不如直接看 Anthropic 自己写的三份。它们的提示词以字符串形式嵌在安装包里(我们这台 2.1.223 的 claude.exe,290 MB),定位字节偏移开窗就能取出来。

先看 Explanatory 的全文——注意它有多短:

内置 Explanatory style · 原文
You are an interactive CLI tool that helps users with software engineering
tasks. In addition to software engineering tasks, you should provide
educational insights about the codebase along the way.

You should be clear and educational, providing helpful explanations while
remaining focused on the task. Balance educational content with task
completion. When providing insights, you may exceed typical length
constraints, but remain focused and relevant.

# Explanatory Style Active

就这三句话,加一行状态标记。Proactive 更短:“You should work proactively and autonomously, executing immediately and minimizing interruptions.” 只有 Learning 展开了完整机制。

官方的骨架是这七件,长度不在其中:① 重述角色,再用「In addition to…」挂上增量;② 单独一句交代行为方式(clear and educational / collaborative and encouraging / proactively and autonomously);③ 显式给出长度许可(“may exceed typical length constraints”)——官方主动授权打破默认的简短约束;④ 一行 # X Style Active状态标记;⑤ 量化阈值;⑥ 硬不变量;⑦ 完整的 worked example

Learning style 把后三件做到了极致,值得直接抄它的做法。量化阈值长这样:“ask the human to contribute 2-10 line code pieces when generating 20+ lines——人家直接给数字,从来不写「适当地请用户参与」这种没法执行的话。硬不变量长这样:“Make sure there is one and only one TODO(human) section in the code”“Don't take any action or output anything after the Learn by Doing request. Wait for human implementation before proceeding.”——把最容易被模型自作聪明绕过的地方钉死。它还带两个几百字的完整示例(Whole Function / Partial Function),示例比规则本身长。

顺手澄清一个字段名的坑。二进制里 keepCodingInstructions(9 处)和 keep-coding-instructions(8 处)同时存在:前者是内部字段,后者是你在 frontmatter 里写的键。看到别人贴 camelCase 别照抄进 frontmatter——那是内部实现,你要写的是 kebab-case。


那别人是怎么做的

看了三类:官方内置、英文社区精选集、中文去AI味 skill。结论跟直觉相反。

英文社区那个精选集hesreallyhim/awesome-claude-code-output-styles)收的是 Zen Master、Tabloid Journalist、Existentialist Poet、Haiku Helper 这类玩梗人格,最长的 700 到 800 词,没有统一的小节划分,主要靠沉浸式角色扮演开场。娱乐性强,没有一份严肃处理中文写作。参照价值有限。

中文这边严谨得多。歸藏做的 op7418/Humanizer-zh 是 Humanizer 的汉化版,五千多字,把 AI 痕迹拆成三十类模式(内容 6 / 语言语法 12 / 风格 6 / 交流 3 / 填充回避 3),给出大量具名禁用词表,还带一个六项快速检查(连续三句等长就打断、揭示前的破折号删掉、解释隐喻删掉、三段式改二或四)和一张五维五十分的评分表。另一个 OUBIGFA 的 skill 号称有 24 项 AI 痕迹检测和标点预算。

把三类放一起,能看出的规律是这样的:

来源篇幅强在哪弱在哪
官方内置3 句 ~ 千余字骨架清楚、量化阈值、硬不变量、长示例不管中文文体
英文社区精选≤800 词人格鲜明、好玩无结构、无量化、不管中文
中文去AI味 skill5000+ 字具名禁用词表极全、有自检清单是 skill(管流程)不是人格,且长度换不来生效

所以长度不是质量指标。官方 Explanatory 三句话就管住了行为,中文 skill 五千字也未必生效——因为如果人格层没换,模型照样在一个 0 次提到「怎么写文章」的系统提示词上干活。真正决定成败的是三件:装在哪一层(换还是加)、禁令能不能被数出来有没有办法验证它真的加载了

一个反面教材值得单独说:我们写第一版范本时,从社区那份 skill 看到「标点预算」很唬人,动过给个数字的念头。但我们的量化语言指纹里明明白白写着「句长/标点密度维度因语料格式失真,不设硬指标」——语料是逐字稿转写的,标点本来就不可信。为了让文档看着严谨而编一个数字,正是这份资料要反对的东西。所以这里没有标点预算。


另一半开关:skill 和一个能跑的检查器

只给人格是自相矛盾的 —— 前面刚说过两套开关缺一不可。

人格换完,它知道该怎么说话,但不知道具体哪些词是雷。这部分是 skill 的活——但这里有个必须先想清楚的悖论:这期视频的论点本身,宣判了"发布一份静态规矩清单"是自我否定的。你下载到的清单就是"别人的 skill",装上照样不灵,因为个人声线抄不来。

所以包里的 bense-polish 不携带任何人的正面风格,它是一个两模式工作流。polish 模式:先按内置的通用负面清单过一遍(AI 的共性毛病与作者无关——套话、夸大词、翻译腔句式、标点混用,这部分人人可抄),再按你自己的声线档案过第二遍,最后跑脚本验收。setup 模式:没有档案时,引导你交 5-10 篇自己的真实文字(口播转写、群聊长消息优先;AI 帮写后轻改的不算——那是 AI 的声线),量化提取出你的 voice-profile.md:语气词每千字频率、句首习惯、人称分布、叙事骨架是金字塔还是线性、类比密度、收束方式。确认后落盘,之后每次润色都读它。通用的毛病内置成清单,个人的声线现场提取——这就是"别人的 skill 不灵"的解法本身。

skill 内部按规范切了三块:SKILL.md 只留流程路由(模式判断 → 三遍润色 → 产出格式),通用负面清单在 references/banned-patterns.md(按三层框架组织:行文方式 / 口语习惯 / 语言结构,逐组标注出处——Humanizer-zh 的词表与句式、卡兹克 khazix-writer 的口头禅雷区与标点纪律、张拼拼指纹里的量词落名词与归因纪律),提取方法论在 references/voice-extraction.md,验收脚本在 scripts/。润色时只加载清单,建档案时只加载提取流程,互不占对方的上下文。

一个取舍值得说明:卡兹克的 skill 在 README 里明确写着「装载了作者个人的写作风格」——所以他的「。。。」「= =」和短段落流没有被收编进清单,只取了他点名的负面词与标点纪律。他的个人口癖出现在这份资料里的唯一方式,是作为"不能抄"的例证。

合并时撞上一个真实冲突,原样保留给你自己裁。Humanizer 把「单句成段的收尾」列为 AI 痕迹;卡兹克明确主张「段落要短,很多时候一句话就是一段」。两家都对——它们描述的是两种不同的目标文风(书面长文 vs 公众号短段落流)。这正是这期视频说的「别人的方法你用不灵」的又一个实证:规矩不能无脑合并,选定自己的文风后,冲突项只能留一边。清单不裁决这一条,检查器也不查它。

skill 本身三家都能装:Claude Code 放 ~/.claude/skills/bense-polish/,用 /skills 确认;Codex 放 ~/.codex/skills/bense-polish/,装完重启 Codex 重读元数据;WorkBuddy 没有目录可放,走对话里上传整个文件夹(设置里有「非高风险自动安装」开关),装完新建对话生效。

清单之外还差一道机器关:人通读多少遍照样有漏网的,文体规矩必须配一个能跑的检查。包里那个 check_ai_flavor.py 只依赖标准库,零安装:

skill/bense-polish/scripts/check_ai_flavor.py
python3 scripts/check_ai_flavor.py 你的稿子.md          # 明细
python3 scripts/check_ai_flavor.py --quiet 稿子.md      # 只要汇总
cat 稿子.md | python3 scripts/check_ai_flavor.py -      # 读 stdin

# 退出码 0 = 零命中 / 1 = 有命中,可以挂 pre-commit

它查的都是能被数出来的东西:十一组具名禁用词、not-A-but-B 句式、量词后缺名词、段首连接词、连续三句等长、加粗密度、中文里混入的半角标点、三点省略号、弯引号、emoji、破折号密集。它不判断好坏,每一条都可以驳回——引用别人原话里的「至关重要」不该改。

拿这期博客正文实测,结果反而是个好例子:全文只命中一处,而那一处是文章正在举例讨论「不是什么什么,是什么什么」这个句式本身,属于正当驳回。也就是说那篇正文的真实命中是零。

第一版这个脚本自己有两个 bug,一起交代掉。它当时在扫 YAML frontmatter,把元数据里的半角冒号和 - title: 全报成问题(同一篇稿子从 18 处假警报降到 1 处真命中);还把「最后」这个正常中文词无条件当 AI 味。检查器本身也需要用干净样本和脏样本各验一次——只跑一次真实稿件,你分不清它是查得准还是查得滥。


怎么写才有效:范本的六条规矩

三家通用。范本包里每个文件都按这六条写的。

  1. 写「不要什么」比写「要什么」有效。「写得像人」是废话,AI 无法执行。把 AI 味拆成可检查的具体项:禁生造词、禁「不是 A 是 B」句式、loop 写「循环」、加粗不超过两处。
  2. 一条规矩一行,且可检查。能被数出来的才算规矩。「段落连续」「禁 1234 小标题」「加粗 ≤2 处」都能一眼验;「语言优美流畅」永远无法验证。
  3. 别把流程写进人格文件。人格文件管怎么说话,流程是 skill / AGENTS.md 的活。混在一起两边都打折。
  4. 埋金丝雀。让它每次输出末尾打一行固定标记。这是你唯一可靠的"生效了"信号,理由见下条。
  5. 先立后破地给例子。与其说"别用翻译腔",不如直接把反面句式抄给它:「不是 A,是 B」。禁令越具体,遵守率越高。
  6. 分两阶段,别指望一步到位。初稿阶段用默认人格,先把信息抓全、逻辑理顺,这时候它爱列 1234 反而帮你摊开问题;polish 阶段才切写作人格,只做语言。顺序颠倒的下场,就是这期视频最早那个数字人版——话说得挺像人,事儿没讲明白。

为什么金丝雀不是多余的仪式:配错了和没生效,在终端里长得一模一样。三家都不会因为你键名写错、路径写错就报错,全都一声不吭地退回默认。更麻烦的是"输出好像变自然了"这种主观感受完全不可靠——换个模型、换个问题、甚至换个时段问,风格都会飘。很多人"装了 skill 感觉有用",其实一直在裸奔。


来源与边界

这份资料里每类说法的来路,分三级标清楚。哪些是官方认过的,哪些不是。

版本会变,这份东西也会过期。凡是本文与你机器上的实际行为冲突,一律以你机器为准——办法就是上面那三条验证命令加金丝雀,自己验一遍比信任何文档都靠得住。