Spaces:
Running
Running
| # Contributing to Virtual Kimi | |
| Thank you for your interest in contributing to Virtual Kimi! This document provides guidelines and information for contributors. | |
| ## Table of Contents | |
| - [Code of Conduct](#code-of-conduct) | |
| - [Getting Started](#getting-started) | |
| - [Development Setup](#development-setup) | |
| - [Contribution Guidelines](#contribution-guidelines) | |
| - [Project Structure](#project-structure) | |
| - [Coding Standards](#coding-standards) | |
| - [Testing](#testing) | |
| - [Pull Request Process](#pull-request-process) | |
| - [Issue Reporting](#issue-reporting) | |
| ## Code of Conduct | |
| We are committed to providing a welcoming and inclusive environment for all contributors. Please be respectful and constructive in all interactions. | |
| ### Expected Behavior | |
| - Use welcoming and inclusive language | |
| - Be respectful of differing viewpoints and experiences | |
| - Gracefully accept constructive criticism | |
| - Focus on what is best for the community | |
| - Show empathy towards other community members | |
| ## Getting Started | |
| ### Prerequisites | |
| - Modern web browser (Chrome, Edge, Firefox recommended) | |
| - Basic knowledge of JavaScript, HTML, and CSS | |
| - Git for version control | |
| - Text editor or IDE of your choice | |
| ### First Contribution | |
| 1. Fork the repository | |
| 2. Clone your fork locally | |
| 3. Create a new branch for your feature/fix | |
| 4. Make your changes | |
| 5. Test thoroughly | |
| 6. Submit a pull request | |
| ## Development Setup | |
| ### Local Environment | |
| ```bash | |
| # Clone the repository | |
| git clone https://github.com/virtualkimi/virtual-kimi.git | |
| cd virtual-kimi | |
| # Open in browser | |
| # Option 1: Direct file access | |
| open index.html | |
| # Option 2: Local server (recommended) | |
| python -m http.server 8000 | |
| # Navigate to http://localhost:8000 | |
| ``` | |
| ### Development Tools | |
| - **Browser DevTools**: For debugging and testing | |
| - **Live Server**: For hot reload during development | |
| - **Lighthouse**: For performance auditing | |
| - **Accessibility tools**: For ensuring inclusive design | |
| ## Contribution Guidelines | |
| ### Types of Contributions | |
| - **Bug fixes**: Resolve existing issues | |
| - **Feature additions**: New functionality | |
| - **Performance improvements**: Optimization and efficiency | |
| - **Documentation**: Improve guides and comments | |
| - **Localization**: Translation and internationalization | |
| - **Plugin development**: Extend functionality | |
| - **Testing**: Add or improve test coverage | |
| ### Before You Start | |
| 1. Check existing issues and pull requests | |
| 2. Open an issue to discuss major changes | |
| 3. Ensure your idea aligns with the project goals | |
| 4. Consider the impact on existing functionality | |
| ## Project Structure | |
| ### Core Files | |
| ``` | |
| βββ index.html # Main application | |
| βββ kimi-script.js # Primary initialization | |
| βββ kimi-database.js # Data persistence | |
| βββ kimi-llm-manager.js # AI integration | |
| βββ kimi-emotion-system.js # Emotion analysis | |
| βββ kimi-memory-system.js # Memory management | |
| βββ kimi-voices.js # Speech synthesis | |
| βββ kimi-appearance.js # Theme management | |
| βββ kimi-utils.js # Utility functions | |
| ``` | |
| ### Module Dependencies | |
| - **Core System**: Database β Security β Config | |
| - **AI System**: LLM Manager β Emotion System β Memory System | |
| - **UI System**: Appearance β Utils β Module functions | |
| - **Localization**: i18n β All user-facing modules | |
| ### Adding New Features | |
| #### New Memory Categories | |
| ```javascript | |
| // In kimi-memory-system.js | |
| const newCategory = { | |
| name: "custom_category", | |
| icon: "fas fa-custom-icon", | |
| keywords: ["keyword1", "keyword2"], | |
| confidence: 0.7 | |
| }; | |
| // Add to MEMORY_CATEGORIES constant | |
| ``` | |
| #### New Themes | |
| ```javascript | |
| // Create plugin in kimi-plugins/custom-theme/ | |
| // manifest.json | |
| { | |
| "name": "Custom Theme", | |
| "version": "1.0.0", | |
| "type": "theme", | |
| "style": "theme.css", | |
| "enabled": true | |
| } | |
| ``` | |
| #### New AI Models | |
| ```javascript | |
| // In kimi-llm-manager.js | |
| "custom/model-id": { | |
| name: "Custom Model", | |
| provider: "Custom Provider", | |
| type: "openrouter", | |
| contextWindow: 8000, | |
| pricing: { input: 0.1, output: 0.2 }, | |
| strengths: ["Custom", "Feature"] | |
| } | |
| ``` | |
| ## Coding Standards | |
| ### JavaScript Style | |
| - Use ES6+ features and modern syntax | |
| - Prefer `const` and `let` over `var` | |
| - Use meaningful variable and function names in English | |
| - Follow camelCase for variables and functions | |
| - Use PascalCase for classes and constructors | |
| ### Code Organization | |
| - Keep functions focused and single-purpose | |
| - Use async/await for asynchronous operations | |
| - Handle errors gracefully with try/catch blocks | |
| - Add JSDoc comments for complex functions | |
| - Group related functionality in modules | |
| ### Example Code Style | |
| ```javascript | |
| /** | |
| * Analyzes user input for emotional content and updates personality traits | |
| * @param {string} text - User input text | |
| * @param {string} emotion - Detected emotion type | |
| * @returns {Promise<Object>} Updated personality traits | |
| */ | |
| async function updatePersonalityFromEmotion(text, emotion) { | |
| try { | |
| // Validate input | |
| if (!text || typeof text !== "string") { | |
| throw new Error("Invalid input text"); | |
| } | |
| // Process emotion | |
| const traits = await this.processEmotionalContent(text, emotion); | |
| // Update database | |
| await this.db.setPersonalityBatch(traits); | |
| return traits; | |
| } catch (error) { | |
| console.error("Error updating personality:", error); | |
| throw error; | |
| } | |
| } | |
| ``` | |
| ### CSS Guidelines | |
| - Use CSS custom properties (variables) for theming | |
| - Follow BEM methodology for class naming | |
| - Ensure responsive design principles | |
| - Maintain accessibility standards | |
| - Use semantic HTML elements | |
| ### HTML Standards | |
| - Use semantic HTML5 elements | |
| - Include proper ARIA labels for accessibility | |
| - Ensure proper heading hierarchy | |
| - Add meaningful alt text for images | |
| - Validate markup regularly | |
| ## Testing | |
| ### Manual Testing Checklist | |
| - [ ] Application loads without errors | |
| - [ ] All core features function correctly | |
| - [ ] Voice recognition works (in supported browsers) | |
| - [ ] Memory system stores and retrieves data | |
| - [ ] Theme switching works properly | |
| - [ ] Responsive design on mobile devices | |
| - [ ] Cross-browser compatibility | |
| - [ ] Accessibility with keyboard navigation | |
| ### Browser Testing | |
| Test in the following browsers: | |
| - Chrome (latest 2 versions) | |
| - Edge (latest 2 versions) | |
| - Firefox (latest 2 versions) | |
| - Safari (latest version, if possible) | |
| ### Performance Testing | |
| - Check loading times | |
| - Monitor memory usage | |
| - Test with large conversation histories | |
| - Verify smooth animations | |
| - Ensure responsive UI interactions | |
| ## Pull Request Process | |
| ### Before Submitting | |
| 1. **Test thoroughly**: Ensure your changes work as expected | |
| 2. **Check compatibility**: Test across different browsers | |
| 3. **Update documentation**: Modify README.md if needed | |
| 4. **Clean up code**: Remove debugging code and comments | |
| 5. **Commit messages**: Use clear, descriptive commit messages | |
| ### PR Template | |
| ```markdown | |
| ## Description | |
| Brief description of changes made. | |
| ## Type of Change | |
| - [ ] Bug fix | |
| - [ ] New feature | |
| - [ ] Performance improvement | |
| - [ ] Documentation update | |
| - [ ] Other: **\_** | |
| ## Testing | |
| - [ ] Tested in Chrome | |
| - [ ] Tested in Edge | |
| - [ ] Tested in Firefox | |
| - [ ] Tested on mobile | |
| - [ ] No errors in console | |
| ## Screenshots (if applicable) | |
| Add screenshots of UI changes. | |
| ## Additional Notes | |
| Any additional context or considerations. | |
| ``` | |
| ### Review Process | |
| 1. Maintainers review code for quality and functionality | |
| 2. Feedback provided through PR comments | |
| 3. Make requested changes and push updates | |
| 4. Final approval and merge | |
| ## Issue Reporting | |
| ### Bug Reports | |
| Include the following information: | |
| - Browser and version | |
| - Operating system | |
| - Steps to reproduce | |
| - Expected behavior | |
| - Actual behavior | |
| - Console errors (if any) | |
| - Screenshots (if applicable) | |
| ### Feature Requests | |
| - Clear description of the feature | |
| - Use case and benefits | |
| - Possible implementation approach | |
| - Any relevant examples or mockups | |
| ### Issue Labels | |
| - `bug`: Something isn't working | |
| - `enhancement`: New feature or improvement | |
| - `documentation`: Documentation updates | |
| - `good first issue`: Good for newcomers | |
| - `help wanted`: Community assistance needed | |
| - `plugin`: Related to plugin system | |
| - `accessibility`: Accessibility improvements | |
| ## Development Tips | |
| ### Performance Optimization | |
| - Minimize DOM manipulations | |
| - Use event delegation for dynamic content | |
| - Implement proper cleanup for event listeners | |
| - Optimize database queries with batch operations | |
| ### Accessibility | |
| - Test with keyboard navigation | |
| - Verify screen reader compatibility | |
| - Ensure sufficient color contrast | |
| - Add appropriate ARIA labels | |
| ## Community | |
| ### Getting Help | |
| - Open an issue for technical questions | |
| - Check existing documentation first | |
| - Be specific about your problem or question | |
| ### Communication | |
| - Be respectful and professional | |
| - Provide context and details | |
| - Be patient with response times | |
| - Help others when possible | |
| Thank you for contributing to Virtual Kimi! Your efforts help create a better AI companion experience for everyone. | |