3.0 KiB
Contributing to GramPilot
:+1:🎉 First off, thanks for taking the time to contribute! 🎉👍
The following is a set of guidelines for contributing to GramPilot. GramPilot has evolved significantly from its original roots into an AI-driven, autonomous Vision-Language-Action (VLA) agent.
Please follow these guidelines when submitting issues or pull requests.
Table Of Contents
How Can I Contribute?
Reporting Bugs
Before filing an issue, please ensure the bug relates to GramPilot's core framework (e.g. Qdrant cache issues, VLA compilation timeouts, Active Inference crashes). Because GramPilot synthesizes its own UI Locators using VLMs, do not open bugs about outdated Instagram UI Locators. The bot heals itself using the Dojo Engine automatically.
When filing an issue, please provide:
- The exact device or emulator and Instagram version.
- The error trace from
logs/marisaundmarc.logcontaining the emojis (e.g. ⛩️ Dojo Engine traces or ⚖️ Active Inference states). - Do not submit tickets without terminal output logs.
Suggesting Enhancements
We welcome architectural enhancements to the Cognitive Stack. If you want to contribute, focus on logic that makes the bot more human or resilient:
- Adding new
sensors(like the Honeypot Radome) to evade IG protections. - Expanding
DopamineEngineparameters for better pacing. - Enhancing the VLM Prompts in
compiler_engine.pyfor more robust heuristics.
Pull Requests
- All changes must be tested locally.
- If you add a new Cognitive Engine, it must be properly integrated into the
bot_flow.pyloop without relying on hardcoded delayssleep(5). Use the thermodynamic delays derived fromActiveInference. - Do not re-introduce
config.ymldependencies for deterministic actions (e.g.max_likes). We rely strictly on biological simulation.
Development Paradigms
- NO HARDCODED XPATHS: Do not PR changes that look like
device.xpath('//android.widget.Button...'). Use the semantic intents via_execute_transition. - NO HARDCODED PIXELS: Never use hardcoded pixel coordinates for scrolling or swiping (e.g.
scroll(1000)). Screens vary drastically in pixel density. Always use human-scale dimensions (cm) viadevice.cm_to_pixels(4.5)to ensure deterministic physical interaction scaling. - ASYNCHRONOUS AUTO-LABELING: Blocking network calls during UI automation cause timing errors. Ensure heavy computation (VLM generation) happens in background threads (e.g.,
dojo_engine.py). - FAIL GRACEFULLY: Instead of wrapping UI lookups in
try/exceptand crashing, utilize the Shadow Mode (predict_state) so the agent can naturally press "Back" if confused.
Styleguides
All Python code must be formatted with Black.
Follow standard Git commit messages.