From 2348177c8dc20da15d61d00404906cda1ba95ea0 Mon Sep 17 00:00:00 2001 From: carry Date: Tue, 9 Jun 2026 15:39:42 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=20README.md=EF=BC=8C?= =?UTF-8?q?=E6=98=8E=E7=A1=AE=E8=81=8A=E5=A4=A9=E7=95=8C=E9=9D=A2=E4=B8=AD?= =?UTF-8?q?=20Prompt=20=E7=9A=84=E5=B0=81=E8=A3=85=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E5=8F=8A=E5=85=B6=E5=AF=B9=E7=94=A8=E6=88=B7=E7=9A=84=E5=BD=B1?= =?UTF-8?q?=E5=93=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 40 +++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index a61e4e8..3a4a4a3 100644 --- a/README.md +++ b/README.md @@ -2,28 +2,38 @@ **让 LLM 上下文在聊天界面中可见、可读、可理解。** -HCI 课程设计项目 · 设计系 · 2026 - --- -## 问题:聊天界面的"黑盒"困境 +## 问题:Prompt 被过度封装,用户不知道真正的输入是什么 -以 ChatGPT、Claude 为代表的 AI 聊天产品已拥有数亿用户,但其交互设计存在一个普遍问题——**上下文不透明**。 +以 ChatGPT、Claude 为代表的 AI 聊天产品已拥有数亿用户。这些产品的交互界面模拟的是「人对人」的对话——一个输入框,一段回复。用户看到自己打了一句话,AI 回了一句话。 -当你在聊天框中输入一个问题,模型在回复时参考了: +**但模型真正收到的,远不止这句话。** -- 系统级的**行为准则**(system prompt),决定了回复的风格和边界 -- 跨对话的**用户记忆**(memory),可能包含过时或不准的信息 -- 可用的**工具列表**(tools)和**技能**(skills),你可能完全不知道它们的存在 -- 模板**变量**在后台被静默替换(如 `{{user_name}}` → "小明") +在用户输入的文本被发送给 LLM 之前,系统在后台拼接了大量的上下文: -你粘贴了一篇长论文让 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 说了什么"的设计。**