从Barbara Kruger到AI:自我构建的演变,表面上是一条艺术史与技术史的交叉线,实际上直指一个更根本的工程问题:当“我是谁”被外部系统批量生产时,我们如何识别、调试并重建自己的身份结构。Barbara Kruger用八十年代的海报和拼贴揭示“我购物故我在”的荒诞,而今天的大模型、推荐算法和数字分身则把“自我”变成了可生成、可优化、可部署的数据对象。这篇文章会用一种把文化批判与工程实践放在一起的方式,先拆解Kruger作品背后的身份机制,再看AI时代身份构建的技术路径,最后落到一个可运行的最小项目:用本地大模型生成一份能反映真实底色的数字自我画像,并讨论其中的提示词设计、记忆机制、隐私边界和排错方法。
1. 先理解Barbara Kruger:自我为什么需要被“构建”
1.1 从“我购物故我在”理解身份的构建逻辑
Barbara Kruger最著名的作品之一,是1987年的“I shop therefore I am”。这句话直接改写自笛卡尔的“我思故我在”,把“思考”替换成“购物”,并采用红底白字、黑白照片、Futura加粗字体的广告式构图。无论你是否熟悉当代艺术,都能在几秒内接收到两层信息:第一,消费行为正在替代理性思考,成为现代人确认自己存在的方式;第二,这句话的视觉风格本身就是对广告语言的模仿,Kruger并不是在赞美购物,而是在借用广告的嗓门说出广告最不想承认的真相。
从技术博客的角度看,这件作品真正有价值的地方不是艺术结论,而是它对“自我构建机制”的揭示。身份不是天生固定的,它会被教育、媒体、消费场景、话语规则不断重写。Kruger的工作方式可以理解成一种“逆向工程”:她把广告、杂志、电视等媒介中隐藏的说服结构提取出来,再用鲜艳的文字让观众意识到自己在被这些结构塑造。换句话说,她做的不是自我表达,而是对自我生产机制的代码审计。
1.2 拼贴、文字与权力:Kruger的技术本质是媒介批判
Kruger在1980年代的构成元素并不复杂:黑白照片、粗体字、红白撞色、直接的祈使句或断言句。但她的方法非常接近今天的安全研究和媒体分析。比如“Your gaze hits the side of my face”这句话,直接点出观看行为中的权力关系;而“We don't need another hero”则消解英雄叙事本身。她没有画一幅悲伤的女性图,而是把“正在被观看”这一状态放大到观众眼前,让观看者意识到自己正站在权力结构的一侧。
这个逻辑放到数字时代依然成立,只是媒介变了。过去是广告牌、杂志封面、电视画面,现在是信息流、短视频、智能推荐、AI生成的个人主页。广告时代劝你买某种商品来确认身份,算法时代则用点击、停留、点赞来定义你的偏好标签。从工程角度理解,Kruger做的是“暴露系统参数”:她让原本不可见的规则变得可读。这篇文章讨论AI时代的自我构建,本质上也是在做同样的事:把身份生成链路中的数据源、模型参数、提示词和隐私边界一一拆开。
1.3 从艺术批判到AI批判:换媒介,不换问题
如果把Kruger的创作方式抽象成三个步骤,大概是:收集大众媒介素材、识别其中的话语规则、通过重构文本让规则显形。AI时代的身份构建也遵循类似链路:收集个人行为数据,用算法归纳人群特征,再反向生成内容喂给用户。区别在于,Kruger依靠的是敏锐的观察力和手工制作,今天的系统则依赖大规模数据采集、特征工程、推荐模型和生成式大模型。
所以这篇博客不会停留在“AI让创作民主化”这种泛泛而谈的结论上。我们要把“自我构建”当成一个可操作的技术对象:个人资料会变成数据,数据会变成提示词,提示词会生成新的自我描述,而这个描述又会反过来影响未来的决策。理解这条链路,才能在AI时代保持对自身身份的调试权。
2. AI时代“自我”如何被重新构建
2.1 从消费符号到数据痕迹
在Kruger的时代,一个人定义自己时依赖的是符号:买什么牌子、开什么车、听什么音乐、穿什么风格。符号的购买力被消费主义包装成“个性”,但实质上,这些符号大多来自广告系统预先设定好的选项,你的自由是在有限菜单里做选择。
AI时代,身份构建的原材料从消费符号变成了数据痕迹。你点赞过的内容、搜索过的词、停留的时间、反复打开的页面、输入法里形成的习惯词、社交网络上的互动对象,这些数据被汇总成用户画像。画像不再靠你“说自己是谁”,而是靠系统“推断你是谁”。这种方式更精确,也更容易让人失去参与感:你可能发现自己被推荐的内容越来越符合某种设定,但你并不清楚这个设定是怎么形成的。
从自我构建的角度看,这是一次权力转移。过去,消费符号至少需要你主动掏钱购买,现在,算法可以悄悄地根据行为数据替你完成分类,并与你形成一种“循环确认”:你看到的内容强化你的标签,标签又决定你看到的内容。
2.2 生成式AI改变了身份构建的权力结构
如果说推荐算法是“分类”你的身份,那么生成式AI则更进一步:它可以“输出”你的身份内容。用GPT类模型生成自我介绍、个人简介、简历、社交媒体文案已经非常常见。表面上看,这是效率工具,仔细想,它改变了自我构建的路径。
传统写作中,一个人介绍自己时,需要从记忆、经历、价值观中做选择,这个过程本身会促使作者反思。生成式AI介入后,选择变成了给模型输入几个关键词,模型负责补全成文。速度快了很多,但同时也带来了新的问题:模型输出的是“平均化”的自我,是基于训练数据形成的文风,不一定能表达你真实的矛盾与偏好。
因此,AI时代构建自我,不是“会用提示词就行”,而是要建立一条可审计的链路:定义信息边界、设计提示词、检查生成结果、调整迭代。这也是本文第三节要动手实现的部分。
2.3 三种自我构建方式对比
为了把讨论落到可比较的颗粒度,这里用一张表对比三种典型的自我构建机制:
| 构建方式 | 核心原料 | 生产主体 | 主要工具 | 弱点 |
|---|---|---|---|---|
| 传统社会身份 | 家庭背景、教育、职业、人际关系 | 个人与社群共同确认 | 语言、仪式、制度 | 流动性差,更新慢 |
| 消费主义身份 | 商品、品牌、审美偏好 | 广告与商品系统 | 购物、穿搭、社交展示 | 容易被外部符号绑架 |
| 数据与AI身份 | 行为日志、画像特征、生成文本 | 算法与生成模型 | 推荐系统、大模型、个人Agent | 透明度低,个人控制权弱 |
这张表不是要否定AI,而是帮助理解:当前个人最大的问题不是“要不要使用AI”,而是在使用AI时,是否还有能力区分哪部分是真实自我、哪部分是模型根据训练数据平均化出来的顺滑表达。
3. 动手:构建一个“AI自我画像生成器”
3.1 最小场景与目标
下面做一个最小可运行项目,目标是:把散落的个人标签、经历和偏好整理成一个结构化JSON,再交给本地大模型,生成一份能够反映个人特征的“数字自我描述”。这个描述可以用于个人简历、博客介绍、项目README,也可以作为训练个人Agent的提示词素材。
选择本地大模型,一是避免API密钥和网络依赖,二是保护隐私,三是不需要为测试付费。这里以Ollama作为推理服务,模型名称以你本机实际安装的为准,例如qwen2.5、llama3.1等。
3.2 环境准备与依赖
前置条件如下:
- 本机已经安装Python 3.10或更高版本。
- 已经安装Ollama,并能够运行
ollama list命令查看本地模型。 - 如果没有模型,先执行
ollama pull qwen2.5:7b拉取一个通用对话模型。 - 项目使用requests库调用Ollama HTTP接口,不需要额外安装OpenAI SDK。
在终端里先验证环境:
ollama list python --version如果ollama list有输出,说明Ollama服务已经可用默认端口11434。如果找不到命令,需要重新安装Ollama或将其加入PATH,这一步是后续一切操作的前提。
3.3 数据输入:从杂散文本到结构化标记
自我画像的第一步不是写提示词,而是整理数据。假设你手上没有任何结构化资料,只有零散的个人信息,比如博客简介、旧简历、微博签名、项目经历。你可以先把它们拆成三个维度:
- tags:别人描述你时最常用的词。
- experiences:已经完成且有结果的事情。
- preferences:持续影响你决策的兴趣或习惯。
在项目目录下创建profile.json:
{ "tags": ["程序员", "AI产品", "技术写作者", "摄影爱好者"], "experiences": [ "三年后端开发经验,参与过订单系统重构", "维护个人技术博客,稳定输出18个月", "组织过线下开发者沙龙,累计覆盖300人" ], "preferences": [ "偏好开源工具", "喜欢极简界面", "关注AI工程化方向" ] }JSON是标准的交换格式,它能避免把个人描述写成一团乱麻。之所以要求“结构化”,是因为大模型对结构化输入的理解更稳定,也便于你后续修改某个维度而不影响其他部分。
3.4 提示词与生成
在项目目录下创建generate_profile.py:
import json import requests OLLAMA_URL = "http://localhost:11434/api/generate" MODEL_NAME = "qwen2.5:7b" with open("profile.json", "r", encoding="utf-8") as f: profile = json.load(f) prompt = f""" 你是一名个人品牌顾问。请根据以下结构化信息,生成一段不超过300字的“数字自我描述”。 要求: 1. 语气具体、冷静,不要使用空洞的形容词。 2. 使用第一人称,从“我是一个……”开始。 3. 明确提出的事实、观点和兴趣,不要编造额外经历。 4. 如果适合表达未来计划,用“接下来我希望”引出。 5. 输出为普通段落,不要使用列表。 输入信息: {json.dumps(profile, ensure_ascii=False, indent=2)} """ resp = requests.post(OLLAMA_URL, json={ "model": MODEL_NAME, "prompt": prompt, "stream": False }) resp.raise_for_status() result = resp.json() print(result.get("response", ""))代码逻辑很直接:读取JSON,拼接提示词,调用Ollama生成接口,打印输出。这里用HTTP接口而不是命令行,是为了让后续接入其他应用更方便,也方便做参数化调用。
3.5 运行与验证
在终端执行:
python generate_profile.py正常输出类似:
我是一个程序员,同时也是一名AI产品方向的技术写作者。过去三年,我参与过订单系统重构,积累了从需求拆解到上线维护的完整经验。我长期维护个人技术博客,坚持把复杂问题拆成可复现的案例。我喜欢开源工具和极简界面,关注AI在真实工程场景中的落地方式。接下来我希望沿着AI工程化方向继续深入,把更多实践经验整理成体系化内容。这个结果是否符合预期,可以从三点判断:
- 是否使用了输入信息中的具体经历,而不是凭空扩展。
- 语气是否偏冷静,没有“充满激情”“追求卓越”这类大词。
- 是否清楚地区分了事实、观点和未来计划。
如果输出偏离,先检查JSON格式,再调整提示词中的约束,最后看本地模型是否适合中文表达。这部分就是整个AI自我构建项目中最核心的调试循环。
4. 关键机制拆解:提示词、记忆与隐私边界
4.1 提示词设计:让AI输出的“自我”更接近真实
上面示例中的提示词包含三块内容:角色设定、输出约束、输入数据。角色设定是“个人品牌顾问”,它决定了模型采用什么语气组织内容;输出约束明确限定字数、语义和结构;输入数据则是模型唯一可以使用的素材。这样设计的目的是防止模型从训练数据中“脑补”出不存在的经历。
常见问题是提示词写得太短,比如“帮我写一段自我介绍”,这时模型只能根据平均水平生成,结果很容易落入“热爱学习、乐于助人、有团队精神”的模板。要得到真正有用的自我画像,提示词应该像一段严格的参数配置:
| 提示词组成部分 | 作用 | 反例 |
|---|---|---|
| 角色设定 | 决定输出视角和文风 | 缺少角色,“随便写写” |
| 输出约束 | 限制长度、结构、语气 | 只写“写一段自我介绍” |
| 数据边界 | 禁止模型编造材料 | 不提供任何个人素材 |
如果你需要模型输出JSON而不是段落,可以在提示词末尾加一句“输出为JSON,包含summary、facts、plan三个字段”,这样生成结果可以直接被程序消费。
4.2 长期记忆与向量化:AI如何维护“你是谁”
单次生成的自我画像只是一个静态快照。如果要让AI长期懂你,就要引入记忆机制。常见方案是把个人经历、偏好、已发布的文章切片,通过Embedding模型转换成向量,存入向量数据库。每次与AI对话前,先从向量库中检索与当前问题相关的个人记忆片段,再把检索结果拼进提示词。
这种做法的好处是,AI可以利用更长时间跨度内的个人材料,而不是只依赖一次会话的上下文。工程上需要设计两个接口:写入接口负责把文本切片并向量化写入存储,查询接口负责根据用户问题做相似度检索。以简单的本地环境为例,可以使用chromadb和sentence-transformers构建原型,但要注意,个人数据进入向量数据库后同样需要权限管理和定期清理。
引入长期记忆后,自我画像不再是“一次性生成的文档”,而是不断更新的动态索引。这个索引越准,AI越知道你是谁,但你也要越清楚索引里存了什么。
4.3 隐私边界:自我构建不等于自我上交
用AI构建自我,最容易被忽略的是隐私边界。本地运行模型只是第一步,真正的风险来自提示词本身。你输入给模型的每一项事实,都可能被记录、转发或复用。如果使用云端API,要确认服务商的数据使用条款,不要把身份证号、家庭住址、健康记录等敏感字段放进提示词。
建议划定三类信息边界:
- 可以输入:职业经历、公开作品、兴趣爱好、技能列表。
- 谨慎输入:手机号、邮箱、社交账号、地理位置,确有必要时做脱敏处理。
- 禁止输入:密码、银行账号、身份证号、体检报告、家庭详细住址。
自我构建的核心目标,是让AI工具理解你,而不是让它替你保存所有隐私。信息越少越安全,在“能否表达你”和“是否过度暴露”之间,要主动做取舍。
5. 常见问题与排查
在实际运行和扩展AI自我画像项目时,会遇到几类典型问题,这里按现象、原因和处理方式梳理。
5.1 生成的自我描述“太通用”,像模板作文
这是最常见的问题。原因通常是提示词约束不足,或输入数据只有“程序员”“写作”这类宽泛标签,缺少可验证的事实信息。
排查路径:
- 检查
profile.json中的experiences是否足够具体,最好每条都有动词和结果。 - 检查提示词中是否真的出现了“不要使用空洞形容词”这类约束。
- 检查模型是否过小,7B参数以下的中文表达能力有限,必要时换更大的模型。
解决办法是把经历写细,比如把“做过后端开发”改成“负责订单系统的库存扣减模块,解决超卖问题”。越具体,越不容易被模型平均化。
5.2 模型回答前后不一致
如果多次运行时出现同一份输入信息却输出不同身份描述的现象,说明输出不稳定。大模型本身具有随机性,temperature参数控制随机程度;其次,如果提示词结构经常变动,结果也会变化。
排查方式:
- 在请求中固定
temperature,建议设为0.3到0.7之间。 - 固定
seed参数(如果API支持),便于复现。 - 把提示词保存成模板文件,不要每次都手工修改。
| 问题现象 | 常见原因 | 检查方式 | 处理建议 |
|---|---|---|---|
| 输出太通用 | 输入过于抽象,约束不足 | 查看JSON和提示词 | 补充具体事实,增加负面约束 |
| 输出不稳定 | 采样随机性高 | 检查temperature和seed | 固定采样参数,保存提示词模板 |
| 中文质量差 | 本地模型参数小 | 查看模型名称和显存占用 | 换更大模型或使用云端合规API |
| 数据被编造 | 提示词未限制数据边界 | 对比输入与输出 | 在提示词中明确“只能使用输入信息” |
5.3 隐私信息在输出中暴露
如果模型在生成的描述里带出了手机号或地址,说明这些信息被放进了输入数据,或者模型从训练数据中偶然生成相似内容。本地模型一般不会主动调用外部数据,但云端模型有潜在风险。
处理方式:输入前做脱敏,把手机号替换为“138****1234”,把城市替换为“某城市”。更稳妥的做法是保留更少敏感字段,用模糊化的标签替代精确信息。
6. 最佳实践与下一步
6.1 用AI构建自我,怎么避免失去自我
AI自我画像不是终点,它是辅助思考的工具。使用它的过程中,要保留一个关键步骤:人工审核。把模型生成的文本当作初稿,而不是最终答案。你要对比“模型写的你”和“你认为的你”之间的差异,这个差异往往比文本本身更有价值。
推荐的做法是,在生成结果后列出一个检查清单:
- 模型写出的经历是否真实发生。
- 模型使用的情感色彩是否与你希望表达的调性一致。
- 如果陌生人读到这段描述,是否会产生错误判断。
- 哪些信息是你明确不想公开的。
这个清单本质上是在做“身份回归测试”,每次调整输入或提示词后重新执行,确保输出没有偏离你的真实底线。
6.2 生产级数字身份管理检查清单
如果要把“AI自我画像”接入更大的项目,比如个人网站、知识库、Agent系统,建议按以下清单过一遍:
- 是否明确收集了哪些个人数据。
- 是否在页面或说明中交代了数据用途。
- 是否对敏感字段做脱敏。
- 是否限制API访问权限并记录调用日志。
- 是否有定期清理旧数据的机制。
- 是否在正式发布前进行过“生成内容会产生什么外部影响”的评估。
- 是否保留了人工撤回或删除AI生成内容的入口。
这些措施不只适用于个人项目,也适用于企业里任何涉及用户画像的AI应用。自我构建一旦进入生产环境,就不再只是端到端效果问题,而是数据治理问题。
6.3 从创作工具回到Kruger式提问
回到Barbara Kruger,她的作品留给当下最好的提示是:每一个看似自动的身份生成过程,背后都有一套规则、权力和设计选择。AI不是透明的镜子,它是一套被训练数据、提示词、平台审核共同约束的生产系统。相比之下,当代个体比Kruger时代拥有更多可操作的技术手段,但也面临更加隐蔽的系统结构。
在技术实践中真正值得做的,不是完全拒绝AI,而是保持对生产链路每个环节的可见性:知道数据从哪里来,知道模型为什么这样说,知道哪些输出需要自己接管。把Kruger的创作逻辑转译成今天的工程习惯,就是在每次用AI生成自我内容时,至少追问一次:这段文本是在表达我,还是在表达训练数据的平均人设。
从最小项目开始,保留人工审核,划定信息边界,定期复盘生成内容与真实自我之间的偏差,这才是从Barbara Kruger到AI这条线索最值得落地的实践路径。