Skip to content

[Feature] 用户文件操作闭环:文件树右键删除 + 源代码管理 Discard,并自动通知 AI(仿权限切换的 runtime-context 体验) #488

Description

@KannaKuron

提交前确认 / Pre-submit checklist

运行环境 / Environment

  • DSH Web(浏览器访问)

插件版本 / Plugin version

v0.17.1(npm 最新)

类别 / Category

✨ 功能请求(新功能 / Feature request)


描述 / Description

DSH 是 agent 工作台:模型在会话里读写工作区文件。但用户想在侧边栏亲自管理一下工作区时,存在两个缺口,而它们共同导致第三个更深的缺口:

缺口 1:文件树没有右键「删除」

文件/文件夹右键只有 打开 / 下载 / 复制路径 / 上传,没有任何删除入口。清理 agent 生成的临时文件、实验产物只能开终端 rm。(详见 #484 / #482;历史尝试 #172 / #191 / #266 / #380 全部未合入)

缺口 2:源代码管理没有「抛弃修改(Discard changes)」

「更改」列表里未暂存文件只能打开 diff 或暂存(+),不能右键 discard 回滚到 HEAD。想撤销未提交修改只能去终端 git restore。已搜索 discard / 回滚 / 撤销 / revert / checkout / restore / unstage / 暂存 等关键词,此前无人提过。

缺口 3(本 issue 的核心主张):侧边栏文件操作对模型不可见

就算缺口 1、2 补上,还有一致性问题:用户删了 src/foo.js、或把 src/bar.ts 回滚到 HEAD,模型不知道。它的世界观停在旧状态——继续引用已删文件、把刚被用户 discard 的改动又生成一遍、或基于失效假设写代码。

DSH 本体已有完美先例:切换文件权限模式时(工作区 ↔ 完全权限),会话里会自动出现一条提示,模型立刻知道用户切换了。实现上即 @deepseek-ai/dsh-sandbox-policy 通过 systemPrompt.context() 注册的 runtime context(Current DSH file policy: ...):内容一变,agent loop 就把新快照作为模型历史插入会话。

期望行为 / Expected behavior

A. 文件树:右键 Delete

B. 源代码管理:Discard changes

C. 操作自动进入 AI 上下文(仿权限切换体验)

任一上述操作成功后,自动向当前会话注入一条通知,让模型明确「这是用户手动操作,请基于新状态继续工作」。建议形态:

[user file action] Deleted src/scratch/gen-output.md (sidebar file tree)
[user file action] Discarded uncommitted changes in src/bar.ts — restored to HEAD (Source Control panel)

实现路径两条(可并存,供参考):

  1. 事件型一次性消息:操作成功后立即向会话 append 一条 source=plugin 的 user message——即时可见,不依赖用户发送下一条消息
  2. runtime-context 快照(权限切换同款):systemPrompt.context() 暴露「最近用户文件操作」状态,内容变化时由 agent loop 插入新快照

附一个设置开关(默认开),供不想注入的用户关闭。

复现步骤 / Steps to reproduce

  1. 会话中让模型生成几个文件,随后在文件树右键任一文件 → 无删除入口(缺口 1)
  2. 修改两个已跟踪文件,打开源代码管理面板,悬停/右键未暂存文件 → 无 discard 入口(缺口 2)
  3. 即使手动在终端删掉文件,会话里也不会出现任何提示,模型继续按旧状态引用它(缺口 3)

关联 / Related

补充 / Additional context

A、B 若按 #482 的参考实现独立推进,本 issue 的增量主张是 C:用户在侧边栏的每一次工作区变更,都应当和权限切换一样,自然地进入模型的上下文

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3低:体验/建议area/explorerFile tree / explorer: navigation, context menu, searchenhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions