让ChatGPT在中断回答的时候自动输入「请接上文继续」并发送
// ==UserScript==
// @name ChatGPT自动接上文继续
// @namespace http://tampermonkey.net/
// @version 1.3
// @description 让ChatGPT在中断回答的时候自动输入「请接上文继续」并发送
// @author yedsn
// @match https://chat.openai.com/chat*
// @icon https://www.google.com/s2/favicons?sz=64&domain=openai.com
// @grant none
// @license MIT
// ==/UserScript==
// ==UserScript==
// @name ChatGPT自动接上文继续
// @namespace http://tampermonkey.net/
// @version 1.3
// @description 让ChatGPT在中断回答的时候自动输入「请接上文继续」并发送
// @author yedsn
// @match https://chat.openai.com/chat*
// @icon https://www.google.com/s2/favicons?sz=64&domain=openai.com
// @grant none
// @license MIT
// ==/UserScript==
(function() {
'use strict';
let autoSendFlag = false;
let checkboxContainer = null;
// 创建checkbox
(function generateCheckbox() {
// 创建checkbox
checkboxContainer = document.createElement('button');
checkboxContainer.classList.add('btn', 'btn-autosend', 'relative', 'border-0', 'md:border');
checkboxContainer.style.fontSize = '.875rem';
checkboxContainer.style.lineHeight = '1.25rem';
const checkboxLabel = document.createElement('label');
const checkbox = document.createElement('input');
checkbox.style.marginRight = ".5rem";
checkbox.type = 'checkbox';
checkbox.id = 'auto-operate-checkbox';
checkboxLabel.appendChild(checkbox);
const label = document.createTextNode('中断后自动发送“请接上文继续”');
checkboxLabel.appendChild(label);
checkboxContainer.appendChild(checkboxLabel);
checkbox.addEventListener('change', function() {
autoSendFlag = this.checked;
});
// 添加样式
const checkboxStyle = `
<style>
.dark .btn-autosend {
--tw-border-opacity: 1;
--tw-bg-opacity: 1;
--tw-text-opacity: 1;
background-color: rgba(52,53,65,var(--tw-bg-opacity));
border-color: rgba(86,88,105,var(--tw-border-opacity));
color: rgba(217,217,227,var(--tw-text-opacity));
}
.light .btn-autosend {
background-color: rgba(255,255,255,1);
border-color: rgba(0,0,0,.1);
color: rgba(64,65,79,1);
}
</style>
`;
document.body.insertAdjacentHTML('beforeend', checkboxStyle);
})();
// 创建一个 MutationObserver 实例,监听 body 元素内子元素的变化
const observer = new MutationObserver(function(mutations) {
// document.body.appendChild(checkboxContainer);
if(!document.getElementById("auto-operate-checkbox")) {
const btnNeutral = document.querySelector('.btn-neutral');
if(btnNeutral) {
btnNeutral.parentNode.insertBefore(checkboxContainer, btnNeutral);
}
}
if(autoSendFlag) {
// 执行自动发送
const button = document.querySelector('.btn-neutral');
if (!button || button.querySelector('div').textContent.trim() != "Stop generating") {
// debugger
// 找到页面中最后一个不为 __next-route-announcer__ 的 p 元素
const paragraphs = Array.from(document.getElementsByTagName('p'));
const lastParagraph = paragraphs.filter(p => p.id !== '__next-route-announcer__').pop();
// 检查最后一个 p 元素内容是否以中文句号结尾
if (lastParagraph && !lastParagraph.parentNode.classList.contains('result-streaming') && !/\。$/.test(lastParagraph.textContent.trim())) {
setTimeout(function () {
// 找到 textarea 元素,并填充内容为 "请接上文继续"
const textarea = document.querySelector('textarea');
textarea.value = '请接上文继续';
// 找到与 textarea 同级的 button 元素,并点击它
const siblingButton = textarea.nextElementSibling;
siblingButton.click();
}, Math.floor(Math.random() * (3000 - 500 + 1) + 500));
}
}
}
});
const observerConfig = { childList: true, subtree: true };
observer.observe(document.body, observerConfig);
})();
用于CHATGPT简单回复的自动化继续
目前v0.2版实现功能
1.在右上角产生一个功能开关
2.开启后,将自动在对话框中回复“继续”
3.判断结尾是否出现抱歉、对不起字眼,发现后关闭。
一、安装油猴脚本管理器插件
如果有条件,可以直接在谷歌Chrome商店下载安装。
如果无法访问,点击下面链接下载Tampermonkey油猴脚本管理器插件的安装包,解压之后,再将crx文件安装到你的谷歌浏览器上,具体可参考这篇文章。

二、安装脚本
大家先下载本文的脚本离线文件,然后启动脚本编辑器,点击浏览器工具栏上的油猴插件图标,打开【添加新脚本】,将下载的 js 格式的脚本安装文件,拖拽到已清空的编辑器中,保存即可。
脚本更新地址:
https://kdown.fkxz.cn/wp-content/uploads/2023/03/1680061851-35369-chatgptzidongjieshangwen.js
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("
我已经构建了一些serverspec代码来在多个主机上运行一组测试。问题是当任何测试失败时,测试会在当前主机停止。即使测试失败,我也希望它继续在所有主机上运行。Rakefile:namespace:specdotask:all=>hosts.map{|h|'spec:'+h.split('.')[0]}hosts.eachdo|host|begindesc"Runserverspecto#{host}"RSpec::Core::RakeTask.new(host)do|t|ENV['TARGET_HOST']=hostt.pattern="spec/cfengine3/*_spec.r
我想学习一些关于Continuation的知识,使用callcc方法从一些文章中键入几个示例,但我遇到了错误:NoMethodError:undefinedmethod`callcc'formain:Objectfrom(pry):2:in`'没有文章提到包含延续库。那么如何解决这个问题呢?谢谢编辑:ruby1.9.2p290(2011-07-09修订版32553)[x86_64-linux] 最佳答案 您需要要求“继续”。require'continuation' 关于ruby-继续,
英文版英文链接关注公众号在“亚特兰蒂斯的回声”中踏上一段难忘的冒险之旅,深入未知的海洋深处。足智多谋的考古学家AriaSeaborne偶然发现了一件古代神器,揭示了一张通往失落之城亚特兰蒂斯的隐藏地图。在她神秘的导师内森·兰登教授的指导和勇敢的冒险家亚历克斯·默瑟的帮助下,阿丽亚开始了一段危险的旅程,以揭开这座传说中城市的真相。他们的冒险之旅带领他们穿越险恶的大海、神秘的岛屿和充满陷阱和谜语的致命迷宫。随着Aria潜在的魔法能力的觉醒,她被睿智勇敢的QueenNeria的幻象所指引,她让她为即将到来的挑战做好准备。三人组揭开亚特兰蒂斯令人惊叹的隐藏文明,并了解到邪恶的巫师马拉卡勋爵试图利用其古
我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty
运行bundleinstall后出现此错误:Gem::Package::FormatError:nometadatafoundin/Users/jeanosorio/.rvm/gems/ruby-1.9.3-p286/cache/libv8-3.11.8.13-x86_64-darwin-12.gemAnerroroccurredwhileinstallinglibv8(3.11.8.13),andBundlercannotcontinue.Makesurethat`geminstalllibv8-v'3.11.8.13'`succeedsbeforebundling.我试试gemin
在添加一些空格以使代码更具可读性时(与上面的代码对齐),我遇到了这个:classCdefx42endendm=C.new现在这将给出“错误数量的参数”:m.x*m.x这将给出“语法错误,意外的tSTAR,期待$end”:2/m.x*m.x这里的解析器到底发生了什么?我使用Ruby1.9.2和2.1.5进行了测试。 最佳答案 *用于运算符(42*42)和参数解包(myfun*[42,42])。当你这样做时:m.x*m.x2/m.x*m.xRuby将此解释为参数解包,而不是*运算符(即乘法)。如果您不熟悉它,参数解包(有时也称为“spl
这是针对我无法破坏的现有公共(public)API,但我确实希望对其进行扩展。目前,该方法采用字符串或符号或任何其他在作为第一个参数传递给send时有意义的内容我想添加发送字符串、符号等列表的功能。我可以只使用is_a吗?数组,但还有其他发送列表的方法,这不是很像ruby。我将调用列表中的map,所以第一个倾向是使用respond_to?:map。但是字符串也会响应:map,所以这行不通。 最佳答案 如何将它们全部视为数组?String的行为与仅包含String的Array相同:deffoo(obj,arg)[*arg].eac
我最喜欢的Google文档功能之一是它会在我工作时不断自动保存我的文档版本。这意味着即使我在进行关键更改之前忘记在某个点进行保存,也很有可能会自动创建一个保存点。至少,我可以将文档恢复到错误更改之前的状态,并从该点继续工作。对于在MacOS(或UNIX)上运行的Ruby编码器,是否有具有等效功能的工具?例如,一个工具会每隔几分钟自动将Gitcheckin我的本地存储库以获取我正在处理的文件。也许我有点偏执,但这点小保险可以让我在日常工作中安心。 最佳答案 虚拟机有些人可能讨厌我对此的回应,但我在编码时经常使用VIM,它具有自动保存功