dsh-web-search-ddg
aooyoo
Zero-token DuckDuckGo search provider for the DeepSeek Harness (DSH) web seam — local headless browser, no API key, no m…
PROJECT TOPICS
PROJECT README
DeepSeek Harness (DSH) 插件:把一个安卓项目文件夹直接构建成 APK。 缺少的工具链(JDK / Android SDK / Gradle)会自动下载到工作文件夹内,不污染用户目录。
settings.gradle / settings.gradle.kts / build.gradle),可选支持 Gradle Wrapper。JAVA_HOME/PATH 里有 ≥11 的 Java 就直接用;否则下载 Temurin JDK(默认 17)到下载文件夹。local.properties 的 sdk.dir、ANDROID_HOME、ANDROID_SDK_ROOT、%LOCALAPPDATA%\Android\Sdk;都没有则下载 commandline-tools + platform-tools + build-tools + platform 到下载文件夹,并自动写入 local.properties 和接受许可。gradle-wrapper.properties 里的版本(或配置的 gradleVersion)下载发行版。assemble<Variant>(默认 debug,可用 release),把产物 APK 复制到输出文件夹。android.jar)时,自动把工程和 SDK 复制到一个可用的 ASCII 临时目录(%TEMP%\dsh-android-build)里构建,再把 APK 复制回你的输出文件夹。staged SDK 会缓存复用,不重复下载。GRADLE_USER_HOME)都放在下载文件夹里,默认是会话工作目录下的 .android-build。1.(最简单)打开DSH,让ai帮你装:帮我安装这个DSH插件:https://github.com/memories-coder/DSH-plugin-android-apk.git
2.(省token,动手能力强)在 DSH 宿主机器上(需要 pnpm 在 PATH 上)。把 <插件路径> 换成这个 tarball 在你机器上的实际位置:
dsh plugin --profile web add "<插件路径>/DSH-plugin-android-apk-main"
说明:
dsh plugin实际是在 profile 目录里执行pnpm add <spec>,然后把声明了dsh.bundle.patch的包加入dsh.profile.bundles层。手动操作等价于: 在~/.dsh/profiles/web执行pnpm add <spec>,再把包名加进package.json的dsh.profile.bundles。 有问题随时提issues使用
装好后,直接对DSH说“把 xxx 文件夹构建成 APK”,或显式调用工具:
build_android_apk(project="myapp", variant="debug", clean=false)
参数:
| 参数 | 说明 | 默认 |
|---|---|---|
project |
安卓工程文件夹路径(相对路径基于会话工作目录) | 必填 |
variant |
Gradle 变体(debug / release) | debug |
clean |
是否先 clean 全量重建 | false |
downloadDir |
工具链下载目录 | <workspace>/.android-build |
apkOutputDir |
APK 复制目录 | <workspace>/apk |
gradleVersion |
无可用 Wrapper 时下载的 Gradle 版本 | 8.9 |
compileSdk |
覆盖自动检测的 compileSdk | 自动检测,未知时 34 |
返回:ok、message、apks[](原始路径 + 复制路径 + 大小)、logTail、durationMs 等。
插件级配置(cordis.patch.yml 里的 config,可选):
config:
defaultVariant: debug
jdkMajor: 17
gradleVersion: "8.9"
| 组件 | 默认源 | 回退镜像 |
|---|---|---|
| JDK (Temurin) | api.adoptium.net | mirrors.tuna.tsinghua.edu.cn/Adoptium |
| Gradle | services.gradle.org | mirrors.cloud.tencent.com/gradle、mirrors.aliyun.com |
| Android cmdline-tools | dl.google.com | mirrors.cloud.tencent.com/AndroidSDK |
网络受限(如国内直连 Google 不稳)时,插件会自动尝试回退镜像;也可以先用代理保证
dl.google.com / services.gradle.org / api.adoptium.net 可达。
安装包(tarball)内包含:
package/
├── package.json # dsh.bundle.patch 声明(profile 层识别依据)
├── cordis.patch.yml # 插件行:android-apk-builder
├── lib/
│ ├── index.js # Cordis 插件入口 + build_android_apk 工具定义
│ ├── build.js # 构建编排(检测/下载/ASCII staging/assemble/复制 APK)
│ └── download.js # 下载/解压/镜像回退助手(仅用 Node 内置模块)
└── README.md
源码仓库在
test/下还保留开发用的单元/端到端测试脚本,但它们不属于安装包,随package.json的files白名单排除,不会打进 tarball。
dsh plugin 需要 pnpm 在 PATH。gradle.properties
加 android.overridePathCheck=true),无需手动处理;staged SDK 会缓存复用,APK 仍复制回你的输出文件夹。dl.google.com 拉取,网络不稳时可能超时;
插件使用下载文件夹里已缓存的依赖,可先手动 gradle assembleDebug 预热,或配置代理。.android-build 里的缓存;依赖缓存也在该目录(gradle-user-home)。sdkmanager --list 里挑与 compileSdk 同大版本的最新
build-tools;可传 compileSdk 覆盖检测结果。jdkMajor 改为 11(或 8),或提前配好 JAVA_HOME。CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。