com.sky.ondeviceagent / CONTRIBUTING.md
Sky-Kim's picture
Initial commit
2e7837a
|
Raw
History Blame Contribute Delete
3.5 kB
# Contributing to OnDeviceAgent
Thanks for your interest in contributing. This document covers how to work on the
`com.sky.ondeviceagent` package and the conventions to follow.
## Prerequisites
- **Unity 6000.4.8f1** (Unity 6.x). Other versions are untested.
- An [Ollama](https://ollama.com) server for the desktop/Editor LLM path.
- Network access on first use: the on-device model weights are **not** vendored β€” the `com.sky.sentis.*`
dependency packages provision their weights from Hugging Face on demand, and the Android LLM streams
from Hugging Face on first launch. See [docs/getting-started.md](docs/getting-started.md).
## Working on the package
The package is consumed by a Unity project that references it (embedded under `Packages/`, or via a
git/local reference in `Packages/manifest.json`). To develop against it:
1. Open a Unity project that embeds this package. Unity restores dependencies from `package.json`.
2. For a runnable scene that wires the full pipeline, use the
[ondeviceagent-sample](https://github.com/skykim/ondeviceagent-sample) project, then press Play.
For the Android on-device LLM path see [docs/android-llm.md](docs/android-llm.md); the Kotlin/JNI
bridge source ships in this package under `AndroidBridge~/` (rebuild with JDK 17 via
`./gradlew assembleRelease`).
## Package layout
- `Runtime/` β€” the framework source, split into assemblies:
- `OnDeviceAgent.AgentCore` (`Runtime/AgentCore`) β€” agent runtime, tools, memory, RAG, presentation.
- `OnDeviceAgent.Inference` (`Runtime/Inference`) β€” camera, vision, audio, STT, TTS.
- `OnDeviceAgent.VoiceManager` (`Runtime/VoiceManager`) β€” voice-pipeline orchestration.
- `OnDeviceAgent.RagLlm` (`Runtime/AgentCore/Rag/Llm`) β€” isolated chat-LLM clients for RAG.
- `OnDeviceAgent.AgentCore.Editor` (`Runtime/AgentCore/Editor`) β€” Editor-only tooling (custom
drawers, menus, build preprocessors).
- `Runtime/Plugins/` β€” bundled third-party managed DLLs (LightRAG.NET, Microsoft Agent Framework) and
the Android bridge (`Plugins/Android/llm-release.aar` + EDM4U deps). See
[THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).
- `AndroidBridge~/` β€” Kotlin/JNI bridge source for the LiteRT-LM AAR (hidden from the importer by `~`).
- `docs/` β€” architecture and usage documentation.
- The Voice Assistant sample lives in the
[ondeviceagent-sample](https://github.com/skykim/ondeviceagent-sample) repository.
## Conventions
- **Assembly layering is strict and acyclic.** Do not introduce cycles. Editor code stays in the
`*.Editor` assembly (platform-gated to Editor) and must never be referenced by runtime assemblies.
See [docs/architecture.md](docs/architecture.md).
- **Namespaces** match the owning assembly (`OnDeviceAgent.AgentCore`, `OnDeviceAgent.Inference`, …).
- **No runtime `Instantiate`/`AddComponent` for framework wiring** β€” components are pre-placed in the
scene and wired via `SerializeField`.
- Keep tooltips and comments sparse and purposeful.
- Documentation and user-facing strings default to English.
## Before opening a PR
- Make sure the project compiles in Unity with no new warnings in the framework assemblies.
- Run the Voice Assistant sample to confirm the voice pipeline still works end to end.
- If you add a third-party dependency or model, update [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).
## License
By contributing, you agree that your contributions are licensed under the project's
[Apache License 2.0](LICENSE.md).