How dougsong/jev-android works
jev-android is an Android UI-agent SDK: a host supplies a task and provider, the agent observes accessible controls, requests a decision, applies policy and freshness guards, executes an allowed action, then observes its effect. Jev and DeepSeek are alternative decision backends; Android accessibility performs the UI work. The sample provides provider/scenario selection and a local test screen. Some sample and runtime details are documented but not excerpted, so those links rely on the README; unsampled internals are not inferred.
Main entry points: JevAgent.kt Execution loop · MainActivity.kt Sample interface · AccessibilityRuntime.kt UI observation and actions · DeepSeekProvider.kt DeepSeek provider
Components 24
Sample app
- Sample interface
sample/src/main/kotlin/io/github/jevandroid/sample/MainActivity.kt - Provider selection
sample/src/main/kotlin/io/github/jevandroid/sample/ProviderSelection.kt - Task scenarios
sample/src/main/kotlin/io/github/jevandroid/sample/TaskScenarios.kt - Event formatter
sample/src/main/kotlin/io/github/jevandroid/sample/AgentEventFormatter.kt - Bilibili policy
sample/src/main/kotlin/io/github/jevandroid/sample/BilibiliTriplePolicy.kt - Local test screen
sample/src/main/kotlin/io/github/jevandroid/sample/FixtureActivity.kt
Agent core
- Task and event models
core/src/main/kotlin/io/github/jevandroid/core/Models.kt - Execution loop
core/src/main/kotlin/io/github/jevandroid/core/JevAgent.kt - Progress tracking
core/src/main/kotlin/io/github/jevandroid/core/ProgressTracker.kt - Outcome verifier
core/src/main/kotlin/io/github/jevandroid/core/Models.kt
Accessibility runtime
- Accessibility service
sdk/src/main/kotlin/io/github/jevandroid/JevAccessibilityService.kt - UI observation and actions
sdk/src/main/kotlin/io/github/jevandroid/AccessibilityRuntime.kt - Snapshot fingerprints
sdk/src/main/kotlin/io/github/jevandroid/SnapshotFingerprints.kt - Long-press geometry
sdk/src/main/kotlin/io/github/jevandroid/LongPressTarget.kt
Decision providers
- Jev provider
sdk/src/main/kotlin/io/github/jevandroid/JevProvider.kt - DeepSeek provider
sdk/src/main/kotlin/io/github/jevandroid/DeepSeekProvider.kt - Action catalog
sdk/src/main/kotlin/io/github/jevandroid/DeepSeekChoices.kt - Provider progress context
sdk/src/main/kotlin/io/github/jevandroid/ProviderProgress.kt - HTTP transport
sdk/src/main/kotlin/io/github/jevandroid/ProviderTransport.kt
Other components
- User
- Host Android app
- Jev API
- DeepSeek API
- Android accessibility
Connections 26
- User → Sample interface: configures task
README.md - Sample interface → Provider selection: selects provider
README.md - Sample interface → Task scenarios: chooses scenario
README.md - Sample interface → Local test screen: opens test screen
README.md - Sample interface → Event formatter: formats result logs
README.md - Sample interface → Bilibili policy: uses optional policy
README.md - Host Android app → Accessibility service: starts task
sdk/src/main/kotlin/io/github/jevandroid/JevAccessibilityService.kt - Accessibility service → Execution loop: runs
sdk/src/main/kotlin/io/github/jevandroid/JevAccessibilityService.kt - Accessibility service → UI observation and actions: constructs runtime
sdk/src/main/kotlin/io/github/jevandroid/JevAccessibilityService.kt - Execution loop → UI observation and actions: observes and executes
README.md - Execution loop → Jev provider: requests decision
core/src/main/kotlin/io/github/jevandroid/core/JevAgent.kt - Execution loop → DeepSeek provider: requests decision
core/src/main/kotlin/io/github/jevandroid/core/JevAgent.kt - Execution loop → Progress tracking: tracks effects
core/src/main/kotlin/io/github/jevandroid/core/JevAgent.kt - Execution loop → Outcome verifier: checks completion
core/src/main/kotlin/io/github/jevandroid/core/JevAgent.kt - Execution loop → Task and event models: uses task and decisions
core/src/main/kotlin/io/github/jevandroid/core/JevAgent.kt - Execution loop → Android accessibility: dispatches actions
README.md - UI observation and actions → Snapshot fingerprints: checks freshness
sdk/src/main/kotlin/io/github/jevandroid/AccessibilityRuntime.kt - UI observation and actions → Long-press geometry: computes press target
sdk/src/main/kotlin/io/github/jevandroid/AccessibilityRuntime.kt - Jev provider → HTTP transport: sends request
sdk/src/main/kotlin/io/github/jevandroid/JevProvider.kt - HTTP transport → Jev API: sends HTTP request
- DeepSeek provider → Action catalog: builds action choices
sdk/src/main/kotlin/io/github/jevandroid/DeepSeekProvider.kt - DeepSeek provider → Provider progress context: encodes progress
sdk/src/main/kotlin/io/github/jevandroid/DeepSeekProvider.kt - DeepSeek provider → HTTP transport: sends request
sdk/src/main/kotlin/io/github/jevandroid/DeepSeekProvider.kt - HTTP transport → DeepSeek API: sends HTTP request
- Jev provider → Provider progress context: encodes progress
sdk/src/main/kotlin/io/github/jevandroid/JevProvider.kt - UI observation and actions → Android accessibility: uses accessibility APIs
README.md