这个智能体不是【会写文章的 AI】,而是一份把【对标结果】变成【初稿】、并且知道【自己哪里写得不像人】的设定。本节的核心只有一句话:人味不是靠【藏】出来的,是靠【补】出来的——因为平台看的是一组可以数的量,而数摆出来之后,你就知道该往哪儿补。
5.3.1 产出的是一张任务卡(角度+字数+要补的缺口),本节把它变成初稿,然后交给 5.2 的第三格【补人味】。注意顺序:【补人味】是人在初稿上做的一步,不是机器自动完成的——本节的智能体做的是把初稿写到【只差人味】的程度,并主动把自己缺的那几项报出来。
一、先看它由哪四块组成
与 1.2.1(扣子)、4.3.1(文心)一样,一个智能体拆开就是四块。但知乎这一侧的第四块变了:
| 块 | 内容 | 本章的特殊之处 |
|---|---|---|
| ① 人设 | 你是谁、面向谁、用什么语气 | 要写一个具体的人(有职业、有偏好、有立场),不是【一位内容创作者】 |
| ② 知识 | 平台规则、格式要求、你收集的素材 | 要装进知乎的规则:三路形态、标题 2~80 字符、声明六档、话题 1~5 个 |
| ③ 工作流 | 从任务卡到初稿的步骤 | 开头要先读对标结论,再定角度,再写 |
| ④ 检查 | 写完自己过一遍 | 本章新加一层:人味六项自检(本节的 Demo) |
第四块为什么是本章独有的? 因为在知乎,【内容合格】和【内容好看】是两件事,但【内容合格】和【内容真的存在】是同一件事——5.1.1 现状三讲过:判定看的是文本特征,而文本特征是从生成方式里长出来的。所以自查必须自查到【特征】这一层,不能只查错别字和格式。
二、提示词里必须写死的三件事
这三件事,前三章的智能体也写,但知乎这一侧的分寸不一样。
第一件:输入是【任务卡】,不是【话题】
✗ 差的写法:帮我写一篇关于家庭收纳的回答。
✓ 好的写法:按下面这张任务卡写一篇知乎回答。
【问题链接】https://www.zhihu.com/question/123456
【切入角度】成本预算(对标显示:此角度未被覆盖)
【目标字数】1200~1600
【要补的缺口】给出三档预算下的不同配置
【形态】回答(不是文章,不是想法)
【必须包含】至少 3 处具体的数字(尺寸/价格/时长)
区别在于:差的写法把【选什么角度】这个判断留给了模型,而模型一定会选最安全的那个角度(也就是对标里已经挤了 3 篇的那个角度)。好的写法把判断留在了人这边(5.3.1 做完了),模型只负责把它写出来。
如果让模型自己选角度,它会写出一篇【很正确】的回答——观点四平八稳、结构完整、措辞得体,然后淹没在那 3 篇里。 对标的产出不是【素材】,是【约束】。 你把它写进提示词,模型的选择空间就被收窄到【那个没人碰的角度】——这才是它最值钱的地方。
第二件:输出必须是【结构化的】
不要让它交一篇文章,让它交一份【带字段的结果】——因为下游的 RPA(5.4.1)要解析它:
{
"form": "回答",
"qurl": "https://www.zhihu.com/question/123456",
"title": "",
"body": "……(正文)",
"topics": ["收纳", "家居"],
"ai_assisted": true,
"detail_points": ["门后二十厘米", "鞋凳三十五厘米撞脚", "预算分三档"],
"needs_human": ["亲历细节只写了 2 条,建议再补 1 条"]
}
注意最后两个字段:detail_points(我写了哪些具体细节)与 needs_human(我哪儿还不够)。
让模型自己报出【我需要人补什么】——这是本节最实用的一个技巧。 它比人从头检查一遍快得多,而且它比人更清楚自己缺什么。
第三件:把【禁忌】写清楚,尤其是这几条
| 禁忌 | 为什么 |
|---|---|
| 不许编造亲历 | 这是红线里的红线(虚构包装经历)——宁可留空,让人补 |
| 不许引用查不到出处的数据 | 5.1.1 现状四那条纪律:只认带机构名和日期的口径 |
| 不许用【首先/其次/综上所述】这类路标词 | 这正是 AI 最典型的指纹(下面 Demo 的第一名) |
| 不许每段都是【结论+解释】两句话 | 结构过分工整,是判据之一 |
| 不许承诺效果、不许绝对化表述 | 与 2.3.1 那条【用个人体验代替客观断言】同源 |
这五条里,前两条是【不许编】,后三条是【不许太整齐】。 前者保护真实性,后者保护人味——它们看起来是两件事,其实是同一件事:不许用【生成的速度】去冒充【亲历的时间】。
三、人味对抗:不是藏,是补
这个小节是本节的核心。先说清楚一个常见误解。
| 误解 | 实际 |
|---|---|
| 人味 = 把 AI 的话改得像人说的 | 人味 = 文本里真的有那些只有人才有的东西 |
| 手段是【改写】 | 手段是【添加】 |
| 目标是【不被看出来】 | 目标是实质上有区别 |
为什么【藏】这条路走不通? 因为判据是一组统计特征——句式、词汇分布、情感起伏、结构整齐度。这些特征是从生成过程里长出来的:
- 模型为什么句长均匀?因为它是一句一句按概率生成的,每句都落在【最可能的长度】附近;
- 模型为什么爱用【首先/其次/综上】?因为那是语料里最常见的结构路标;
- 模型为什么没有具体数字?因为它没有过你家门后二十厘米的那个经验。
换句话说:特征不是衣服,是骨骼。 你换一件衣服(改几个词),骨骼没变。
所以正确的动作是【往里加真实的东西】——而这些恰好是模型加不进去的:
| 补什么 | 为什么模型加不了 |
|---|---|
| 具体数字 | 它不知道你家门后多宽、你花了多少钱 |
| 明确的立场 | 它只能给【两边都对】的答案(5.1.1 讲过:AI 擅长生产挑不出毛病的答案) |
| 例外与犹豫 | 它倾向于给出确定结论;而真人会说【看情况】 |
| 第一人称的动作 | 它没有【买错过、退过货、踩过坑】的经验 |
| 长短不齐的节奏 | 它是按概率逐句生成的,节奏天然均匀 |
所以本节的做法是:把这五项变成可以数的量,摆在面前,一项一项补。
不是。 因为真人写东西天然就是长短不齐的——一句话想清楚就短,说不清就长。打散句长只是恢复到自然状态。 但顺序不能反:先有真实内容,再让节奏自然。 如果内容是空的,光把句子拆短也没用——因为平台看的是一组特征,不是单一项。 六项里五项是靠【补内容】过的,只有句长那一项是靠【改节奏】过的,而改节奏只有在内容够的时候才有意义(把一段空话拆成两句,还是空话)。
四、动手 Demo:人味特征自检器
它做一件事:把上面五件事(加上节奏)变成六个数,摆在面前。 输入是初稿,输出是一份体检单。
| # | 检查项 | 判据 |
|---|---|---|
| 1 | 句长起伏 | 全篇句长的标准差 ≥ 8(低于 8 → 句子长度太整齐) |
| 2 | 连接词密度 | 每百字【首先/其次/再次/最后/综上…】≤ 1.0 次 |
| 3 | 具体细节 | 数字+单位的出现 ≥ 3 处 |
| 4 | 个人立场 | 【我觉得/我建议/说实话…】≥ 2 处 |
| 5 | 犹豫与例外 | 【可能/看情况/不一定/就算了…】≥ 1 处 |
| 6 | 自身经历 | 第一人称的具体动作(我家/我买/我试/我退…)≥ 2 处 |
# -*- coding: utf-8 -*-
"""5.3.2 Demo:人味特征自检器 —— 不去猜【平台怎么判】,只看【文本特征偏哪边】(纯标准库)"""
import re
import statistics
DRAFTS = {
"D1【机器味重】": """家庭收纳是一项需要系统规划的工作。合理的收纳能够显著提升居住体验。
首先,我们需要明确收纳的基本原则。分类是收纳的基础。合理的分类能够让物品各归其位。
其次,我们要选择适合的收纳工具。收纳盒是常见的选择。不同尺寸的收纳盒适用于不同场景。
再次,我们需要建立长期的维护习惯。定期整理是保持整洁的关键。良好的习惯能够带来持久的效果。
综上所述,家庭收纳需要从原则、工具、习惯三个方面系统推进。只有这样,才能真正实现整洁有序的居住环境。""",
"D2【人味足】": """我家玄关只有一米二宽,门后到墙只有二十厘米。
之前那里堆着七八双鞋、三四个没拆的快递箱,出门前找钥匙要翻三分钟。后来我干脆全清掉,只留三样。
说实话,我一开始买了个三十五厘米宽的鞋凳,结果开门撞脚,退了;换成一米二里勉强塞得下的窄边款才合适。
这个坑我建议你先量尺寸再下单,别信那种【进门随手一放】的效果图。
至于要不要买一体式鞋柜,我觉得看情况:如果你家门后有一米五以上,一体式确实更利落;只有二十厘米就算了,根本塞不进去。
现在我出门基本上十秒能走人。""",
}
# ---- 判据 ----
CONNECT = ["首先", "其次", "再次", "最后", "综上所述", "总而言之", "总的来说", "由此可见"]
STANCE = ["我觉得", "我认为", "我建议", "我不建议", "说实话", "坦白说", "我个人", "我劝", "我的经验是"]
HESITATE = ["可能", "大概", "不一定", "看情况", "因人而异", "说不准", "未必", "再说吧", "就算了"]
# 第一人称的具体动作:排除【我们】,允许中间夹少量字(我一开始买了个)
SELFACT = [r"我家", r"我(?!们)[^,。;:!?\n]{0,6}?(?:买|试|换|退|装|用|踩|花|攒|量|清|扔|留|做|选|测|查|问)"]
DETAIL = [r"[\d一二三四五六七八九十百千万两半几]+\s*(?:厘米|毫米|米|寸|公分|平|元|块|天|分钟|小时|秒|个月|年|双|个|张|件)"]
def sentences(t):
parts = re.split(r"[。!?!?\n]", t)
return [p.strip() for p in parts if len(p.strip()) > 1]
def para_first2(t):
out = []
for p in t.split("\n"):
p = p.strip()
if p and not p.startswith("#"):
out.append(p[:2])
return out
def report(name, text):
body = re.sub(r"\s+", "", text)
n = len(body)
ss = [len(s) for s in sentences(text)]
mean = statistics.mean(ss)
sd = statistics.pstdev(ss)
connect = sum(text.count(w) for w in CONNECT)
stance = sum(text.count(w) for w in STANCE)
hes = sum(text.count(w) for w in HESITATE)
selfact = sum(len(re.findall(p, text)) for p in SELFACT)
detail = sum(len(re.findall(p, text)) for p in DETAIL)
starts = para_first2(text)
dup = len(starts) - len(set(starts))
items = [
("句长起伏", "标准差 %.1f(均长 %.1f)" % (sd, mean), sd >= 8,
"句子长度太整齐 —— 把长句拆短、或往长句里塞一个短句"),
("连接词密度", "每百字 %.2f 次(共 %d 次)" % (connect * 100.0 / n, connect), connect * 100.0 / n <= 1.0,
"首先/其次/综上这类路标词太密 —— 删掉一半,用实质内容衔接"),
("具体细节", "%d 处(数字+单位)" % detail, detail >= 3,
"几乎没有具体数字 —— 补上真实尺寸/价格/时长/数量"),
("个人立场", "%d 处" % stance, stance >= 2,
"没有明确的【我觉得】—— 补一句只有你能说的话"),
("犹豫与例外", "%d 处" % hes, hes >= 1,
"一路都太确定 —— 补一个例外情况或【看情况】"),
("自身经历", "%d 处(我家/我买/我试…)" % selfact, selfact >= 2,
"没有第一人称的具体动作 —— 补一件你真做过的事"),
]
print("=" * 72)
print("【%s】 正文 %d 字 / %d 句 / %d 段" % (name, n, len(ss), len(starts)))
print("=" * 72)
seg = " 段落开头重复 %d 处" % dup
print(seg)
score = 0
for label, val, ok, tip in items:
score += 1 if ok else 0
print(" [%s] %-10s %s" % ("✔" if ok else "✘", label, val))
if not ok:
print(" → %s" % tip)
print(" ------------------------------------------------------------")
print(" 人味项通过 %d/6" % score)
return score
scores = {}
for name, text in DRAFTS.items():
scores[name] = report(name, text)
print()
print("=" * 72)
print("对比与结论")
print("=" * 72)
for name, s in scores.items():
bar = "█" * s + "·" * (6 - s)
print(" %-16s %s %d/6" % (name, bar, s))
print()
d1, d2 = list(scores.values())
print(" 两稿的字数差不多,可读性也都没问题;差别全在【特征】上。")
print(" 人味不是形容词,是这几个可以数的量:句长标准差、路标词密度、")
print(" 具体数字、明确立场、例外情况、第一人称动作。")
print(" 结论:别去猜平台怎么判 —— 先把这六个数摆出来,自己就知道该改哪儿。")
实际运行输出(真跑,不是示意):
========================================================================
【D1【机器味重】】 正文 211 字 / 13 句 / 5 段
========================================================================
段落开头重复 0 处
[✘] 句长起伏 标准差 4.7(均长 15.2)
→ 句子长度太整齐 —— 把长句拆短、或往长句里塞一个短句
[✘] 连接词密度 每百字 1.90 次(共 4 次)
→ 首先/其次/综上这类路标词太密 —— 删掉一半,用实质内容衔接
[✘] 具体细节 1 处(数字+单位)
→ 几乎没有具体数字 —— 补上真实尺寸/价格/时长/数量
[✘] 个人立场 0 处
→ 没有明确的【我觉得】—— 补一句只有你能说的话
[✘] 犹豫与例外 0 处
→ 一路都太确定 —— 补一个例外情况或【看情况】
[✘] 自身经历 0 处(我家/我买/我试…)
→ 没有第一人称的具体动作 —— 补一件你真做过的事
------------------------------------------------------------
人味项通过 0/6
========================================================================
【D2【人味足】】 正文 223 字 / 7 句 / 6 段
========================================================================
段落开头重复 0 处
[✔] 句长起伏 标准差 15.8(均长 30.9)
[✔] 连接词密度 每百字 0.00 次(共 0 次)
[✔] 具体细节 10 处(数字+单位)
[✔] 个人立场 3 处
[✔] 犹豫与例外 2 处
[✔] 自身经历 4 处(我家/我买/我试…)
------------------------------------------------------------
人味项通过 6/6
========================================================================
对比与结论
========================================================================
D1【机器味重】 ······ 0/6
D2【人味足】 ██████ 6/6
两稿的字数差不多,可读性也都没问题;差别全在【特征】上。
人味不是形容词,是这几个可以数的量:句长标准差、路标词密度、
具体数字、明确立场、例外情况、第一人称动作。
结论:别去猜平台怎么判 —— 先把这六个数摆出来,自己就知道该改哪儿。
读结果,五个值得注意的地方:
-
两稿的字数几乎一样(211 vs 223),可读性也都没问题,分数却是 0/6 和 6/6。 这是本节最有力的一条结论:人和机器写的差别,不在【通不通顺】,在【特征偏哪边】。 换句话说——读完觉得【写得挺好啊】的稿子,可能就是 0 分那份。这也解释了 5.1.1 里那句反直觉的话:太标准、太正确、太挑不出毛病,反而是危险信号。
-
D1里最刺眼的是【连接词密度】:每百字 1.90 次——首先/其次/再次/综上所述,四个路标词,211 字里出现了 4 次。 这是教科书式的结构,也是 AI 最典型的指纹:因为这类词在语料里就是【组织段落】的通用工具,模型用它来保证逻辑连贯——而真人写东西,通常是靠内容本身衔接的(D2 里 0 次)。 -
句长标准差差了 3 倍以上(4.7 vs 15.8)。
D1的句子几乎都在 13~16 字之间——因为它是一句一句按概率生成的,每句都落在最可能的长度附近;D2里有 55 字的长句(那个【看情况】的例外说明),也有短促的收尾。这个数字测量的是【节奏】,而节奏是最难伪装的东西。 -
六项里,只有【句长起伏】是靠【改】过的,其余五项都是靠【补】。 这个区别很实际:补内容只要你有素材就行(补 3 处数字、补 1 句立场、补 1 个例外);而改节奏要动句子的结构。 这正好解释了 5.2 那个闸门位置的设计——【补人味】必须放在排版之前。因为动句子结构这件事,一旦排好版、填进编辑器,成本会暴涨;而在初稿阶段,改一句话后面的东西全自动跟着变。
-
脚本最后那句结论,是本节要你带走的一句话:别去猜平台怎么判——平台的具体阈值没有公开,猜也猜不准;但这六个数是你自己能摆出来的。 把可以数的量控制好,比猜测一个不公开的规则靠谱得多。
① 它是【体检表】,不是【医生】。 它只报【哪一项偏了】,怎么补要人来决定——而且补的内容必须是真实的(编造亲历是红线)。 ② 六项全过 ≠ 一定能过平台的审核。 平台的判据没有公开,这个脚本是【让人味变得可操作】,不是【破解算法】。 抱着【凑满六项就能骗过系统】的心态用它,方向就错了——因为它是用来【提醒你加真东西】的,不是用来【刷指标】的。
五、⚠️ 2026 现状:智能体搭在哪个平台
教材这一节没有指定平台,这反倒是个好机会——可以把前三章的三种平台横向比一比。
| 平台 | 出现在 | 2026 状态 | 本章适不适合 |
|---|---|---|---|
| 扣子(Coze) | 1.2 | 2.0 / 3.0 持续迭代,有技能商店、多人协作 | 适合,国内访问顺畅 |
| 文心智能体平台 | 4.3.1 | 已全量接入 DeepSeek 系列模型免费调用 | 适合 |
| OpenAI 自定义 GPTs | 1.3 | 正在退役:个人账号已不能新建与发布,2026-10-26 关闭新建入口,12-11 停止服务 | 不适合新建(详见 1.3 与 3.3) |
三条判断:
- 平台的选择不是本章的重点。 本节讲的四块结构(人设/知识/工作流/检查)在哪个平台上都成立——换平台要改的是操作按钮,不是这套骨架;
- 但【检查】这一块,各平台的能力不一样。 有的平台能在对话里加【工作流节点】做格式校验,有的只能靠你在提示词里写死要求。本章的六项自检,最稳的做法是【不依赖平台】——写成脚本在本地跑(就是上面这个 Demo)。理由和 4.4.3 选墨滴一样:把工具擅长的交给工具,把流程需要的写成代码;而【可移植】恰好是流程需要的东西;
- 如果你的目的是长期使用,就避开正在退役的平台。 1.3 那一节已经把时间和影响范围写清楚了,这一条属于【知道就行,不用纠结】的级别——因为本课教的是【设定的方法】,不是【某个平台的按钮位置】。
30 秒实验
把 Demo 里 DRAFTS 的 D2 复制一份,把里面所有的数字删掉(一米二、二十厘米、七八双、三分钟、三十五厘米、十秒……),再跑一次。
会发生什么:
- 【具体细节】从 10 处掉到 0 处,那一条立刻变成 ✘,分数从 6/6 掉到 5/6;
- 但更值得注意的是它没掉的那些——句长、立场、犹豫、经历都还在。这说明【具体数字】是最容易单独摘掉的一项。
结论:在六项里,【具体数字】是性价比最高的一项——它最容易补(不用编故事,量一下、记一下就有),而且它是【编不出来的】(模型没有你家门后的尺寸)。所以如果时间只够补一项,补数字。
顺着这个思路想一层:为什么【数字】这么重要?因为数字是【经验留下的痕迹】——你量过,所以你记得;你没量过,所以你说不出来。 平台判低质时看的【缺乏事实依据】,看的正是这个。
常见误区
- 【人味就是把 AI 的稿子改写一下,让它读起来像人】——错,方向错了。 改写(换词、调语序)不改变统计特征——句式、句长分布、词汇均匀度、路标词密度这些是从生成过程里长出来的。正确的手段是【添加】:往里加具体数字、明确立场、例外情况、第一人称动作。 一句话:人味是补出来的,不是藏出来的。
- 【让模型自己选角度更省事】——错,那正好掉进红海。 模型一定会选最安全的那个角度——也就是对标里已经挤了好几篇的那个(5.3.1 的 Demo 里是【原理科普】3 篇)。视角的选择必须由人做完,写进任务卡。 对标的产出不是素材,是约束。
- 【六项全过就能过审】——错,别把它当破解工具。 平台的判据没有公开,这个脚本是把【人味】变成可操作的动作,不是【算法对抗】。 抱着刷指标的心态用它,结果会是【六项都凑满了,内容还是空的】——而平台看的是一组特征加上内容本身。
- 【刻意打散句长是一种伪装】——不是,但要讲顺序。 真人写东西天然长短不齐(一句话想清楚就短),打散句长只是恢复自然状态。但顺序不能反:先有真实内容,再让节奏自然。 把一段空话拆成两句,还是空话。
- 【补人味可以放到最后,排版完再一起改】——错,那时候成本就上去了。 六项里五项是【补内容】(随时能补),但【句长起伏】那一项要【动句子结构】——在初稿阶段改一句话,下游全自动跟着变;等排好版、填进编辑器再改,你得重来一遍。 这正是 5.2 把【补人味】放在【Agent 出稿之后、RPA 接手之前】的理由。
自测三问(点开对答案)
1. **为什么说【人味不是藏出来的,是补出来的】?** 因为**平台的判据是一组统计特征**(句式、词汇分布、情感起伏、结构整齐度),**而这些特征是从生成过程里长出来的**:模型句长均匀是因为它按概率逐句生成、每句都落在最可能的长度附近;它爱用【首先/其次/综上】是因为那是语料里最常见的结构路标;它没有具体数字是因为它没有你家门后的尺寸。 **特征不是衣服,是骨骼**——换几个词(换衣服)改不了骨骼。**所以正确的手段是【添加】:具体数字、明确立场、例外与犹豫、第一人称动作、长短不齐的节奏。** 五项靠补内容,一项靠改节奏。 2. **Demo 里 `D1` 和 `D2` 的字数差不多,为什么分数是 0/6 和 6/6?这个结果说明什么?** 说明**人和机器写的差别不在【通不通顺】,在【特征偏哪边】**。 `D1` 读起来是通顺的、甚至更【规范】(结构完整、措辞得体)——但它**句长标准差只有 4.7(句子几乎一样长)、路标词每百字 1.9 次、零个具体数字、零个立场、零个第一人称动作**。 这也解释了 5.1.1 里那句反直觉的话:**太标准、太正确、太挑不出毛病,反而是危险信号。** 所以**读完觉得【写得挺好啊】的稿子,可能就是 0 分那份。** 3. **六项里,哪一项【只能改、不能补】?这个区别对流程设计有什么直接影响?** **句长起伏**——其余五项(具体细节/个人立场/犹豫与例外/自身经历/连接词密度)都是**加内容或删词**,随时能做;**只有句长起伏要动句子的结构。** 直接影响就是 **5.2 那张流程图里闸门一的位置**:**【补人味】必须放在 Agent 出稿之后、RPA 接手之前。** 因为在初稿阶段改一句话,下游全自动跟着变;**等排好版、填进编辑器再动句子结构,你得重来一遍。**- ☐ 下一节(5.4.1 RPA发起会话并获取图文)
相关笔记
- 对标图文Agent工作流 —— 本节任务卡的来源,先拆对标再动笔
- 知乎图文创作和发布概述 —— 【判定看文本特征】这个前提的出处
- 创建文心智能体的方式 —— 设定卡五段的写法,本节沿用了它的骨架
- Agent图文整合工作流 —— 结构化输出与【用个人体验代替客观断言】的来处
- 🤖 Agent+RPA实战 · 索引 —— 全课路线图