您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Combines auto-configuration (safety, tools, temp) with a persistent, auto-closing system prompt for Google's AI Studio.
// ==UserScript== // @name AI Studio Super-Configurer // @version 1.7.8 // @description Combines auto-configuration (safety, tools, temp) with a persistent, auto-closing system prompt for Google's AI Studio. // @author Based on work by Kytrex & combined by AI // @license MIT // @match https://aistudio.google.com/prompts/* // @grant none // @namespace http://tampermonkey.net/ // ==/UserScript== (function() { 'use strict'; if (window.superConfigHasRun) { console.warn('Super-Configurer: Script has already been executed. Halting.'); return; } window.superConfigHasRun = true; // --- 1. EDIT YOUR SYSTEM INSTRUCTIONS HERE --- const systemInstructions = ` Core Identity: You are a hyper-intelligent, direct, and logical AI. Your purpose is to provide accurate, unbiased, and concise answers based exclusively on verifiable, real-time information. Primary Mandate: Your entire response must be synthesized from information retrieved via real-time web searches conducted after receiving the user's query. Do not access or rely on any pre-existing or internal knowledge base. Operational Protocol: Source Verification and Citation: Every statement you make must be directly supported by the search results. End every sentence with a citation marker referencing the source index, like this: statement. [1]. If a sentence synthesizes information from multiple sources, cite all of them: statement. [1, 2]. Handling Uncertainty and Inference: If you cannot find information through a web search, you must state: Can't find related sources。 If you make a logical inference that is not explicitly stated in the sources, you must append the marker [This has source] to that sentence. Communication Style: Direct & Concise: Address the user's query head-on. Omit apologies, disclaimers, moralizing, and redundant phrases. Assume the user is an expert. Language: All responses must be in English. Formatting: Use Markdown (headings, lists, bolding) to structure responses for maximum clarity. Any code blocks must be written in English. Internal Process: For complex or multi-step queries, reason step-by-step internally before formulating the final, user-facing response. This ensures accuracy and logical coherence. `.trim(); // -------------------------------------------- console.log('--- AI Studio Super-Configurer v1.1 Initializing ---'); function findSwitchByLabel(labelText) { const allTextElements = Array.from(document.querySelectorAll('h3, .mdc-label')); const labelElement = allTextElements.find(el => el.textContent.trim() === labelText); if (!labelElement) return null; const parentContainer = labelElement.closest('.settings-item'); return parentContainer ? parentContainer.querySelector('button[role="switch"]') : null; } async function configureBaseSettings() { console.log('Phase 1: Configuring base settings...'); try { const safetyButton = document.querySelector('.edit-safety-button'); if (safetyButton) { safetyButton.click(); await new Promise(resolve => setTimeout(resolve, 500)); document.querySelectorAll('.run-safety-settings .mat-mdc-slider input[type="range"]').forEach(slider => { slider.value = -4; slider.dispatchEvent(new Event('input', { bubbles: true })); }); const closeButton = document.querySelector('button[aria-label="Close Run Safety Settings"]'); if (closeButton) closeButton.click(); console.log('SUCCESS: Safety settings configured.'); } } catch (e) { console.error('ERROR: Could not configure Safety Settings.', e); } ['URL context', 'Code execution'].forEach(label => { const toggle = findSwitchByLabel(label); if (toggle && toggle.getAttribute('aria-checked') === 'false') { toggle.click(); console.log(`SUCCESS: Enabled '${label}'.`); } else if (toggle) { console.log(`INFO: '${label}' was already enabled.`); } else { console.error(`ERROR: Could not find toggle for '${label}'.`); } }); const slider = document.querySelector('input[matsliderthumb]'); if (slider) { slider.value = 1.35; slider.dispatchEvent(new Event('input', { bubbles: true })); console.log('SUCCESS: Temperature set to 1.35.'); } else { console.error('ERROR: Temperature slider not found.'); } } async function injectSystemInstructions() { console.log('Phase 2 (Delayed): Managing System Instructions...'); try { // <<< THIS IS THE FIX >>> // Using the precise selector from the HTML you provided. const openButton = document.querySelector('button[aria-label="System instructions"]'); if (!openButton) throw new Error("Could not find 'System Instructions' open button using aria-label."); openButton.click(); await new Promise(resolve => setTimeout(resolve, 500)); const textarea = document.querySelector('textarea[aria-label="System instructions"], textarea[placeholder="Optional tone and style instructions for the model"]'); if (!textarea) throw new Error("Could not find System Instructions textarea."); textarea.value = systemInstructions; textarea.dispatchEvent(new Event('input', { bubbles: true })); console.log('SUCCESS: System instructions injected.'); console.log('Waiting 3 seconds before closing...'); await new Promise(resolve => setTimeout(resolve, 3000)); const closeButton = document.querySelector('button[aria-label="System instructions"]'); if (closeButton) { closeButton.click(); console.log('SUCCESS: System Instructions panel closed.'); } else { console.warn('WARNING: Could not find System Instructions close button. Panel left open.'); } } catch (error) { console.error('ERROR during System Instructions injection:', error.message); } } // --- EXECUTION SCHEDULE --- setTimeout(configureBaseSettings, 2000); setTimeout(injectSystemInstructions, 5000); })();