feat: 更新 README.md,明确聊天界面中 Prompt 的封装问题及其对用户的影响

This commit is contained in:
carry
2026-06-09 15:39:42 +08:00
parent fb8bdc0fb6
commit 2348177c8d
+25 -15
View File
@@ -2,28 +2,38 @@
**让 LLM 上下文在聊天界面中可见、可读、可理解。** **让 LLM 上下文在聊天界面中可见、可读、可理解。**
HCI 课程设计项目 · 设计系 · 2026
--- ---
## 问题:聊天界面的"黑盒"困境 ## 问题:Prompt 被过度封装,用户不知道真正的输入是什么
以 ChatGPT、Claude 为代表的 AI 聊天产品已拥有数亿用户,但其交互设计存在一个普遍问题——**上下文不透明** 以 ChatGPT、Claude 为代表的 AI 聊天产品已拥有数亿用户。这些产品的交互界面模拟的是「人对人」的对话——一个输入框,一段回复。用户看到自己打了一句话,AI 回了一句话
当你在聊天框中输入一个问题,模型在回复时参考了: **但模型真正收到的,远不止这句话。**
- 系统级的**行为准则**system prompt),决定了回复的风格和边界 在用户输入的文本被发送给 LLM 之前,系统在后台拼接了大量的上下文:
- 跨对话的**用户记忆**(memory),可能包含过时或不准的信息
- 可用的**工具列表**tools)和**技能**(skills),你可能完全不知道它们的存在
- 模板**变量**在后台被静默替换(如 `{{user_name}}` → "小明"
你粘贴了一篇长论文让 AI 分析,界面没有任何提示哪部分被模型"看到"了。AI 调用了三个工具,你看不到调用链。你引用了一份 PDF,不知道模型提取了其中哪些段落。 - **System Prompt** —— 决定了回复的风格、边界、角色设定
- **User Memory** —— 跨对话持久化的用户画像,在每次请求时被注入
- **Tools & Skills 的声明** —— 函数签名、JSON Schema、触发条件的完整描述
- **模板变量的值** —— `{{user_name}}` 被替换为"小明",但用户看到的是变量名还是值?
这些信息——对用户——**全是黑的**。 对于普通用户,这可能无所谓。但对于需要精确控制模型行为的**进阶用户**(开发者、研究者、prompt engineer),这种不透明是致命的:
- 你精心设计了一段 prompt,但不知道 system prompt 是否和它冲突
- 你修改了一条 memory,但不确定新的值是否真的被注入了每一次请求
- 你添加了一个 tool,但看不到它的 schema 在上下文中以什么形式出现
- 你粘贴了一篇长论文,但不知道全文都被包含还是被截断
- 你看到 AI 回复了错误结果,但无法排查是哪个上下文片段导致了问题
**界面上看起来是「一句话的对话」,实际发送给模型的是一份由十几个组件拼接而成的结构化文档。** 聊天 UI 对这一切做了完全的封装——把复杂的 prompt 构造过程包装成了一个简单的 textarea。
**这个问题不是"看不到 AI 的推理过程",而是"看不到自己的输入到底是什么"。**
### 设计问题 ### 设计问题
当前的聊天 UI 将 LLM 的所有上下文**过度封装**在 textarea 里。界面只关心「输入」和「输出」,把中间的一切当作实现细节。但 HCI 告诉我们:**界面的信息架构应该反映系统的心智模型**。当用户不知道模型"知道什么",他们就无法建立准确的预期,无法纠错,无法信任 当前的聊天界面将 prompt 构造的复杂性**过度封装**在单一输入框中。用户以为自己发送的是文本,实际发送的是一个经过层层拼接的复合体。界面模拟的是"人说了一句话"的隐喻,但模型侧的真实情况是"一份多来源、多类型、多优先级的结构化上下文文档"
HCI 告诉我们:**界面的信息架构应该反映系统的心智模型**。当用户不知道模型真正收到了什么,他们就无法调试、无法精确控制、无法建立信任。
--- ---
@@ -229,8 +239,8 @@ src/
## 设计反思 ## 设计反思
这个项目本质上在探索一个更根本的问题:**当 AI 系统变得越来越复杂,聊天界面该怎样让用户理解"系统在做什么"** 这个项目本质上在探索一个更根本的问题:**当一条"聊天消息"背后实际是十几个上下文组件拼接而成的结构化文档,聊天界面该怎样诚实地呈现它**
传统的聊天界面诞生于"人对人"的隐喻——一个输入框,一个输出框。但当这个输入框背后连接的是一个拥有记忆、工具、技能和复杂约束的 AI 系统时,一对一的 chat bubble 隐喻就不够了 传统的聊天界面诞生于"人对人"的隐喻——一个输入框,一个输出框。但当这个输入框背后连接的是一个拥有 system prompt、记忆、工具声明和变量注入的复杂 prompt 构造系统时,把一切封装在简单的 chat bubble 里就是在**对用户撒谎**。用户以为自己发送的是纯文本,实际被发送的是一份经过大量预处理的复合文档
Prompt Envelope Protocol 尝试将"人机对话"的界面从**线性的文本流**升级为**结构化的信息架构**——让对话保持流畅,同时让上下文信息变得可见。这是一种对聊天界面的重新思考:**不只是"AI 在说话",而是"AI 在什么条件下、用了什么资源、做了哪些步骤来生成这个回复"** Prompt Envelope Protocol 尝试将"人机对话"的界面从**隐藏复杂性的 textarea** 升级为**诚实可见的信息架构**让对话保持流畅,同时让 prompt 的真实组成变得可见。这是一个关于"AI 在做什么"的设计——**这是关于"你到底对 AI 说了什么"的设计。**