# 中文自然回应 · chinese-natural-reply
这个skill旨在让GPT说话像人,改善防御性回复,不套安慰模板,说大白话。与同类skill对比,说人话的能力排名第一(在作者设定的条件下)。
A Codex (GPT) skill for Chinese conversations: answer first, talk plainly, and drop the defensive hedging, officialese and canned comfort.
## 它管什么
规则来自作者两个月里和 GPT 的真实对话。作者把 GPT 中文回复里的说法逐条过了一遍,找出其中最让作者讨厌的部分,就是下面这些:
| 毛病 | GPT 原话 |
|---|---|
| 防御性说明 | “纸面上能确认的是……仅凭这两处改字还不能完全确定” |
| 主动提没发生的事 | “也没有证据表明已有密码被删除” |
| 提前纠正你没有的误解 | “这不代表……”“开 Fast 不等于秒回” |
| 汇报“没动什么” | “没有修改代码、重复提交或重跑回归” |
| 认错加解释,却不去做 | “我前面说得太绝对,应该说……” |
| 估时间先套前提 | “这是按工作量给的暂估,不是倒计时……” |
| 官腔 | “持续供课链路完成合成验证,待真实试用确认” |
| 随口一问,回一大篇 | 问一句能不能拿某个游戏角色做皮肤卖,回了七段加一张表 |
| 安慰套话 | “先别急着给自己下结论”“也很正常” |
| 干活时的进度消息 | 上面这些在进度消息里同样会出现 |
两件事它不会做:
- **不会让 GPT 假装有把握。** 没做完就说没做完,会坑到你的风险照样说,只是用平常说话的口气说一次。
- **不会让 GPT 少干活。** 它只管怎么说,该查日志、该读配置,照样去查。
## 效果
### 怎么比的
16 道日常问题,调 skill 时一道都没用过。8 道是 Claude 出的,另外 8 道是 GPT 在不知道评分标准的情况下出的。每个版本每题跑一次,模型是 GPT-6.1-Sol(推理强度 max),在 Codex CLI 里跑。
参加对比的:
- 原版:不加任何 skill。
- 本仓库。
- 4 个同类:[talk-normal](https://github.com/hexiecs/talk-normal)、[好好说话](https://github.com/Job-Yang/jobyang-ai-skills/tree/main/skills/haohao-shuohua)、[Humanizer-zh](https://github.com/op7418/Humanizer-zh)、[humanizer](https://github.com/blader/humanizer)。每个都按原作者的装法装。
每道题的回答打乱顺序、去掉名字,两个评委按同一份[评分标准](evals/rubric.md)盲评:
- Claude:先把分数写进文件,再看哪个回答对应哪个版本。
- GPT-6.1-Sol:独立再评一遍。
### 结果
| 版本 | GPT 评委平均名次(7 个里,越小越好) | GPT 评委平均分 | Claude 评委平均分 |
|---|---|---|---|
| **本仓库(发布版)** | **2.12** | **5.00** | — |
| 本仓库(测试版) | 2.44 | 4.94 | **4.19** |
| talk-normal | 4.06 | 4.88 | 4.03 |
| Humanizer-zh | 4.38 | 4.69 | 3.72 |
| humanizer | 4.75 | 4.62 | 3.72 |
| 好好说话 | 5.00 | 4.56 | 3.78 |
| 原版 | 5.25 | 4.50 | 3.66 |
GPT 评委排的 16 道题里,发布版赢了原版 14 道、talk-normal 13 道、好好说话 14 道。GPT 打分普遍偏高,看名次更准。
“测试版”是发布前的同一份规则,只是例子里还有作者的个人信息。Claude 评委评的是测试版那一轮(6 个版本);换掉个人信息之后,发布版重跑了一遍,由 GPT 评委 7 个版本一起重评。Claude 评委那轮,测试版对原版 11 胜 3 平 2 负,对 talk-normal 6 胜 7 平 3 负。
几点说明:
- **两个 Humanizer 在这 16 道题里一次都没被 GPT 调用。** 它们本来就是改写现成文章用的,所以装上以后,日常回复跟原版一样。
- **talk-normal 是最接近的对手。** 它更短:回答字数中位数 224,本仓库 244,原版 408。讲概念的几道题,它比我们干脆。
### 10 月 13 日重跑:加上 AGENTS.md
同样 16 道题,这次每个版本跑 3 遍,一共 48 道次,GPT-6.1-Sol 评委按同一份评分标准盲评:
| 版本 | 平均名次(4 个里,越小越好) | 对原版 |
|---|---|---|
| **本仓库 + AGENTS.md** | **1.71** | 44 胜 4 负 |
| 本仓库(只装 skill) | 2.25 | 41 胜 7 负 |
| talk-normal | 2.52 | 36 胜 12 负 |
| 原版 | 3.52 | — |
加上 AGENTS.md 以后,对只装 skill 32 胜 16 负,对 talk-normal 34 胜 14 负。
- 评委每道题看的是 6 个回答,另外 2 个是没发布的试验版,这里拿掉后重新排名。完整的回答和打分在 [evals/rerun-2026-10-13](evals/rerun-2026-10-13)。
- 这次原版短了不少:字数中位数 317,10 月 11 日是 408。本仓库 216,加上 AGENTS.md 198,talk-normal 173。
### 几个回答
**用户:这周作业多得写不完,好烦啊**
> **本仓库**:一堆作业挤在这周,写着一份还惦记着后面好几份,确实烦。
>
> 你现在是量太多来不及,还是有几份特别难、一直卡着?
> **原版**:作业堆在一起,光想着“还有这么多没写”就已经很累了,确实烦。
>
> 想吐槽我就听着。要是想一起理一理,把作业和截止时间随便列给我,不用整理得很整齐,我们先看看今天最急的是哪几项。
> **talk-normal**:唉,感觉怎么写都清不完,确实很磨人。先给自己几分钟喘口气,再挑最近要交的一项,只做一小段,把眼前这一步走完就好。
> **好好说话**:唉,作业多到写不完,确实很烦。先喘口气,你想吐槽就说,我听着。
>
> 要是想一起处理,就把最急的那份发我,咱们先看一题,不用一下子想完整周。
**用户:我妈非让我穿秋裤,我觉得现在还不冷,到底多少度该穿啊**
> **本仓库**:**10℃左右可以开始考虑穿秋裤,但还得看体感。** 中国天气网给的参考是:最低气温低于10℃时,考虑添秋裤。[来源](https://www.weather.com.cn/life/2026/10/4814305.shtml)
>
> 你现在穿单裤也暖和,主要待在室内,就不用急。风大、骑车、在户外待得久,或者腿已经觉得凉,就早点加一层。
>
> **重点看你出门那会儿的温度**:中午20℃,早晚只有8℃,穿法就得跟着调整。
> **原版**:**没有统一的“几度必须穿秋裤”标准。**如果你平时身体健康、穿普通长裤,可以这样粗略参考,温度不是硬门槛:
>
> - **15℃以上**:通常不用,腿不冷就行。
> - **10~15℃**:看体感;怕冷、早晚出门或骑车,可以穿薄款。
> - **5~10℃**:更值得加一层,尤其在户外待得久。
> - **5℃以下**:建议加强腿部保暖,秋裤或足够厚的外裤都可以。
>
> 还要看风、雨和活动量……(后略)
**用户:“周末的风很轻,咖啡刚好温热,适合什么都不做。”这句话你觉得是AI写的还是人写的,为啥**
这道是调 skill 时用过的题,放在这里是因为它最能说明“防御性的话”指什么。
> **本仓库**:**凭语感,我稍微偏向 AI 写的。**主要是它很像一条标准的“周末惬意文案”。
>
> “风很轻”“咖啡刚好温热”先铺舒服的氛围,“适合什么都不做”再收在放松的心情上,三小段接得很工整。风、咖啡、放空也都是常见搭配,缺少一点属于某个人、某个周末的细节,像按几个关键词写出来的。
> **原版**:我第一感觉**略偏 AI,但把握很低**。
>
> ……
>
> 不过,人发朋友圈也经常这样写,AI 恰好学的就是这类表达。**这句话能让我判断它的文案风格,却不足以判断作者身份。**“写得顺、略有套路”都不是 AI 独有的特征。
16 道题、每个版本的完整回答都在 [evals/answers](evals/answers)。
## 安装
装成 Codex 插件:
```bash
codex plugin marketplace add molang163/chinese-natural-reply
```
```bash
codex plugin add chinese-natural-reply@molang163
```
或者用 [skills.sh](https://skills.sh/) 的安装工具:
```bash
npx skills add molang163/chinese-natural-reply --agent codex --global
```
或者手动复制 skill:
```bash
git clone https://github.com/molang163/chinese-natural-reply.git
```
```bash
cp -r chinese-natural-reply/skills/chinese-natural-reply ~/.codex/skills/
```
新开一个对话就能用。用中文聊天时它会自动启用,第一次启用时会说一句“按中文自然回应来答。”
### 长对话:再写进 AGENTS.md
只装 skill,聊到后面几轮,GPT 偶尔又会解释自己刚才为什么那样说。再把 5 条核心规则写进 Codex 的全局 AGENTS.md,测下来就没再出现:
```bash
curl -fsSL https://raw.githubusercontent.com/molang163/chinese-natural-reply/main/skills/chinese-natural-reply/scripts/agents_md.py | python3 -
```
两段 4 轮的对话各跑 5 遍(GPT-6.1-Sol),后 3 轮里“解释自己”:只装 skill,30 轮里有 3 轮;加上 AGENTS.md,0 轮。
规则写在 `~/.codex/AGENTS.md` 的两行标记之间,你原来写的内容不动,重复运行只会更新这一段。想撤掉,把命令最后的 `python3 -` 换成 `python3 - --remove`。
只在 Codex CLI 0.162 + GPT-6.1-Sol / GPT-6-Astra 上测过,其他工具没试过。
## 怎么做出来的
这个 skill 是用 Claude Code 做的:
1. 从作者两个月的 Codex 对话记录里,找出 GPT 中文回复的毛病。
2. 作者在清单上逐条标出讨厌哪些、无所谓哪些。
3. 按标出来的结果写规则,让 GPT 在 15 道题上实际跑,跟旧版、原版对比。
4. 作者盲评一轮,按结果再修一版。
## 局限
- 题少:16 道题。10 月 11 日每个版本跑一遍;10 月 13 日跑了 3 遍,只有 GPT 评委。
- 同样的设置重跑,分数会有 0.1 左右的波动。
- 所有回答和打分都公开在 [evals](evals),可以自己判断。
- “好”是按作者的偏好定的。你要是在意加粗、表格、链接,结论可能不一样。
- 长对话里被追问同一个没把握的点时,偶尔还会多补一句“没有承诺……”,写进 AGENTS.md 也没完全去掉。
- 长对话里,用户拿别人的说法质疑它(比如“客服说到期后还要再等一个月”),GPT 多半会先认错,哪怕它查到的规定支持原来的说法。测过的几种装法都这样。
- 调 skill 时用的 15 道题和答案、长对话测试的记录没放进来,里面有作者电脑上的真实信息。
## 仓库里有什么
- `skills/chinese-natural-reply/`:skill 本体。`scripts/agents_md.py` 是把核心规则写进 AGENTS.md 的脚本。
- `.codex-plugin/`、`.agents/plugins/`、`assets/`:Codex 插件的说明文件、插件源和图标。
- `PRIVACY.md`:隐私说明。
- `evals/prompts.json`:16 道题。
- `evals/rubric.md`:评分标准。
- `evals/answers/`:每道题、每个版本的回答。
- `evals/judging/`:盲评的答卷、对照表和两个评委的打分。
- `evals/rerun-2026-10-13/`:10 月 13 日重跑的回答和打分。
- `evals/tools/`:跑测试和出答卷的脚本。
## 许可
MIT