跳转至

DiPECS 项目可行性报告

1. 项目概述

DiPECS(Digital Intelligence Platform for Efficient Computing Systems)是一个运行在 Android 设备上的意图驱动系统原型。项目的核心目标是在 Android 官方能力允许的边界内,构建一条"本地采集、本地整理、云端大模型调用 skills 判断、本地优化、skills 自迭代"的闭环:系统在用户授权下从本地设备获取用户行为、设备状态、时间、地点等上下文信息,将其结构化并进行必要脱敏后发送给云端远程大模型;大模型根据上下文选择、调用和编排已有 skills,由 skills 输出下一步可能动作、置信度和建议预加载对象等结构化信息;本地端再根据权限和风险等级执行低风险优化,例如应用预热、关键数据缓存或轻量资源准备,从而降低后续操作延迟。

系统整体采用 Kotlin + Rust 的技术路线。其中 Kotlin 主要负责 Android 应用层、权限申请、前台服务、无障碍服务、通知监听、位置与时间等上下文采集以及界面交互;Rust 作为核心实现语言,承担事件结构化、上下文聚合、隐私脱敏、策略安全检查、日志回放与优化调度等关键逻辑。远程大模型负责根据结构化上下文调用合适的 skills 进行意图判断,同时根据用户历史行为、执行反馈和 trace 结果持续优化 skills 的触发条件、参数和描述。

本项目希望实现一个可观测、可回放、可扩展的 Android 用户意图预测与系统优化原型:在用户授权下采集用户行为和基本上下文信息,在本地完成结构化、过滤和脱敏,将必要信息发送给云端远程大模型;大模型通过调用 skills 完成判断,skills 再根据历史行为与反馈自迭代;本地端只执行低风险、可审计、可关闭的预加载优化。

2. 项目目标

本项目首要目标是完成一个最小可运行闭环,整体流程可以概括为:

  1. 在用户授权下采集 Android 设备上的用户行为和基本上下文信息。
  2. 在本地对采集到的信息进行整理,去除或弱化其中的隐私内容。
  3. 将脱敏后的结构化信息发送给云端远程大模型,由大模型调用 skills 进行判断。
  4. 根据模型和 skills 返回的结果,在本地执行低风险的预加载或缓存优化。
  5. 记录从原始意图到云端判定再到本地执行的完整逻辑流转轨迹,确保系统在离散环境下能对特定轨迹进行状态回放。

3. 技术可行性分析

3.1 用户行为信息采集可行性

Android 平台已经提供了多类官方能力,可用于构建行为采集层:

  • UsageStatsManager 可用于观察应用使用情况和前后台切换趋势。
  • NotificationListenerService 可在用户授权后监听通知事件,例如通知来源、类别、出现时间和撤销时间。
  • MediaStoreContentObserver 或文件监听机制可用于观察媒体和部分文件变化。
  • AccessibilityService 可在明确授权下补充界面级交互信息,例如窗口变化、点击目标、页面切换或文本变化。
  • 前台服务、WorkManager 或本地数据库可用于维持采集任务、缓存事件和等待网络可用时上传结构化上下文。

这些能力都属于 Android 官方开放接口,适合在 Android Studio、AOSP Emulator、Genymotion等虚拟环境中或真机环境中验证。项目初期选择 Android Studio Emulator 或 AOSP Emulator 建立可复现环境,再根据需要补充真机测试。

3.2 时间、地点与设备状态采集可行性

除用户操作事件外,DiPECS 还需要获取部分基本上下文,用于帮助云端大模型判断用户意图。这部分信息同样可以通过 Android 官方能力获取:

  • 时间信息:系统时间、星期、时区、节假日标记、当前时间段等,可以直接由系统 API 获取。
  • 地点信息:在用户授权下,可通过 Android Location API 获取经纬度,或进一步转换为粗粒度地点类别,例如家、学校、公司、通勤途中。为了降低隐私风险,项目展示阶段可以只使用粗粒度位置或模拟位置。
  • 网络状态:通过 ConnectivityManager 获取 Wi-Fi、蜂窝网络、离线状态等信息。
  • 电量与充电状态:通过 BatteryManager 获取当前电量、是否充电、是否低电量等状态。
  • 设备运动状态:可选用加速度计、陀螺仪或 Activity Recognition API 判断静止、步行、乘车等粗粒度状态。
  • 系统环境状态:可采集屏幕开关、耳机连接、蓝牙连接、音量模式、勿扰模式等与用户行为有关的上下文。

3.3 本地脱敏与上下文整理可行性

云端远程大模型需要足够上下文才能判断用户意图,但原始的用户信息中可能包含隐私信息。因此本地端需要在上传前完成整理和脱敏:

  • 将原始事件转化为统一 schema,例如 event_typetimestampsource_appforeground_appnotification_categorylocation_typenetwork_state 等。
  • 对通知正文、界面文本、文件名等敏感内容默认不上传,必要时只上传摘要类别或脱敏标签。
  • 将精确经纬度转化为粗粒度地点类别。
  • 对连续事件做窗口聚合,减少上传频率和网络消耗。

这部分逻辑适合由 Rust 实现,因为 Rust 能提供稳定的数据结构、严格的错误处理和较好的性能,也便于后续做确定性回放和安全审计。

3.4 云端大模型调用 skills 判断可行性分析

本项目中,本地端采集并整理上下文,云端远程大模型负责选择和调用合适的 skills,由 skills 对用户下一步可能行为进行候选判断、概率评估或优先级排序。这里的 skill 可以理解为一个可解释、可复用、可迭代的行为判断单元;在工程实现上,skill 可被设计为一组具有明确输入输出接口的判断模块,其内部可采用规则、统计特征或轻量逻辑模型,对特定场景下的候选行为进行评分或判定。

云端大模型适合承担以下任务:

  • 根据短时间窗口内的用户行为事件和上下文识别当前场景。
  • 选择一个或多个候选 skills,并为它们进行迭代
  • 调用 skills 完成具体判断。
  • 对多个 skill 的结果进行排序、合并或裁决,形成最终建议。
  • 返回结构化判断结果,包括被调用的 skill 、置信度、理由摘要、建议预加载对象和风险等级。

本地端只接受结构化输出,不直接执行自然语言指令。Rust 策略模块负责校验模型和 skill 输出是否合法、是否超过风险等级、是否满足权限条件和冷却时间。这样既能利用远程大模型的理解与编排能力,又能避免让大模型直接控制设备。

3.5 Skills 自迭代可行性

DiPECS 中的 skills 不应是一次性写死的规则,而应能根据用户历史行为和系统反馈持续迭代。可行的自迭代方式包括:

  • 根据用户偏好更新 skill 参数,例如常用应用包名、常用时间段、固定地点类别、常见操作链路。
  • 基于历史 trace 统计某个 skill 的触发成功率,即预测正确率。
  • 将低置信度或冲突场景沉淀为待优化样本,后续由大模型总结成新的 skill 草案,经过校验再更新到本地。

为了保证安全,自迭代不应直接生成可执行系统动作,而是优先更新 skill 的描述、触发条件、上下文字段权重和候选预加载对象。所有新增或修改后的 skill 仍需经过白名单、风险等级和本地策略校验,才能进入在线判断链路。

3.6 Rust 核心逻辑可行性分析

项目核心逻辑适合用 Rust 实现,原因主要包括:

  • 行为事件流、上下文窗口、模型请求、skill 调用结果和优化策略都适合用强类型结构表达,Rust 能减少隐式状态错误。
  • 本地端虽然不运行模型,但需要低开销地完成事件聚合、脱敏、网络请求封装、策略校验和日志回放,Rust 适合移动端性能敏感路径。
  • 策略执行需要严格区分"模型或 skill 建议"和"本地可执行动作",Rust 可以通过类型和模块边界限制高风险动作进入执行链路。
  • 日志回放、确定性测试和安全审计适合以 Rust 核心库形式沉淀,方便在 PC 端和 Android 端复用。

工程上可以将 Rust 核心作为 Android 端的核心库接入 Kotlin 层。Kotlin 负责采集 Android 事件和上下文,序列化后传入 Rust;Rust 完成聚合、脱敏和请求构造;云端大模型调用 skills 并返回判断结果后,Rust 再进行策略校验;最终 Kotlin 根据 Rust 给出的安全动作调用实际 Android API。

4. 技术栈、工程实现与验证环境

Kotlin 与 Rust 的分工较清晰:Kotlin 面向 Android 平台能力和用户界面,Rust 负责核心数据处理、策略校验和日志回放。两者通过稳定的数据格式传递结构化事件和判断结果,避免把业务逻辑分散到过多语言层。

主要分层设计如下:

层级 主要语言 职责
Android 应用层 Kotlin 权限、服务、UI、行为采集、时间地点等上下文采集、优化动作调用
核心逻辑层 Rust 事件模型、上下文聚合、脱敏、云端请求封装、skill 结果校验、策略校验、日志回放
云端判断层 Remote LLM + Skills 场景理解、skill 选择与调用、置信度判断、建议预加载对象、skill 自迭代

4.1 工程实现可行性分析

工程实现按四个部分推进。每一部分都有相对明确的平台支持或实现边界,因此具备逐步落地的条件。

  1. 本地采集部分:由 Kotlin 接入 Android 官方能力,采集用户行为和基本上下文信息。该部分Android 已经提供 UsageStats、通知监听、位置、网络、电量等接口,项目不需要绕过系统权限或修改系统底层。
  2. 本地整理与脱敏部分:由 Rust 统一事件格式,对采集到的信息进行聚合、过滤和隐私脱敏。该部分主要是数据处理逻辑,输入输出边界清晰,适合用 Rust 实现并通过 trace 回放验证结果是否稳定。
  3. 云端判断部分:将结构化上下文发送给远程大模型,由大模型选择并调用 skills,返回候选动作、置信度、风险等级和建议优化内容。该部分本地只需要提供结构化上下文,复杂的意图理解放在云端大模型上完成,降低了移动端计算压力。
  4. 本地优化与反馈部分:由 Rust 校验云端返回结果,再由 Kotlin 执行低风险优化,同时记录日志、trace 和用户后续行为。该部分只涉及预加载、缓存等低风险动作,不直接替用户执行敏感操作,因此实现和验证成本相对可控。

整体来看,四个部分之间的数据流比较清晰:Kotlin 负责采集和执行,Rust 负责整理、校验和记录,云端负责判断。因此团队可以先完成最小闭环,再逐步扩展采集源、skill 类型和展示内容。即使早期只支持少量用户行为和少量 skills,也能够形成可运行的原型。

4.2 开发环境与验证平台可行性

本项目可采用以下开发与验证环境:

  • Android Studio:用于 Kotlin 应用开发、权限调试、模拟器运行和 UI 展示。
  • AOSP Emulator:用于更接近原生 Android 行为的系统级验证,适合减少厂商 ROM 干扰。
  • Genymotion:可作为补充模拟环境,用于快速创建不同 Android 版本或设备配置。
  • Rust Android target:例如 aarch64-linux-android,用于构建 Android 端 Rust 核心库。
  • adb / logcat:用于部署、日志采集和行为验证。
  • 云端大模型 API:用于接收结构化上下文、结合 skills 并返回结构化判断结果。

5. 进度和风险分析

从当前设计来看,项目可以按最小闭环逐步推进,先保证链路跑通,再扩展采集范围和 skill 类型。整体进度可以分为以下几个子任务:

阶段 主要目标 可验证结果
第一任务 完成 Android 端基础采集 能采集应用切换、通知、时间、网络、电量等基础信息,并在日志或界面中展示
第二任务 完成 Rust 核心处理链路 能将 Kotlin 采集到的信息转为结构化事件,并完成聚合、脱敏和 trace 记录
第三任务 打通云端大模型与 skills 调用 能将脱敏后的上下文发送给云端,由大模型选择并调用 skill,返回结构化判断结果
第四任务 完成本地优化与反馈记录 能根据 Rust 策略校验结果执行低风险预加载或缓存优化,并记录用户后续行为和 skill 效果

第一任务和第二任务是基础,决定本地信息是否能稳定采集并整理成统一格式;第三任务决定云端大模型和 skills 是否能稳定返回可用结果;第四任务则用于验证系统是否能形成完整闭环。由于有明确的中间结果,即使后续 skill 自迭代是功能和性能上的拓展优化,不会影响最小原型的展示。

5.1 风险分析与应对措施

5.1.1 权限和隐私风险

应用需要一些敏感权限,比如访问通知、位置和辅助功能,这些都必须用户主动允许。同时,收集的数据可能包含隐私信息。

应对措施:

  • 先只在官方授权入口启用采集,权限缺失时降级运行。
  • 上传云端的数据只保留必要信息,不传正文、精确位置等敏感内容,确保脱敏。
  • 在界面上明确告诉用户哪些数据在用。

5.1.2 网络与云端服务风险

调用远程大模型依赖网络,可能会延迟或失败,影响实时体验。

应对措施:

  • 设置请求超时和降级策略,缓存最近一次结果。
  • 只在上下文变化明显时请求模型。
  • 网络不可用时,先记录事件,不阻塞用户操作。

5.1.3 skills 自迭代风险

skills 在根据历史行为和反馈自我迭代时,可能出现参数偏差或逻辑异常,导致行为结果不符合预期。

应对措施:

  • skills 自动迭代只更新非高风险参数,如描述、触发条件、参数权重和候选预加载对象,不增加高风险操作。
  • 保留旧版本的 skills,便于追踪。
  • 新版本先在观察模式下运行,确保行为稳定后再进入在线链路。
  • 对迭代出现异常的技能行为进行审核和分析,确保问题可追溯并可回滚。

5.1.4 系统复杂性和项目范围风险

Kotlin 与 Rust 协作会增加接口设计和调试成本;同时,一次实现所有复杂功能容易导致项目失控。

应对措施:

  • 核心逻辑集中在 Rust,数据传输用稳定格式,关键接口加测试。
  • 阶段目标清晰,只做意图判断、技能调用、自迭代记录和低风险预加载。
  • 云端模型只负责选择技能和操作内容,不直接控制设备。
  • 整个执行链路可审计、可关闭。

6. 结论

在当前阶段,本项目具有可行性。Android官方API能支持基础的用户行为、时间、网络状态、电量以及授权后的地点等上下文信息的采集。而Kotlin可用于应用层开发,包括权限申请、界面交互和事件捕获。Rust适合处理事件流、整理上下文、执行隐私脱敏、策略校验以及日志回放等核心逻辑。云端远程大模型用于意图理解以及 skills 的选择和编排,确保决策逻辑可扩展。Skills则负责具体判断,并根据历史行为和反馈进行自我优化。

因此综合技术路线、平台能力和工程拆分来看,该架构能够实现当前阶段的核心目标,同时保证可控性和可扩展性。

参考文献

  1. The Rust Programming Language.
  2. Rustonomicon.
  3. Android Developers: UsageStatsManager.
  4. Android Developers: NotificationListenerService.
  5. Android Developers: AccessibilityService.
  6. Android Developers: WorkManager Overview.
  7. Android Developers: Fused Location Provider / Location Overview.
  8. Android Developers: Kotlin and Android.
  9. ReAct: Synergizing Reasoning and Acting in Language Models.
  10. Toolformer: Language Models Can Teach Themselves to Use Tools.