DeepSeek Harness Hub
← 返回列表

tk-wxy/openin

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

在 Windows 资源管理器地址栏输入一个词,用你想要的应用打开当前文件夹。

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/3 · 已提供中文文档

打开

综合分
28.5
GitHub 分
28.5
用户评分
★ Stars
0
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add tk-wxy/openin
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/17(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

openin

在 Windows 资源管理器地址栏输入一个词,用你想要的应用打开当前文件夹。

openin 是一个一次性注入工具:它为指定应用生成独立的启动器(如 vscode.exe),
放进 PATH 目录里,然后就完事了。生成的启动器是完全独立的程序,
运行时与 openin 没有任何关系——openin 用完即可删除,已注入的命令照常工作。

需要撤销?再跑一次 openin 卸载即可,所有改动完整还原。

openin.exe(注入工具,用完可删)
│
一次性生成启动器
│
▼
地址栏输入 vscode ──► vscode.exe(独立跳板)──► VS Code 打开当前目录

下载

前往 Releases 下载 openin.exe(当前版本 v2.3.0)。

单文件便携程序,双击即用。不需要安装,不需要常驻运行,不需要编译器。
在 Windows 资源管理器中右键 exe →「属性」→「详细信息」可查看版本信息。

使用

GUI(推荐)

双击 openin.exe 打开管理窗口:

1. 程序自动扫描应用路径,顶部汇总显示“已配置 / 全部”数量;需要重新查找时点「扫描」
2. 在左侧搜索、筛选并选择应用,右侧集中查看路径、命令状态、使用方式与全部操作
3. 确认或修改主程序路径后,点「安装」生成启动命令,点「测试」验证效果
4. 选中预设应用时可在详情面板填「自定义命令名(可选)」,为同一应用多加一个别名(原命令名 + 一个自定义名)。重启后该别名仍会显示在详情中;可用旁边的「卸载别名」单独卸载,或卸载原命令时按提示一并处理
5. 点「卸载」可完整清除启动器并还原所有环境变更

命令名规范:openin 保留了一批系统命令名(如 cmd、dir)不可占用;若安装目录已有同名的非 openin 文件会拒绝并弹窗提示。

CLI

openin.exe -a                                :: 一键安装所有检测到的预设
openin.exe -l                                :: 列出已安装的命令
openin.exe -d "D:\Microsoft VS Code"         :: 安装指定应用(自动推导命令名)
openin.exe -d "D:\Microsoft VS Code" code    :: 安装并指定自定义命令名
openin.exe -u vscode                         :: 卸载
openin.exe -q -d "D:\path\to\app" name       :: 静默模式(无弹窗,适合脚本)
openin.exe -p "C:\my\bin" -d "D:\app"        :: 指定启动器安装目录

| 参数 | 说明 |
|------|------|
| -d  [名称] | 指定应用目录或可执行文件,安装启动命令 |
| -u  | 卸载指定命令 |
| -a | 自动安装所有检测到的预设 |
| -l | 列出已安装的启动命令 |
| -p  | 指定启动器存放目录 |
| -q | 静默模式 |

内置预设

开箱即用 19 个常见开发工具,打开窗口自动检测路径:

编辑器 vscode · cursor · windsurf · trae · sublime · nvide

JetBrains idea · pycharm · webstorm · goland · clion · rider · datagrip · rustrover · fleet

CLI / TUI claude · codex · opencode

Web 服务 dsh(DeepSeek Harness —— 后台启动服务,自动打开浏览器)

点击「高级▾ → 添加自定义…」可为任意应用创建启动命令。

工作方式

openin 本身只是一个注入工具,不参与命令的实际运行。它做的事情是在用户 bin 目录
(如 ~\.local\bin)中放置独立的小型启动器——启动器读取当前工作目录,
作为参数启动目标应用。启动器生成后就是独立程序,openin 可以删除。

安装(注入)时做了什么:

- 生成 .exe(内置模板二进制打补丁,免编译器,毫秒完成)
- 同时生成 .cmd(纯批处理兜底,保证可用)
- 如果目录不在 PATH 中,追加到用户 PATH(无需管理员权限)

卸载(回退)时做了什么:

- 删除启动器文件、清理注册表项
- 若安装时修改过 PATH,自动撤销该修改
- 若安装目录由 openin 创建且已清空,自动删除

不产生任何配置文件、日志或缓存。卸载后系统与安装前完全一致。

启动器安装目录选择逻辑

| 优先级 | 目录 | 条件 |
|--------|------|------|
| 1 | -p 指定的目录 | 用户显式指定 |
| 2 | %USERPROFILE%\.local\bin | 已存在且可写 |
| 3 | %APPDATA%\npm | 已存在且可写 |
| 4 | 创建 %USERPROFILE%\.local\bin | 上述不可用时 |
| 5 | %LOCALAPPDATA%\Programs\openin | 最终回退 |

已在 PATH 中的目录不会重复添加。

地址栏与终端的解析隔离(CLI 与 Neovide)

部分命令在地址栏会被别的文件「截胡」,openin 通过写入 App Paths 注册表(HKCU,
优先级高于 PATH 搜索)夺回地址栏解析,卸载时自动清理:

- codex / opencode:npm 在 %APPDATA%\npm 下有无扩展名的 shell 脚本,会拦截
地址栏的无后缀搜索 → App Paths 让地址栏走 openin 启动器,终端仍按 PATH 走 npm 原生命令
- nvide(Neovide):其官方安装目录位于机器 PATH 且先于用户 PATH,裸名 neovide
会被真身直接拦截 → openin 默认提供 nvide 避开冲突,并写入 App Paths 保证带扩展名
输入走启动器;启动器还会追加 --chdir ""(Neovide 只认工作目录、不吃目录参数),
保证 nvim 的 :pwd 即启动目录

安全机制

- 覆盖保护:只操作 openin 自己生成的文件(通过文件内签名识别),拒绝覆盖或删除非 openin 的同名文件
- 原生命令保护:对 claude 等已有官方二进制的命令,只提供「修复」功能,不覆盖、不卸载
- 可逆标记:修改 PATH 或创建目录前写入 .openin-undo 标记,卸载时据此精准还原

从源码构建

需要 MinGW-w64(gcc + windres):

winget install BrechtSanders.WinLibs.POSIX.UCRT

windres -Isrc src\openin.rc -O coff -o openin_res.o
gcc -O2 -s -municode -mwindows -o openin.exe ^
src\openin.c src\core.c src\detect.c src\pathenv.c src\utils.c src\gui.c ^
openin_res.o -Isrc -lshell32 -lole32 -lcomdlg32 -lcomctl32 -luxtheme

项目结构

src/
openin.c             主入口与 CLI 参数解析
core.c               安装/卸载引擎、启动器生成、预设表
detect.c             应用路径检测与深度扫描
pathenv.c            PATH 环境变量与目录操作
utils.c              路径校验等工具函数
gui.c                Win32 原生 GUI
openin.h             模块间接口
launcher_templates.h 预编译启动器模板
openin.manifest      DPI 感知与视觉样式声明
openin.rc            资源定义
scratch/
launcher_gui.c       GUI 启动器模板源码
launcher_cli.c       CLI 启动器模板源码
bin2h.c              二进制转 C 数组工具
gui_shot.ps1         GUI 自动化测试脚本
e2e_addrbar.ps1      地址栏启动链路端到端自动化实测
readcwd.c / shim_nvim.c   进程工作目录探针(PEB 读取 / nvim 垫片)

常见问题

地址栏输入命令后没反应?
刚安装且修改了 PATH 时,已打开的资源管理器窗口需要关闭重开。新开的窗口立即生效。

为什么 Neovide 的默认命令名为 nvide?在地址栏输 neovide 为何 :pwd 是安装目录?
当应用自身所在目录位于系统 PATH(机器 PATH 恒先于用户 PATH)时,无后缀的裸命令
neovide 会被系统原本的真身程序直接拦截——openin 启动器根本不参与运行,这属于
Windows 地址栏的解析顺序机制;且真身直启时工作目录被设为 exe 所在目录,Neovide 又不吃
目录位置参数,导致 :pwd 错误。
因此 openin 将默认命令命名为 nvide(或支持自定义别名如 nv),在地址栏直接
输入 nvide 即可 100% 绕开冲突并自动注入 --chdir 参数以当前目录打开;若需使用全名,
请输入 neovide.cmd 或 neovide.exe。
VS Code、JetBrains 等「吃目录参数」的应用不受此影响。

没有 GCC 能用吗?
能。启动器由内置模板直接生成,不需要编译器。GCC 仅在极端情况下作为回退方案。

卸载干净吗?
干净。启动器文件、注册表项、PATH 修改全部还原,不留任何痕迹。

License

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群