您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
修改 AI Studio 的风格像是聊天,支持深浅色模式。
// ==UserScript== // @name AI Studio - 聊天风格 // @name:en AI Studio - Chat Style // @namespace http://tampermonkey.net/ // @version 1.0 // @description 修改 AI Studio 的风格像是聊天,支持深浅色模式。 // @description:en Modifying AI Studio's style is like chatting, supporting both light and dark modes. // @author fleey // @match https://aistudio.google.com/* // @grant none // @run-at document-idle // @license MIT // ==/UserScript== (function () { 'use strict'; // Telegram 风格配色方案 const telegramColors = { primary: '#0088cc', primaryDark: '#006ba6', secondary: '#40a7e3', background: '#ffffff', backgroundDark: '#17212b', surface: '#f5f5f5', surfaceDark: '#242f3d', text: '#000000', textDark: '#ffffff', textSecondary: '#707579', textSecondaryDark: '#aaaaaa', border: '#e1e5e9', borderDark: '#3e546a', userBubble: '#0088cc', userBubbleDark: '#2b5278', botBubble: '#ffffff', botBubbleDark: '#182533', shadow: 'rgba(0, 0, 0, 0.1)', shadowDark: 'rgba(0, 0, 0, 0.3)' }; // 检测系统主题 const isDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches; // 创建 CSS 样式 function createTelegramStyles() { const colors = isDarkMode ? { bg: telegramColors.backgroundDark, surface: telegramColors.surfaceDark, text: telegramColors.textDark, textSecondary: telegramColors.textSecondaryDark, border: telegramColors.borderDark, userBubble: telegramColors.userBubbleDark, botBubble: telegramColors.botBubbleDark, shadow: telegramColors.shadowDark } : { bg: telegramColors.background, surface: telegramColors.surface, text: telegramColors.text, textSecondary: telegramColors.textSecondary, border: telegramColors.border, userBubble: telegramColors.userBubble, botBubble: telegramColors.botBubble, shadow: telegramColors.shadow }; return ` /* 全局样式重置 */ * { box-sizing: border-box; } .chat-container { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif !important; color: ${colors.text} !important; } .chat-view-container { margin: 0 auto !important; position: relative !important; } .chat-container[_ngcontent-ng-c2385228922] .chat-view-container[_ngcontent-ng-c2385228922]:not(.zero-state):not(.side-by-side) { padding-top: 0 !important; } /* 聊天会话容器 */ ms-chat-session { background: transparent !important; position: relative !important; z-index: 1 !important; } /* 滚动容器 */ ms-autoscroll-container { background: transparent !important; padding: 0 !important; } /* 聊天轮次容器 - Telegram 风格 */ .chat-turn-container { margin: 16px 0 !important; padding: 0 !important; background: transparent !important; border: none !important; border-radius: 0 !important; box-shadow: none !important; } /* 用户消息样式 - 类似 Telegram 右侧气泡 */ .chat-turn-container.user { display: flex !important; justify-content: flex-end !important; margin-left: 60px !important; } .user-prompt-container { background: ${colors.userBubble} !important; color: white !important; border-radius: 18px 18px 4px 18px !important; padding: 12px 16px !important; max-width: 70% !important; box-shadow: 0 1px 2px ${colors.shadow} !important; position: relative !important; margin-left: auto !important; } .user-prompt-container .turn-content { margin: 0 !important; padding: 0 !important; } .user-prompt-container .author-label { display: none !important; } .user-prompt-container .cmark-node { color: white !important; margin: 0 !important; } .user-prompt-container p { margin: 0 !important; line-height: 1.6 !important; } /* AI 回复样式 - 类似 Telegram 左侧气泡 */ .chat-turn-container.model { display: flex !important; justify-content: flex-start !important; margin-right: 60px !important; } .model-prompt-container { background: ${colors.botBubble} !important; color: ${colors.text} !important; border: 1px solid ${colors.border} !important; border-radius: 18px 18px 18px 4px !important; padding: 12px 16px !important; max-width: 70% !important; box-shadow: 0 1px 2px ${colors.shadow} !important; position: relative !important; } .model-prompt-container .turn-content { margin: 0 !important; padding: 0 !important; } .model-prompt-container .author-label { display: none !important; } .model-prompt-container .cmark-node { color: ${colors.text} !important; margin: 0 !important; } .model-prompt-container p { margin: 0 0 8px 0 !important; line-height: 1.6 !important; } .model-prompt-container p:last-child { margin-bottom: 0 !important; } /* 思考过程样式优化 */ ms-thought-chunk { margin: 8px 0 !important; } .mat-accordion { background: transparent !important; box-shadow: none !important; } .mat-expansion-panel { background: rgba(${isDarkMode ? '255,255,255' : '0,0,0'}, 0.05) !important; border-radius: 12px !important; box-shadow: none !important; margin: 4px 0 !important; border: 1px solid ${colors.border} !important; } .container .mat-expansion-panel { background: rgba(${isDarkMode ? '255,255,255' : '0,0,0'}, 0.05) !important; border-radius: 12px !important; box-shadow: none !important; margin: 0 0 !important; border: 1px solid ${colors.border} !important; } .mat-expansion-panel-header { padding: 8px 12px !important; height: auto !important; border-radius: 12px !important; } .thinking-progress-icon { width: 16px !important; height: 16px !important; margin-right: 6px !important; } .experimental-label { background: ${telegramColors.primary} !important; color: white !important; padding: 2px 6px !important; border-radius: 10px !important; font-size: 10px !important; margin-left: 6px !important; } .chat-turn-container:hover .actions-container { opacity: 1 !important; } .ms-button-borderless:hover { background: ${colors.border} !important; } .ms-button-icon-symbol { font-size: 16px !important; color: ${colors.textSecondary} !important; } /* 底部信息样式 */ .turn-footer { display: flex !important; align-items: center !important; justify-content: flex-end !important; margin-top: 8px !important; gap: 8px !important; padding: 4px 8px !important; opacity: 0.7 !important; transition: opacity 0.2s ease !important; } .turn-footer:hover { opacity: 1 !important; } .model-run-time-pill { background: transparent !important; color: ${colors.textSecondary} !important; font-size: 11px !important; padding: 2px 6px !important; border-radius: 10px !important; border: none !important; } .response-feedback-button { background: transparent !important; border: none !important; border-radius: 50% !important; width: 28px !important; height: 28px !important; padding: 0 !important; opacity: 0.6 !important; transition: all 0.2s ease !important; display: flex !important; align-items: center !important; justify-content: center !important; } .response-feedback-button:hover { opacity: 1 !important; background: ${colors.border} !important; transform: scale(1.1) !important; } .response-feedback-button .ms-button-icon-symbol { font-size: 16px !important; color: ${colors.textSecondary} !important; } .response-feedback-button:hover .ms-button-icon-symbol { color: ${colors.text} !important; } /* 代码块样式优化 */ pre, code { border-radius: 12px !important; border: none !important; } pre { padding: 16px !important; margin: 12px 0 !important; overflow-x: auto !important; font-family: 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New', monospace !important; line-height: 1.5 !important; } code { padding: 3px 6px !important; font-family: 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New', monospace !important; font-size: 0.9em !important; } /* 内联代码样式优化 */ .inline-code { background: ${isDarkMode ? 'rgba(255,255,255,0.12)' : 'rgba(0,0,0,0.08)'} !important; color: ${isDarkMode ? '#e8eaed' : '#1a73e8'} !important; border-radius: 6px !important; padding: 2px 6px !important; font-family: 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New', monospace !important; font-size: 0.9em !important; border: none !important; box-shadow: none !important; } /* 滚动条样式 */ ::-webkit-scrollbar { width: 6px !important; } ::-webkit-scrollbar-track { background: transparent !important; } ::-webkit-scrollbar-thumb { background: ${colors.border} !important; border-radius: 3px !important; } ::-webkit-scrollbar-thumb:hover { background: ${colors.textSecondary} !important; } /* 响应式设计 */ @media (max-width: 768px) { .chat-view-container { padding: 12px !important; } .user-prompt-container, .model-prompt-container { max-width: 85% !important; } .chat-turn-container.user { margin-left: 20px !important; } .chat-turn-container.model { margin-right: 20px !important; } } /* 动画效果 */ .chat-turn-container { animation: slideIn 0.3s ease-out !important; } @keyframes slideIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } /* 链接样式 */ a { color: ${telegramColors.primary} !important; text-decoration: none !important; } a:hover { text-decoration: underline !important; } /* 选择文本样式 */ ::selection { background: ${telegramColors.secondary} !important; color: white !important; } .prompt-input-wrapper { background: transparent !important; overflow: hidden !important; transition: all 0.2s ease !important; } .prompt-input-wrapper-container { display: flex !important; align-items: flex-end !important; background: ${colors.bg} !important; border-radius: 24px !important; padding: 8px 12px !important; } /* 文本输入区域 */ .text-wrapper { flex: 1 !important; padding: 0px 12px !important; margin-right: 8px !important; } ms-code-block { margin: 10px 0 !important! } .text-input-wrapper { background: transparent !important; } .textarea { background: transparent !important; border: none !important; outline: none !important; resize: none !important; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif !important; font-size: 14px !important; line-height: 1.6 !important; color: ${colors.text} !important; padding: 8px 0 !important; } .textarea::placeholder { color: ${colors.textSecondary} !important; opacity: 0.7 !important; } /* 按钮区域简化 */ .button-wrapper { display: flex !important; align-items: center !important; gap: 4px !important; } /* 添加按钮简化 */ ms-add-chunk-menu button { background: transparent !important; border: none !important; border-radius: 50% !important; width: 36px !important; height: 36px !important; display: flex !important; align-items: center !important; justify-content: center !important; transition: all 0.2s ease !important; color: ${colors.textSecondary} !important; } ms-add-chunk-menu button:hover { background: ${colors.border} !important; color: ${colors.text} !important; } ms-add-chunk-menu .ms-button-icon-symbol { font-size: 20px !important; } /* 运行按钮优化 */ .run-button { background: ${telegramColors.primary} !important; border: none !important; border-radius: 20px !important; padding: 8px 16px !important; color: white !important; font-weight: 500 !important; transition: all 0.2s ease !important; min-width: 60px !important; height: 36px !important; } .run-button:not(:disabled):hover { background: ${telegramColors.primaryDark} !important; transform: translateY(-1px) !important; box-shadow: 0 2px 8px rgba(0, 136, 204, 0.3) !important; } .run-button:disabled { background: ${colors.border} !important; color: ${colors.textSecondary} !important; cursor: not-allowed !important; } .run-button .inner { display: flex !important; align-items: center !important; gap: 6px !important; } .run-button .label { font-size: 14px !important; } .run-button .command { display: flex !important; align-items: center !important; gap: 2px !important; opacity: 0.8 !important; } .run-button .command .mat-icon { font-size: 14px !important; width: 14px !important; height: 14px !important; } /* 移除不必要的动画和高亮效果 */ .run-button .highlight { display: none !important; } /* 附件区域简化 */ .attachment-wrapper { margin-top: 4px !important; } /* 工具提示简化 */ .mat-mdc-tooltip { background: ${colors.surfaceDark} !important; color: ${colors.textDark} !important; font-size: 12px !important; border-radius: 6px !important; padding: 6px 8px !important; } `; } // 应用样式 function applyTelegramTheme() { // 移除现有的样式 const existingStyle = document.getElementById('telegram-theme'); if (existingStyle) { existingStyle.remove(); } // 创建新的样式元素 const style = document.createElement('style'); style.id = 'telegram-theme'; style.textContent = createTelegramStyles(); document.head.appendChild(style); } // 监听主题变化 function setupThemeListener() { if (window.matchMedia) { const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)'); // 使用现代的 addEventListener 替代废弃的 addListener mediaQuery.addEventListener('change', () => { setTimeout(applyTelegramTheme, 100); }); } } // 初始化函数 function init() { // 等待页面加载完成 if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); return; } // 应用主题 applyTelegramTheme(); // 设置主题监听器 setupThemeListener(); // 监听页面变化,重新应用样式 const observer = new MutationObserver(() => { setTimeout(applyTelegramTheme, 100); }); observer.observe(document.body, { childList: true, subtree: true }); console.log('🎨 AI Studio Telegram 主题已应用 - ai_studio_enhancer_v4.js:608'); } // 启动脚本 init(); })();