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

随手快问 CW-1209/dsh-quick-qa

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

框选屏幕题目,结合工作区资料秒出答案

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · other
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
暂无时间戳·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 16 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 80 处,展示前 57 条)
  • 发起网络请求
    lib/client.js:78
    const res = await fetch(API + path, {
  • 删除本地文件递归
    dev/host-fixture.js:24
    await rm(resolved, { recursive: true, force: true })
  • 写入本地文件
    dev/host-fixture.js:32
    if (options.mode) await writeFile(settingsPath, JSON.stringify({ searchMode: options.mode }))
  • 写入本地文件
    dev/host-fixture.js:34
    await writeFile(imagePath, Buffer.from('isolated fake image consumed only by the mock vision provider'))
  • 写入本地文件
    dev/host-fixture.js:37
    const directory = path.join(root, 'course'); await mkdir(directory)
  • 写入本地文件
    dev/host-fixture.js:38
    await writeFile(path.join(directory, '讲义.txt'), options.course)
  • 读取本地文件
    dev/ocr-windows-lifecycle.test.js:12
    const skip=process.platform!=='win32' || !python || !existsSync(python)
  • 删除本地文件递归
    dev/ocr-windows-lifecycle.test.js:19
    await rm(absolute,{recursive:true,force:true})
  • 读取本地文件
    dev/ocr-windows-lifecycle.test.js:22
    const source=await readFile(new URL('../lib/ocr_worker.py',import.meta.url),'utf8')
  • 写入本地文件
    dev/ocr-windows-lifecycle.test.js:26
    await writeFile(script,`import os, sys, json, time\n${watcher}\nprint(json.dumps({'ready':True,'pid':os.getpid()}),flush=True)\nfor raw in sys.stdin:\
  • 执行外部命令来自配置/变量
    dev/ocr-windows-lifecycle.test.js:46
    const child=spawn(python,['-u',script],{windowsHide:true,stdio:['pipe','pipe','pipe']})
  • 发起网络请求
    dev/request-scheduling.test.js:10
    const accepted = await f.request('ask', { text: '题目', clientRequestId: 'slow-prepare' })
  • 发起网络请求
    dev/request-scheduling.test.js:26
    const a = await f.request('ask', input)
  • 发起网络请求
    dev/request-scheduling.test.js:27
    const b = await f.request('ask', input)
  • 发起网络请求
    dev/request-scheduling.test.js:31
    const c = await f.request('ask', input)
  • 发起网络请求
    dev/request-scheduling.test.js:39
    const first = await f.request('ask', input)
  • 发起网络请求
    dev/request-scheduling.test.js:40
    const conflict = await f.request('ask', { ...input, text: '换了题目' })
  • 发起网络请求
    dev/search-modes.test.js:29
    const diagnostics = await f.request('diagnostics')
  • 发起网络请求
    dev/search-modes.test.js:47
    const started = await f.request('ask', { text: '这是隔离测试题,不调用真实模型。' })
  • 发起网络请求
    dev/search-modes.test.js:69
    await f.request('prepare', { clientId: 'screenshot', revision: 1, imagePath: f.imagePath })
  • 发起网络请求
    dev/search-modes.test.js:73
    await f.request('prepare', { clientId: 'screenshot', revision: 2, imagePath: f.imagePath })
  • 发起网络请求
    dev/search-modes.test.js:123
    await f.request('prepare', { clientId: 'screenshot', revision: 1, imagePath: f.imagePath })
  • 发起网络请求
    dev/search-modes.test.js:139
    await f.request('prepare', { clientId: 'screenshot', revision: 1, imagePath: f.imagePath })
  • 读取本地文件
    dev/search-modes.test.js:185
    assert.equal(JSON.parse(await readFile(f.settingsPath, 'utf8')).searchMode, 'limited')
  • 写入本地文件
    dev/search-modes.test.js:190
    await writeFile(file, '{broken')
  • 读取本地文件
    dev/search-modes.test.js:197
    assert.deepEqual(await readdir(root), ['search-settings.json'])
  • 执行外部命令固定命令
    dev/spawn-test.cjs:17
    const child = spawn('C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe', args, {
  • 读取密钥环境变量
    lib/course-web.js:21
    const key=options.apiKey ?? process.env.TAVILY_API_KEY
  • 读取密钥环境变量
    lib/course-web.js:110
    export async function directSearch(query, {maxResults=5, signal, fetchImpl=globalThis.fetch, apiKey=process.env.TAVILY_API_KEY,depth='fast'}={}) {
  • 发起网络请求
    lib/course-web.js:183
    const page=await bounded(s=>web.fetch({url:source.url},s),Math.min(fetchTimeoutMs,deadline-Date.now()),groupSignal)
  • 读取本地文件
    lib/impl.js:55
    .find((candidate) => candidate === 'python' || existsSync(candidate)),
  • 读取本地文件
    lib/impl.js:295
    const modelRouteReady = readFile(cfg.modelRoutePath,'utf8').then(data=>{
  • 读取本地文件
    lib/impl.js:344
    const raw = await readFile(path.join(DATA_DIR, 'bind.json'), 'utf8')
  • 写入本地文件
    lib/impl.js:357
    await mkdir(DATA_DIR, { recursive: true })
  • 写入本地文件
    lib/impl.js:358
    await writeFile(path.join(DATA_DIR, 'bind.json'), JSON.stringify(state, null, 2), 'utf8')
  • 读取本地文件
    lib/impl.js:382
    entries = await readdir(current.dir, { withFileTypes: true })
  • 读取本地文件
    lib/impl.js:401
    info = await stat(abs)
  • 读取本地文件
    lib/impl.js:414
    if (!existsSync(cfg.python) || !existsSync(cfg.extractScript)) throw new Error('文档提取器不可用')
  • 执行外部命令来自配置/变量
    lib/impl.js:426
    child = spawn(cfg.python, [cfg.extractScript, file], { windowsHide: true })
  • 执行外部命令来自配置/变量
    lib/impl.js:1310
    const proc = spawn(cfg.powershell, args, {
  • 执行外部命令来自配置/变量
    lib/impl.js:1355
    const stopper = spawn(cfg.powershell, [
  • 写入本地文件
    lib/impl.js:1597
    await mkdir(path.dirname(cfg.modelRoutePath),{recursive:true})
  • 写入本地文件
    lib/impl.js:1598
    await writeFile(cfg.modelRoutePath,JSON.stringify(selection??{}),'utf8')
  • 读取本地文件
    lib/incremental-index.js:11
    try { saved = JSON.parse(await readFile(cacheFile, 'utf8')) } catch { saved = null }
  • 读取本地文件
    lib/incremental-index.js:38
    const before = await stat(file.abs)
  • 读取本地文件
    lib/incremental-index.js:39
    const data = await readFile(file.abs)
  • 读取本地文件
    lib/incremental-index.js:43
    const after = await stat(file.abs)
  • 写入本地文件
    lib/incremental-index.js:67
    await mkdir(path.dirname(cacheFile), { recursive: true })
  • 写入本地文件
    lib/incremental-index.js:69
    await writeFile(temporary, JSON.stringify(result), 'utf8')
  • 写入本地文件
    lib/incremental-index.js:70
    await rename(temporary, cacheFile)
  • 执行外部命令固定命令
    lib/local-ocr.js:15
    execFile('taskkill.exe',[...pids.flatMap(pid=>['/PID',String(pid)]),'/T','/F'],{windowsHide:true,timeout:3000},error=>{
  • 读取本地文件
    lib/local-ocr.js:55
    if(!existsSync(this.python)||!existsSync(this.script))throw new Error('本地 OCR 运行环境缺失')
  • 读取本地文件
    lib/search-settings.js:9
    const ready = readFile(file, 'utf8').then(raw => {
  • 写入本地文件
    lib/search-settings.js:25
    await mkdir(path.dirname(file), { recursive: true })
  • 写入本地文件
    lib/search-settings.js:28
    await writeFile(temp, JSON.stringify({ version: 1, searchMode: next }, null, 2), { encoding: 'utf8', flag: 'wx' })
  • 写入本地文件
    lib/search-settings.js:29
    await rename(temp, file)
  • 删除本地文件
    lib/search-settings.js:32
    } finally { await unlink(temp).catch(error => { if (error.code !== 'ENOENT') onWarning(error.message) }) }
扫描于 2026/11/4(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DSH 插件:课堂随手一问 —— 框选题目 + 绑定工作区资料,秒出答案(桌面快捷栏)

README

由 DeepSeek 最新模型翻译生成
快速问答(dsh-quick-qa) 课堂上的「随手一问」:框选屏幕上的题目 → 发送 → 结合工作区资料秒出答案。 入口在左侧栏「新会话」下方(快速问答)。按键:鼠标键4 开始截图、鼠标键5 发送、Alt+Q 开关快捷栏。 快捷栏与缩略图 答案框 怎么用 1. 点左侧栏 快速问答 → 桌面弹出横向小细条(快捷栏,类似输入法候选框)。 第一次点击会顺带启动一个独立的 PowerShell 小进程(它负责窗口、全局热键和鼠标键)。 2. 按 鼠标键4(鼠标侧键靠后的那颗)→ 光标变十字,屏幕只画选区的边框,不遮暗、不加蒙版。 按住左键拖出题目(拖动时实时画框),松开就截图;只点一下不算(无效操作,继续等), 右键或 Esc 取消。截图成功后快捷栏上方出现缩略图(含选区尺寸);这时按 鼠标键5(或回车)才发送 —— 不满意就 Esc 丢掉重框。 3. 1~9 秒后细条下方弹出答案框:答案在最前,下面是简要解释、依据(引用到的资料)、参考资料列表和各阶段耗时。答案框比细条宽一点、限高可滚动。 也可以不截图:直接在细条的输入框里手打题目,回车或 鼠标键5 发送(这条路径最快,通常 ~3 秒)。 随时开关快捷栏:按 Alt+Q 一次把细条显示出来(回到上次关闭时的位置),再按一次收起(连答案框一起收)。这些按键都跟那个小进程绑定,进程在它们就在。
展开完整文档(README 剩余 1 节)
快速问答(dsh-quick-qa)

课堂上的「随手一问」:框选屏幕上的题目 → 发送 → 结合工作区资料秒出答案。
入口在左侧栏「新会话」下方(快速问答)。按键:鼠标键4 开始截图、鼠标键5 发送、Alt+Q 开关快捷栏。

快捷栏与缩略图

答案框

怎么用

1. 点左侧栏 快速问答 → 桌面弹出横向小细条(快捷栏,类似输入法候选框)。
第一次点击会顺带启动一个独立的 PowerShell 小进程(它负责窗口、全局热键和鼠标键)。
2. 按 鼠标键4(鼠标侧键靠后的那颗)→ 光标变十字,屏幕只画选区的边框,不遮暗、不加蒙版。
按住左键拖出题目(拖动时实时画框),松开就截图;只点一下不算(无效操作,继续等), 右键或 Esc 取消。截图成功后快捷栏上方出现缩略图(含选区尺寸);这时按 鼠标键5(或回车)才发送 —— 不满意就 Esc 丢掉重框。
3. 1~9 秒后细条下方弹出答案框:答案在最前,下面是简要解释、依据(引用到的资料)、参考资料列表和各阶段耗时。答案框比细条宽一点、限高可滚动。

也可以不截图:直接在细条的输入框里手打题目,回车或 鼠标键5 发送(这条路径最快,通常 ~3 秒)。

随时开关快捷栏:按 Alt+Q 一次把细条显示出来(回到上次关闭时的位置),再按一次收起(连答案框一起收)。这些按键都跟那个小进程绑定,进程在它们就在。
(鼠标键4/5 走的是全局低级鼠标钩子,默认会把这两颗键吞掉 —— 浏览器、资源管理器里就不会再前进/后退;不想要这个副作用就把快捷栏脚本的 -MouseSwallow 传 0。)

窗口怎么摆:按着细条上任何不是按钮的地方(标题文字、空白、缩略图都行)拖动就能移动,位置会被记住,下次框选不会被拉回原位;把鼠标挪到细条左右边缘(离边框 9 像素内,光标会变成左右调整)按住拖就能改宽度(480 ~ 1320),拖左缘时右边界不动,宽度同样记住。
右侧 ⚙ 调整体透明度(快捷栏和答案框一起,最低 30%,默认 100%;点一下展开、再点一下收起,拖那条轨道的圆形把手改),✕ 收起整个快捷栏(Alt+Q 仍然可用)。答案框始终跟着快捷栏走(水平居中、比栏宽 120),但可以单独用它的圆形 ✕ 关掉(关掉的这一条不会再自己弹回来,下一条新答案才会重新出现)。

工作区

- 细条上的 工作区胶囊按钮(默认显示当前工作区名)点开就是工作区列表,可随时切换;左侧栏面板里的下拉框是同一份绑定。
- 作答时会把该工作区里的 文档 / PDF / PPTX(还有 docx、xlsx、md、txt)抽成文本建索引, 8 段最相关资料随题目一起给模型。面板上能看到「已索引片段 / 资料文件 / 索引耗时」。
- 索引按文件修改时间缓存,改过资料后点面板的 重建索引 即可。

外观

快捷栏 / 答案框跟随 DSH 主题:客户端半边每 2.5 秒把 DSH 的 --dsw-alias- token 推给宿主,快捷栏按 token 上色(深色/浅色自动切)。有几处 token 在 DOM 里读不到(--dsw-alias-border- 基本读不出来,浅色下三层底色又都是纯白),所以:

- 底色优先取 bg-base(DSH 的应用基础面),不拿 overlay(那是压暗层,浅色下是灰蓝 #e9ecf2,跟 DSH 不搭);
- 边框按 底色 + 文字色 混 15%,内层小面(工作区胶囊 / 输入框)混 7%;
- 值统一归一成 6 位 hex —— DSH 常给 #fff 这种三位简写,不归一混色会静默失败。

窗口本身没有阴影(DropShadowEffect 已去掉),圆角靠外框 CornerRadius + 内层 Border 圆角(WPF 的 Button/TextBox 自己没有圆角属性,所以胶囊和输入框都是「透明控件 + 圆角 Border 外壳」)。

实测速度(DeepSeek-V4.1-Flash,本机)

| 路径 | 读题 | 检索 | 作答 | 合计 |
| 手打题目 | — | 4 ms | 0.7 ~ 2.9 s | ~1 ~ 3 s |
| 截图框选 | 2.1 ~ 6.4 s | 6 ms | 1.5 ~ 4.6 s | 3.5 ~ 9 s |

要的就是「别等」:答案是先出的,解释和参考资料跟在后面。

结构

| 文件 | 作用 |
| lib/impl.js | 宿主半边:HTTP 路由、建索引/检索、读题与作答、历史、启动快捷栏进程 |
| lib/client.js | 客户端半边:左侧栏入口 + 面板(工作区切换、统计、最近问答、主题同步) |
| lib/quickbar.ps1 | 快捷栏本体:Windows PowerShell 5.1 + WPF,独立进程,全局热键、框选层、答案框 |
| lib/extract.py | 资料抽取(pypdf / pypdfium2 / python-pptx / python-docx / openpyxl) |
| dev/reload.ps1 | 开发用:热重载宿主半边(改宿主代码后跑它) |
| dev/spawn-test.cjs | 开发用:复现/排查 spawn 行为的小脚本 |

几个关键设计点:

- 进程隔离:快捷栏跑在独立的 PowerShell 进程里,崩了也带不动 DSH 本体;宿主与它之间只靠 HTTP 轮询通信(不用 HttpListener、不需要管理员)。
- 框选层:AllowsTransparency 的窗口里完全透明的像素在系统层面是「点击穿透」的,所以背景用了 #01000000(alpha = 1/255,肉眼等同全透明,但能接收鼠标)。
- 热键:HwndSource 的消息钩子必须在 C# 里挂(PowerShell 没法给钩子的 ref bool handled 赋值,异常会冲穿消息泵把进程带崩),钩子里只置标志,真正的框选交给 UI 定时器。
- 鼠标键4/5:RegisterHotKey 只认键盘,鼠标侧键只能走全局低级钩子(WH_MOUSE_LL)。
低级钩子的回调跑在「装钩的那条线程」上,Windows 对它还有超时限制(回调慢了会直接摘掉钩子、(甚至让鼠标发顿),所以回调里只置静态布尔、一个 PowerShell 语句都不执行,真正的活同样交给 UI 定时器;装钩的线程必须有消息泵(这里是 WPF 的 Dispatcher)。按下和松开都吞掉,免得前台程序收到半个 XBUTTONUP;-MouseSwallow 0 可让这两颗键照旧触发前进/后退。
- 空正文重试:当前模型没有 reasoning effort 开关,会先写推理;预算被推理吃光时正文会是空的。
所以识别和作答各带一次「加预算重试」,正常路径不触发、不拖慢。
- 拖动不打架:整个条形区都在 BarRoot 上接鼠标事件 —— 贴着左右边缘 9 像素内按下算「改宽度」(光标位移 ÷ DPI 缩放 = 宽度变化,拖左缘时左边界和宽度同时改、右边界钉住),
其它地方按下算「移动窗口」(DragMove()),按钮/输入框/滑块这些交互控件会先被排除掉;
两者都在改动期间置 Positioning 标志,免得 LocationChanged 回调把答案框摆错位置。
- 点一下不算拖动:DragMove() 只在鼠标真的移出 4 像素之后才启动。否则点到细条空白处会把输入框的焦点抢走 —— 之后再敲键盘、按回车就全部没反应(踩过)。
- 下拉菜单自己画:工作区下拉和 ⚙ 透明度面板都是自绘的 Popup + 圆角 Border。
用系统 ContextMenu 会带一层系统蓝底 + 蓝色高亮(跟 DSH 的白底完全不搭),自己画之后悬停用的是 DSH 的 layer-2,选中项前面一个实心点。
- 自绘 Popup 的「开关」只能靠自己的标志位:StaysOpen=False 时鼠标一按下 Popup 就先被关掉, Click 是抬起之后才跑 ⇒ 处理函数里 $popup.IsOpen 必然已经是 false,Closed 事件也分辨不出「刚才是被按钮关掉的」⇒ 想做成「按一下展开、再按一下收起」只能用脚本自己的计数标志($script:OpacityMenuShown,和工作区菜单同一套),不要依赖 Popup 自身状态或鼠标坐标判断(踩过)。
- 透明度面板的圆把手:自定义 Slider.Template —— Grid 里架 Border(轨道)+ Track x:Name="PART_Track" (没有它滑块不能拖)+ 13×13 的 Ellipse(把手);模板里的元素不在窗口命名域,FindName 取不到,颜色只能靠 TemplateBinding 引 Slider 自身的 Background(轨道底)/ BorderBrush(轨道边)/ Foreground(把手),两个 RepeatButton 用透明模板占位,让点轨道两端也能跳值。
- 提示只露一次:宿主上的 note(「模型返回空正文」之类)会一直留着,所以快捷栏显示过一次就回头把它清掉,9 秒后自己收回;启动时也先清一遍,免得上一轮崩溃留下的那条一直挂在状态栏上。
- 等待提示与超时分开:提交后满 15 秒仍未完成,答案区显示 ……,隐藏模式也只显示这段等待提示;后台继续读题、查资料和作答,完成后自动替换为答案。
资料准备、原生识图和作答共用 90 秒总预算,不会在 20 秒或 45 秒时提前结束。达到总上限时显示超时结果;快捷栏的忙状态兜底也调整为 90 秒。
- 心跳:快捷栏每 ~4.4 秒往宿主报一次「我活着 + 我现在认的按键」,这样插件页面上的「快捷栏在运行 / 框选 X / 开关 Y」显示的是真实情况(自己起的、手动起的都算)。
- 答案只画一次:轮询是 220ms 一次,但只在内容指纹(id / 阶段 / 各段长度)变化时才重画 ——否则刚被 ✕ 关掉的答案框会被下一次轮询立刻弹回来。

已知限制

- 按键依赖那个 PowerShell 小进程,而它是在第一次点开「快速问答」时启动的(DSH 冷启动时不会拉起任何东西)。所以 DSH 重启后先点一次入口,鼠标键4/5 和 Alt+Q 才生效。
- 模型通道是共用的:如果同时有别的长任务在占着同一个模型(比如正在跑一个很长的对话),这条问答会在「排队/作答」里等,墙上时间可能远大于插件自己统计的秒数。超时兜底会兜住它,但真正变快只能靠错开时间。
- 读题耗时随模型负载波动(2 ~ 6 s),偶发一次超过 10 s 会显示「截图里没识别到题目」,重框一次即可。
- 截图路径的准确率取决于框选是否把题干和选项都框进去(框选区里如果压着别的窗口,也会一起截进去)。
- 边缘的「只点一下」不会被当成拖动(需要真的拖出宽度变化才落盘)。
- 插件面板上的「快捷栏在运行 / 框选 X / 开关 Y」靠心跳判断:心跳是这次新加的宿主路由, 要重启一次 DSH 才会认识它(在此之前面板仍可能显示「快捷栏未运行」和旧按键)。

安装

需要 DeepSeek Harness(DSH)。插件不用编译,装法是「一个 profile 依赖 + 一行 patch」:

1. 把本仓库放进 profile 的 node_modules(file: 或 npm 皆可),例如 %USERPROFILE%\.dsh\profiles\desktop\node_modules\dsh-quick-qa。
2. 在 %USERPROFILE%\.dsh\profiles\desktop\package.json 的 dependencies 里加上 "dsh-quick-qa"。
3. 在 %USERPROFILE%\.dsh\profiles\desktop\cordis.patch.yml 里加:

- insert:
- id: dsh-quick-qa
name: dsh-quick-qa

4. 重启 DSH,左侧栏「新会话」下方出现「快速问答」。

文档抽取(PDF / PPTX / DOCX / XLSX)需要一个装了 pypdf、python-pptx、python-docx、 openpyxl 的 Python。默认按 DSH_QUICK_QA_PYTHON → 本机 venv → PATH 里的 python 依次尝试;都找不到时只降级成「只索引纯文本资料」,不影响插件启动。

卸载

停用面板后,删掉 profile 里的两处引用即可(也可用插件管理器移除):

- %USERPROFILE%\.dsh\profiles\desktop\package.json 里的 "dsh-quick-qa" 依赖
- %USERPROFILE%\.dsh\profiles\desktop\cordis.patch.yml 里 id: dsh-quick-qa 的 insert 行

开发接口与日志

宿主路由(前缀 /dsh-quick-qa/v1): GET state、POST show | hide | exit | bind | theme | note | ask | index | selftest | probe | matrix

- 快捷栏日志:%TEMP%\dsh-quick-qa\quickbar.log
- 框选出来的选区图:%TEMP%\dsh-quick-qa\sel-*.png
- 快捷栏记住的位置与宽度:%TEMP%\dsh-quick-qa\bar-pos.txt(格式 左,上,宽,删掉就回到默认居中)
- 改 quickbar.ps1:杀掉 quickbar.ps1 进程,下次 POST /show 生效(想立刻生效就直接重起一个:powershell -File lib\quickbar.ps1 -ToggleHotkey Alt+Q,它会照常轮询 /state 干活)—— 注意别传空字符串参数(-Hotkey '' 会被命令行吞掉,PowerShell 就把下一个 token 当成它的值)
- 改宿主代码(lib/impl.js):powershell -File dev\reload.ps1 会去动 profile 的 patch 行,试图触发热重载;如果监听不响应,宿主半边的改动就只能靠重启 DSH 生效。
只改快捷栏(UI/交互/配色)不受影响,重起那个小进程就够了。
预览分享卡片长什么样 ↓CW-1209/dsh-quick-qa
分享 · DeepSeek Harness Hub
CW-1209/dsh-quick-qa

框选屏幕题目,结合工作区资料秒出答案

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部