🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

会话项目定位 callaumyan-design/dshx-project

DeepSeek Harness
callaumyan-design12 天前有提交已提供中文文档扫描:含敏感能力

在标题栏显示并一键打开会话真正在做的项目目录

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/20 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add callaumyan-design/dshx-project
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · market
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 12 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 16 处,展示前 12 条)
  • 读取本地文件
    infer.js:89
    try { ok = statSync(target).isDirectory() } catch { ok = false }
  • 读取本地文件
    infer.js:139
    try { entries = readdirSync(dir, { withFileTypes: true }) } catch { return }
  • 读取本地文件
    client-test.mjs:41
    vm.runInNewContext(readFileSync(new URL('./client.js', import.meta.url), 'utf8'), {
  • 发起网络请求
    client-test.mjs:52
    const post = (path) => window.fetch('open-in-app/open', { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify({ app:
  • 发起网络请求
    client-test.mjs:77
    await window.fetch('open-in-app/open', { method: 'POST', body: JSON.stringify({ app: 'vscode', path: 'F:/ds/' }) })
  • 发起网络请求
    client-test.mjs:100
    await window.fetch('open-in-app/apps')
  • 写入本地文件
    test.mjs:12
    for (const d of ['projects/alpha/src', 'projects/beta', 'gamma', 'archive/old', 'dsh/dshx-plugins/plug-a']) mkdirSync(path.join(ws, d), { recursive: t
  • 写入本地文件
    test.mjs:13
    mkdirSync(path.join(home, 'storages'), { recursive: true })
  • 写入本地文件
    test.mjs:14
    writeFileSync(path.join(home, 'storages', 'workspace.json'), JSON.stringify({ tables: { workspaces: { w: { path: ws } } } }))
  • 写入本地文件
    test.mjs:26
    mkdirSync(logDir, { recursive: true })
  • 写入本地文件
    test.mjs:30
    writeFileSync(logFile, frame({ type: 'session', version: 4, id: sid, cwd: ws }))
  • 写入本地文件
    test.mjs:39
    appendFileSync(logFile, frame(call('read', { file_path: path.join(ws, 'gamma', 'x.md') })))
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

在会话头部显示并打开会话的真实项目目录,另加一个 set_project 工具,让模型能记录它。会话 cwd 不可变,所以映射改存在这个插件自己的持久存储里。

README

由 DeepSeek 最新模型翻译生成
dshx-project 在会话标题栏显示本会话真正在做的项目,一键在资源管理器里打开它。 为什么需要它 DSH 自带「Open In...」按钮打开的是会话的 cwd。而 cwd 是会话创建时写死的 immutable 元数据: // dsh-session/lib/types/types.d.ts export interface SessionHeader { /** Absolute working directory the session was created in (if any). */ readonly cwd?: string; 我在 0.2.0-rc.2 的运行时里搜过 setCwd|updateHeader|patchHeader|updateMeta——零结果,没有任何修改 API。如果你的会话都建在工作区根目录(常见情况),那个按钮永远只打开根目录。 从日志里反推项目也不可行:实测覆盖率约 3%(267 个日志里只有 9 个提到完整子路径)。 所以本插件不去改那个 immutable 字段,而是自己维护一份 sessionId -> 项目路径 的映射。 它是纯展示性的:插件没加载时会话照常打开,自带按钮照常工作,会话日志不受任何影响。
展开完整文档(README 剩余 1 节)
dshx-project

在会话标题栏显示本会话真正在做的项目,一键在资源管理器里打开它。

为什么需要它

DSH 自带「Open In...」按钮打开的是会话的 cwd。而 cwd 是会话创建时写死的 immutable 元数据:

// dsh-session/lib/types/types.d.ts
export interface SessionHeader {
/** Absolute working directory the session was created in (if any). */
readonly cwd?: string;

我在 0.2.0-rc.2 的运行时里搜过 setCwd|updateHeader|patchHeader|updateMeta——零结果,没有任何修改 API。如果你的会话都建在工作区根目录(常见情况),那个按钮永远只打开根目录。

从日志里反推项目也不可行:实测覆盖率约 3%(267 个日志里只有 9 个提到完整子路径)。

所以本插件不去改那个 immutable 字段,而是自己维护一份 sessionId -> 项目路径 的映射。
它是纯展示性的:插件没加载时会话照常打开,自带按钮照常工作,会话日志不受任何影响。

装了什么

| 位置 | 内容 |
| 标题栏 | 一个「项目」控件,显示项目文件夹名;点开是目录菜单(当前项目 / 工作区目录 / 忘记) |
| AI 工具 | set_project(path) —— 模型可以自己把当前项目记下来 |
| 路由 | /dshx-project/{state,set,clear,open},只接受同源请求 |

映射存在 ~/.dsh/dshx-project/projects.json(原子写:先写 .tmp-<pid> 再 rename)。

用法

- 手动:点标题栏的「项目」→ 从菜单里选一个目录 → 记下并可直接打开。
- AI 自动:直接跟模型说「这个会话在做 D:\work\my-app」,它会调 set_project。
也可以让它在发现真实项目根和工作区根不同时自己记录下来。
- 打开:点控件本体 = 打开当前记录的项目;菜单里选别的目录 = 改记录。

几个设计取舍

- 路径必须在已知工作区内。 set / open 路由页面可达,不设限就等于让浏览器能打开机器上任意目录。工作区根来自 ~/.dsh/storages/workspace.json(产品自己的事实来源),与会话 cwd 取并集。
- Agent.id 就是 session id。 工具执行时没有 sessionId 参数,是从 exec.agent.id 拿的(dsh-agent 的 types.d.ts:Session identity)。没有 agent 上下文时明确报错,不猜。
- 只依赖 React。 下拉菜单是自己实现的,没有 require @deepseek-ai/dsh-client-ui-primitives ——那个包装在 app.asar 的运行时 payload 里、磁盘上读不到,无法在开发时核对它的 props 契约。
自带按钮的 Menu 组件引用方式可查,但我不想依赖一个没法验证的 API。
- 候选目录走两层。 项目有的在一层下(projects/my-app),有的直接在根下(my-tool),只走一层会漏掉一半。

测试

开发时用一组 11 项的 host 测试(假 ctx 驱动真实模块)覆盖:空状态、越界拒绝、缺失目录、相对路径、正常记录、状态回读、按记录打开、无记录打开、清除、AI 工具的三种情形(有效/越界/无 agent)、方法守卫(405)、以及 render 输出。

安装

Web profile
dsh plugin --profile web add github:callaumyan-design/dshx-project
Desktop(用 DSH Desktop 自带的 dsh 命令,先从托盘完全退出 Desktop)
dsh plugin --profile desktop add github:callaumyan-design/dshx-project

安装后重启 DSH。卸载:dsh plugin --profile <profile> remove dshx-project。

License

MIT
预览分享卡片长什么样 ↓callaumyan-design/dshx-project
分享 · DeepSeek Harness Hub
callaumyan-design/dshx-project

在标题栏显示并一键打开会话真正在做的项目目录

回到顶部