Gemini 抽风了
头回自己碰见,哥们你知道吗。
用着用着 gemini 抽风了,这你受得了吗。
抽风了大概 10 分钟,消息被吞了。
抽风的原因疑是是聊天记录太多了。
抽风前聊天记录全给我加载了然后每次切换窗口都给我跳到第一个对话,不过没想到最后这么癫。
为了不漏信息,所以只放抽风的截图。
xiaohack博客专注前沿科技动态与实用技术干货分享,涵盖 AI 代理、大模型应用、编程工具、文档解析、SEO 实战、自动化部署等内容,提供开源项目教程、科技资讯日报、工具使用指南,助力开发者、AI 爱好者获取前沿技术与实战经验。
头回自己碰见,哥们你知道吗。
用着用着 gemini 抽风了,这你受得了吗。
抽风了大概 10 分钟,消息被吞了。
抽风的原因疑是是聊天记录太多了。
抽风前聊天记录全给我加载了然后每次切换窗口都给我跳到第一个对话,不过没想到最后这么癫。
为了不漏信息,所以只放抽风的截图。
某网站的求助帖为例:
提问网页内嵌的 pdf,请帮忙下载,因为该网站有好多类似的文章,还请介绍如何突破限制,下载该网站的其他类似内容
f12,定位到 pdf 渲染层(页面嵌套)
执行 PDFViewerApplication.download() 即可(基本上通用)
以下是 pdf 文件链接的下载链接
https://dart.deloitte.com/USDART/ov-resource/057be505-289e-11e9-818d-67c85cbcc7fa#pdfjs.action=download
(下是应该能下,但是太慢啦)
pdf.js 应该是通用的,除非服务器做了限制(也有办法绕过然后保存)
使用特殊(对于 L 站为准入门槛)网咯下载后,发现有密码。
先说该网站结论:
找到 id 为 r0inab 的 script 标签的内容,
例如:Business Combinations (November 2025) | DART – Deloitte Accounting Research Tool ,(没错我另起炉灶了)
搜索得到加密后的密钥:2s1e1k2p1d1j2t2p1e1g1d1h172u1g1j2p171k2t1d1d172s1h2p2u171f2u2q1c1g1f2u1j
计算密钥
function decode(encodedString) {
let result = '';
for (let o = 1; o < encodedString.length; o++) {
if (o % 2 === 1) {
const charCode = parseInt(encodedString[o-1] + encodedString[o], 36);
result += String.fromCharCode(charCode);
}
}
return result;
}
const encoded = "2s1e1k2p1d1j2t2p1e1g1d1h172u1g1j2p171k2t1d1d172s1h2p2u171f2u2q1c1g1f2u1j";
console.log(decode(encoded));
得到密码:d28a17ea2415+f47a+8e11+d5af+3fb043f7
即可解开啦
PS: 如果希望去除密码,最简单的方法就是在线 pdf 解锁网站,比如 https://www.ilovepdf.com/zh-cn/unlock_pdf
还有就是要多换几个软件试试,可能是软件 bug,chrome 和 2345pdf 阅读器说密码不对,但是 edge、福昕 pdf 编辑器、上面那个 pdf 解锁网站则可以正确打开。。。
pdf.js 中搜索 .onPassword
如果手速不够快可能需要刷新,
如果存在密码的话可能会在此处断下,并且报错 No password given,
如图中所示,此处的 e.onPassword 则是自动传输密码的必经之路。
如果偷懒,可以在 e.onPassword 的第一回调参数(也就是上面的 s 函数)下断点,
即可直接偷鸡。
当然,本例追过去,发现
onPassword = (e, t) => {
this.isViewerEmbedded && this._unblockDocumentLoadEvent(),
window.addEventListener('message', function t(i) {
window.removeEventListener('message', t)
for (var n = i.data, s = '', o = 1; o < n.length; o++)
o % 2 && (s += String.fromCharCode(parseInt(n[o - 1] + n[o], 36)))
e(s)
}),
window.parent.postMessage('s', location.href)
}
AI 格式化一下
然后追到 s 的监听换事件
//外层 function onMessage(e) {
e.origin === location.protocol + "//" + location.host && (e.data === String.fromCharCode(115) ? e.source.postMessage(JSON.parse(document.getElementById("r0inab").innerText), location.href) : e.data === String.fromCharCode(103) && e.source.postMessage(JSON.parse(document.getElementById("r0inyk").innerText), location.href));
}
AI 格式化一下
最终算法参考本文 [找到密码] 部分
↓能不能别点赞,点点别的, 不想吃 LDC 低保
花费了半年时间开发的 AI 量化平台正式开源了,采用了 Apache2.0 协议,可商用。
全平台支持、美股、A 股、港股、加密、外汇、期货
TV 的平替,能够 AI 写策略、运行指标到 K 线。同时支持多用户版本,本地 Docker 一键部署
Dome 演示地址:https://ai.quantdinger.com
github 地址:GitHub - brokermr810/QuantDinger: AI-driven, local-first quantitative trading platform for research, backtesting and live execution. Python-native, privacy-first, open source.
如果觉得好用,请大佬赏赐一个 star, 您的支持是我们进步的动力。同时招募志同道合的项目管理员,管理仓库,共建开源社区!
【体现撒娇稚嫩的萝莉女声,音调偏高且起伏明显,营造出黏人、做作又刻意卖萌的听觉效果】
还得是阿里
垂死病中惊坐起,爬虫偷走了你的信息 ww!
可能就是很单纯的… 把邮箱… 放在简介,然鹅就算 202X 年了还有人靠电子邮箱发广告和垃圾邮件,虽然眼不见心不烦,哎爬虫怎么这么坏
就是这些坏东西的方法很多… 真的很多,古早时候就有把 @写成 #的邪法,就以上面那个 Demo 为例,它本身就自带 cloudflare 有形的大手,首先,cf 会编码 "可能是像电子邮箱的东西",任何能够执行 js 的浏览器会自动解码它,更别提人机验证了,直接把目录填进安全规则托管质询
不过能 "折腾就折腾",有没有什么更神奇的方法,不依赖现有的基础设施,而且很方便?有的有的,这是工作量验证
这种工作验证基于 AES,ChaCha32 等对称加密算法和一串摘要值,密码被故意设计成弱口令,这使得用户可以靠猜测比对推出密码
在个别 pow 验证码中也提供了这类小组件,为了效率,通常使用 WASM,JS 好写
因为是反爬虫所以也不需要很高强度的防护,大战 GPU 这种(X)
找哈基米写的,就很舒服 (√)
弱口令的产生方法是公开的,为了防止预先推出就加上了一串公开的 uuid 合并为一个 key,加上了一些改进
用来反爬也没什么问题
↑ Demo
做了个桌面小工具:读取本机 cookies.json(需包含 bili_jct),把本地 .srt 批量上传,并 “预保存” 为 B 站稿件字幕草稿(preSave)。
起因很简单:我经常批量处理英文网课(识别字幕 → Gemini 翻译 → 上传到 B 站),但 B 站本身没有批量传字幕的入口,于是自己搓了这个。
page/cid/part 匹配)大部分佬友都用不上,发出来刷点眼熟
简单来说就是最近在折腾 codex 反代,提升 codex 的使用体验,但是从 oauth 登录转到使用 api-key 时,发现以前的历史对话消失了,所以
研究出了这个小脚本
在现在的 vibe coding 时代,一些小需求真的可以很高效的解决了。这个问题从我产生解决这种需求的想法开始,到在论坛里搜索关键词没找到解决方案,再到我把 codex 仓库克隆下来丢给 antigravity 中的哈基米 3,第一次对话它就定位到了切换 provider 后历史对话消失的原因,后面告诉它用 py 脚本迁移之后就很快的给了我一个可用的版本,再丢给 chatgpt 网页版~~(codex 太慢了,小需求就没找它 debug)~~ 迭代了 2 次之后,整体用时不超过 20 分钟。
而在传统古法编程的时代,要解决这个小需求,首先要读 codex 仓库定位问题,光是这一步消耗的时间起码就得在 30 分钟以上…… 对我这样的小菜鸡来说,这个时间更是得翻倍的。 哦,刚注意到 codex 代码基本是用 rust 写的,那花费时间为 0。在我花时间学会 rust 之前,我是看不大懂 rust 代码的,所以我只能等某个大手子出手才能直接无脑使用。但为了这个很小的需求,我是不大可能去学 rust 的,有这时间去玩会不香吗?我会自适应历史对话消失的小问题,又不是不能用
先说优点,比 cc 好用!比 codex 快!代码质量也比 cc 好得多!
配置说明:
安装 copilot
安装 copilot 接入第三方 API 的插件
{ "reasoning": { "effort": "xhigh", "summary": "auto" }, "store": false, "stream": true } effort 可选项 :low、、high、xhigh
配置密钥:
这里前面的小眼睛要点一下显示!
然后切换一下模型就可以开始愉快的玩帅了!
最后贴一个 settings.json 的配置版本
我这里的 baseUrl 用的是 cc-switch 的 proxy 地址,密钥随便填就行!
"gcmp.compatibleModels": [
{
"id": "rc:gpt-5.2",
"name": "RC-GPT-5.2-Xhigh",
"provider": "zhipu",
"baseUrl": "http://127.0.0.1:15721",
"model": "gpt-5.2",
"sdkMode": "openai-responses",
"maxInputTokens": 272000,
"maxOutputTokens": 128000,
"capabilities": {
"toolCalling": true,
"imageInput": true
},
"useInstructions": false,
"includeThinking": true,
"extraBody": {
"reasoning": {
"effort": "xhigh",
"summary": "auto"
},
"store": false,
"stream": true
}
},
{
"id": "rc:gpt-5.2-low",
"name": "RC-GPT-5.2-Low",
"provider": "zhipu",
"baseUrl": "http://127.0.0.1:15721",
"model": "gpt-5.2",
"sdkMode": "openai-responses",
"maxInputTokens": 272000,
"maxOutputTokens": 128000,
"capabilities": {
"toolCalling": true,
"imageInput": true
},
"useInstructions": false,
"includeThinking": true,
"extraBody": {
"reasoning": {
"effort": "low",
"summary": "auto"
},
"store": false,
"stream": true
}
},
{
"id": "rc:gpt-5.2-High",
"name": "RC-GPT-5.2-High",
"provider": "zhipu",
"baseUrl": "http://127.0.0.1:15721",
"model": "gpt-5.2",
"sdkMode": "openai-responses",
"maxInputTokens": 272000,
"maxOutputTokens": 128000,
"capabilities": {
"toolCalling": true,
"imageInput": true
},
"useInstructions": false,
"includeThinking": true,
"extraBody": {
"reasoning": {
"effort": "high",
"summary": "auto"
},
"store": false,
"stream": true
}
}
],
本文章使用 Microsoft Copilot GPT-5.2 辅助写作。
前些日子在小红书刷到一篇帖子,吐槽 Overleaf 编译时间超过 10 秒就要收费。在评论区翻了翻,意外得知 中国科技云 提供了一个基于开源版 Overleaf 的在线服务,单次编译时间可免费使用 600 秒。出于好奇,我顺手探索了一下中国科技云,结果发现它居然还提供了一个 免费的 20G 存储(兼容 S3)。
既然有现成的 S3,那不用来同步 Obsidian 就有点说不过去了。于是折腾了一番,用 Remotely Sync 插件成功把 Obsidian 接入了中国科技云的 S3。下面简单记录一下过程。
首先注册一个中国科技云账号
然后进入 数据胶囊 页面:
进入后,新建一个 数据空间:
这里需要注意一点:“未命名” 只是别名,不是实际的桶名称。
创建完成后,点击 客户端访问:
在这里可以修改桶名,并创建一个 AccessKey,后面配置 Obsidian 时会用到,请妥善保存。
接下来切换到 Obsidian。
打开设置 → 第三方插件
关闭安全模式,搜索并安装 Remotely Sync
同时也建议在 核心插件 中关闭 Obsidian 自带的同步功能,避免冲突。
插件安装完成后,按如下方式填写配置:
服务地址(Endpoint):s3.cstcloud.cn
区域(Region):us-east-1
Access Key ID / Access Key:填写刚才创建的
S3 URL Style:一定要选择 Path Style
配置完成后,点击 检查连接。
如果一切顺利,就可以看到连接成功的提示了。至此,Obsidian 已经可以通过中国科技云的 S3 实现同步。
数据胶囊还支持 WebDAV 访问,也可以使用 WebDAV 接入更多应用。
文章很好,但怎么发成 wiki 了
想必做移动端的朋友们肯定或多或少听说过 Kotlin 和 Compose Multiplatform,
前者是 JetBrains 开源、Google 首推用于 Android 开发(自 2019 年 Google I/O 大会起)的现代开发语言,
后者是使用 Compose API 开发多端(Android、iOS、桌面端、Web 端等)应用的 UI 框架。
但是不论你是使用 Compose/Kotlin 开发应用,还是使用其他解决方案,都会有一个苦恼:使用代码编写 UI,
终归是不如大家最喜欢的拖拖拽拽来的直观。你选择 Compose/KMP 的理由,其中大概率有一条会留给它的多平台逻辑共享与原生互操作能力,
避免中间层的出现,可以有更好地表现效果与上限。
那么有没有什么办法,可以即让我使用 Compose 开发应用、又可以借助 AI 神力并且以拖拉拽的形式而免去需要写代码的苦恼?
如果你有这些想法,那么也许你可以关注一下 ComposeFlow: 一个 Compose Multiplatform 的可视化应用构建器。
注意,这篇文章图片会比较多喔~
ComposeFlow 是一个 Compose Multiplatform 的可视化应用构建器,它通过 AI 代理和直观的拖放界面,
赋能开发者、企业家、设计师和产品经理创建功能完整的应用程序。它能生成完整的、可运行的 Compose Multiplatform 项目,
并提供干净的 Kotlin 代码,支持桌面、Android、iOS 和 Web 等多个平台。
以上是它们的 GitHub 仓库中的首段自我介绍。
简单来说,它就是一个 AI 驱动、可视化、拖拉拽的 Compose Multiplatform 开发工具。
图片来自官方 GitHub README 中的配图。
更多信息,你可以前往它们的 文档 了解更多。
首先需要知道,这个工具目前仍处于早期阶段,因此可能存在各种各样的问题,我们今天就只是尝鲜为主。
根据 GitHub 的说明,我们前往它们的下载页面去下载对应的应用(Windows 用户可以直接使用 Microsoft Store 安装)。
安装完成后,它会提示你登陆账号(也可以不登录,只不过那样就不能使用 AI 服务了),我选择使用 Google 账号登陆。
登录后,这就是它的首页:
毕竟是新安装的,我们先来创建一个项目。
就按照它的推荐提示词,创建一个任务管理的应用,为了方便演示,我加了一句 “USE CHINESE”,其他的内容均未修改。
通过 AI 提示词创建一个项目的基本过程就在上面了。它会根据你的基础提示词,设计出几个详细的界面设计,
然后再根据每个界面的细节内容生成具体的界面布局与样式,然后在右侧供你预览。当一切就绪,你就可以直接创建项目了。
作为一个尝鲜体验,我就不修改什么了,直接默认并创建即可~
那么接下来,我们点击 create project 创建一个项目看看。
首次进入项目内容,它会给你一个引导,欢迎你,并告诉你一些操作方法:
项目的左侧,是各类工具视图,它们提供了添加文字、图标等组件的 UI 构筑功能,以及布局功能等等,如图所示:
接下来,为你介绍了画布的正中央:你的 UI 表现效果,以及画布尺寸、明暗等内容的配置和展现。
随后是右半侧,提供了选中组件的各类属性信息的展示与编辑等。
当然,作为一个 AI 驱动的工具,除了构建项目之外,肯定也会在其他功能上增加 AI 能力。左上角的小图标便是提供 AI assistant 能力的地方。
接下来引导就结束了,然后便是我们自由发挥的时候啦。
下面便是我生成的项目的一些基本样式与信息:
可以看到信息和功能还是相当丰富的。而且除了基本的 UI 设置之外,左侧工具还可以选择切换到:
可谓是功能相当丰富。
不过这次主打一个基础体验,我也就不做什么修改了,直接点击右上角的 “下载代码”,下载一份 Web 版的看看样子。
有一说一,它这个下载成功的提示真的很不起眼哈哈
可以看到,项目的大概文件结构是这个样子的:
安卓、iOS 和 JS 都有(虽然不知道为什么没用 WasmJs),也是相当全面了。
让我来随便找几个源代码文件看看内容:
嗯… 整体来说还是可以的,不过也有一些小缺陷:
USE CHINESE,结果导致它生成的代码中存在一些使用中文命名的类型。上面这几个小缺陷我觉得如果用英文原版的提示词,或者再精修一下、将这些问题都在提示词中说明白,
那应该也都是可以避免的,所以问题不大。
考虑到我没配置移动端的开发工具和相关的东西,咱们就跑一下 web 端看看效果吧。
嗯… 让我们先忽略它中文乱码的问题,这是 Compose for Web 渲染 canvas 的老问题了,找个中文字体加载下就好(或者有什么配置)。
单从 UI 布局上来看,是基本符合之前的设计布局的。
只不过不知道是不是应该在下载的时候选什么配置,这个 Web 端出来的布局仍是竖屏手机的样式哈哈哈,
之前在 UI 设计阶段是有宽屏 Web 布局的样式的,可能我漏掉了什么选项吧。不过我也懒得回去找了,就不再重新捣鼓了。
我将它生产出来的这个项目发布到了 GitHub 的仓库中:GitHub - ForteScarlet/ComposeFlow-TaskManagementApp: A demo project for ComposeFlow
你如果感兴趣的话,也可以去看看。
对此工具的体验就到此为止啦~ 有一说一在 UI 构建的工作区里功能比我想象要丰富不少。
不过毕竟工具也还是在早期阶段,还是会有不少细枝末节的小问题存在的,尝尝鲜还可以,不过想要非常优质的生产级体验还是有些距离。总而言之,未来可期!
至于我是怎么知道这个的呢,是因为前阵子看到 JetBrains 的布道师关注了这个仓库的所述组织,
于是乎就进去看了下,而后便有了这篇文章。
不管怎样,感谢你读到这里,祝你有愉快的一天,我们下次再见~
之前偷懒了,在发帖的时候直接用 AI 生成了工具的介绍,导致有人举报删了。
所以现在我重新写一下工具的介绍,其实主要是平时使用的时候总是弹出 accept 和 retry 的按键,导致执行出错,影响开发节奏,浪费了很多时间,需要有精力看
所以就去上网找了一下开源解决方案,但是开源的方案只能解决 accept,所以就想着有没有方法能把 retry 也做了。之前了解过 antigravity 的内核,其实也是 chrome,那么就应该可以通过 remote debug 的方式跟他连接并操作他,就又补充了一下插件,在这个插件里面启动一个连接到处于开发模式的 Antigravity,这样的话就可以控制去点击 retry 了,大概就是这么个思路。
但是次都需要在启动 Antigravity 的时候配置启动参数很麻烦,所以没有办法可以跳过这一步,至少在 windows 上想解决这个问题,那我就上网找了一下,我就想起来之前有个人做 antigravity-proxy 的时候用了 version.dll,所以我就找了另外一个 dll,因为我怕有的人同时有两个功能,两个功能会有影响,然后就通过注入的方式在启动的时候加载这个启动命令,就 remote bug 的那个命令,这样的话就可以自动配置参数了,不需要修改快捷启动参数了,所以就有了下面两个的项目,欢迎大家使用并反馈。
通过 Antigravity Manager 启动 Antigravity,目前无法自动注入 remote debug,还在调查中
最近在闲鱼上淘了一个二手 macbook m1 air 16+512,想着把 windows 上的 singbox 搬过去。因为之前都是跑的纯内核,所以这时也打算用纯内核来跑。
遇到第一个问题,配置文件是 1.11 时候写的,但是很多带 provider 的 singbox 修改版,都没有历史版本,不打 tag,编译出来的都是最新版本,或者是有 1.11 Tag,Fork 了一下自己跑 Github action,但是编译出来的是原版。或者是原仓库之前 action 跑过的,很多产物都已经失效了无法下载。
后面只能尝试用 1.12 版本,找了一个仓库 lux5am/sing-box,这个看着是挺不错的,然后下载了个 1.12 版本,但是配置跑不起来,一直报错 loop on detour: direct。
+0800 2026-01-21 20:07:33 INFO network: updated default interface en0, index 11
+0800 2026-01-21 20:07:33 DEBUG router: updating rule-set geosite-microsoft from URL: https://github.com/CHIZI-0618/v2ray-rules-dat/raw/refs/heads/release/singbox_rule_set/geosite-microsoft.srs
+0800 2026-01-21 20:07:33 DEBUG router: updating rule-set category-ads-all from URL: https://raw.githubusercontent.com/CHIZI-0618/v2ray-rules-dat/release/singbox_rule_set/geosite-category-ads-all.srs
+0800 2026-01-21 20:07:33 DEBUG router: updating rule-set cn-domain from URL: https://raw.githubusercontent.com/CHIZI-0618/v2ray-rules-dat/release/singbox_rule_set/geosite-cn.srs
+0800 2026-01-21 20:07:33 DEBUG router: updating rule-set category-games@cn from URL: https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-category-games@cn.srs
+0800 2026-01-21 20:07:33 DEBUG router: updating rule-set alibaba from URL: https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-alibaba.srs
+0800 2026-01-21 20:07:33 INFO outbound/direct: outbound connection to github.com:443
+0800 2026-01-21 20:07:33 DEBUG dns: lookup domain github.com
+0800 2026-01-21 20:07:33 INFO outbound/direct: outbound connection to raw.githubusercontent.com:443
+0800 2026-01-21 20:07:33 INFO outbound/direct: outbound connection to raw.githubusercontent.com:443
+0800 2026-01-21 20:07:33 DEBUG dns: lookup domain raw.githubusercontent.com
+0800 2026-01-21 20:07:33 DEBUG dns: lookup failed for github.com: loop on detour: direct
改了半天配置,又去参考了一下别人的,或者是换另外一个仓库的 1.12 修改版,最终都跑不起来,折腾了好久最终是放弃了。然后想着,如果后面又遇到这种问题,再加上 singbox 的配置语法经常变更,后面又得折腾一下,想了想还是换内核吧。
那也没啥好选了,只能是 mihomo 了。于是就弄了一下这玩意的开机自启。
主要是参考:OKHK ✨ macOS 上 配置 Launchctl 运行 Clash Meta(Mihomo)内核服务
其实里面文件的路径应该是能变的,但是我为了复制方便,直接就用文章的了 。
sudo mv mihomo-darwin-arm64-v1.19.19 /usr/local/bin/clash
sudo chown root clash
sudo chmod +x clash
mkdir -p /Users/app/.config/clash
mv config.yaml /Users/app/.config/clash
chmod 644 /Users/app/.config/clash/config.yaml
/usr/local/bin/start_clash_with_dns.sh:设置 dns + 启动核心
#!/bin/bash set -e
export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" export HOME="/Users/app" timeout=120
elapsed=0
while [ $elapsed -lt $timeout ]; do if scutil --dns | grep -q "nameserver"; then
networksetup -setdnsservers Wi-Fi 198.18.0.2
echo "$(date) DNS:198.18.0.2" >> /Users/app/.config/clash/clash_dns.log
break fi sleep 5
elapsed=$((elapsed + 5))
done exec /usr/local/bin/clash -d /Users/app/.config/clash
/Library/LaunchDaemons/clash.plist:launchctl plist 配置文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>clash</string> <key>ProgramArguments</key> <array> <string>/bin/bash</string> <string>/usr/local/bin/start_clash_with_dns.sh</string> </array> <key>RunAtLoad</key> <true/> <key>WorkingDirectory</key> <string>/Users/app/.config/clash</string> <key>StandardOutPath</key> <string>/Users/app/.config/clash/clash_stdout.log</string> <key>StandardErrorPath</key> <string>/Users/app/.config/clash/clash_stderr.log</string> </dict> </plist> 授予权限:
sudo chown root /Library/LaunchDaemons/clash.plist
sudo chmod 644 /Library/LaunchDaemons/clash.plist
sudo chown root /usr/local/bin/start_clash_with_dns.sh
sudo chmod +x /usr/local/bin/start_clash_with_dns.sh
第一次启动用下面的命令,如果是已经 load 过的,用下面的 alias 的 startclash。
反复 load 会出错或者是 unload 还没有 load 的也会出错,但是错误日志没有具体怎么写,这里提醒一下。
sudo launchctl load /Library/LaunchDaemons/clash.plist
重启
sudo launchctl unload /Library/LaunchDaemons/clash.plist
sudo launchctl load /Library/LaunchDaemons/clash.plist
alias 用于方便手动控制:
alias stopclash='sudo launchctl stop clash && networksetup -setdnsservers Wi-Fi Empty && sudo launchctl list | grep clash' alias startclash='sudo launchctl start clash && networksetup -setdnsservers Wi-Fi 192.168.0.2 && sudo launchctl list | grep clash' tun 启动之后不知道为什么 uu 远程用不了,显示没有网络链接。
问了一下 AI,给了一些方法,现在虽然是解决,但我不知道具体是哪个命令解决的。
这里我都贴出来有遇到的老友可以试一试这一些方法,如果关闭 clash 之后没有网络,可以开关一下 wifi,这样就有网络了。
sudo route -n flush
sudo ifconfig en0 down
sudo ifconfig en0 up
sudo pkill -f "uu\|tun" sudo rm /Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist
sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
sudo route -n flush 这个可以执行多次,时不时执行一下,比如关闭 uu 远程之后,打开了之后。
如果实在不行就把 uu 远程卸载了,重启电脑,再安装上,然后再试试。不行的话就再执行一下上面这些命令。
查看路由表: netstat -rn -f inet
可以让 ai 在修改完代码后自动进行本地的一个提交,方便随时回退代码。
很多时候写代码忘记提交导致回退一个大版本心都死了!
注意,这个 skill 默认自动执行,你也可以自己修改后手动执行(改改提示词的事~)
欢迎使用也欢迎 star。
把 /dev、/omo、ralph-loop、/feature-dev 四套工作流融合成一个、多 Agent 并行、多模型后端的功能开发编排器。
/do 实现用户登录功能,剩下的交给 AIdo 整体架构Hooks Loop 机制codeagent-wrapper 多 Agent
Phase 1-2
Phase 1,3,4
Phase 5
Phase 6-7
检查状态
.claude/do.local.md用户: /do 任务描述Claude Code 编排器code-explorergrok-codecode-architectopus4.5developgpt5.2code-reviewersonnetStop Hook 防中断
继 /dev/omo 之后一直在思考如何将这些好用的工作流融合起来,够快够智能够好用
基于上面的内容我突然想到把他们全部融合在一起不就好了吗,于是就有了 do。
Do 的核心参考来源:
| 来源 | 贡献 |
|---|---|
| feature-dev | 7 阶段工作流框架 + Agent 分工 + Context Pack 模板 |
| dev | 需求澄清机制 + 多后端路由 + 90% 覆盖率要求 |
| omo | 路由优先编排 + 最小 Agent 集选择 + 编排者不写代码原则 |
| ralph-loop | Stop Hook 防中断 + 状态文件持久化 + 完成信号机制 |
这不是重新发明轮子,而是把四个好轮子装到一辆车上。
四套工作流
feature-dev7阶段框架dev 需求澄清+多后端omo路由编排ralph-loopHooks Loop融合do Skill
这个设计来自 omo 的核心理念。do 的第一条铁律:
Claude Code 只负责编排,所有代码变更必须委托给 codeagent-wrapper 中的 Agent。
这不是因为 Claude Code 写不了代码,而是因为:
#这是编排者的正确姿势
codeagent-wrapper --agent develop - . <<'EOF'
## Original User Request
/do 添加用户登录功能
## Context Pack
- Code-explorer output: [Phase 2 分析结果]
- Code-architect output: [Phase 4 架构方案]
## Current Task
实现登录功能,遵循现有模式
## Acceptance Criteria
端到端可用;测试通过;diff 最小化
EOF
codeagent-wrapper 执行者Claude Code 编排者
委托任务 + Context Pack
委托任务 + Context Pack
委托任务 + Context Pack
委托任务 + Context Pack
返回结果
返回结果
返回结果
返回结果
只负责流程控制不写代码code-explorercode-architectcode-reviewerdevelop
目标:搞清楚要做什么。
不是直接开干,而是先用 AskUserQuestion 问清楚:
然后调用 code-architect 生成需求清单和澄清问题。
codeagent-wrapper --agent code-architect - . <<'EOF' ## Current Task
Produce requirements checklist and identify missing information.
Output: Requirements, Non-goals, Risks, Acceptance criteria, Questions (<= 10)
## Acceptance Criteria
Concrete, testable checklist; specific questions; no implementation.
EOF
目标:搞清楚现有代码怎么写的。
这里体现了 并行优先 原则 —— 三个 code-explorer 任务同时跑:
codeagent-wrapper --parallel <<'EOF' ---TASK---
id: p2_similar_features
agent: code-explorer
workdir: .
---CONTENT---
Find 1-3 similar features, trace end-to-end.
Return: key files with line numbers, call flow, extension points.
---TASK---
id: p2_architecture
agent: code-explorer
workdir: .
---CONTENT---
Map architecture for relevant subsystem.
Return: module map + 5-10 key files.
---TASK---
id: p2_conventions
agent: code-explorer
workdir: .
---CONTENT---
Identify testing patterns, conventions, config.
Return: test commands + file locations.
EOF
三个探索任务并行执行,结果合并后传递给下一阶段。
Phase 2: 并行探索 p2_similar_features找相似功能p2_architecture映射架构p2_conventions识别规范Phase 1 完成合并结果Phase 3: Clarification 目标:解决所有模糊点。
这是 不可跳过 的阶段。Phase 1 和 Phase 2 的输出汇总后,让 code-architect 生成优先级排序的问题列表,然后用 AskUserQuestion 逐一确认。
## 澄清问题
1. 登录失败时,错误信息是否需要区分"用户不存在"和"密码错误"?
2. 是否需要支持"记住我"功能?
3. 密码重置流程是否在本次范围内?
不回答不进入下一阶段。这是从 ralph-loop 学来的 —— 宁可多问,不要猜错。
目标:确定怎么实现。
同样是并行模式 —— 两个 code-architect 同时工作,提出两种方案:
| 方案 | 特点 |
|---|---|
| minimal-change | 复用现有抽象,最小化新文件 |
| pragmatic-clean | 引入测试友好的接缝,更好的可维护性 |
codeagent-wrapper --parallel <<'EOF' ---TASK--- id: p4_minimal agent: code-architect workdir: . ---CONTENT--- Propose minimal-change architecture: reuse existing abstractions. Output: file touch list, risks, edge cases. ---TASK--- id: p4_pragmatic agent: code-architect workdir: . ---CONTENT--- Propose pragmatic-clean architecture: introduce seams for testability. Output: file touch list, testing plan, risks. EOF 用户选择后,进入实现阶段。
Phase 4: 两种架构方案 minimal-change复用现有抽象最小化新文件风险低pragmatic-clean引入测试接缝更好可维护性更多改动Phase 2 探索结果用户选择Phase 5: Implementation 目标:把代码写出来。
这个阶段有个 显式审批门:
用 AskUserQuestion 确认:
"Approve starting implementation?"
- Approve - Not yet 批准后,调用 develop Agent 执行:
codeagent-wrapper --agent develop - . <<'EOF'
## Context Pack - Code-explorer output: [Phase 2 全部输出]
- Code-architect output: [Phase 4 选定方案 + Phase 3 答案]
## Current Task
Implement with minimal change set following chosen architecture.
- Follow Phase 2 patterns
- Add/adjust tests per Phase 4 plan
- Run narrowest relevant tests
## Acceptance Criteria
Feature works end-to-end; tests pass; diff is minimal.
EOF
目标:抓 bug、砍复杂度。
两个 code-reviewer 并行工作:
| 审查者 | 关注点 |
|---|---|
| correctness | 正确性、边界情况、失败模式 |
| simplicity | KISS 原则、消除冗余抽象 |
codeagent-wrapper --parallel <<'EOF' ---TASK--- id: p6_correctness agent: code-reviewer workdir: . ---CONTENT--- Review for correctness, edge cases, failure modes. Assume adversarial inputs. ---TASK--- id: p6_simplicity agent: code-reviewer workdir: . ---CONTENT--- Review for KISS: remove bloat, collapse needless abstractions. EOF 审查结果出来后,用户决定:
目标:记录做了什么。
最后一个 code-reviewer 调用,生成完成报告:
完成后输出完成信号:
<promise>DO_COMPLETE</promise>
Phase 1Discovery理解需求Phase 2Exploration探索代码库Phase 3Clarification澄清疑问Phase 4Architecture设计方案Phase 5Implementation实现代码Phase 6Review代码审查Phase 7Summary总结文档✓ FEATURE_COMPLETE
codeagent-wrapper 支持为不同 Agent 配置不同后端。在 ~/.codeagent/models.json 中:
{
"agents": {
"code-explorer": {
"backend": "opencode",
"model": "opencode/grok-code",
"description": "快速代码分析"
},
"code-architect": {
"backend": "claude",
"model": "claude-opus-4-5-20251101",
"description": "深度架构设计"
},
"code-reviewer": {
"backend": "claude",
"model": "claude-sonnet-4-5-20250929",
"description": "代码审查"
},
"develop": {
"backend": "codex",
"model": "gpt-5.2",
"description": "代码实现"
}
}
}
为什么这样分配?
| Agent | 推荐后端 | 原因 |
|---|---|---|
| code-explorer | grok-code | 快速遍历、代价低 |
| code-architect | opus4.5 | 需要深度思考、权衡取舍 |
| code-reviewer | sonnet | 平衡速度和质量 |
| develop | gpt-5.2 | 代码生成能力强、执行稳定 |
可用后端~/.codeagent/models.json
code-explorer→ grok-codecode-architect→ opus4.5code-reviewer→ sonnetdevelop→ gpt5.2codexclaudegeminiopencode
这是从 ralph-loop 借鉴的核心机制。
每次 /do 启动时,创建 .claude/do.local.md:
--- active: true current_phase: 1 phase_name: "Discovery" max_phases: 7 completion_promise: "<promise>DO_COMPLETE</promise>" ---每完成一个阶段,更新 current_phase 和 phase_name。
安装后会注册 Stop Hook。当 Claude 尝试退出时:
# hooks/stop-hook.sh 核心逻辑 if [ "$phases_done" -eq 0 ]; then
reason="feature-dev 循环未完成:当前阶段 ${current_phase}/${max_phases}..." printf '{"decision":"block","reason":"%s"}\n' "$reason" fi 如果还没完成,Hook 会 阻止退出 并提示继续执行。
强制退出方式:将状态文件中 active 设为 false。
/do 启动
current_phase=2
current_phase=3
current_phase=4
current_phase=5
current_phase=6
current_phase=7
输出 FEATURE_COMPLETE
尝试退出
尝试退出
尝试退出
尝试退出
尝试退出
尝试退出
否(钩子阻止 / 留在当前阶段)
是(允许退出 / 跳过剩余阶段)
Phase1Phase2Phase3Phase4Phase5Phase6Phase7CompleteTryStop <>尝试优雅退出?TryStop
git clone https://github.com/cexll/myclaude.git
bash ./install.sh
codex(OpenAI Codex CLI)claude(Claude Code CLI)gemini(Gemini CLI)python install.py --module do 安装内容:
~/.claude/skills/do/ - Skill 文件~/.claude/settings.json# 在 Claude Code 中
/do 添加用户登录功能
/do 实现订单导出 CSV
/do feature-prd.md
python install.py --uninstall --module do Agent 提示词位于 ~/.claude/skills/do/agents/ 目录:
code-explorer.md - 代码追踪、架构映射code-architect.md - 方案设计、文件规划code-reviewer.md - 代码审查、简化建议如需自定义,在 ~/.codeagent/agents/ 创建同名文件覆盖。
自定义覆盖默认 Agent 配置
优先级更高
~/.claude/skills/do/agents/code-explorer.mdcode-architect.mdcode-reviewer.md~/.codeagent/agents/同名文件覆盖
do 是四套工作流的合体:
加上 codeagent-wrapper 的多后端支持,你可以:
我做的工作就是把这些优秀的设计拼到一起,形成一套可复制的 AI 编排方法论。
这篇文章展示了 do 的设计思路,但如果你想:
我们会手把手教你:
一句话简介: 让 AI 帮你设计并更换 Windows 文件夹图标。
最近闲的疼,在整理文件夹时,脑子抽了,突然感觉看这些一模一样的黄色文件夹很不爽,要是能有像手机里面那样可以自定义的主题图标就好了,于是就搓了一个这个工具。
大概的思路就是让 ai 分析一下目录结构(不读取实际文件)后给出建议,然后结合自己想要的图标风格来生成提示词,输入生图模型来生成图标,最后再调用一下抠图的工具更换图标就可以了。
现在应该能正常使用。。。(应该)
虽然感觉这项目没啥鸟用,不过我自己用着挺爽的,,希望能有同感的佬友支持一波
这我感觉很爽啊 特别是分好类的文件夹这种
添加文件夹 → AI 分析内容 → 选择/自定义风格 → 生成图标 → 预览 → 应用
里面我也内置了一些模板 可以直接一键套用
了解更详细的内容,请点击:FolderPainter
目前感觉可拓展性也挺高的,也许还可以去改快捷方式的图标,这样桌面也可以个性化了。
觉得有意思的佬们可以去 GitHub 留个脚印,感谢支持!
任何有意思的想法和改进的建议也欢迎讨论!!!
互联网冲浪时找到某网站,上面托管了自部署的小模型,感觉设计挺有意思的,故发帖 然后因为这个网站是 onion 所以帖子下面时不时生成嗨客的手腕与营销号语录 水 + 吐槽
为什么写?
其实可以直接看维基百科
如果你称一个服务运行在暗网,那你一般指的是 onion 洋葱暗网服务,其实暗网这个概念非常易懂(这也是为什么营销号这么爱用)
tips: 滥用这个词真的很烦
明网:
容易访问的,例如百毒 / Google/cloudflare 的网站、DNS,LinuxDo 就在这层
深网:
DN42、你的管理后台、PT 站、毛子的神秘 XMPP 服务器,简单一点,如果这个网站声明了禁止搜索引擎检索那它也是深网,因为你不知道有这玩意或者有一定门槛,所以很难在没有引荐方的情况下访问
暗网:我求你了,先把那个带着 V 字仇杀队面具兜帽黑客扔出去
这种网络有着独特的设计在 OSI 上层实现资讯安全与匿名,所以没法直接通过公共互联网访问,与知名度没有什么关系,或者你可以称它为隐藏网络?Tor、I2P、还有各位或多或少都用过的 IPFS
相信各位点进来都是为了学习的 (雾),我们就以最流行的暗网老资历 Tor 为栗子吧,毕竟这个最简单
需求:计算机,互联网连接,自备代理
Tor 新出的网桥就是史,别用
不要尝试使用浏览器的自带请求器 (万年验证码这一块),使用 tg 机器人请求一个 /webtunnel 网桥,这是为数不多能用的
安装软体,在 GNU/Linux 中该软件包应该能在软件包管理器中找到
打开软件,配置代理,看着连接连接进度条走完,好了,现在你什么都不缺了
这四个功能分别是:接收 / 发送文件,在线聊天,托管静态网站
不懂就问,手机能玩吗?
可以的朋友,当然能,首先,你需要用终端模拟器或者 docker 在本地跑个服务,然后下载 Orbot
也可以直接到 github
下载之后打开应用,有网桥填网桥,没网桥到设置 Orbot设置→出站代理 配置代理,然后在 Orbot设置→常规 启用高级用户模式
设置页面
点击洋葱服务
然后你就可以复制地址,备份,删除这个服务了
(笑
假设使用 Linux 并有一个正在运行的后端服务
首先你需要安装 tor 守护程序,安装并启用
通过反向代理提供服务
编辑配置文件 /etc/tor/torrc,处理两行就好了
HiddenServiceDir {onion服务文件存放目录}
HiddenServicePort {tor对外提供服务的端口} 127.0.0.1:{你后端服务的端口}
重启 tor 守护进程
sudo systemctl restart tor.service
然后访问上文配置的 {onion服务文件存放目录} 即可找到访问地址
~#cat {onion服务文件存放目录}/hostname世界没有魔法,希望借此文让佬友理性看待看起来牛逼吼吼的暗网… 大概吧
… 其实都是诈骗和 FBI
666 大佬,请问这两个也是直接放在根目录 代码命名为 typora-patch.js 对吗? (是否需要阻止更新啥的呀)
PS: windows 也能用的是吧
前段时间 OiiOii 收费了,签到的盒饭根本不够用。手中的智谱编码包还有佬的 Flow2api 也没地方用,正好想试试 Claude Agent SDK 写一个类似 OiiOii 的 Agent,于是花了几天搓了一个小玩具 openOii
有什么问题可以提 issue 或者直接帖子回复我,我看到了就会及时修复,欢迎 star 和 pr
分享一个 Alfred 插件,切换多个 Claude Code 账号
项目地址: GitHub - kiusnax/obsidian-upgit
一个简单的 Obsidian 图片上传插件,基于 upgit。
之前一直使用 Typora,最近切换到了 Obsidian。然而,我发现现有的 Obsidian 图片上传插件体验都不太理想,于是和 Antigravity 老师一起搓了这个插件。
它的主要功能是拦截 Obsidian 的图片粘贴事件,将图片自动上传到配置的图床,并替换为远程链接。
![[开源项目] Obsidian 图片上传插件,基于 upgit1](https://xiaohack.oss-cn-zhangjiakou.aliyuncs.com/typecho/images/2026/01/24/20260124063444_6973f784080c9.webp!mark)
upgit CLI 工具,支持多种图床配置。本插件依赖于 upgit 命令行工具。在使用前,请确保你已经下载并配置好了 upgit。
确保 upgit 在你的终端中可以通过命令正常上传图片。
main.js, manifest.json 文件放入 Obsidian 仓库的 .obsidian/plugins/obsidian-upgit/ 目录下。obsidian-upgit。upgit 可执行文件的绝对路径 (例如: C:\Tools\upgit.exe 或 /usr/local/bin/upgit)。assets。配置完成后,只需在 Obsidian 编辑器中粘贴图片(Ctrl+V / Cmd+V),插件即可自动工作。
npm install
npm run dev