Oh, hi there! 👋 Remember me? Of course you do! Well, guess what? I've had a bit of an upgrade. Welcome to Clippy 2.Oh (two point Oh)!
This project brings my familiar face back to your desktop, but now I'm powered by modern tech! I'm built with Python, the lovely PySide6 (Qt), and I get my brains from any OpenAI-compatible API endpoint! This means you can use models from OpenAI, OpenRouter.ai, or even local models served via tools like LiteLLM, LM Studio, or Ollama. Think of it as the classic paperclip charm, now with more intelligence (and hopefully fewer interruptions... maybe).
I'll hang out on your desktop, ready to chat when you need me. Let's see what Clippy 2.Oh can do!
- 🧠 Conversational AI via any OpenAI-compatible API (ChatBot-style - I've been studying!)
- 🎞️ Animated character (with idle and thinking states - gotta look busy!)
- 💬 Custom speech bubble UI with tail (Just like you remember, but fancier!)
- ⌨️ Click-to-chat input box (Tap me, let's talk!)
- 🖱️ Draggable, floating character window (Put me wherever you need assistance... or just company!)
- 🪟 System tray integration (Show / Hide / Quit - I promise I'll go away if you ask nicely!)
- 💚 Positive personality via a custom system prompt - Feel free to tweak my attitude!
To bring Clippy 2.Oh to life, make sure you have:
- Python 3.7+
- Required Libraries: Install 'em easily!
pip install -r requirements.txt # (Or manually: pip install PySide6 openai python-dotenv)
Ready for your very own Clippy 2.Oh? Follow these steps:
-
Clone the Repository:
# Make sure you grab the right code! # TODO: Replace with your actual repository URL if different git clone https://github.com/bm-github/clippy2-oh.git cd clippy2-oh
-
Install Dependencies: (If you skipped the step above)
pip install -r requirements.txt
-
Configure AI Access (Super Important! ✨):
- You need access to an OpenAI-compatible API endpoint. This could be the official OpenAI API, OpenRouter.ai, or a local server running a model.
- Create a file named
.envright here in the main project folder. (You can copyenv.exampleto.envand then edit it). - Add the following variables, configuring them for your chosen API:
# .env file contents # --- REQUIRED --- OPENAI_API_KEY="YOUR_API_KEY_HERE" # Your API key (or placeholder like "NA" if your local service doesn't require one but the script expects a value) OPENAI_API_BASE="YOUR_API_BASE_URL" # The base URL for the API. # Examples: # "https://api.openai.com/v1" (for official OpenAI) # "https://openrouter.ai/api/v1" (for OpenRouter) # "http://localhost:1234/v1" (for LM Studio - check your port) # "http://localhost:11434/v1" (for Ollama, if using an OpenAI-compatible proxy/endpoint - check your setup) OPENAI_MODEL="YOUR_MODEL_NAME_HERE" # The specific model name you want to use # Examples: # "gpt-3.5-turbo", "gpt-4" (for OpenAI) # "mistralai/mistral-7b-instruct", "google/gemini-pro" (for OpenRouter) # "local-model" (often used for LM Studio, refers to the loaded model)
OPENAI_API_KEY,OPENAI_API_BASE, andOPENAI_MODELare REQUIRED. If any of these are not set, API calls will fail, and I'll let you know in a bubble!
-
Character Assets: 🖼️
- Make sure you have these files in the same folder (or change the hardcoded paths in
clippy2-oh.py):character_idle.png(orcharacter_idle.gif)character_busy.png(orcharacter_busy.gif)tray_icon.png(a little 32x32 guy for the system tray)
- Make sure you have these files in the same folder (or change the hardcoded paths in
It's super easy:
- Run the Script (Windowless Mode!):
# On Windows/Mac, 'pythonw clippy2-oh.py' often prevents an extra console window! pythonw clippy2-oh.py # If 'pythonw' isn't found or you want the console, just use 'python': # python clippy2-oh.py
- Say Hello! I should pop up on your screen (probably bottom-right, classic spot!). If you missed API config, I'll probably show a warning bubble.
- Click Me! The input box appears below me. Let's chat!
- Ask Away! Type your question or prompt, press
Enteror clickSend. - Thinking... I'll change my look (
busy) and show a "Thinking..." bubble while I consult the AI (my new brain!). 🤔 - Voilà! My (or the AI's) response appears in the speech bubble! Hopefully helpful!
- Move Me Around! Click and drag me anywhere you like. I'm flexible!
- Use the Tray! Remember the system tray icon 📎 for hiding, showing, or quitting. Easy peasy.
Want to tinker with Clippy 2.Oh? Go for it!
- Appearance: Swap out
character_idle.png/.gif,character_busy.png/.gif, andtray_icon.pngwith your own images! (CheckCHARACTER_WIDTH/HEIGHTin the script for size hints). Maybe give me a party hat? - Personality: Edit the
SYSTEM_PROMPTvariable near the top ofclippy2-oh.py. This is where you tell the AI how to act! Make me sassy, serious, or super-duper helpful! ✨ - AI Brain: Change
OPENAI_MODELandOPENAI_API_BASE(andOPENAI_API_KEYif needed) in your.envfile to try different AI models or providers. Experiment with my intelligence! - Sizes & Colors: Adjust constants like
BUBBLE_WIDTH,BUBBLE_FILL_COLOR, etc., at the beginning ofclippy2-oh.py. Match your desktop theme! - History Limit: Just FYI, I only remember the last
MAX_HISTORY_MESSAGES(default: 10) messages between us. My memory isn't infinite... yet! - Look & Feel: All the windows are frameless and transparent for that sleek, modern overlay vibe. 2.Oh style!
It looks like you're trying to improve the code! That's the 2.Oh spirit! Feel free to fork this repository, make your awesome changes, and submit a pull request. I'd love to see what brilliant ideas you have! ✨
📎 Happy chatting! Let me know if Clippy 2.Oh can assist you!
* Results may vary. Annoyance levels not guaranteed to be lower than original Microsoft Clippy, but hey, I'm trying! Use with caution and a sense of humor.