command-center-open-chat.png

copilot-chat-view-recursion.png

Credit: https://code.visualstudio.com/docs/copilot/getting-started

AI 介绍

从0开始学习写代码,优先推荐 Github Copilot(Research: quantifying GitHub Copilot’s impact on developer productivity and happiness 研究:量化 GitHub Copilot 对开发人员生产力和幸福感的影响 ) / DeepSeek(提供思考过程,这是其他AI所没有或提供不全面的);

Github Copilot 介绍

Microsoft Visual Studio Code - Copilot 使用实践.jpg

GitHub Copilot是GitHub和OpenAI合作开发的一个人工智能工具,用户在使用Visual Studio Code、Microsoft Visual Studio、Vim、Cursor或JetBrains集成开发环境时可以通过GitHub Copilot自动补全代码。GitHub于2021年6月29日对外公开该软件,GitHub Copilot于技术预览阶段主要面向Python、JavaScript、TypeScript、Ruby和Go等编程语言。 Credit 维基百科

适合所有人的 AI 编辑器https://github.com/copilot/
功能介绍https://github.com/features/copilot
定价:参阅 https://github.com/features/copilot 定价部分
地域限制:无;无封号风险;
在 VS Code 上内嵌式使用 copilot:为 VS Code 安装 GitHub Copilot,然后登陆你的GitHub账号并授权;参考手册 https://code.visualstudio.com/docs/copilot/getting-started “要在 VS Code 中开始使用 GitHub Copilot,您无需执行任何特殊作。当您在编辑器中键入代码时,Copilot 会自动在编辑器中为您提供代码建议,以帮助您更高效地编码。”

(Research: quantifying GitHub Copilot’s impact on developer productivity and happiness 研究:量化 GitHub Copilot 对开发人员生产力和幸福感的影响 );

DeepSeek 介绍

DeepSeek-R1是深度求索(DeepSeek)于2025年1月20日发布的人工智能大型语言模型,专门适用于数学、编码和逻辑等任务,性能对标OpenAI o1

可以在本地部署(如 DeepSeek-R1及后续可能推出的开源模型),也可以直接使用它们的服务,包括但不限于App,网页等;

AppStore或应用商城搜索:DeepSeek;
官网https://www.deepseek.com/ 网页版https://chat.deepseek.com/
Githubhttps://github.com/deepseek-ai 提供开源模型,可在本地部署
定价https://api-docs.deepseek.com/zh-cn/quick_start/pricing

特性:可以提供联网搜索以获得最新信息并对其进行概括总结,可以为用户提供思考过程(Think);

Google Gemini

Gemini(前称:Bard)是由Google开发的生成式人工智能聊天机器人。它基于同名的Gemini系列大型语言模型。是应对OpenAI公司开发的ChatGPT聊天机器人的崛起而开发的。其在2023年3月以有限的规模推出,2023年5月扩展到更多个国家。2024年2月8日更名为Gemini。

最初基于LaMDA系列大型语言模型(LLM),后来基于PaLM2(LLM),现基于Gemini系列大型语言模型。

官网https://gemini.google.com/
地域限制https://support.google.com/gemini/answer/13575153?hl=en 大陆用户需挂代理访问且限制较多,封号风险较小;

ChatGPT

OpenAI,是一个美国人工智能研究实验室,由非营利组织OpenAI Inc,和其营利组织子公司OpenAI LP所组成。OpenAI进行AI研究的目的是促进和发展友好的人工智能,使人类整体受益。OpenAI系统运行在微软基于Azure的超级计算平台上。

ChatGPT,全称聊天生成预训练转换器(英语:Chat Generative Pre-trained Transformer),是OpenAI开发的人工智能聊天机器人程序,于2022年12月推出。该程序使用基于GPT-3.5、GPT-4、GPT-4o架构的大型语言模型并以强化学习训练。ChatGPT目前仍以文字方式交互,而除了可以用人类自然对话方式来交互,还可以用于甚为复杂的语言工作,包括自动生成文本、自动问答、自动摘要等多种任务。如:在自动文本生成方面,ChatGPT可以根据输入的文本自动生成类似的文本(剧本、歌曲、企划等),在自动问答方面,ChatGPT可以根据输入的问题自动生成答案。还有编写和调试计算机程序的能力。在推广期间,所有人可以免费注册,并在登录后免费使用ChatGPT与AI机器人对话。 Credit 维基百科

官网https://chatgpt.com/
地域限制https://help.openai.com/en/articles/7947663-chatgpt-supported-countries 大陆用户需挂代理访问且限制较多,可能会封号;
定价https://openai.com/chatgpt/pricing/

Claude

Claude是由Anthropic公司开发的先进人工智能模型,该公司专注于创建安全、可靠且符合人类价值观的人工智能系统。Claude以信息论之父香农的名字命名,旨在成为友善、诚实、无害的人工智能助手,协助完成从自然语言理解到复杂问题解决等一系列任务。

Claude在训练过程中遵循合宪人工智能(Constitutional AI,缩写CAI,相关称呼合宪AI、AI宪法)原则,该方法的主要特征是不以人力识别和筛查有害输出,而是仅提供原则性指导(被形象地称呼为“宪法”),让AI据此自行判断输出的内容是否适宜,从而以自我改进的方式来训练无害的模型。 Credit 维基百科

官网https://www.anthropic.com/claude
地域限制https://www.anthropic.com/supported-countries 大陆用户需挂代理访问且限制较多,可能会封号;
定价https://www.anthropic.com/pricing

向AI提问🙋

“学而不思则罔,思而不学则殆” 《论语·为政》。
“为学患无疑,疑则有进。小疑则小进,大疑则大进。” 陆九渊
“纸上得来终觉浅,绝知此事要躬行。” 陆游《冬夜读书示子聿》

提问 1

Ask :如何向AI提问

DeepSeek 🐳 的回答:

<think>
</think>

向AI提问,可以按照以下步骤进行:

  1. 明确问题:首先,清楚自己想要获得什么信息或解决什么问题。
  2. 使用自然语言:用日常说话的方式表达问题,不需要使用特定的格式。
  3. 提出具体问题:提供足够的细节,让AI能够理解和回答。
  4. 保持耐心:AI可能需要时间来处理和分析问题,尤其是复杂或高级的问题。
  5. 重复或澄清:如果答案不符合预期,可以重新提问或提供更多背景信息。
  6. 使用多种方式提问:可以通过不同的表述方式提出同一个问题,以增加理解的机会。
  7. 利用上下文:在交流过程中,保持对话的连贯性,让AI能够更好地理解和回应。
  8. 评估回答:根据回答的准确性和相关性,对结果进行判断。
  9. 持续改进:根据之前的问题和回答的效果,不断调整提问方式,以提高互动质量。
  10. 遵守规范:注意数据隐私和道德伦理,避免提出违反规定的问题。

通过以上步骤,可以有效地与AI进行交流,并获得所需的信息或帮助。

Copilot 🤖 的回答

向AI提问时,可以使用以下方法来提高问题的清晰度和准确性:

  1. 明确具体问题:确保问题具体明确。例如,不要问“如何编程”,而是问“如何在JavaScript中实现数组去重”。
  2. 提供上下文:如果问题涉及某个特定的代码段或项目,提供相关的代码或描述有助于AI理解问题的背景。
  3. 分步骤提问:如果问题复杂,可以将其分解为几个小问题,逐步提问。
  4. 使用示例:提供示例代码或场景有助于AI更好地理解和回答问题。
  5. 保持简洁:简洁明了的提问通常更容易获得准确的回答。

例如:

  • 不明确的问题:如何修复代码错误?
  • 明确的问题:在Python中,为什么我在调用函数foo()时会收到TypeError错误?

以下是一些示例:

示例1:技术问题
不明确:如何使用JavaScript?
明确:如何在JavaScript中创建一个函数来计算数组中所有元素的和?

示例2:代码调试
不明确:我的代码有问题,如何修复?
明确:以下是我的JavaScript代码,为什么sum函数返回NaN

function sum(arr) {
    let total = 0;
    for (let i = 0; i < arr.length; i++) {
        total += arr[i];
    }
    return total;
}
console.log(sum([1, 2, 'three', 4]));

示例3:项目建议
不明确:如何优化我的项目?
明确:我有一个React项目,在渲染大量数据时性能较差,有什么优化建议?

通过这些方法,你可以更有效地向AI提问,并获得更准确的回答。

chatGPT 的回答:

向AI提问时,可以根据你的需求明确并简洁地表达问题。这里有几个小贴士:

  1. 明确表达问题:尽量清楚地描述你的问题是什么,避免含糊不清。比如,直接问“如何做某事?”或“某个概念的定义是什么?”
  2. 提供背景信息:如果问题涉及到某些特定情境或需要更多上下文,可以提供相关背景信息,这样AI能给出更准确的回答。
  3. 逐步提问:如果问题很复杂,可以分解成几个小问题逐步提问,帮助AI更好地理解和回答。
  4. 尝试不同角度:如果不确定问题的答案,可以从不同角度提问,或者在得到一个回答后再根据答案提问更多问题。

比如你想了解某个技术问题,可以直接说:“能帮我解释一下这个技术是怎么运作的吗?”或者“这个技术和其他类似技术有什么区别?”

你有其他具体问题吗?我可以帮忙解答!

提问 2

Ask :网页上有弹窗广告,一不小心点击页面就会弹窗,写一个js脚本使得该弹窗失效

DeepSeek 🐳 的回答:

<think>
嗯,我现在遇到了一个问题,就是网页上有一些弹窗广告,如果我不小心点一下页面,弹窗就会出来。我觉得这个挺烦的,所以想找一种方法来让这些弹窗失效。

首先,我需要了解弹窗广告通常是怎么产生的。一般来说,这种广告可能通过 JavaScript 代码触发,当页面加载后,会执行一些脚本来显示弹窗。这可能涉及到定位(position)属性,或是固定元素(fixed elements)的使用,让弹窗总是显示在视口中。

那我该怎么阻止这些弹窗呢?我的第一个想法是修改 CSS,可能可以把弹窗的 display 强制设为 none,这样它就不会显示出来了。但是我不确定具体的 CSS 属性是什么,所以需要进一步研究。

接下来,我应该检查是否有 JavaScript 被调用来控制弹窗。比如,可能会有这样的代码:

document.addEventListener('DOMContentLoaded', function() {
 var popup = document.createElement('div');
 popup.id = 'popup';
 popup.style.position = 'fixed';
 popup.style.top = '50%';
 popup.style.left = '50%';
 popup.style.transform = 'translate(-50%, -50%)';
 document.body.appendChild(popup);
});

如果有这样的代码,弹窗就会被固定在页面中。这时候,我需要找到这些脚本并进行干预。我可以在 JavaScript 中添加事件监听器,或者修改元素的属性来禁用弹窗。

另外,有些广告可能会通过动态创建 iframe 或其他元素来显示内容,这时候我还需要处理这些情况。比如:

iframes = document.querySelectorAll('iframe');
iframes.forEach(iframe => {
 if (iframe.style.position === 'fixed') {
 iframe.style.display = 'none';
 }
});

不过这只是我的猜测,具体实现可能会有所不同。

还有一个方法是使用用户脚本,如 GreaseMonkey 来修改网页的行为,但这需要用户安装脚本,不太方便。所以更好的办法还是通过原生 JavaScript 来解决。

我还考虑过是否可以利用 CSS 进行选择性排除,比如用高层级的选择器来匹配弹窗元素,并设置 display: none!但这样可能会影响到页面其他部分,所以需要谨慎操作。

或者,我可以在页面加载前就修改弹窗元素的属性,比如将它们的 display 设为 none,或者删除它们。这可能通过检测特定的类名或 ID 来实现。

还有,我是否可以利用 JavaScript 的事件机制来阻止点击事件的触发?比如,如果弹窗是由链接或按钮引起的,我可以添加 event.preventDefault() 来阻止默认行为。但这取决于具体的触发方式。

另外,可能需要考虑到不同浏览器中的差异,比如 Chrome、Firefox 等在处理 JavaScript 和 CSS 的方式上是否有所不同,这会影响我的脚本是否有效。

我觉得最直接的方法是通过 CSS 来隐藏弹窗元素。比如,如果弹窗是一个 div 元素,并且有特定的类名或 ID,我可以选择性地修改其 display 属性。例如:

document.addEventListener('DOMContentLoaded', function() {
 document.getElementById('popup').style.display = 'none';
});

但是如果弹窗是通过动态生成的,可能需要使用 MutationObserver 来跟踪新添加的元素,并立即隐藏它们。

或者,我可以使用 CSS 选择器来匹配所有固定的弹窗,不管它们的 ID 或类名。比如:

document.addEventListener('DOMContentLoaded', function() {
 document.querySelectorAll('div[style="position: fixed"]').forEach(el => el.style.display = 'none');
});

这可能是一个更简洁的方式,因为它会自动找到所有固定定位的元素,并将其 display 设为 none。

不过,我需要确保这个脚本只应用于弹窗广告,不会影响页面其他部分。因此,选择一个足够具体的 CSS 选择器是关键。

总结一下,我的思路是:

  1. 检查页面中的 JavaScript 代码,看看是否有创建弹窗元素的方法。
  2. 修改弹窗元素的 CSS 属性,如 display: none 或 position: static,以阻止其显示。
  3. 使用 MutationObserver 跟踪新增的弹窗元素,并立即隐藏它们。
  4. 考虑通过事件监听器来阻止点击或其他用户交互导致的弹窗显示。

现在,我需要将这些思路转化为具体的 JavaScript 代码,测试一下,看看是否有效。

在写代码之前,我还需要考虑浏览器缓存的问题,这个脚本是否会被缓存起来,并一直运行。另外,还要确保这个脚本不会产生任何副作用,比如影响到页面正常功能。

最后,如果这些方法都不奏效,可能需要更高级的技术,如修改 iframe 内容或破坏弹窗显示逻辑。但作为初次解决方案,先尝试通过 CSS 或 JavaScript 隐藏弹窗应该是足够的。
</think>

为了阻止网页上的弹窗广告显示,以下步骤将指导你编写一个 JavaScript 脚本:

步骤 1:检查弹窗来源

首先,确认弹窗广告是如何在页面中生成的。通常,这些广告通过 JavaScript 调用创建,并使用 CSS 定位(如 position: fixed)来固定显示。

步骤 2:修改 CSS 导致弹窗隐藏

你可以编写一个 JavaScript 脚本,修改弹窗元素的 CSS 属性,使其无法显示。以下是一个示例:

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 查找所有固定定位的弹窗,并将它们的 display 设置为 none
    document.querySelectorAll('[style="position: fixed"]').forEach(popup => {
        popup.style.display = 'none';
    });
});
</script>

步骤 3:选择性操作

为了确保只隐藏弹窗广告而不影响页面其他部分,可以使用更具体的 CSS 选择器。例如,针对特定的类或 ID:

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 隐藏特定弹窗元素
    document.getElementById('popupDiv').style.display = 'none';
});
</script>

步骤 4:使用 MutationObserver 跟踪新元素

如果弹窗是动态生成的,可以使用 MutationObserver 来跟踪新增的元素,并立即隐藏它们:

<script>
const observer = new MutationObserver(mutations => {
    mutations.forEach(mutation => {
        Array.from(mutation.addedNodes).forEach(node => {
            if (node.style.position === 'fixed') {
                node.style.display = 'none';
            }
        });
    });
});

observer.observe(document.body, { childList: true });
</script>

步骤 5:事件监听阻止

如果弹窗是通过点击或其他用户交互触发,可以添加事件监听器阻止默认行为:

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 阻止所有的点击事件,适用于由链接或按钮触发的弹窗
    document.querySelectorAll('a, button').forEach(element => {
        element.addEventListener('click', function(e) {
            e.preventDefault();
        });
    });
});
</script>

步骤 6:结合 CSS 和 JavaScript

为了更全面地阻止弹窗,可以同时使用 CSS 隐藏和 JavaScript 进行事件处理:

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 使用 CSS 隐藏所有固定的弹窗元素
    document.querySelectorAll('[style="position: fixed"]').forEach(popup => {
        popup.style.display = 'none';
    });

    // 阻止点击或其他交互导致的弹窗显示
    document.querySelectorAll('a, button').forEach(element => {
        element.addEventListener('click', function(e) {
            e.preventDefault();
        });
    });
});
</script>

步骤 7:测试脚本

在实际应用中,建议先在浏览器上测试你的 JavaScript 脚本,确保它不会破坏网页的正常功能。你可以使用浏览器的开发者工具来调试和验证弹窗是否被成功隐藏。

完整示例

以下是一个完整的 JavaScript 脚本,用于阻止所有固定定位的弹窗广告,并阻止点击触发:

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 隐藏所有固定的弹窗元素
    document.querySelectorAll('[style="position: fixed"]').forEach(popup => {
        popup.style.display = 'none';
    });

    // 阻止点击或其他交互导致的弹窗显示
    document.addEventListener('click', function(event) {
        // 如果点击的是 href 属性存在的元素(如链接)
        if (event.target.hasAttribute('href')) {
            event.preventDefault(); // 阻止默认行为
        }
        // 检查是否是特定按钮或其他需要阻止的元素
        // 可以添加更多条件来限制范围
    });
});
</script>

注意事项

  1. 浏览器兼容性:确保脚本在不同浏览器和版本中有效。
  2. 选择性操作:尽量只修改特定弹窗,而不是影响页面整体功能。
  3. 维护和更新:定期检查并更新脚本,以应对可能的变化。

最终输出

将上述 JavaScript 插入网页的 <head></body> 标签内,即可实现弹窗广告的隐藏。

Copilot 🤖 的回答

// Function to disable popup ads
function disablePopupAds() {
    // Function to remove popup elements
    function removePopupElements() {
        const popupSelectors = ['.popup', '.modal', '.ad', '.advertisement', '#popup', '#modal']; // Add more selectors as needed
        popupSelectors.forEach(selector => {
            const popups = document.querySelectorAll(selector);
            popups.forEach(popup => {
                popup.remove();
            });
        });
    }

    // Remove existing popup elements
    removePopupElements();

    // Observe for new popup elements and remove them
    const observer = new MutationObserver(removePopupElements);
    observer.observe(document.body, { childList: true, subtree: true });

    // Stop event listeners that might trigger popups
    const events = ['click', 'mouseover', 'mouseout', 'mousedown', 'mouseup', 'keydown', 'keyup'];
    events.forEach(eventType => {
        window.addEventListener(eventType, function(event) {
            event.stopPropagation();
        }, true);
    });
}

// Run the function to disable popup ads
disablePopupAds();

chatGPT 的回答

要阻止网页上的弹窗广告,通常可以通过阻止某些特定的弹窗行为来实现。以下是一个简单的 JavaScript 脚本,它尝试禁用弹窗广告:

// 禁用所有的 alert, confirm, prompt 弹窗
window.alert = function() {};
window.confirm = function() {
    return true; // 或者返回 false,视情况而定
};
window.prompt = function() {
    return ''; // 返回空字符串
};

// 禁用 window.open(常用于打开新窗口的弹窗)
window.open = function() {};

// 如果你知道某些弹窗是由特定的元素或事件触发的,可以通过事件监听来阻止这些事件
document.addEventListener('click', function(e) {
    // 比如阻止所有链接的默认行为
    if (e.target.tagName === 'A') {
        e.preventDefault();
    }
}, true);

// 可选: 通过定时器检查并删除可能的广告弹窗元素
setInterval(function() {
    var ads = document.querySelectorAll('.popup, .modal, .ad'); // 替换为你页面中广告的具体类名
    ads.forEach(function(ad) {
        ad.style.display = 'none'; // 隐藏广告元素
        ad.remove(); // 移除广告元素
    });
}, 1000);

解释:

  1. 禁用 alert, confirm, prompt:这些通常用于弹窗广告或提示,重写它们的功能使其失效。
  2. 禁用 window.open:许多广告会通过打开新窗口的方式展示,这段代码会阻止打开新窗口的行为。
  3. 事件监听:监听页面点击事件,并通过 e.preventDefault() 防止点击特定链接或元素的默认行为。
  4. 定时器:每隔一秒检查页面中是否存在广告(你需要根据实际情况调整广告元素的选择器),并将其隐藏或移除。

你可以将这段脚本直接插入到浏览器的开发者控制台中来临时禁用弹窗广告,或者将其嵌入到浏览器扩展或用户脚本中实现长期使用。

需要注意的是,某些广告可能通过其他方式实现弹窗,可能需要调整或补充脚本。

以上。

附注

暂无;

最后修改:2025 年 02 月 19 日 10 : 46 AM