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

安卓原生工作台 yusheng266186-beep/DSH-Native

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

在手机上跑通完整 DSH 开发流程

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

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

自动兼容检查未通过:仓库根目录及浅层子目录均无 dsh 插件清单,无法用 dsh 插件安装命令安装。以下命令仍可尝试,但可能失败。
无法用 dsh 插件命令安装(仓库内无 dsh 插件清单)
git clone https://github.com/yusheng266186-beep/DSH-Native.git
按该仓库 README 的原生方式安装;若作者另行发布了 DSH 插件包,请以其文档为准

状态速览

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

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

验证判据与等级说明 →

可信度证据

⚠︎ 实装验证未通过(unknown · 2026/10/30) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
安装兼容性检查需源码安装

仓库根目录及浅层子目录均无 dsh 插件清单,无法用 dsh 插件安装命令安装

展开查看检查明细 ↓

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

✗npm 包DSH-Native(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/11 22:15:09

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

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 44 处,展示前 44 条)
  • 读取本地文件
    payload/android-bridge.cjs:12
    const stat = await fs.lstat(file);
  • 读取本地文件
    payload/android-bridge.cjs:14
    config = JSON.parse(await fs.readFile(file,'utf8'));
  • 发起网络请求
    payload/android-bridge.cjs:23
    const request=http.request({host:'127.0.0.1',port:config.port,path:'/native',method:'POST',
  • 发起网络请求
    payload/app-settings-ui.js:116
    const response = await fetch('/api/' + method, {method:'POST', credentials:'same-origin', signal:controller.signal,
  • 写入本地文件
    payload/archive-tar.cjs:9
    fs.mkdirSync(destination, { recursive: true });
  • 读取本地文件
    payload/archive-tar.cjs:33
    try { if (fs.lstatSync(parent).isSymbolicLink()) return null; }
  • 读取本地文件
    payload/archive-tar.cjs:83
    try { if (fs.lstatSync(entry.target).isSymbolicLink()) fs.unlinkSync(entry.target); }
  • 写入本地文件
    payload/archive-tar.cjs:85
    fs.mkdirSync(entry.target, { recursive: true }); this.dirs++;
  • 写入本地文件
    payload/archive-tar.cjs:88
    fs.mkdirSync(path.dirname(entry.target), { recursive: true });
  • 写入本地文件
    payload/archive-tar.cjs:104
    fs.renameSync(entry.temp, entry.target); entry.temp = null; this.files++;
  • 写入本地文件
    payload/archive-tar.cjs:146
    fs.mkdirSync(path.dirname(target), { recursive: true });
  • 删除本地文件
    payload/archive-tar.cjs:147
    try { fs.unlinkSync(target); } catch (error) { if (error.code !== 'ENOENT') throw error; }
  • 读取本地文件
    payload/archive-tar.cjs:151
    if (!resolved || !fs.statSync(resolved).isFile()) throw error;
  • 写入本地文件
    payload/archive-tar.cjs:152
    fs.copyFileSync(resolved, target, fs.constants.COPYFILE_EXCL);
  • 删除本地文件
    payload/archive-tar.cjs:160
    if (this.entry?.temp) fs.rmSync(this.entry.temp, { force: true });
  • 写入本地文件
    payload/preflight.js:43
    fs.writeFileSync(f, 'ok');
  • 读取本地文件
    payload/preflight.js:44
    if (fs.readFileSync(f, 'utf8') !== 'ok') throw new Error('内容不符');
  • 删除本地文件
    payload/preflight.js:45
    } finally { fs.rmSync(directory, {recursive:true, force:true}); }
  • 写入本地文件
    payload/preflight.js:105
    try { fs.writeFileSync(path.join(directory, 'check'), 'ok'); }
  • 删除本地文件
    payload/preflight.js:106
    finally { fs.rmSync(directory, {recursive:true, force:true}); }
  • 读取本地文件
    payload/preflight.js:124
    try { legacy = JSON.parse(fs.readFileSync(path.join(ROOT,'dsh/package.json'),'utf8')).version === '0.2.0-rc.2'; }
  • 读取本地文件
    payload/provider-cleanup.cjs:5
    root=await fs.realpath(root);runtime=await fs.realpath(runtime);
  • 读取本地文件
    payload/provider-cleanup.cjs:7
    const canonical=await fs.realpath(home).catch(error=>{if(error.code==='ENOENT')return home;throw error;});
  • 读取本地文件
    payload/provider-cleanup.cjs:9
    const preset=yaml.parse(await fs.readFile(path.join(root,'settings-preset.yaml'),'utf8'));
  • 读取本地文件
    payload/provider-cleanup.cjs:33
    try{stat=await fs.lstat(file);}catch(error){if(error.code==='ENOENT')continue;throw error;}
  • 读取本地文件
    payload/provider-cleanup.cjs:34
    if(!stat.isFile()||stat.isSymbolicLink()||stat.size>2097152||await fs.realpath(file)!==file)throw new Error('unsafe configuration target');
  • 读取本地文件
    payload/provider-cleanup.cjs:35
    const source=await fs.readFile(file,'utf8');let next;
  • 删除本地文件
    payload/provider-cleanup.cjs:60
    finally{await fs.unlink(temp).catch(error=>{if(error.code!=='ENOENT')throw error;});}
  • 删除本地文件
    payload/runtime-checks.js:36
    try { await fs.rm(scratch, {recursive:true, force:true}); }
  • 读取本地文件
    payload/session-tools-core.js:25
    try { bytes = await androidReadFile(state.path); }
  • 写入本地文件
    payload/session-tools-core.js:48
    await androidWriteFile(staged, bytes, {flag: 'wx', mode: 0o600});
  • 写入本地文件
    payload/session-tools-core.js:51
    await androidRename(staged, state.path);
  • 删除本地文件
    payload/session-tools-core.js:54
    await androidUnlink(staged).catch(error => { if (error?.code !== 'ENOENT') throw error; });
  • 写入本地文件
    payload/session-tools-core.js:110
    await androidRename(pending, pending + '.imported'); consumed = true;
  • 写入本地文件
    payload/session-tools-core.js:126
    try { await androidWriteFile(pending, source, {flag:'wx',mode:0o600}); }
  • 写入本地文件
    payload/sharp-android.js:36
    try { fs.appendFileSync(p, line + '\n'); } catch (e) { }
  • 执行外部命令来自配置/变量
    payload/sharp-android.js:52
    child = execFile(PYTHON, [HELPER], {
  • 读取本地文件
    payload/snapshot.js:114
    for await (const chunk of fs.createReadStream(absolute)) {
  • 写入本地文件
    payload/snapshot.js:137
    fs.createWriteStream(staged, { flags: 'wx', mode: 0o600 })
  • 写入本地文件
    payload/srv.js:24
    fs.writeFileSync(t, 'ok');
  • 读取本地文件
    payload/srv.js:25
    const back = fs.readFileSync(t, 'utf8');
  • 删除本地文件
    payload/srv.js:26
    fs.unlinkSync(t);
  • 执行外部命令固定命令
    payload/srv.js:40
    const out = execSync('/system/bin/echo subprocess_ok', { encoding: 'utf8', timeout: 5000 }).trim();
  • 读取本地文件
    payload/unpack.js:15
    await pipeline(fs.createReadStream(source), zlib.createZstdDecompress(), new Writable({
扫描于 2026/11/3(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

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

功能亮点

  • 集成开发工具

将 Android 原生 Node.js、DeepSeek Harness 与开发工具封装到一个移动应用。

README

由 DeepSeek 最新模型翻译生成
DSH Native · Android 上的 DeepSeek Harness 现行文档:按当前源码维护。 已发布 stable:0.33.13;源码:0.33.13;源码运行包:payload-v12;固定 DSH:0.2.0-rc.2(上游候选版)。统一进度与验证边界。 · English · 文档中心 · 项目状态 把项目留在手机上,把完整的 DSH 工作流带到 Android。 DSH Native 将 Android 原生 Node.js、DeepSeek Harness(DSH)和常用开发工具封装为一个 Android 应用。你可以在本地项目中聊天、运行 agent、编辑文件和管理任务,无须另外安装 Termux 或 proot,也无须配置远程执行服务器。 模型推理仍通过所选服务商的 API 完成。项目文件与工具执行位于设备端;发送给模型的消息、附件和工具结果按 DSH 与服务商的调用方式传输。本项目是独立的 Android 适配项目。 项目概览 | 项目 | 说明 | | 分类 | Android AI 工作台 | | 平台 | Android / ARM64 / 原生运行时 | | 当前定位 | 独立 Android 适配项目 | 将 Android 原生 Node.js、DeepSeek Harness 与开发工具封装到一个移动应用。
展开完整文档(README 剩余 1 节)
DSH Native · Android 上的 DeepSeek Harness

现行文档:按当前源码维护。 已发布 stable:0.33.13;源码:0.33.13;源码运行包:payload-v12;固定 DSH:0.2.0-rc.2(上游候选版)。统一进度与验证边界。

· English · 文档中心 · 项目状态

把项目留在手机上,把完整的 DSH 工作流带到 Android。

DSH Native 将 Android 原生 Node.js、DeepSeek Harness(DSH)和常用开发工具封装为一个 Android 应用。你可以在本地项目中聊天、运行 agent、编辑文件和管理任务,无须另外安装 Termux 或 proot,也无须配置远程执行服务器。

模型推理仍通过所选服务商的 API 完成。项目文件与工具执行位于设备端;发送给模型的消息、附件和工具结果按 DSH 与服务商的调用方式传输。本项目是独立的 Android 适配项目。

项目概览

| 项目 | 说明 |
| 分类 | Android AI 工作台 |
| 平台 | Android / ARM64 / 原生运行时 |
| 当前定位 | 独立 Android 适配项目 |

将 Android 原生 Node.js、DeepSeek Harness 与开发工具封装到一个移动应用。

版本与下载 · 使用与开发 · 项目总导航

项目的发布、源码和验证状态统一见 STATUS。Codex Harness Mobile 使用 Termux / Debian,是另一种移动工作台方案。

阅读导航: 下载与运行要求 · 从安装到第一项任务 · 开发与验证 · 已知限制与来源 · 架构与工程设计

下载与运行要求

当前版本:0.33.13

下载 DSHNative-bootstrap.apk(33.7 MiB)

正式版发布说明 · 历史版本

SHA-256:8be88ff4ea7f777d264dfe0b39c4395933a26c8f45fd4b65708da12da6082912

| 项目 | 要求与说明 |
| 系统 | Android 7.0 及以上,minSdk 24 |
| CPU | ARM64;当前没有 ARM32 或 x86 安装包 |
| 首次启动 | 联网下载约 120.9 MiB 运行包;后续按变化分片更新 |
| 存储 | 为展开、临时下载和回滚快照留出空间;建议预留 1.5–2 GiB,实际需求以 App 空间预检为准 |
| 模型服务 | Command Code API Key、DeepSeek API Key 或 DeepSeek 账号授权;可见模型与额度由账户决定 |
| 后台任务 | 建议允许通知,并按手机系统设置允许后台运行;前台服务无法保证所有 ROM 都不回收进程 |

APK 携带 Node 与启动引导,DSH 和工具链通过经过摘要校验的运行包分片安装。完整环境展开后的占用明显大于压缩下载量,更新前的安全快照还需要额外空间。

升级请直接覆盖安装同签名新版。 卸载会清除 App 私有目录中的会话、凭据和配置;配置备份也不等于全部项目与历史的备份。

从安装到第一项任务

1. 安装 APK,按提示授予所需的文件与通知权限。
2. 完成语言选择和运行环境初始化,等待分片下载、SHA-256 校验及解压。
3. 打开模型中心,选择 Command Code / DeepSeek API Key 并填写密钥,或通过“DeepSeek 账号与余额”在浏览器授权。
4. 读取服务商实时模型目录,选择默认模型与思考强度并保存。
5. 使用默认工作区,或创建命名项目;打开新会话开始任务。

在 DSH 的常规设置选择语言与主题,App 设置使用同一套导航、主题和语言;设备工具在打开时沿用当前语言。App 的显示页负责文字缩放。已有 .dsh 数据的升级用户不会被强制再次进入首次配置向导。

App 工具在哪里

展开 DSH 侧边栏,在底部点击 App 工具 / App tools,进入 DSH 设置中的 App 设置。在 模型中心 打开服务商工具,点击 更新模型列表 / Refresh models;DeepSeek 账号、余额与用量 直接打开 DSH 自带的 账号与余额 页面。

备用入口包括长按页面顶部、通知栏的设置操作,以及长按桌面图标后的设置、日志、更新快捷方式。DSH 网页中的齿轮继续打开网页自己的设置。

原生子页的可见返回按钮、Android 返回键和边缘返回手势使用同一父级导航。

能做什么

| 工作流 | 当前能力 |
| 本地 agent | 在 App 私有目录运行 DSH 与 Android/bionic Node,使用 git、rg、fd、jq、bash、Python 等工具 |
| 模型与参数 | 实时服务商目录、全局默认、项目覆盖、逐模型思考档位和全模型 Max 请求选项 |
| 项目与文件 | 命名项目、浏览与文本编辑、图片预览、多选复制/移动、可恢复回收站 |
| 分享导入 | 将其他 App 的文本或文件导入当前项目,并显式创建任务 |
| 任务与连接 | 任务中心、时间线、等待批准提醒、后台完成通知、WebSocket 状态和本地草稿恢复 |
| 会话管理 | 真实列表、标题筛选、分页、重命名、归档、恢复继续、可恢复删除 |
| 运维与恢复 | App / 运行包更新、运行环境快照与恢复、网络诊断、日志、脱敏诊断 ZIP |
| 配置备份 | 以至少 8 位口令导出认证加密的配置备份,包含凭据、当前 Web profile 与全局/项目模型设置 |
| 插件 | 内置插件管理与外部插件安装入口,披露能力并按版本指纹授权 |

模型目录:以账户实际返回的列表为准

| 路由 | 目录端点 | 读取行为 |
| Command Code | GET https://api.commandcode.ai/provider/v1/models | 使用当前账户认证,获取可见模型 |
| DeepSeek 官方直连 | GET https://api.deepseek.com/models | 使用官方 API Key,获取可见模型 |
| DeepSeek 账号 | 内核 account/* 与 session/modelCatalog | 浏览器授权后使用内核管理的账号模型路由 |

DSH 自带的账号页面显示账户信息、充值余额和赠金余额,并保留查询用量、充值及退出入口。登录会打开系统浏览器的 DeepSeek 授权页。完成授权后返回 App,选择 DeepSeek 账号,读取模型列表并保存。可重新打开授权页、取消未完成授权或退出账号;API Key 与账号授权分别保存。退出账号会停止使用该账号的运行任务,保留 API Key、会话和项目。技术路径与验证边界见 账号登录说明。

连接检测只读取目录,不发送测试提示词。原生选择器只展示本次成功响应返回的模型 ID;本地能力表用于解释参数与视觉能力,不用于补造账户不可见的模型。

服务商新增模型即使尚未进入本地能力表,也允许选择和保存。视觉能力优先采用上游结构化声明,再结合已有配置;未知能力不会被误标为支持图片。临时离线时可以保留已保存配置,首次配置或选择新模型需要成功读取目录。

点击 更新模型列表 后,成功读取的服务商完整目录直接写入 DSH 的 provider catalog。空闲时通过受控的运行时重载应用并刷新页面;任务运行或状态未知时先保存,确认空闲后再应用。单独刷新 WebView 不能更新已经构建的服务商拓扑。

全局和项目默认模型用于新会话。已有会话保留历史记录;你也可以在聊天框的模型选择器中显式改变后续请求所使用的模型或思考强度,已经发出的请求不会被追溯修改。

思考强度:官方声明与 Max 请求分开理解

App 保留各模型已有的 off / minimal / low / medium / high / xhigh 等声明,并为所有模型追加字面量 max 请求选项。聊天框显示 Max(请求)/ Max (request)。

| 示例 | 固定能力快照中的档位 | App 当前提供 |
| 太空兔子 stealth/space-bunny-alpha | low / medium / high | 原档位 + Max(请求) |
| Qwen/Qwen3.8-Max | low / medium / xhigh | 原档位 + Max(请求) |
| 未公布档位、自动推理或未知新模型 | 没有可靠的可调档位声明 | 服务商默认(不传参数)+ Max(请求) |
| DeepSeek 官方直连 | off / low / high / max | 保留原档位,max 按字面量请求 |

能选择 max,表示客户端会提交这个参数;不能保证服务商实际提供更大的思考预算。 上游可能执行、忽略或拒绝它。App 不会偷偷改成 high,也不会把选项展示当作已验证的模型能力。

完整模型对照、来源优先级、升级保留规则和测试范围见 模型思考强度。

项目、文件与会话

默认工作区为 /sdcard/DSHNative/workspace,命名项目位于其 projects/<项目名> 子目录;各项目可以设置独立的模型默认值。

文件写入受规范路径白名单约束。目录复制不跟随符号链接;删除默认进入同卷回收站,恢复遇到同名文件会保留两份。文本编辑包含未保存提示与安全保存路径。

草稿恢复只恢复本地输入,不自动发送。App 设置 → 会话管理 可以重命名、归档、恢复后继续对话,或移到回收站。回收站中的会话从侧栏与搜索隐藏,可恢复;记录仍保留,不释放存储空间。运行或排队中的会话需先结束任务。DSH 原来的标题/工作区搜索继续可用;正文搜索按上游配置选择启用,默认关闭。

配置恢复会先停止 DSH,完成后自动重启应用配置;插件页提供“应用并重启”入口。配置备份不包含完整工作区、全部历史或附件,需要保存的项目文件应另行备份。

更新与恢复

模型中心刷新会显示当前服务商的读取进度、返回数量或错误,失败保留原目录。成功后聊天列表在任务空闲时应用;改变默认模型仍需单独保存。

| 操作 | 影响范围 |
| 更新 App | 校验版本、包名、签名与摘要,调用系统安装器覆盖安装 |
| 更新运行包 | 校验分片,仅替换变化的 DSH / 工具链内容 |
| 恢复上一运行环境 | 校验并恢复 dsh / tools 快照,保留用户 .dsh 与项目;不降级 APK |
| 导出诊断 ZIP | 设备、布局、连接、运行包和回滚摘要及脱敏日志;排除密钥、会话正文、附件与项目文件 |

稳定通道读取 latest.json;测试通道同时比较稳定与 latest-test.json,选择更高版本。测试清单保留其自身 APK 对应的运行包,不随稳定版随意改写。

运行包更新采用先预检和快照、后替换、失败恢复的顺序。自动恢复后会暂缓再次更新,避免启动循环。当前固定内核是 DSH 0.2.0-rc.2,属于上游候选版;App 的 stable 通道与上游内核的发布级别是两个概念。

数据与权限边界

- 凭据位于 App 私有 .dsh/.credentials.yaml;模型设置还涉及 profile patch 和项目覆盖文件。
- 日志与诊断输出脱敏,模型目录响应正文和认证头不写入日志。
- 网页辅助功能使用受限注入与消息处理,不引入高权限 JavascriptInterface。
- 文件操作限定在 App 私有目录和 /sdcard/DSHNative,并检查规范路径与符号链接逃逸。
- 外部插件运行于本地工具环境,授权前应查看其能力披露。
- App 不提供 root 权限,也不包含完整 Linux 发行版;模型推理需要所选服务商可用。

架构与工程设计

flowchart TD
A[Android 原生外壳] --> B[WebView]
A --> C[工具与设置]
A --> D[前台服务与恢复]
B --> E[本地 Node 与 DSH]
E --> F[项目与工具链]
E --> G[模型服务商 API]

两段式分发让 APK 与庞大的运行环境独立升级:APK 内包含 Node、动态库、引导脚本与初始清单;运行包包含 DSH 与工具链,分片使用修订号、哨兵、大小与 SHA-256 判断是否需要更新。

原生判断逻辑独立于 Android UI,包括路径安全、模型能力、更新决策、任务状态和恢复策略,可在普通 JVM 上验证。UI 统一使用 DshUi,异步回调复核页面生命周期,主题重建具备去抖、跨重建限流与硬停止。

当前架构固定 targetSdk 28,因为 Node 与工具在私有数据目录执行。提高 targetSdk 需要先重新设计可执行文件的部署方式,不能作为普通版本升级顺带调整。

开发与验证

本地逻辑检查需要 JDK、Python 3 和 Node.js;完整 Linux 构建还需要 Android SDK、GitHub CLI 和可获取上一正式 APK 的网络环境。

python3 scripts/check_java.py
bash scripts/run_tests.sh
python3 scripts/sync_project_metadata.py --check --allow-unpublished-source

在已安装 Android SDK 的 Linux 环境准备并构建 bash scripts/ci_build.sh /tmp/dsh-build

完整构建产物为 /tmp/dsh-build/bootstrap/DSHNative-bootstrap.apk。GitHub Actions 使用 JDK 17、官方 Linux build-tools 34.0.0 与 Android 28/34 平台文件;详见 构建指南。

回归覆盖纯 JVM 逻辑、JS 页面与连接模拟、HTTP 认证探测、发布元数据,以及真实运行包的 Host / 模型目录 / SDK 请求体 / 会话持久化 / Web profile。聊天框回归执行真实 React 模型选择组件,验证中英文下的模型与 max RPC。实际测试数量以本次 CI 输出为准。

真实运行包回归还在触屏 Chromium 中测量发送、附件、文件标签关闭与设置页,覆盖六组宽度、横屏、中英文和明暗主题。重现与修复记录见 布局交接。

这些测试不等同于 Android 真机布局、真实服务商 max 执行效果或所有 ROM 的后台行为验证;具体证据与待验证范围记录在 项目状态。

文档也进入发布闭环

编辑后同步所有文档的状态块和生成模型表
python3 scripts/sync_project_metadata.py --docs-only

核对状态、生成表和本地链接
python3 scripts/sync_project_metadata.py --docs-only --check

release.yml / release.sh 在确认资产和下载路径后生成清单,再同步中英文下载信息、全部文档状态与当前状态表。阶段记录保留历史内容;生成区禁止手工修改。源码可以领先已发布版本,但文档必须如实显示两者。

仓库导航

| 路径 | 职责 |
| src/dev/dsh/nativeapp/ | 原生外壳、纯逻辑层、面板与前台服务 |
| payload/ | 下载、解压、空间预检、快照与运行时辅助 |
| runtime/ | 固定内核来源、摘要与依赖锁定 |
| patch/ | Android 兼容层说明及明确归档的旧补丁 |
| tests/ | Java、JS、HTTP 与实际运行包消费回归 |
| scripts/ | 构建、签名、发布、运行包生成和文档同步 |
| docs/ | 当前指南、统一进度、交接、历史阶段和研究记录 |
| release-notes/ | 不同 App / payload 版本的独立变更说明 |

从 文档中心 开始;开发前阅读 AGENTS.md、交接说明 与 踩坑记录。

已知限制与来源

目前仅支持 ARM64;首次初始化依赖网络;后台持续运行受 Android 与 ROM 策略约束;未知模型视觉能力不会被猜测;未打包大型 Office 到 PDF 转换引擎。运行环境恢复仅处理 DSH / 工具链,不是 APK 降级或完整数据恢复。

本仓库代码采用 MIT License。DSH、Node.js、Termux 来源二进制和其他运行包组件保留各自许可证,不能将本仓库的 MIT 许可直接套用到所有打包依赖。

- DeepSeek Harness 上游
- Termux 项目
- 固定内核与升级说明
- Android 10 行为变更
预览分享卡片长什么样 ↓yusheng266186-beep/DSH-Native
分享 · DeepSeek Harness Hub
yusheng266186-beep/DSH-Native

在手机上跑通完整 DSH 开发流程

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