by ooboqoo
识屏 Shiping:截屏 + AI,看懂屏幕上的任何内容。代码、报错、题目、图表、外文资料,按快捷键截一下就有解答。对话模式实时听懂问题、给出回答要点。可用作面试助手、考试助手、刷题助手。
# Add to your Claude Code skills
git clone https://github.com/ooboqoo/shipingLast scanned: 10/27/2026
{
"issues": [
{
"type": "npm-audit",
"message": "@ai-sdk/gateway: Vulnerability found",
"severity": "low"
},
{
"type": "npm-audit",
"message": "@ai-sdk/openai-compatible: Vulnerability found",
"severity": "low"
},
{
"type": "npm-audit",
"message": "@ai-sdk/provider-utils: @ai-sdk/provider-utils has an Uncontrolled Resource Consumption issue",
"severity": "low"
},
{
"type": "npm-audit",
"message": "@babel/core: @babel/core: Arbitrary File Read via sourceMappingURL Comment",
"severity": "low"
},
{
"type": "npm-audit",
"message": "@electron/rebuild: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "@humanfs/node: humanfs: Recursive copy follows symlinked files and copies data from outside the source tree",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@tailwindcss/typography: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@tootallnate/once: @tootallnate/once vulnerable to Incorrect Control Flow Scoping",
"severity": "low"
},
{
"type": "npm-audit",
"message": "@xmldom/xmldom: xmldom: XML injection via unsafe CDATA serialization allows attacker-controlled markup insertion",
"severity": "high"
},
{
"type": "npm-audit",
"message": "ai: Vulnerability found",
"severity": "low"
},
{
"type": "npm-audit",
"message": "ajv: ajv has ReDoS when using `$data` option",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "app-builder-lib: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "brace-expansion: brace-expansion: Zero-step sequence causes process hang and memory exhaustion",
"severity": "high"
},
{
"type": "npm-audit",
"message": "browserslist: Browserslist: Unbounded memory growth (no cache eviction) via distinct query results, leading to eventual OOM",
"severity": "high"
},
{
"type": "npm-audit",
"message": "builder-util: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "builder-util-runtime: electron-updater: Cross-origin redirect leaks `PRIVATE-TOKEN` and mixed-case `Authorization` credentials in `builder-util-runtime`",
"severity": "high"
},
{
"type": "npm-audit",
"message": "cacache: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "dmg-builder: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "electron: Electron: AppleScript injection in app.moveToApplicationsFolder on macOS",
"severity": "high"
},
{
"type": "npm-audit",
"message": "electron-builder: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "electron-builder-squirrel-windows: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "electron-publish: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "electron-updater: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "extract-zip: extract-zip unvalidated symlink path traversal",
"severity": "high"
},
{
"type": "npm-audit",
"message": "flatted: flatted vulnerable to unbounded recursion DoS in parse() revive phase",
"severity": "high"
},
{
"type": "npm-audit",
"message": "form-data: form-data: CRLF injection in form-data via unescaped multipart field names and filenames",
"severity": "high"
},
{
"type": "npm-audit",
"message": "glob: glob CLI: Command injection via -c/--cmd executes matches with shell:true",
"severity": "high"
},
{
"type": "npm-audit",
"message": "http-cache-semantics: http-cache-semantics max-stale handling can disclose cross-user cached responses",
"severity": "high"
},
{
"type": "npm-audit",
"message": "ip-address: ip-address has XSS in Address6 HTML-emitting methods",
"severity": "high"
},
{
"type": "npm-audit",
"message": "js-yaml: js-yaml has prototype pollution in merge (<<)",
"severity": "high"
},
{
"type": "npm-audit",
"message": "katex: KaTeX: Existing prototype pollution can bypass trust restrictions",
"severity": "low"
},
{
"type": "npm-audit",
"message": "lodash: lodash vulnerable to Code Injection via `_.template` imports key names",
"severity": "high"
},
{
"type": "npm-audit",
"message": "make-fetch-happen: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "mdast-util-to-hast: mdast-util-to-hast has unsanitized class attribute",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "micromark-extension-math: Vulnerability found",
"severity": "low"
},
{
"type": "npm-audit",
"message": "minimatch: minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern",
"severity": "high"
},
{
"type": "npm-audit",
"message": "nanoid: nanoid: non-secure generators can loop indefinitely with negative size",
"severity": "high"
},
{
"type": "npm-audit",
"message": "node-gyp: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "picomatch: Picomatch: Method Injection in POSIX Character Classes causes incorrect Glob Matching",
"severity": "high"
},
{
"type": "npm-audit",
"message": "postcss: PostCSS has XSS via Unescaped </style> in its CSS Stringify Output",
"severity": "high"
},
{
"type": "npm-audit",
"message": "postcss-selector-parser: PostCSS: Quadratic complexity in flat selector parsing allows CPU exhaustion",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "react-router: React Router vulnerable to XSS via Open Redirects",
"severity": "high"
},
{
"type": "npm-audit",
"message": "rehype-katex: Vulnerability found",
"severity": "low"
},
{
"type": "npm-audit",
"message": "remark-math: Vulnerability found",
"severity": "low"
},
{
"type": "npm-audit",
"message": "rollup: Rollup 4 has Arbitrary File Write via Path Traversal",
"severity": "high"
},
{
"type": "npm-audit",
"message": "source-map-js: source-map-js allows event-loop denial of service through indexed source-map section offsets",
"severity": "high"
},
{
"type": "npm-audit",
"message": "tar: node-tar Vulnerable to Arbitrary File Creation/Overwrite via Hardlink Path Traversal",
"severity": "critical"
},
{
"type": "npm-audit",
"message": "tmp: tmp has Path Traversal via unsanitized prefix/postfix that enables directory escape",
"severity": "high"
},
{
"type": "npm-audit",
"message": "vite: Vite Vulnerable to Path Traversal in Optimized Deps `.map` Handling",
"severity": "high"
},
{
"type": "npm-audit",
"message": "ws: ws: Uninitialized memory disclosure",
"severity": "high"
},
{
"type": "npm-audit",
"message": "zod: Zod can exhaust memory while validating oversized constrained collections",
"severity": "high"
},
{
"type": "npm-audit",
"message": "zod-to-json-schema: Vulnerability found",
"severity": "high"
}
],
"status": "FAILED",
"scannedAt": "2026-10-27T09:37:47.201Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}See how shiping compares with popular alternatives.
shiping is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by ooboqoo. 识屏 Shiping:截屏 + AI,看懂屏幕上的任何内容。代码、报错、题目、图表、外文资料,按快捷键截一下就有解答。对话模式实时听懂问题、给出回答要点。可用作面试助手、考试助手、刷题助手。. It has 1,105 GitHub stars.
shiping failed SkillsLLM's automated security scan, which flagged one or more high-severity issues. Review the Security Report section carefully before using it.
Clone the repository with "git clone https://github.com/ooboqoo/shiping" and add it to your Claude Code skills directory (see the Installation section above).
shiping is primarily written in TypeScript. It is open-source under ooboqoo on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh shiping against similar tools.
No comments yet. Be the first to share your thoughts!
Requires a passing catalog security scan.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
屏幕上的内容,截一下,AI 就看懂:题目、代码、报错、图表、外文资料,按下快捷键就有解答;听对话时,对方说完就有提示。屏幕共享时对方看不到窗口。
改名说明:本项目原名「截屏解题助手」(仓库
interview-coder-cn),2026 年 10 月起改名为「识屏 Shiping」(仓库shiping)。功能不变,升级后原有设置自动保留。为什么改、改了哪些,见关于改名。
版本说明:v3 起新增对话模式,此后只维护 v3(
main分支)。只有截图解题的 v2 版本保留在v2分支,不再更新,安装包见 v2.1.0。
| 截图模式 | 对话模式 | |
|---|---|---|
| 解决什么 | 屏幕上的内容:题目、代码、报错、图表、外文 | 对方说的话:面试、答辩等语音沟通 |
| 怎么触发 | 按快捷键截图 | 对方说完一句自动出提示,也可以按快捷键 |
| 适合的模型 | 能识图的模型 | 关闭思考的快模型,越快越好 |
| 额外需要 | 无 | 阿里云百炼 API Key(语音识别) |
两种模式各自选用 AI 配置和提示词,可以随时切换:比如线上面试时先聊项目用对话模式,对方一共享题目,按快捷键切到截图模式就能解题。
| 场景 | 用法 |
|---|---|
| 看不懂的代码 / 报错 | 截图模式「通用问答」:解释含义,指出原因和改法 |
| 外文资料 / 图表 / 文档 | 截图模式「通用问答」:翻译、总结、提炼要点;常用的话可以新增一个自定义场景 |
| 算法笔试 / 在线编程题 | 截图模式「解算法题」:给出思路和完整代码,题目长就追加截图,代码可自动复制或保存 |
| 技术面试(视频 / 语音) | 对话模式「技术面试」;面试官共享编程题时,切到截图模式「解算法题」 |
| HR 面 / 主管面 | 对话模式「行为面试」:按 STAR 给出经历类问题的回答要点 |
| 英文面试 | 对话模式「英文面试」:给出英文回答要点,并用中文说明对方问的是什么 |
| 英语机试 | 截图模式「英语考试」,听力题可以配合语音转录 |
| 能力测评 / 行测 | 截图模式「能力测评」:逻辑、图形、数字推理,直接给出选项和关键依据 |
| 其他在线考试 | 截图模式「通用问答」:单选、多选、解答等通用题型 |
| 以上都不是 | 在设置里新增自定义场景,写自己的提示词 |
截图模式的编程题默认用 TypeScript 作答,题目指定了语言时按题目要求。
到 Releases 下载安装包:Windows 用 setup.exe,macOS 用 .dmg(目前只提供 Apple 芯片版本,Intel 芯片的 Mac 请从源码运行)。安装和首次打开的注意事项见 Wiki 教程。
首次打开会提示填写 API Base URL 和 API Key。任何兼容 OpenAI API 的平台都可以,如国内的 硅基流动、DeepSeek,国外的 OpenRouter,或 OpenAI 官方(只填 API Key 即可)。
在「设置 → AI 模型」里可以保存多套配置,再到「截图模式」「对话模式」两组里分别选用:
常用平台的地址和模型名怎么填,见 Wiki 的对照表。
部分平台或网关除了 API Key 还要求额外的请求头(如 Azure 的
api-key、Cloudflare AI Gateway 的cf-aig-authorization),可以在配置的「高级 → 自定义请求头」里每行填一个名称: 值。
在「设置 → 网络代理」里选择 AI 请求的连接方式:
http://127.0.0.1:20808 或 socks5://127.0.0.1:20808,使用代理客户端实际监听的端口。支持 HTTP、HTTPS 和 SOCKS5,暂不支持需要账号密码的代理。本机回环和链路本地地址保留 Chromium 的默认直连规则,以测试显示的请求路由为准。「测试连接」使用当前正在编辑的 AI 配置访问 /models,显示请求路由、耗时和 HTTP 状态,最长等待 10 秒,不生成回答。401 / 403 表示网络已收到响应,需要继续检查密钥、权限或网关限制;404 表示该地址没有模型列表接口,不代表聊天一定不可用。测试不会保存代理设置,确认后点「保存并应用」。
设置会保留到下次启动,应用于两种模式的 AI 请求和模型列表;测试和切换代理不会中断已开始的回答。不修改操作系统或其他软件的代理,也不接管语音转录、手机同步和软件更新的连接。
⌥ Enter(Windows 为 Ctrl+Enter)截图解题⌥⇧M / Ctrl+Shift+M)⌥ T(Windows 为 Ctrl+T)开始监听,对方说完一句话,右侧就会出提示语音识别使用阿里云百炼的 Fun-ASR 实时模型,约 0.02 元/分钟,新用户有免费额度,以百炼官网为准。
在「设置 → 资料库」导入简历、项目笔记(PDF、Word、Markdown、TXT),或把准备好的问答直接粘贴成文本,AI 作答时会优先参考:
在「设置 → 手机同步」打开后,截图模式的解答和对话模式的提示会实时同步到手机浏览器,手机只看不操作,不用装 App。适合把手机立在一旁看,电脑屏幕上不留任何窗口:
使用时注意:
⌘J / ⌘K,Windows 为 Ctrl+J / Ctrl+K),手机跟着翻页,不用碰手机New-NetFirewallRule -DisplayName "识屏 手机同步" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 8790 -Profile Private -RemoteAddress LocalSubnet
http:// 时内容明文传输,在公共 Wi-Fi 上留意;公网中转可以按 relay/README.md 加上 HTTPS| 操作 | macOS | Windows |
|---|---|---|
| 截图解题(新开对话) | ⌥ Enter |
Ctrl+Enter |
| 追加截图 | ⌥⇧ Enter |
Ctrl+Shift+Enter |
| 对话模式:出提示 | ⌥ G |
Ctrl+G |
| 对话模式:切换自动 / 手动 | ⌥⇧ G |
Ctrl+Shift+G |
| 语音转录 / 开始停止监听 | ⌥ T |
Ctrl+T |
| 停止生成 | ⌥ . |
Ctrl+. |
| 切换截图 / 对话模式 | ⌥⇧ M |
Ctrl+Shift+M |
| 隐藏 / 显示窗口 | ⌥ H |
Ctrl+H |
| 鼠标穿透 | ⌥ M |
Ctrl+M |
| 上翻 / 下翻(手机同步翻) | ⌘J / ⌘K |
Ctrl+J / Ctrl+K |
所有快捷键都可以在「设置 → 快捷键」里修改,完整列表见应用内的「帮助中心」。
先看报错原文:截图模式在答案区顶部的「API 调用失败」下面,对话模式在提示卡片的「生成失败:……」里。常见问题按类别整理在 Wiki 里,每条都有原因和解决办法:
没找到答案再提 Issue,请附上软件版本、操作系统、所用平台和模型,以及报错原文(API Key 记得打码)。
完整更新日志见 Releases。
为什么改
改了什么
| 项目 | 原来 | 现在 |
|---|---|---|
| 名称 | 截屏解题助手 | 识屏 Shiping |
| GitHub 仓库 | ooboqoo/interview-coder-cn |
ooboqoo/shiping |
| 安装包文件名 | interview-coder-cn-<版本>-setup.exe 等 |
shiping-<版本>-setup.exe 等 |
| 应用名(程序、快捷方式、Dock) | 截屏解题助手 | 识屏 |
| 截图模式的标题 | 截屏解题 | 截屏解答 |
| 截图、对话记录的默认保存目录 | 图片/InterviewCoder、文档/InterviewCoder | 图片/Shiping、文档/Shiping |
升级须知
目前隐身功能适配市面上大部分会议软件(如腾讯会议等),但很少部分软件和浏览器可能无法正常隐身。请务必在正式使用前,用「当前电脑」+「当前会议软件」自行测试。
本项目仅供学习与研究使用,请遵守考试、面试等场合的相关规定,使用本软件产生的一切后果由使用者自行承担。相关问题欢迎到 #21 讨论。
项目运行依赖 Node.js。
$ npm install
$ npm run dev
也可以在项目根目录创建 .env 文件预配置 AI 平台,程序启动后会自动读取作为默认值:
API_BASE_URL="https://openrouter.ai/api/v1" # 聚合服务的 API 地址,这里以 OpenRo