「普算」是专注术数(六壬/六爻/塔罗/小六壬)的 AI 智能体应用。本目录是 Android 原生移植版。
对齐原作新线 Pusuan-Dsh 0.3.0(原作 2026-09 起的主力版本),而非旧线 Python+WebView2 版。
技术配方与原作在 Windows 上一致,只是外壳与界面换成 Android 原生:
| 层 | 内容 | 来源 |
|---|---|---|
| 智能体内核 | @deepseek-ai/dsh 0.3.0(200+ 包,Cordis 插件树) |
从官方 Release 提取 |
| 运行时 | Node 26.4.0(Android/bionic,arm64 + x86_64 两套) | Termux 源独立装配 |
| 普算配置层 | 2 个预设 + 8 个技能 + 570 篇语料 | 同上 |
| 外壳与界面 | Kotlin + Jetpack Compose(本仓库新写) | — |
内核与配置层逐字取自原版,未做业务改动。Android 适配只做两件事:替换平台上不可用的原生模块、在 DSH home 层禁用不适用于 Android 的插件行。
sh tools/build-apk.sh arm64-v8a # 真机
sh tools/build-apk.sh x86_64 # 模拟器产物在 dist/。需要 JDK 17+、Android SDK(build-tools / platform-34)。
构建链:
tools/build-runtime.sh—— 从 Termux 源取 node 与动态库,做 soname 实体化tools/prepare-payload.sh—— 装配内核 + 配置,应用 Android 补丁,打成单个 zip- Gradle
assembleDebug—— 编译 Compose 应用并打包
android/ Kotlin/Compose 应用
app/src/main/java/com/pusuan/
engine/ EngineManager(解压 payload + 启动 node + 探活)、EngineService(前台保活)
api/ DshClient(/api RPC + 两条 WS 事件流)
ui/ 对话界面(ChatViewModel + Compose)
app/src/main/assets/
dsh-home/ Android 适配补丁(启动时写入 $DSH_HOME)
vendor/
runtime/<abi>/ node 运行时(构建产物,不入 git)
payload/ 内核 + 配置(构建产物,不入 git)
patches/ Android 适配:原生模块桩 + 装配脚本
tools/ 构建与验证脚本
Android 9(API 28)起,targetSdk ≥ 29 会给应用私有目录挂 noexec,随 APK 分发的 node 可执行文件无法 exec,引擎起不来。这是平台限制,不是配置能绕过的。
内核是本机 HTTP 服务(127.0.0.1)。targetSdk 28 默认禁止明文,必须用 network_security_config.xml 显式放行 —— 且只放行 127.0.0.1/localhost,不全局放开。
内核 Web 表层会在运行时动态挂载一个 cordis HMR 实例(条目 id 是哈希,无法用 YAML 禁用),它构造时需要 node 内部模块,否则报错中断启动。
内核多个包在模块顶层静态 import 了三个原生模块,而它们在 Android(bionic) 上没有可用产物 —— 不处理则整棵插件树加载失败:
| 模块 | 原状 | 处置 |
|---|---|---|
sharp |
需 libvips,无 Android 产物 | 桩:调用即报明确错误 |
koffi |
仅 win32-x64 FFI 绑定 | 桩:类型注册可用,触达原生库拒绝 |
node-pty |
无 bionic 预编译 | 桩:调用即报明确错误 |
哪些是安全的:这些模块的实际调用点都在 Windows 专属分支内(load("kernel32.dll") 等),Android 上不会执行;模块顶层只用类型注册。桩保留"被真正调用时立刻报错"的语义,不静默返回假数据。
内核 boot 会断言"所有启用条目必须激活",所以不适用的行必须显式禁用:
hmr— 手机无热重载需求(另见第 3 条的运行时挂载)sandbox— Android 无 bwrap/landlock 执行链,且其依赖的dsh-sandbox-windows-acl在模块顶层做 koffi 结构体自检bash-sandbox— 依赖sandboxpermission— 该插件主动拒绝挂载在无沙箱的执行器上(预设本身绑定沙箱模式)- 补挂
bash-local— 让ctx.shell仍有提供方
可用:AI 对话(流式、思考过程)、六壬/六爻/塔罗/小六壬四套技能、570 篇知识库检索、提问式占卜(question 预设)、多模型选择、会话管理。
暂不可用(明确记录,不假装支持):
| 项 | 原因 |
|---|---|
| 图片附件 | sharp 在 Android 无可用实现,需自绘 JS 编解码器 |
bash 工具 |
运行时未内置 Android 版 bash(Android 系统只有 mksh);补 Termux bash 即可 |
grep/glob 工具 |
@vscode/ripgrep 只带 win32 二进制,需补 Termux rg |
| 权限预设 UI | 与无沙箱执行器不兼容,已禁用 |
安全边界:进程处于 Android 应用 UID 沙箱内,agent 只能访问应用私有目录与用户已授权的共享存储;工具调用把关由 approval 行负责。不再叠加应用层沙箱。
移植版 Apache License 2.0。内核 @deepseek-ai/dsh 为 MIT。原版作者 sunxiaochuan48。