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

安卓日志面板 WindyPro-rourou/dsh-logcat

DeepSeek Harnessv0.8.4
WindyPro-rourou13 天前有提交已提供中文文档扫描:含敏感能力

给 DeepSeek Harness(DSH)Web GUI 用的 Android Logcat 查看器:自动连接 adb 设备,实时 logcat 流带级别/关键词过滤,支持暂停/清空/导出,外加 logcat_recent 智能体工具。

39.5/100
综合分
13
GitHub 星标
715
npm 周下载
—/5
用户评分

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @windypro-rourou/dsh-logcat
npm 源 · @windypro-rourou/dsh-logcat 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · dev
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
数据截至 2026/10/31·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 13 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包@windypro-rourou/dsh-logcat @ 0.8.4
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/1 00:46:50

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

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 25 处,展示前 20 条)
  • 读取本地文件
    lib/index.js:28
    const OWN_MANIFEST = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8'))
  • 请求外部主机registry.npmjs.org
    lib/index.js:58
    const res = await fetch(`https://registry.npmjs.org/-/package/${encodeURIComponent(OWN_MANIFEST.name)}/dist-tags`, {
  • 发起网络请求
    lib/index.js:58
    const res = await fetch(`https://registry.npmjs.org/-/package/${encodeURIComponent(OWN_MANIFEST.name)}/dist-tags`, {
  • 发起网络请求
    lib/index.js:183
    const response = await fetch(url, { signal: AbortSignal.timeout(180000) })
  • 执行外部命令固定命令
    lib/index.js:198
    execFile('powershell', ['-NoProfile', '-Command', `Expand-Archive -Force -LiteralPath '${zipPath}' -DestinationPath '${dest}'`], { timeout: 180000, wi
  • 执行外部命令固定命令
    lib/index.js:205
    execFile('unzip', ['-o', zipPath, '-d', dest], { timeout: 180000 }, (error) => {
  • 执行外部命令来自配置/变量
    lib/index.js:221
    execFile(adb, args, { timeout: timeoutMs, windowsHide: true }, (error, stdout) => {
  • 执行外部命令来自配置/变量
    lib/index.js:236
    execFile(adb, args, { timeout: timeoutMs, windowsHide: true, maxBuffer: 8 * 1024 * 1024 }, (error, stdout, stderr) => {
  • 执行外部命令来自配置/变量
    lib/index.js:255
    execFile(adb, args, { timeout: timeoutMs, windowsHide: true, maxBuffer: 32 * 1024 * 1024, encoding: 'buffer' }, (error, stdout) => {
  • 执行外部命令来自配置/变量
    lib/index.js:323
    child = spawn(this.adb, ['-s', this.serial, 'logcat', '-v', 'threadtime', ...this.extraArgs], {
  • 读取本地文件
    lib/index.js:804
    if (!existsSync(candidate)) continue
  • 写入本地文件
    lib/index.js:993
    try { mkdirSync(dir, { recursive: true }) } catch { return null }
  • 写入本地文件
    lib/index.js:995
    const stream = createWriteStream(join(dir, name), { flags: 'a' })
  • 读取本地文件
    lib/index.js:997
    try { bytes = statSync(join(dir, name)).size } catch { }
  • 读取本地文件
    lib/index.js:1035
    if (!existsSync(dir)) return []
  • 读取本地文件
    lib/index.js:1130
    if (!existsSync(root)) return []
  • 读取本地文件
    lib/index.js:1145
    hasScreenshot: meta?.hasScreenshot === true || existsSync(join(dir, 'screenshot.png')),
  • 写入本地文件
    lib/index.js:1794
    const out = createWriteStream(tmp)
  • 写入本地文件
    lib/index.js:3187
    mkdirSync(dirname(output), { recursive: true })
  • 写入本地文件
    lib/index.js:3693
    mkdirSync(screensRoot, { recursive: true })
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
涉及外部主机:registry.npmjs.org

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

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

功能亮点

  • 自动连接adb设备
  • 实时logcat流过滤
  • 暂停清空导出日志
v0.8.42026-10-23
· 0.8.4 (stable) 修复 #2 报告的三个问题: 1. 注入器在 Android 14+ 无限崩溃 · dex 部署命令在同一次 shell 往返里追加 chmod 600(> 重定向受 umask 影响落 0666,Android 14+ 的 app_process 拒绝加载全局可写 dex) · dead() 不再重置 deployed,消除「重新部署 → 再崩溃」的自我延续 · 连续 3 次启动失败后停用注入器(engine 级 latch,设备下线自动复位),输入回落原生命令——面板点击/滑动/按键全部照常 2. 日志落盘无上限 · 单日文件超过 64MB 自动滚动为 .001/.002… 分卷(历史回溯按时间序合并读取) · 默认保留 14 天、单设备总量 512MB,超限删最旧;env 可调:DSH_LOGCAT_DAY_MB / DSH_LOGCAT_RETAIN_DAYS / DSH_LOGCAT_MAX_MB · DSH_LOGCAT_PERSIST=off 一键关闭落盘(实时流、logcat_recent、logcat_crash 不受影响——与你本地验证的一致) 3. 崩溃快照被注入器淹没 · captureCrash() 现在等栈落齐后检查上下文,dsh.Injector(app_process 辅助进程)自身的崩溃不再存档 行为级冒烟测试 11/11 通过(分卷保序、保留清理、总帽、开关、chmod、退避 latch、崩溃过滤)。 安装:dsh plugin --profile update @windypro-rourou/dsh-logcat 后重启 GUI。
v0.8.32026-10-18
· dsh-logcat 0.8.3 — 抽屉回归 + DSH 0.2 适配 + 视觉重绘 面板形态 · 右侧抽屉恢复为默认:浮在对话之上,看一眼日志不需要切布局,也不占常驻空间 · 常驻原生面板改为显式开关:设 window.__DSH_LOGCAT_NATIVE_PANEL__ = true 后刷新,改用官方 main 面板 + sidebar.panellist 左栏图标 DSH 0.2 适配 · dsh.client.inject 按 0.2 清单修正(移除已不存在的 dsh-client-runtime) · 对照 0.2.0-rc.2 运行时实现并验证原生挂载路径(app.asar 内 61 个官方槽位,含 sidebar.panellist) · 无 main 座席的旧客户端自动回落抽屉,不会白屏 视觉(taste pass v2) · 设计 token 层:优先宿主 --dsw-*,缺席时自备明暗双套 · 内置 SVG 图标集替代全部 emoji;单一强调蓝;等宽 + tabular-nums 日志行 · 收紧头部 / 页签 / 工具栏节奏,统计胶囊化,细滚动条,focus-visible 环,空态 / 加载 / 错误态齐全 修复 · 注入样式被宿主重写时面板错位(关键布局改为内联 + 样式自愈) · useSyncExternalStore 快照未缓存导致的渲染死循环(白屏) · 安装 dsh plugin --profile web add @windypro-rourou/dsh-logcat npm latest = 0.8.3
v0.7.02026-10-18
· dsh-logcat 0.7.0 — 投屏管线升级 · H.264 屏幕流:投屏从逐帧 PNG 快照升级为 H.264 视频流(WebCodecs 解码),帧率与带宽显著改善 · 旋转感知几何:点击 / 滑动坐标按设备当前旋转与显示尺寸换算,横竖屏都准确 · 3–5ms 手势注入:滑动手势时长缩短,操作更跟手 · 安装 dsh plugin --profile web add @windypro-rourou/dsh-logcat
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
dsh-logcat DSH Web GUI 的安卓实机调试面板(类似 Android Studio 的 Logcat 视图)。 | English 功能 - 自动连接:探测本机 adb(ANDROID_HOME / ANDROID_SDK_ROOT / 默认 %LOCALAPPDATA%\Android\Sdk / PATH / ~/.dsh/adb),每 2 秒轮询 adb devices -l;检测到处于调试模式的设备自动附加 logcat 流(-v threadtime),无需打开面板。 - 一键安装 adb:未找到 adb 时,面板状态栏显示「一键安装 adb」按钮 —— 从 USTC 镜像(Google 官方兜底)下载 platform-tools 解压到 ~/.dsh/adb 并自动接入,开箱即用(约 10MB)。 - 实时日志:WebSocket 推送,每设备保留最近 2000 行环形缓冲;断线自动重连(指数退避)。
展开完整文档(README 剩余 1 节)
dsh-logcat

DSH Web GUI 的安卓实机调试面板(类似 Android Studio 的 Logcat 视图)。

| English

功能

- 自动连接:探测本机 adb(ANDROID_HOME / ANDROID_SDK_ROOT / 默认 %LOCALAPPDATA%\Android\Sdk / PATH / ~/.dsh/adb),每 2 秒轮询 adb devices -l;检测到处于调试模式的设备自动附加 logcat 流(-v threadtime),无需打开面板。
- 一键安装 adb:未找到 adb 时,面板状态栏显示「一键安装 adb」按钮 —— 从 USTC 镜像(Google 官方兜底)下载 platform-tools 解压到 ~/.dsh/adb 并自动接入,开箱即用(约 10MB)。
- 实时日志:WebSocket 推送,每设备保留最近 2000 行环形缓冲;断线自动重连(指数退避)。
- Logcat 面板(侧边栏「Logcat」入口,右侧抽屉,宽度可拖拽调整并记忆):
- 设备下拉(显示型号/序列号/状态,记住上次选择)
- 级别过滤(V/D/I/W/E/F 单选,颜色与 Android Studio 一致)
- 关键词过滤(空格分隔多关键词 = 任一命中)、测试包名输入框(回车设置,与 agent 的 logcat_set_package 互通,状态栏实时显示)
- 截图按钮:一键截取真机屏幕并下载 PNG(exec-out screencap)
- 崩溃高亮:FATAL EXCEPTION / ANR 行红色高亮,一眼定位崩溃
- 历史回溯按钮:从磁盘加载落盘历史日志(重启 GUI 不丢,与实时缓冲合并显示且按时间戳去重)
- 崩溃自动快照:流中出现 FATAL EXCEPTION / ANR 时自动截图 + 上下文落盘 ~/.dsh/logcat/crashes,面板弹提示条,可随时在「崩溃」弹窗里查看截图与日志
- events 事件视图:一键开启 logcat -b events 实时流,看应用启动/崩溃/生命周期事件
- WiFi 无线调试向导:输入 IP/端口/配对码,自动 adb pair + adb connect,摆脱数据线(Android 11+)
- 装APK 按钮:本地文件选择器选 APK 直接安装到当前设备(流式上传,1GB 上限)
- 设备快捷按键:Home / 返回 / 最近任务 / 唤醒 / 电源 / 音量 ± 一键发送
- 性能曲线:CPU / 内存 / 电量每 2s 采样,状态栏 sparkline 趋势图
- 屏幕实时投屏与电脑控制:「屏幕」tab 开启实时画面 —— H.264 视频流(WebCodecs 硬解,实测 55~60fps),分辨率档位可选(360x800 / 540x1200 / 720x1600 / 1080x2400),流畅(视频)/ 高清(PNG)双模式; 自动跟随设备旋转 —— 横屏时流尺寸自动交换为 1200x540,画面满屏无黑边,触控坐标同步换算到当前方向; 操控低延迟 —— 内置长驻手势注入器(app_process + 内嵌 dex,首次自动部署),点击/按键注入仅 3~5ms (原生 input 命令每次都要启动一个 Java VM,实测约 480ms);注入器不可用时自动回退到 input,不影响可用性; 在电脑上直接操控手机:点击=点按、拖动=滑动、滚轮=上下滑动、右键=返回键、长按=长按、双击=双击、 实体键盘直接打字(字母/数字/符号直通手机,Enter/Backspace/Esc/方向键/Tab 映射为对应按键)、文字输入框(支持中文 IME)、快捷按键(Home/返回/唤醒/音量)、一键下载当前帧、⛶ 全屏
- 逆向工作台(日志/屏幕/逆向三 tab):进程列表 → 自动加载模块地图(so 库名/基址/权限,点击基址直接转储)→ 内存 hex/字符串搜索 → 匹配地址转储 → 手动地址 + 长度转储,转储视图 hex + ASCII 双列
- 暂停/继续(暂停时缓冲,恢复自动回放)、清空、复制、导出 .txt
- 窗口化渲染 + 自动滚动(滚动手动上翻时自动停用)
- 未授权设备提示「请在手机上点击允许 USB 调试」
- Agent 工具(共 30 个,全部对 agent 开放,前置提示中已明示可调用):
- 设备:logcat_devices(列出设备)、device_info(型号/版本/SDK/分辨率/内存/电量)、device_stats(CPU/内存/电量实时采样)、 app_info(已安装应用版本号/versionCode/APK 路径)
- 屏幕/多模态:screen_capture(截图存档 + 嵌入对话图片块,多模态模型可直接看图配合 input_ 修 bug)
- 执行:adb_exec(shell)、adb_install(本地 APK 装真机)、adb_pull(拉文件)、 app_launch(启动应用/指定 Activity)、app_stop(force-stop,破坏性先确认)
- 输入:input_tap / input_swipe / input_text / input_keyevent(真机 UI 自动化)、ui_dump(界面层级 XML)、 activity_current(当前前台 Activity)
- 日志:logcat_recent(按包名/级别/关键词过滤)、logcat_history(磁盘历史日志回溯,重启不丢)、 logcat_crash(崩溃/ANR 自动捕获 + 上下文)、logcat_events(events 事件缓冲)、 crash_sessions(崩溃自动快照历史)、logcat_set_package(锁定当前测试包名)
- 逆向/内存:proc_list(进程列表)、proc_maps(内存映射 + so 模块基址)、proc_status(进程状态/内存摘要)、 proc_smaps(smaps 明细,Pss Top 区域)、mem_dump(指定地址读内存 hex)、 mem_search(内存搜 hex 模式/字符串)、frida_server(frida-server 部署/启停)、 frida_script(hook/trace/scan/bypass/dump 常用脚本模板生成)
- 实机调试工作流:构建安卓应用时,智能体的通告会动态列出当前已连接设备(serial + 型号)与当前测试包名,可先向用户确认后:adb_install 部署 APK → adb_exec 启动 → logcat_set_package 锁包 → logcat_recent / logcat_crash 看崩溃 → ui_dump + input_ 做界面自动化 → adb_pull 取证,闭环真机调试。
- 逆向工作流:proc_list 定位进程 → proc_maps 拿模块基址 → mem_dump 读目标地址 / mem_search 搜特征模式 → proc_smaps 看内存占用明细 → frida_script 生成脚本 + frida_server 起 frida 做动态插桩。
读其他应用内存/maps 需要 root 或 debuggable 应用(run-as),工具会给出明确提示。
- 面板形态(DSH 0.2):默认仍是右侧抽屉——它浮在对话之上,看一眼日志不需要切布局,最省屏幕。
想要常驻面板时,在浏览器控制台执行 window.__DSH_LOGCAT_NATIVE_PANEL__ = true 后刷新,即改用官方 main(中央面板)+ sidebar.panellist(左栏图标)挂载。dsh.client.inject 已按 0.2 清单修正;图标为内置 SVG 图标集(不依赖图标包),配色优先取宿主 --dsw- 设计 token。
- 附加能力:POST /api/dsh-logcat/exec 执行 shell、POST /api/dsh-logcat/package 设置包名、 GET /api/dsh-logcat/screenshot 截屏、POST /api/dsh-logcat/install-adb 一键装 adb、 GET /api/dsh-logcat/history 历史回溯、GET /api/dsh-logcat/crashes + GET /api/dsh-logcat/crash-file 崩溃快照读取、 POST /api/dsh-logcat/install-apk 上传安装 APK、POST /api/dsh-logcat/keyevent 按键、 POST /api/dsh-logcat/wifi-connect / wifi-disconnect 无线调试、GET /api/dsh-logcat/processes、 POST /api/dsh-logcat/mem-search、GET /api/dsh-logcat/mem-dump。
- 数据落盘(有界):日志按设备按天写入 ~/.dsh/logcat/logs/<serial>/logcat-MM-DD.log(原始 threadtime 行);单日超过上限自动滚动为 .001/.002… 分卷,并按保留天数与单设备总量上限清理最旧文件。
默认 64MB/分卷、保留 14 天、512MB/设备;可用环境变量覆盖:DSH_LOGCAT_DAY_MB、 DSH_LOGCAT_RETAIN_DAYS、DSH_LOGCAT_MAX_MB,DSH_LOGCAT_PERSIST=off 完全关闭落盘(实时流、logcat_recent、logcat_crash 不受影响)。崩溃快照存 ~/.dsh/logcat/crashes/<serial>/<时间戳>-<FATAL|ANR>/ (screenshot.png + crash.log + meta.json);注入器辅助进程(app_process 下运行的 dsh.Injector)自身的崩溃不会写入快照。
- 手势注入器:tap/swipe/keyevent 默认走常驻注入器(单次几毫秒),部署时对 dex 显式 chmod 600 (Android 14+ 的 app_process 拒绝加载全局可写 dex);连续 3 次启动失败自动停用并回落原生命令,设备重新上线后自动恢复尝试。

安装

方式一(推荐,npm 安装):
dsh plugin --profile web add @windypro-rourou/dsh-logcat

更新到最新版(不会自动更新;装旧版时面板/agent 通告会提示有新版本):
dsh plugin --profile web update # 升到当前 major 内最新
或强制最新:dsh plugin --profile web add @windypro-rourou/dsh-logcat@latest 更新后重启 GUI(dsh web)生效

尝鲜 preview 版(日常迭代高频更新,可能不稳定):
dsh plugin --profile web add @windypro-rourou/dsh-logcat@preview

可选:GitHub Packages 通道(npm.pkg.github.com)

同一份包也会镜像到 GitHub Packages,适合只愿意使用 GitHub 凭据的环境。两点需要注意:

- 安装必须鉴权:GitHub Packages 的 npm 源即使对公开包也要求 token(read:packages)
- 该源仅支持 latest 一个 dist-tag:preview 通道只在 npmjs.org 提供

~/.npmrc
@windypro-rourou:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}

dsh plugin --profile web add @windypro-rourou/dsh-logcat # 走上面配置的源

维护者发布(两个脚本都会自动读取凭据:有环境变量就用,没有就 dot-source 便携版加载器 $env:DSH_HOME\env\load-secrets.ps1,凭证只进进程环境、不落盘):

./publish-npm.ps1 # → npmjs.org(主通道,需 NPM_TOKEN) ./publish-github-packages.ps1 # → GitHub Packages(需 GH_TOKEN: write:packages)

发布策略(main / latest 为主)

- main 分支 + npm latest 标签:正式版,更新的主要通道 —— 功能攒够一批就发,直接推 main/latest。
- preview 分支 + npm preview 标签:可选尝鲜通道(高频小步迭代)。正式版发布后如无新的试验特性, preview 标签可能停留在上一个预览版本,不必理会。
- 版本自检会按安装通道提示(正式版用户只看 latest,preview 用户只看 preview,互不打扰)。

方式二(源码本地链接,实时生效无需重启):把插件链进 web profile,并在 ~/.dsh/profiles/web/cordis.patch.yml 增加一行:
pnpm --dir "%USERPROFILE%\.dsh\profiles\web" add link:F:\dsh-logcat
然后在 profile 的 cordis.patch.yml 追加:
- insert:
- id: logcat
name: '@windypro-rourou/dsh-logcat'
该 patch 文件会被运行中的 GUI 热监听;若未生效,重启 GUI 即可。

方式三(bundle 层,README 原始流程,适合全新 profile;与方式二互斥,勿混用):
dsh plugin --profile web add link:<本目录绝对路径>
之后需要重启 GUI(dsh web)才会装载。

注意:以上方式都会在 profile 树中插入同一行 logcat,不要同时使用,否则下次启动会因重复插件 id 而失败。

依赖解析:ws / react / react-dom / @deepseek-ai/ 通过本目录 node_modules 下的 junction 指向宿主实际加载的物理包(保证单例)。若宿主依赖升级,请同步更新 junction 目标。

限制

- 需要设备开启 USB 调试并在手机上授权本机(unauthorized 状态会提示)。
- logcat 输出可能含敏感信息;/api/dsh-logcat/* 路由仅允许 loopback 访问。
- adb shell 命令消耗真实设备资源,先确认再执行。

文件

- lib/index.js — 宿主端:adb 引擎、轮询、logcat 子进程、路由、WebSocket、智能体工具。
- lib/client.js — 浏览器端:侧边栏入口 + Logcat 面板(React,无构建步骤)。
- cordis.patch.yml — profile bundle patch(自动应用)。
预览分享卡片长什么样 ↓WindyPro-rourou/dsh-logcat
分享 · DeepSeek Harness Hub
WindyPro-rourou/dsh-logcat

给 DeepSeek Harness(DSH)Web GUI 用的 Android Logcat 查看器:自动连接 adb 设备,实时 logcat 流带级别/关键词过滤,支持暂停/清空/导出,外加 logcat_recent 智能体工具。

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