feat: mandatory project folder (cwd binding) + project-conversation linkage (switch closes project, close restores prev) + window-aware prompt with knowledge pack

This commit is contained in:
Aisland
2026-08-19 21:29:44 +08:00
parent be0f4590b9
commit ce449c6620
8 changed files with 399 additions and 43 deletions
+11 -1
View File
@@ -351,9 +351,19 @@ type SplitPane = {
- **窗口编号**:窗格标题「窗口N」,N = 布局中按「左栏 → 顶行 → 主行」顺序的第 N 个内容窗
(如田字格:窗口1/2 = 顶行左右,窗口3/4 = 底行左右;l13:窗口1 = 顶部大窗,窗口2/3/4 =
底部三小窗)。用户说「窗口N」即指该窗。
- **对话绑定**:每个项目卡片(布局卡 + 入驻卡)中间偏右有 🔗 按钮,点击弹会话列表(按工作区
- **对话绑定**:每个项目卡片(布局卡 + 入驻卡)中间偏右有 ○○/●● 按钮,点击弹面板(按工作区
分组、与发送到会话同源),绑定后打开该项目时右侧对话窗自动切换(sessions.open);解绑即
不再切换;绑定关系存 projects.v1.bindings(项目 id → 会话 id)。
- **项目×对话联动**(2026-08-18):① 打开项目时记录「打开前会话」;② 项目打开期间切到非该
项目绑定的会话 → 自动关闭项目(保留用户新选的会话);③ ✕/反选关闭项目 → 自动回切「打开前
会话」。未绑定项目以「打开前会话」为归属会话(任何切换都会关掉它)。
- **项目文件夹(工作目录)**(2026-08-18):新建项目时强制填写(父目录必填 + 文件夹名留空 = 用
项目名,保存时经 /api/worktable/mkdir 建目录);绑定面板「绑定对话」上方可随时更改;存
projects.v1.folders(项目 id → 绝对路径)。自定义窗口新建会话时若未选分组则以该文件夹为
cwd(sessions.create({cwd})),窗口提示词携带文件夹路径 + 「所有产出放进该文件夹」指令。
- **窗口任务提示词升级**(2026-08-18):携带窗口身份(项目名 + 窗口N,窗口N = 窗格标题)、项目
文件夹与「插件知识包」(窗模型/内容类型/服务端路由/构建方式,注明「不要重新侦察插件源码」),
避免接收会话从头侦察源码导致响应过慢。
- 保存的布局以「布局条目」形式出现在项目区(布局 = 一种工作台项目),点击打开 tiling 工作区,
再次点击 / ✕ / Esc 关闭。
@@ -844,6 +844,26 @@
卡片中心 1.5px(墨迹视觉居中);functional-diag ERROR_COUNT: 0。
- 备注:纯客户端改动,F5 即生效;代理已恢复,积压提交已全部推送。
## 补记(项目文件夹强制绑定 + 项目×对话联动 + 窗口提示词升级)
- 用户要求三项:① 所有项目绑定工作文件夹——新建时强制填写(父目录+名称,保存建目录),
绑定面板里「绑定对话」上方可改;项目产出文件尽可能都进该文件夹;② 项目×对话联动——项目
打开期间切到其他对话 = 自动关项目(保留新对话);✕/反选关项目 = 自动回切「打开前会话」;
③ 自定义窗口提示词带窗口身份(项目+窗口N)+ 更多注入(插件知识包),解决接收会话
从头侦察插件源码导致的响应过慢。
- 实现:① projects.v1.folders(项目id→绝对路径);saveLayout 强制父目录 + mkdir 建目录;
绑定弹窗加「📁 项目文件夹」区(显示/更改/保存);新建对话未选分组时 sessions.create({cwd:
项目文件夹});② 模块级 projectAttachRef/suppressRestoreRef + syncSessionScope 检测「切到非
归属会话 → splitStore.close()」+ splitStore 订阅「关闭 → sessions.open(打开前会话)」;
③ buildWindowTaskText 统一组装(窗口身份+文件夹+KNOWLEDGE_PACK「不要重新侦察插件源码」),
两模式共用;CustomPane 经 PaneBody 传入窗格标题(窗口N)。
- 验证(probe-batch6.cjs):提示词含窗口2/项目/文件夹/知识包 ✓;新建面板 3 输入、folders 持久化
+ 目录真实创建 ✓;绑定面板文件夹区(未设置态/表单/保存)✓;联动:切会话→projectAutoClosed+
keptNewSession ✓、st.close→restoredToPrev ✓;functional-diag 全 20 STEP ERROR_COUNT: 0。
- 备注:纯客户端改动,F5 即生效;测试目录已清理。用户贴的接收会话记录(glob 超时/反复 Read
插件源码)即知识包要解决的痛点。
## 补记(箭头再上移 0.5px)
- 用户反馈:入驻卡箭头还是有点偏下,再往上一点点。