From 3de0ba96d9c46522859e19a370a9defdc5451fce Mon Sep 17 00:00:00 2001 From: Aisland Date: Wed, 19 Aug 2026 21:54:50 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20hard=20rule=20=E2=80=94=20generated=20p?= =?UTF-8?q?rompts=20must=20never=20leak=20user=20workspace=20group=20names?= =?UTF-8?q?=20(zero-leak=20constraint)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 01_content/src/client/index.tsx | 3 ++- 02_process/PRD.md | 3 +++ 02_process/worklogs/2026-08-16_worktable-v2.md | 11 +++++++++++ AGENTS.md | 5 +++++ 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/01_content/src/client/index.tsx b/01_content/src/client/index.tsx index dd46baa..e0ebb35 100644 --- a/01_content/src/client/index.tsx +++ b/01_content/src/client/index.tsx @@ -856,7 +856,8 @@ function bindInfoOf(groups: { title: string; sessions: { id: string; title: stri return { folder: '', title: sid } } -/** 自定义布局提示词模板(复制到剪贴板,可发给任意 dsh 会话让 agent 实现) */ +/** 自定义布局提示词模板(复制到剪贴板,可发给任意 dsh 会话让 agent 实现)。 + * 零泄漏硬约束:禁止写入用户的个人工作区分组名/项目名/私人路径——本提示词会被发给别人的 DSH。 */ function buildCustomLayoutPrompt(req: string): string { return [ '【为 dsh-worktable(工作台)插件增加一个新的布局预设】', diff --git a/02_process/PRD.md b/02_process/PRD.md index 1c9cc00..5f0a68f 100644 --- a/02_process/PRD.md +++ b/02_process/PRD.md @@ -364,6 +364,9 @@ type SplitPane = { - **窗口任务提示词升级**(2026-08-18):携带窗口身份(项目名 + 窗口N,窗口N = 窗格标题)、项目 文件夹与「插件知识包」(窗模型/内容类型/服务端路由/构建方式,注明「不要重新侦察插件源码」), 避免接收会话从头侦察源码导致响应过慢。 +- **提示词零泄漏硬约束**(2026-08-18):任何对外生成的提示词(窗口任务提示词 / 剪贴板布局提示词) + 禁止写入用户的个人工作区分组名(Projects / DeepseekHarness 等)、他人项目名与私人路径; + 分组下拉只用于会话创建工作区,绝不进入提示词文本;剪贴板提示词只含插件通用知识。 - 保存的布局以「布局条目」形式出现在项目区(布局 = 一种工作台项目),点击打开 tiling 工作区, 再次点击 / ✕ / Esc 关闭。 diff --git a/02_process/worklogs/2026-08-16_worktable-v2.md b/02_process/worklogs/2026-08-16_worktable-v2.md index a919f5a..5a81e95 100644 --- a/02_process/worklogs/2026-08-16_worktable-v2.md +++ b/02_process/worklogs/2026-08-16_worktable-v2.md @@ -878,6 +878,17 @@ - 备注:纯客户端改动,F5 即生效;无头环境 pickDirectory 不弹真实对话框(挂起),真实 GUI 中 由用户手势触发原生 Windows 文件夹选择窗。 +## 补记(提示词零泄漏硬约束) + +- 用户提醒:新建对话的分组下拉里出现的个人分组(Projects / DeepseekHarness 等)绝不能写进 + 对外生成的提示词(尤其「+自定义」剪贴板提示词——会发给别人的 DSH)。 +- 核查:buildCustomLayoutPrompt 只含插件通用知识(预设列表/字段/构建方式,无任何个人路径与 + 分组名)✓;buildWindowTaskText 含项目名/窗口N/项目文件夹(仅发用户自己的会话)✓;分组 + 下拉选择只用于 sessions.create 的 workspaceId,不进任何文本 ✓。 +- 固化:AGENTS.md「提示词零泄漏(硬约束)」+ PRD §13 条目 + buildCustomLayoutPrompt 代码注释。 +- 备注:本次无行为改动,仅规则固化与文档;重建后提交。 + + ## 补记(箭头再上移 0.5px) diff --git a/AGENTS.md b/AGENTS.md index a12c91d..dc2dff4 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -42,6 +42,11 @@ node --check lib/index.js 放进该文件夹」指令——用户要求项目产出文件不得落到默认位置。 - **窗口任务提示词**:buildWindowTaskText 统一组装(窗口身份「项目+窗口N」+ 项目文件夹 + 插件知识包);知识包注明「不要重新侦察插件源码」,改提示词时保持这个原则。 +- **提示词零泄漏(硬约束)**:所有对外生成的提示词(buildWindowTaskText 窗口任务提示词、 + buildCustomLayoutPrompt 剪贴板布局提示词)禁止写入用户的个人工作区分组名(如 Projects / + DeepseekHarness)、其他用户的项目名与私人路径。剪贴板提示词会发给别人的 DSH,必须只含 + 插件通用知识;窗口任务提示词只发用户自己的会话,允许携带该项目自己的文件夹路径。 + 分组下拉只是会话创建工作区的选择,绝不进入任何提示词文本。 ## 安装 / 重启