包含关键字 typecho 的文章

某网站的求助帖为例:

提问

Comparing IFRS Accounting Standards and U.S. GAAP: Bridging the Differences (September 2025) | DART – Deloitte Accounting Research Tool

网页内嵌的 pdf,请帮忙下载,因为该网站有好多类似的文章,还请介绍如何突破限制,下载该网站的其他类似内容

下载链接

f12,定位到 pdf 渲染层(页面嵌套)


执行 PDFViewerApplication.download() 即可(基本上通用)

以下是 pdf 文件链接的下载链接

https://dart.deloitte.com/USDART/ov-resource/057be505-289e-11e9-818d-67c85cbcc7fa#pdfjs.action=download

(下是应该能下,但是太慢啦)

pdf.js 应该是通用的,除非服务器做了限制(也有办法绕过然后保存)

找到密码

使用特殊(对于 L 站为准入门槛)网咯下载后,发现有密码。
先说该网站结论:

  1. 找到 id 为 r0inab 的 script 标签的内容,
    例如:Business Combinations (November 2025) | DART – Deloitte Accounting Research Tool ,(没错我另起炉灶了)
    pdf.js 通用 pdf 下载教程3
    搜索得到加密后的密钥:2s1e1k2p1d1j2t2p1e1g1d1h172u1g1j2p171k2t1d1d172s1h2p2u171f2u2q1c1g1f2u1j

  2. 计算密钥

    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

  3. 即可解开啦

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)
}

然后追到 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));
}

最终算法参考本文 [找到密码] 部分

↓能不能别点赞,点点别的, 不想吃 LDC 低保


📌 转载信息
原作者:
taozhiyu
转载时间:
2026/1/24 06:54:06

简介

使用 Nuxt 4.2.2 + tauri 2 开发,通过 API 接口获取寻访记录,仓库新建,功能还在逐步完善中。

目前暂时仅支持 Windows 端,数据都在程序同级目录下的 userData 目录中。

欢迎佬友们试试看~也欢迎大家晒晒自己的抽卡记录(当然能给仓库点个 Star 就更好了 hhh

附一张自己的:(还有比我更非的吗)

仓库链接:


📌 转载信息
原作者:
Sakikoo
转载时间:
2026/1/24 06:46:04



简单来说就是最近在折腾 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 的,有这时间去玩会不香吗?我会自适应历史对话消失的小问题,又不是不能用


📌 转载信息
原作者:
hello_world1024
转载时间:
2026/1/24 06:44:31

先说优点,比 cc 好用!比 codex 快!代码质量也比 cc 好得多!

配置说明:

安装 copilot

安装 copilot 接入第三方 API 的插件

 { "reasoning": { "effort": "xhigh", "summary": "auto" }, "store": false, "stream": true } 

effort 可选项 :lowmediumhighxhigh

配置密钥:

这里前面的小眼睛要点一下显示!

然后切换一下模型就可以开始愉快的玩帅了!

最后贴一个 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
        }
    }
],

📌 转载信息
转载时间:
2026/1/24 06:44:01

本文章使用 Microsoft Copilot GPT-5.2 辅助写作。

前些日子在小红书刷到一篇帖子,吐槽 Overleaf 编译时间超过 10 秒就要收费。在评论区翻了翻,意外得知 中国科技云 提供了一个基于开源版 Overleaf 的在线服务,单次编译时间可免费使用 600 秒。出于好奇,我顺手探索了一下中国科技云,结果发现它居然还提供了一个 免费的 20G 存储(兼容 S3)

既然有现成的 S3,那不用来同步 Obsidian 就有点说不过去了。于是折腾了一番,用 Remotely Sync 插件成功把 Obsidian 接入了中国科技云的 S3。下面简单记录一下过程。


注册并创建 S3 存储桶

首先注册一个中国科技云账号

然后进入 数据胶囊 页面:

进入后,新建一个 数据空间

这里需要注意一点:“未命名” 只是别名,不是实际的桶名称

创建完成后,点击 客户端访问

在这里可以修改桶名,并创建一个 AccessKey,后面配置 Obsidian 时会用到,请妥善保存。


配置 Obsidian 的 Remotely Sync

接下来切换到 Obsidian。

  1. 打开设置 → 第三方插件

  2. 关闭安全模式,搜索并安装 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 了


📌 转载信息
原作者:
Gakusyun
转载时间:
2026/1/24 06:42:55

想必做移动端的朋友们肯定或多或少听说过 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

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 设置之外,左侧工具还可以选择切换到:

  • 数据 / 枚举类型定义
  • App 状态 (App state)
  • Firesotre (好像是某种 NoSQL 的云服务?)
  • API editor (看上去是配置 API 调用的)
  • 配置主题配色的 Theme editor
  • 图片图标等资源的管理 Assets
  • 项目和应用的基础配置

可谓是功能相当丰富。





下载 & 安装项目

不过这次主打一个基础体验,我也就不做什么修改了,直接点击右上角的 “下载代码”,下载一份 Web 版的看看样子。
有一说一,它这个下载成功的提示真的很不起眼哈哈


可以看到,项目的大概文件结构是这个样子的:

安卓、iOS 和 JS 都有(虽然不知道为什么没用 WasmJs),也是相当全面了。
让我来随便找几个源代码文件看看内容:

嗯… 整体来说还是可以的,不过也有一些小缺陷:

  1. 代码可以说几乎没什么注释。
  2. 由于我一开始的提示词用了 USE CHINESE,结果导致它生成的代码中存在一些使用中文命名的类型。

上面这几个小缺陷我觉得如果用英文原版的提示词,或者再精修一下、将这些问题都在提示词中说明白,
那应该也都是可以避免的,所以问题不大。

运行项目

考虑到我没配置移动端的开发工具和相关的东西,咱们就跑一下 web 端看看效果吧。




嗯… 让我们先忽略它中文乱码的问题,这是 Compose for Web 渲染 canvas 的老问题了,找个中文字体加载下就好(或者有什么配置)。
单从 UI 布局上来看,是基本符合之前的设计布局的。

只不过不知道是不是应该在下载的时候选什么配置,这个 Web 端出来的布局仍是竖屏手机的样式哈哈哈,
之前在 UI 设计阶段是有宽屏 Web 布局的样式的,可能我漏掉了什么选项吧。不过我也懒得回去找了,就不再重新捣鼓了。
我将它生产出来的这个项目发布到了 GitHub 的仓库中:GitHub - ForteScarlet/ComposeFlow-TaskManagementApp: A demo project for ComposeFlow
你如果感兴趣的话,也可以去看看。

尾声

对此工具的体验就到此为止啦~ 有一说一在 UI 构建的工作区里功能比我想象要丰富不少。
不过毕竟工具也还是在早期阶段,还是会有不少细枝末节的小问题存在的,尝尝鲜还可以,不过想要非常优质的生产级体验还是有些距离。总而言之,未来可期!

至于我是怎么知道这个的呢,是因为前阵子看到 JetBrains 的布道师关注了这个仓库的所述组织,
于是乎就进去看了下,而后便有了这篇文章。

不管怎样,感谢你读到这里,祝你有愉快的一天,我们下次再见~


📌 转载信息
转载时间:
2026/1/24 06:42:41

之前偷懒了,在发帖的时候直接用 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,还在调查中


📌 转载信息
原作者:
evan1s
转载时间:
2026/1/24 06:41:27

可以让 ai 在修改完代码后自动进行本地的一个提交,方便随时回退代码。
很多时候写代码忘记提交导致回退一个大版本心都死了!

  • 本地存档,绝不 Push

注意,这个 skill 默认自动执行,你也可以自己修改后手动执行(改改提示词的事~)

欢迎使用也欢迎 star。


📌 转载信息
原作者:
ryderwe
转载时间:
2026/1/24 06:40:06

do:多模型 Agent 编排 + Hooks Loop

把 /dev、/omo、ralph-loop、/feature-dev 四套工作流融合成一个、多 Agent 并行、多模型后端的功能开发编排器。

TL;DR

  • 一句话启动/do 实现用户登录功能,剩下的交给 AI
  • 7 阶段完整覆盖:Discovery → Exploration → Clarification → Architecture → Implementation → Review → Summary
  • 多 Agent 并行:code-explorer、code-architect、code-reviewer、develop 各司其职
  • 多模型后端:分析用 grok-code,架构用 opus4.5,代码用 gpt5.2,按任务特性分配最优模型,可以自定义配置
  • Loop 机制保障:Stop Hook 阻止意外退出,确保流程完整执行
do 整体架构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 之后一直在思考如何将这些好用的工作流融合起来,够快够智能够好用

    1. 需要 dev 的快、简单
    1. 需要 omo 的多模型 agent 编排
    1. 需要 ralph-loop 能够保证任务最终完成
    1. 需要主动沟通确定方案

基于上面的内容我突然想到把他们全部融合在一起不就好了吗,于是就有了 do。

Do 的核心参考来源:

来源贡献
feature-dev7 阶段工作流框架 + Agent 分工 + Context Pack 模板
dev需求澄清机制 + 多后端路由 + 90% 覆盖率要求
omo路由优先编排 + 最小 Agent 集选择 + 编排者不写代码原则
ralph-loopStop Hook 防中断 + 状态文件持久化 + 完成信号机制

这不是重新发明轮子,而是把四个好轮子装到一辆车上

四套工作流
feature-dev7阶段框架dev 需求澄清+多后端omo路由编排ralph-loopHooks Loop融合do Skill

核心设计:编排者不写代码

这个设计来自 omo 的核心理念。do 的第一条铁律:

Claude Code 只负责编排,所有代码变更必须委托给 codeagent-wrapper 中的 Agent。

这不是因为 Claude Code 写不了代码,而是因为:

  • 职责分离:编排者专注流程控制,执行者专注代码质量
  • 模型专长:不同 Agent 可以用不同后端(Codex、Claude、Gemini)
  • 可追溯性:每个 Agent 的输出都有独立日志和上下文
#这是编排者的正确姿势
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

7 阶段工作流详解

Phase 1: Discovery - 理解需求

目标:搞清楚要做什么。

不是直接开干,而是先用 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

Phase 2: Exploration - 探索代码库

目标:搞清楚现有代码怎么写的。

这里体现了 并行优先 原则 —— 三个 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 3: Clarification - 澄清疑问(强制阶段)

目标:解决所有模糊点。

这是 不可跳过 的阶段。Phase 1 和 Phase 2 的输出汇总后,让 code-architect 生成优先级排序的问题列表,然后用 AskUserQuestion 逐一确认。

## 澄清问题

1. 登录失败时,错误信息是否需要区分"用户不存在""密码错误"?
2. 是否需要支持"记住我"功能?
3. 密码重置流程是否在本次范围内?

不回答不进入下一阶段。这是从 ralph-loop 学来的 —— 宁可多问,不要猜错。

Phase 4: Architecture - 设计方案

目标:确定怎么实现。

同样是并行模式 —— 两个 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 

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

Phase 6: Review - 代码审查

目标:抓 bug、砍复杂度。

两个 code-reviewer 并行工作:

审查者关注点
correctness正确性、边界情况、失败模式
simplicityKISS 原则、消除冗余抽象
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 

审查结果出来后,用户决定:

  • ・Fix now(现在修)
  • ・Fix later(以后修)
  • ・Proceed as-is(直接过)

Phase 7: Summary - 总结文档

目标:记录做了什么。

最后一个 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-explorergrok-code快速遍历、代价低
code-architectopus4.5需要深度思考、权衡取舍
code-reviewersonnet平衡速度和质量
developgpt-5.2代码生成能力强、执行稳定
可用后端~/.codeagent/models.json
code-explorer→ grok-codecode-architect→ opus4.5code-reviewer→ sonnetdevelop→ gpt5.2codexclaudegeminiopencode

Loop 机制:防止中途退出

这是从 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_phasephase_name

Stop Hook

安装后会注册 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

安装与使用

前置条件

    1. 安装 codeagent-wrapper:
git clone https://github.com/cexll/myclaude.git
bash ./install.sh
    1. 配置至少一个后端 CLI:
  1. codex(OpenAI Codex CLI)
  2. claude(Claude Code CLI)
  3. gemini(Gemini CLI)

安装 Skill

python install.py --module do 

安装内容:

  • ~/.claude/skills/do/ - Skill 文件
  • ・Hooks 自动合并到 ~/.claude/settings.json

使用

# 在 Claude Code 中
/do 添加用户登录功能
/do 实现订单导出 CSV
/do feature-prd.md

卸载

python install.py --uninstall --module do 

自定义 Agent Prompt

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 是四套工作流的合体

  • feature-dev 的 7 阶段框架和 Agent 分工
  • dev 的需求澄清和多后端路由
  • omo 的智能路由和编排者不写代码原则
  • ralph-loop 的状态持久化和防中断机制

加上 codeagent-wrapper 的多后端支持,你可以:

    1. 用一条命令启动完整的功能开发流程
    1. 让不同模型各展所长
    1. 通过并行执行提升效率
    1. 借助 Loop 机制确保流程完整

我做的工作就是把这些优秀的设计拼到一起,形成一套可复制的 AI 编排方法论


想学会自己写这样的 Skill?

这篇文章展示了 do 的设计思路,但如果你想:

  • ・深入理解 Claude Code Skill 的完整机制
  • ・学会设计多 Agent 编排工作流
  • ・掌握 codeagent-wrapper 的高级用法
  • ・构建适合你团队的定制化开发流程

我们会手把手教你:

  • ・Claude Code Skill 从零到一
  • ・多模型后端配置与调优
  • ・Stop Hook 和状态机设计
  • ・真实项目中的 AI 工程实践

📌 转载信息
原作者:
benchen
转载时间:
2026/1/24 06:39:52

一句话简介: 让 AI 帮你设计并更换 Windows 文件夹图标。

最近闲的疼,在整理文件夹时,脑子抽了,突然感觉看这些一模一样的黄色文件夹很不爽,要是能有像手机里面那样可以自定义的主题图标就好了,于是就搓了一个这个工具。

大概的思路就是让 ai 分析一下目录结构(不读取实际文件)后给出建议,然后结合自己想要的图标风格来生成提示词,输入生图模型来生成图标,最后再调用一下抠图的工具更换图标就可以了。

现在应该能正常使用。。。(应该)
虽然感觉这项目没啥鸟用,不过我自己用着挺爽的,,希望能有同感的佬友支持一波

效果示例


这我感觉很爽啊 特别是分好类的文件夹这种

基本流程

添加文件夹 → AI 分析内容 → 选择/自定义风格 → 生成图标 → 预览 → 应用

操作步骤

  1. 添加文件夹 - 点击左下角
  2. 选择风格 - 从模板库选择,或用自然语言描述
  3. 生成图标 - 点击「生成图标」或说「生成」
  4. 预览调整 - 在右侧面板查看生成版本
  5. 应用图标 - 满意后点击「应用」

里面我也内置了一些模板 可以直接一键套用

项目地址

了解更详细的内容,请点击:FolderPainter

目前感觉可拓展性也挺高的,也许还可以去改快捷方式的图标,这样桌面也可以个性化了。
觉得有意思的佬们可以去 GitHub 留个脚印,感谢支持!
任何有意思的想法和改进的建议也欢迎讨论!!!


📌 转载信息
转载时间:
2026/1/24 06:39:30

为什么写?

互联网冲浪时找到某网站,上面托管了自部署的小模型,感觉设计挺有意思的,故发帖

然后因为这个网站是 onion 所以帖子下面时不时生成嗨客的手腕与营销号语录

水 + 吐槽

1. 总之就是非常没意思的概念介绍

其实可以直接看维基百科

如果你称一个服务运行在暗网,那你一般指的是 onion 洋葱暗网服务,其实暗网这个概念非常易懂(这也是为什么营销号这么爱用)

tips: 滥用这个词真的很烦

  • 明网
    容易访问的,例如百毒 / Google/cloudflare 的网站、DNS,LinuxDo 就在这层

  • 深网
    DN42、你的管理后台、PT 站、毛子的神秘 XMPP 服务器,简单一点,如果这个网站声明了禁止搜索引擎检索那它也是深网,因为你不知道有这玩意或者有一定门槛,所以很难在没有引荐方的情况下访问

  • 暗网
    我求你了,先把那个带着 V 字仇杀队面具兜帽黑客扔出去
    这种网络有着独特的设计在 OSI 上层实现资讯安全与匿名,所以没法直接通过公共互联网访问,与知名度没有什么关系,或者你可以称它为隐藏网络?Tor、I2P、还有各位或多或少都用过的 IPFS


点击关闭广告 百毒 AL 最新推荐: 暗网是什么_怎么访问暗网_洋葱网站大全_点此登录暗网_2026 年最新教程_一刀 999 传奇任你玩


2. 现在该你了

相信各位点进来都是为了学习的 (雾),我们就以最流行的暗网老资历 Tor 为栗子吧,毕竟这个最简单

需求:计算机,互联网连接,自备代理

2.1 Tor 网桥

Tor 新出的网桥就是史,别用
不要尝试使用浏览器的自带请求器 (万年验证码这一块),使用 tg 机器人请求一个 /webtunnel 网桥,这是为数不多能用的

2.2 从简到难

  • 电脑端用户

安装软体,在 GNU/Linux 中该软件包应该能在软件包管理器中找到

打开软件,配置代理,看着连接连接进度条走完,好了,现在你什么都不缺了


这四个功能分别是:接收 / 发送文件,在线聊天,托管静态网站

  • IOS / 安卓用户

不懂就问,手机能玩吗?
可以的朋友,当然能,首先,你需要用终端模拟器或者 docker 在本地跑个服务,然后下载 Orbot

也可以直接到 github

下载之后打开应用,有网桥填网桥,没网桥到设置 Orbot设置→出站代理 配置代理,然后在 Orbot设置→常规 启用高级用户模式

设置页面

点击洋葱服务

  • 名称随便
  • 本地端口填写你想托管出去的服务
    比如你在 127.0.01:8080 有个 Docker
  • 洋葱端口选择没占用的就行

然后你就可以复制地址,备份,删除这个服务了

(笑


  • 种植洋葱

假设使用 Linux 并有一个正在运行的后端服务

首先你需要安装 tor 守护程序,安装并启用
通过反向代理提供服务

编辑配置文件 /etc/tor/torrc,处理两行就好了

HiddenServiceDir {onion服务文件存放目录}

HiddenServicePort {tor对外提供服务的端口} 127.0.0.1:{你后端服务的端口}

重启 tor 守护进程

sudo systemctl restart tor.service

然后访问上文配置的 {onion服务文件存放目录} 即可找到访问地址

~#cat {onion服务文件存放目录}/hostname


3. 后记

世界没有魔法,希望借此文让佬友理性看待看起来牛逼吼吼的暗网… 大概吧

… 其实都是诈骗和 FBI


  1. 脚注:robots.txt、 Meta 标签、 X-Robots-Tag ↩︎

  2. ↩︎

  3. 参考 ↩︎


📌 转载信息
原作者:
arch_linux
转载时间:
2026/1/24 06:39:15

前段时间 OiiOii 收费了,签到的盒饭根本不够用。手中的智谱编码包还有佬的 Flow2api 也没地方用,正好想试试 Claude Agent SDK 写一个类似 OiiOii 的 Agent,于是花了几天搓了一个小玩具 openOii

有什么问题可以提 issue 或者直接帖子回复我,我看到了就会及时修复,欢迎 star 和 pr




📌 转载信息
原作者:
Xeron
转载时间:
2026/1/24 06:35:58

obsidian-upgit

项目地址: GitHub - kiusnax/obsidian-upgit

一个简单的 Obsidian 图片上传插件,基于 upgit

简介

之前一直使用 Typora,最近切换到了 Obsidian。然而,我发现现有的 Obsidian 图片上传插件体验都不太理想,于是和 Antigravity 老师一起搓了这个插件。

它的主要功能是拦截 Obsidian 的图片粘贴事件,将图片自动上传到配置的图床,并替换为远程链接。

演示

[开源项目] Obsidian 图片上传插件,基于 upgit1

功能特点

  • 无缝体验:直接粘贴图片,插件会自动处理上传。
  • 即时反馈:粘贴后立即显示本地预览,后台静默上传,上传成功后自动替换为远程链接。
  • 灵活配置:基于强大的 upgit CLI 工具,支持多种图床配置。

前置要求

本插件依赖于 upgit 命令行工具。在使用前,请确保你已经下载并配置好了 upgit

确保 upgit 在你的终端中可以通过命令正常上传图片。

配置指南

  1. 安装插件:将本仓库代码编译后的 main.js, manifest.json 文件放入 Obsidian 仓库的 .obsidian/plugins/obsidian-upgit/ 目录下。
  2. 启用插件:在 Obsidian 设置 → 第三方插件中启用 obsidian-upgit
  3. 插件设置
    • 打开插件设置页面。
    • Upgit Executable Path: 填写 upgit 可执行文件的绝对路径 (例如: C:\Tools\upgit.exe/usr/local/bin/upgit)。
    • Local Assets Folder: (可选) 设置临时图片的存储目录,默认为 assets

使用方法

配置完成后,只需在 Obsidian 编辑器中粘贴图片(Ctrl+V / Cmd+V),插件即可自动工作。

开发

npm install
npm run dev

📌 转载信息
原作者:
SAY
转载时间:
2026/1/24 06:34:48

GitHub: GitHub - fengshao1227/ccg-workflow: 多模型协作开发工具集 - 基于 Claude Code CLI,整合 Codex/Gemini 后端能力,提供智能路由、代码审查、Git 工具等 17+ 个命令
觉得好用请留下你的 Star

CCG v1.7.48:约束集 + 零决策,复杂功能不翻车1 CCG v1.7.48:约束集 + 零决策,复杂功能不翻车2


这次更新了啥

集成了 OpenSpec,一个规范驱动的开发框架。

说人话就是:把需求变成约束,让 AI 没法自由发挥

之前用 /ccg:workflow 做复杂功能,经常遇到这些问题:

  • 需求说得不清楚,AI 自己脑补,结果跟想的不一样
  • 上下文太长,一个会话塞不下
  • 做到一半忘了前面说的啥

OpenSpec 的思路是:先把需求拆成一条条约束,AI 照着约束执行就行,不用猜。


新增 5 个命令

命令干嘛的
/ccg:spec-init装 OpenSpec CLI,初始化项目
/ccg:spec-research分析需求,输出约束集
/ccg:spec-planCodex + Gemini 并行分析,生成执行计划
/ccg:spec-impl按计划一步步实现,完了自动归档
/ccg:spec-review双模型审查,随时可以用

流程图

需求 ──→ spec-research ──→ spec-plan ──→ spec-impl
              │                │              │
           约束集          零决策计划      机械执行
              │                │              │
         "JWT TTL=15min" "用 bcrypt"    照着写就行
         "锁定30min" "cost=12"      不用想

每个阶段之间可以 /clear,不怕上下文爆。


约束集长啥样

传统方式,AI 研究完给你一堆信息:

JWT 是一种 token 格式,可以用来做认证...
刷新令牌可以用来获取新的访问令牌...
密码加密可以用 bcrypt 或者 argon2...

看完还是不知道该怎么做。

OpenSpec 方式,输出的是约束:

硬约束:
- JWT TTL = 15min,刷新令牌 TTL = 7d - bcrypt cost = 12 - 5 次失败后锁定 30min

软约束:
- 刷新令牌用完即失效 - 支持多设备登录

依赖:
- 需要 redis 存黑名单

风险:
- 用户表要加 failed_attempts 字段 

后面 plan 和 impl 阶段照着这个来,不用再想。


怎么用

# 先更新
npx ccg-workflow@latest

# 初始化 OpenSpec
/ccg:spec-init

# 开始
/ccg:spec-research 实现用户认证,支持 JWT 和刷新令牌
# → 输出约束集

/ccg:spec-plan
# → Codex 和 Gemini 并行分析,输出 tasks.md

/ccg:spec-impl
# → 按 tasks.md 执行,完了自动归档 # 想审查一下
/ccg:spec-review


spec-review 审查啥

Codex 和 Gemini 同时跑,各看各的:

Codex 看Gemini 看
规范约束有没有满足命名规范、代码风格
安全SQL 注入、权限XSS、CSRF
质量逻辑对不对好不好维护

结果分三级:

  • Critical - 必须改
  • Warning - 建议改
  • Info - 随便


和原来的命令啥关系

OpenSpec 这套适合复杂功能,需要追溯的那种。

简单任务还是用原来的:

  • /ccg:workflow - 一把梭
  • /ccg:frontend / /ccg:backend - 单一领域
  • /ccg:feat - 快速开发


常见问题

Q: OpenSpec CLI 装不上?

npm install -g @fission-ai/openspec@latest

Q: 上下文快满了?

每个阶段结束会提示 token 用量,快满了就 /clear,然后继续下一个命令。状态都存在 openspec/ 目录里,不会丢。

Q: 可以跳过 research 直接 plan 吗?

可以,但约束不完整的话 plan 阶段还是要做决策,效果打折。


鸣谢


版本: v1.7.48 | 更新


📌 转载信息
原作者:
feng_li
转载时间:
2026/1/24 06:33:26

令牌:sk-kFEhuzNdQmqoayHHj0dItoKVvUT3Nzbj001ImhexpRm0ZCRm
URL:http://newapi.site-ali.sakuraovo.site/

扣子上我有好多点数呀,但是不知道 coze 上到底有多少模型能用

目前就开了 deepseek 和豆包 1.6

佬们要是知道有别的模型我再放上去


📌 转载信息
原作者:
Huameitang
转载时间:
2026/1/24 06:33:14

前言:现在使用 Antigravity 反代很容易 429,然后就请求飘红,日志飘红,终端飘红。

前段时间冒出了很多软件,在进行一段时间使用后,我发现可以将他们变成一个工具链,现在因为上游压力大,工具链的使用能很好过滤掉 429 请求,让终端报错飘红减少了很多,请求该红还是 红,这个是上游决定的。

效果图:

因为添加了 ccNexus,能很好的将错误的请求 429 给过滤掉了,所以终端很少报错,几乎不用重试。有一点要注意的是 ccNexus 也有智能断端点切换,你得保证只开启 Antigravity tools 的端点配置,就能愉快的使用了

方案在下面这个帖子
【来猛烈的 AI 组合技】工具集合分享 ,看看是不是差生文具多 - 开发调优 - LINUX DO


📌 转载信息
原作者:
vkrain
转载时间:
2026/1/24 06:32:52

起源

发帖求助后,自己细想想应该有工具可以往右键添加操作,不想下载新 App,检索对比 Automator.app 和 Shortcuts.app 后决定还是使用 Shortcuts.app 搭配 AppleScript 来实现我要的操作。

脚本

-- 辅助函数:去除字符串首尾的空格、制表符、换行等空白字符
on trimText(theString)
	if theString is "" then return theString
	
	-- 使用非保留字的变量名:trimStart / trimEnd
	set trimStart to 1
	repeat while trimStart ≤ length of theString and character trimStart of theString is in {" ", tab, return, linefeed}
		set trimStart to trimStart + 1
	end repeat
	
	if trimStart > length of theString then return ""
	
	set trimEnd to length of theString
	repeat while trimEnd ≥ trimStart and character trimEnd of theString is in {" ", tab, return, linefeed}
		set trimEnd to trimEnd - 1
	end repeat
	
	return text trimStart thru trimEnd of theString
end trimText

-- 获取 Finder 当前窗口的位置
tell application "Finder"
	set currentPath to insertion location as alias
end tell

-- 弹出对话框,提示用户输入文件名,默认为“Untitled.txt”
set defaultName to "Untitled.txt"
set userInput to text returned of (display dialog "请输入新文件的名称:" default answer defaultName with title "创建新文件")

-- 清理用户输入:去除首尾空白
set fileName to my trimText(userInput)

-- 如果用户什么都没输(或只输空格),则使用默认文件名
if fileName is "" then set fileName to defaultName

-- 智能处理扩展名:
-- 情况1:文件名中不含“.”,或者以“.”开头(如“.gitignore”),则添加 .txt
-- 情况2:文件名以“.”结尾(如“笔记.”),则补全为“.txt”
if fileName does not contain "." or fileName begins with "." then
	set fileName to fileName & ".txt"
else if last character of fileName is "." then
	set fileName to fileName & "txt"
end if

-- 检查是否已存在同名文件,若存在则自动添加编号(如“文件 1.txt”)
tell application "Finder"
	set baseName to fileName
	set counter to 1
	
	-- 从文件名末尾查找第一个“.”,正确分离主文件名和扩展名
	set revChars to reverse of characters of fileName as string
	set dotIndex to offset of "." in revChars
	
	if dotIndex = 0 then
		-- 理论上不会发生(前面已处理无扩展名情况),但保留安全兜底
		set namePart to fileName
		set fileExt to ""
	else
		-- 提取扩展名(如“txt”)和主文件名(如“报告”)
		set fileExt to reverse of (characters 1 through (dotIndex - 1) of revChars) as string
		set namePart to text 1 thru -(dotIndex + 1) of fileName
	end if
	
	-- 循环检查文件是否存在,若存在则生成带编号的新文件名
	set fileName to baseName
	repeat while (exists file ((currentPath as text) & fileName))
		if fileExt is "" then
			set fileName to namePart & " " & counter
		else
			set fileName to namePart & " " & counter & "." & fileExt
		end if
		set counter to counter + 1
	end repeat
	
	-- 在当前目录创建新文件,并在 Finder 中高亮显示
	set newFile to make new file at currentPath with properties {name:fileName}
	reveal newFile
end tell

AIGC 声明:本脚部分函数由 通义千问 辅助创造,本人已验证其生成内容的真实性和有效性

使用方法

我也是第一次接触 AppleScript ,考虑可能有其他佬友也未接触使用过,特贴出使用方法

  1. 打开 Shortcuts.app
  2. 如果你是首次使用,请按⌘ + , 打开设置中的高级-允许使用脚本
  3. 新建快捷指令
  4. 设置基本信息
  5. 添加 AppleScript
  6. 在 Finder 中使用

参考文献

AppleScript 开发文档
AppleScript 入门:探索 macOS 自动化 - 少数派


如果有帮到你,还请给我投两个 LDC 吧!
或者请我喝杯咖啡

都不想的话请点个免费的也好


📌 转载信息
原作者:
LeonShaw
转载时间:
2026/1/24 06:32:36

“我的笔记本是 16G 内存的 M3 Pro ,为什么我还需要一台只有 4 核 8G 的服务器?”

在 Reddit 的 r/indiehackers 板块,这是新手最常问的问题之一。在 Serverless (如 Vercel )和 PaaS (如 Supabase )横行的今天,VPS ( Virtual Private Server ,虚拟专用服务器)似乎显得有些“老派”。

但现实是:真正能跑通商业闭环、实现长期盈利的独立开发者,手里一定攥着几台 VPS 。

本文将从独立开发的 7 个核心痛点出发,深度解析为什么 VPS 是你迈向专业化、摆脱“代码玩具”的必经之路。


1. 摆脱“本地焦虑”:解决 node_modules 与 Docker 的空间黑洞

独立开发者最昂贵的资产是笔记本,而最廉价的则是笔记本硬盘。这波 AI 编程大部分都是 NextJS ,这也就带来了 node_modules 灾难。其实还有 cc 居然也喜欢拉 bb 。如果观察 cc 的执行过程,会发现它一直要写东西去 /tmp 目录

  • 痛点:硬盘与性能的双重榨干


    • node_modules 爆炸:同时维护 10 个项目,node_modules 能吃掉 50GB 以上的 SSD 。
    • Docker 镜像堆积:在本地运行容器会让系统响应迟滞,风扇咆哮。
    • 计算占用:本地运行 PostgreSQL 或 Redis 等中间件会显著拖慢 IDE 的响应速度。
  • 解决方案:VPS 作为“重型计算中心”
    你只需在本地保留一个轻量的 VS Code + Cursor,通过 Remote SSH 连接 VPS 。所有的重型依赖和环境都在云端运行,笔记本只负责显示 UI 。

图 1:本地开发负载 vs. VPS 远程卸载对比

2. 拒绝“SaaS 账单勒索”:从商业逻辑看成本控制

独立开发最怕的不是没用户,而是用户还没付钱,SaaS 账单先爆了。最近几年做 AI 编程,难免会接触到 supabase ,clerk 等工具,其实包括 vercel 也一样,用下来会发现一开始很爽,然后爽着爽着,账单就爆炸了。vercel 有个很有意思的坑,就是 Image 组件,编译的时候会提示最好用 <Image 组件,听起来很贴心对吧?但这个组件默认走 Vercel 的图片优化服务——每优化一张图就计费一次。流量大的站点,光图片优化费用就能超过主机费用。

Vercel 的 Hobby 免费套餐非常诱人——部署、CDN 、SSL 全包。但一旦你的项目有了流量,噩梦就开始了。

超额收费一览

资源 Pro 套餐包含 超出后收费
带宽 1 TB/月 $0.15/GB(即 $150/TB )
Edge Requests 1000 万/月 $2/百万
Serverless 执行时间 40 小时/月 $5/小时
图片优化 5000 张/月 $5/1000 张
  • 痛点:被绑架的扩展成本


    • PaaS 陷阱:Firebase 的免费额度诱人,但一旦涉及复杂备份或高并发,价格呈指数级增长。
    • 身份验证收费:Clerk 等按月活用户收费,对高频低客单价应用是噩梦。
  • 解决方案:全栈自建( Self-hosting )
    在 $5/月 的 VPS 上,你可以利用 Docker 跑满性能,同时运行:数据库( PostgreSQL )、验证系统( PocketBase )和统计系统( Umami )。

图 2:SaaS 订阅 vs. VPS 固定成本曲线对比

💡 公平地说:自建服务确实需要一定的运维能力。但最近很多海外开发者分享了自己维护 PostgreSQL 的经验——比想象中简单得多,尤其是有了 Docker 和自动备份脚本之后。后面我会详细讲怎么做。

3. 真正的 CI/CD:构建“一人 IT 部门”的自动化流水线

独立开发者的核心竞争力在于迭代速度。部署到 vercel 、cloudflare 、Netfily 等 servless 平台在早期验证需求的时候,是非常好的,但是这些平台的问题是,它们的 node 实现是不完备的,一些长时间的任务就没法跑。以前本地打包机器就开始呼啸,通过 github 的 action ,这个事不用操心了,弄好就是 docker 镜像,然后,起飞了。

  • 执行时间限制:Serverless 函数通常有 10-60 秒的超时限制,一般默认是 10s

  • 无持久进程:WebSocket 、长连接、后台任务都很别扭

  • 冷启动延迟:首次请求可能需要等待数秒

  • 痛点:手动部署的低效与错误
    如果你还在用手动执行 git pull,你不仅在浪费生命,还在增加生产事故的概率。

  • 解决方案:基于 VPS 的轻量自动化
    利用 VPS 运行 GitHub Actions Runner


    1. Git Push 触发流水线。
    2. VPS 自动拉取代码并构建 Docker 镜像。
    3. Docker Compose 自动重启容器,实现零停机更新。

图 3:基于 VPS 的自动化 CI/CD 流水线示意图

不知道是不是这个原因,现在 cloudflare 也不咋推 pages 了,又回到 worker ,感觉挺难用的,你怎么看?

4. 解决“网络壁垒”:从静默爬虫到跨境访问

很多项目在本地跑不通,不是代码问题,而是网络环境问题。开发用都的很多 npm 包,或者其他的资源,常常会因为网络,把人给气死,累死,折腾死,烦死。

  • 痛点:变动的 IP 与受限的出口


    • 固定 IP 需求:对接 Stripe 、PayPal 或银行 API 时,通常需要固定的公网 IP 做白名单。家庭宽带的动态 IP 根本没法用。
    • 网络环境问题:开发时用到的很多 npm 包、Docker 镜像、GitHub 资源,经常因为网络问题把人折腾得够呛。
    • 反爬虫封禁:如果你在做数据采集相关的项目,家庭宽带 IP 极易被反爬策略封禁。
  • 解决方案:VPS 作为全局网络枢纽


    • 固定身份标识:为业务提供永久的公网 IP ,Stripe Webhook 、OAuth 回调都能稳定工作。
    • 反向代理中心:一个 VPS 配合 Nginx 或 Caddy ,可以管理 10+ 个域名并映射到不同的本地端口。
    • 开发环境加速:npm install 、docker pull 都在 VPS 上执行,下载速度飞快,不再受本地网络限制。

image.png

和 nginx proxy manager 有仇,已经好几次了,弄它的 Docker ,能占 10 来 G 的空间,完全不理解,caddy 就小巧很多。

5. 守护“睡后收入”:24/7 监控与容灾

独立开发最痛苦的时刻,是早上醒来发现服务已经挂了一整晚,而你毫无察觉。(希望是伪命题,真来钱的项目,还是很上心的!)

痛点:缺乏哨兵

  • 本地电脑会休眠,没法做持续监控
  • 免费的外部监控工具检测频率太低(如 5 分钟/次),发现问题时用户早就流失了
  • 很多问题是"偶发性"的,等你手动检查时一切正常

解决方案:自建监控站

在 VPS 上部署 Uptime Kuma(或类似工具),每 30-60 秒检测一次全球访问状况。一旦挂掉,立即通过 Telegram 、Discord 或邮件通知。

监控清单建议

监控项 检测频率 告警方式
HTTP 状态码 60 秒 Telegram 即时通知
SSL 证书到期 每天 提前 14 天预警
服务器资源 5 分钟 CPU/内存超 80% 告警
数据库连接 60 秒 连接失败立即通知

进阶玩法

  • Uptime Kuma 做可用性监控
  • BezelNetdata 做服务器资源监控,Bezel 还挺好用的。Netdata 稍微重点。
  • 两者结合,形成完整的监控闭环

图 4:全天候监控与即时告警闭环

6. 数据主权:独立开发的“最后防线”

  • 痛点:平台依赖风险

    如果你的数据全在 Firebase ,某天账号因为合规问题被封,你的所有努力将瞬间清零。

  • 解决方案:VPS 本地化存储 + 异地备份


    • 数据隔离:数据库文件完全属于你。
    • 自动化备份:编写一个简单的 Cron 任务,每天定时将数据加密并同步到 S3 或你的本地存储。

image.png

7. 独立开发者的资源规划:“1 + N” 策略

针对 2026 年的典型开发场景,我们建议采用以下阵列:

类型 规格建议 核心作用
1 台主领地 2 核 4G 或 4 核 8G 运行 Nginx 、核心数据库、核心产品。
N 台哨兵机 1 核 1G 或更低 运行 Uptime Kuma 监控、小型爬虫、测试环境。
为什么需要分开?
  • 监控服务不应该和被监控的服务在同一台机器——否则机器挂了你也收不到告警
  • 测试环境和生产环境隔离,避免误操作
  • 多台小机器比一台大机器更有弹性

image.png

Reddit 上 Hetzner 被反复提及为"性价比之王":同样的价格,配置通常是美国云服务商的 2-3 倍。缺点是机房主要在欧洲,亚洲访问延迟较高。

咋说呢? 数据库还是很重要的,如果精力有限,就还是用 neon 或者 supabase 之类的。

总结:从“玩票”到“专业”的入场券

拥有 VPS 的那一刻起,你就不再只是一个“写代码的人”,而是一个 “系统的掌控者”。它为你提供了:

  • 确定性:不再受本地环境变化的干扰。
  • 连续性:产品 24 小时独立生存。
  • 商业性:以最低的边际成本支撑业务增长。

正如独立开发圈子里流传的一句话:“你的第一个服务器 IP ,就是你产品的第一张名片。”(我编的)

VPS 入门:为什么独立开发者需要一台 VPS ?( 2026 深度版)

新加坡的会场里,全球人工智能顶会 AAAI,正式揭晓年度奖项,也迎来了它的第 40 个年头。

今年共颁发了 5 个杰出论文奖,以及 2 个经典论文奖。在获奖名单中,竟然还有“机器学习三巨头”之一的 Yoshua Bengio

不过这一次,他并不是因为最新成果获奖,而是凭借在 2011 年写的一篇论文获得了经典论文奖。而且不久前,他刚达成 AI 领域首个“百万被引作者”的成就。

为什么 10 多年前的这篇论文,会在今年被重新拉出来,还获得了经典论文奖?

不妨来看看它讲了些什么。

论文名为 Learning Structured Embeddings of Knowledge Bases(《面向知识库的结构化表示学习》)。提出了一种方法,把知识库的结构化数据嵌入到连续空间中,从而让结构化知识更容易用于机器学习任务。

换句话说,这篇文章解决的是如何把离散世界(知识、事实、关系)嵌入到连续空间;以及如何让神经网络不靠纯统计,而是“接住现实结构”。而今天热门的世界模型、RAG、Agent 的外部记忆等等这些东西,从本质上讲,全都在复用这条路线。

再说回今年获奖的 5 篇杰出论文,这些论文有讲机器人和 VLA 的,有在讲如何在连续时间系统中让 AI 模型“白盒化”的,还有讲 LLM 和 CLIP、讲高频信号和局部判别结构的。

串起来看,这些论文的研究方向,其实可以概括出一个共同指向:AI 的竞争,已从拼实验环境的中的炫酷 Demo,转向真正的应用层。Scaling Law 那套虽然不完全失效,但多少有点过时了,谁能在真实世界中被理解、被修订、被信任越来越关键。

AAAI 2026: AI 走向现实,评奖标准重塑

下面来看看这几篇杰出论文,都有哪些有意思的信息。

具身智能领域:

论文名:ReconVLA: Reconstructive Vision-Language-Action Model as Effective Robot Perceiver(ReconVLA:作为高效机器人感知器的重建式视觉-语言-动作模型)

要说清本文的创新点,需要再这里先简单回顾一下什么是 VLA——VLA(Vision-Language-Action)具身智能领域的一个关键模型,可以把视觉感知、语言理解和动作生成统一到同一个模型中,直接根据“看到什么 + 听到什么”,来输出可执行机器人动作。

不过当前 VLA 的缺陷也是很明显的:比如模型在执行动作时,视觉注意力高度分散;即便模型能“理解指令”,但在复杂场景、多干扰物、长任务中,往往看不准真正要操作的物体。

结果就是:抓错对象、操作不精确(现实世界对精确度要求很高)、长链任务中途失败等等。

总之,以往 VLA 只监督“动作输出”,几乎不约束“视觉感知过程本身”。

ReconVLA 的关键思想是:不“告诉模型看哪里”,而是“逼模型把关键区域重建出来”。

其核心机制,简单来说,就是模拟人类视觉的“凝视(gaze)”机制,不要求模型输出框,也不输入裁剪图,而是让模型在内部生成一种“重建信号”,去还原“当前要操作的局部区域”。

论文还系统性地对比了三类视觉定位(grounding)范式:

  • 一类是以外部检测器和裁剪图像为代表的 Explicit Grounding

  • 一类是先输出目标框、再生成动作的 CoT Grounding

  • 以及作者提出的 Implicit Grounding(隐式 Grounding),也就是 ReconVLA 的方式。

图注:不同范式 Grounding 之间的概念性对比。

前两类方法本质上都是在显式告诉模型“答案在哪里”,并未真正改变 VLA 内部的视觉表示和注意力机制。

而 ReconVLA 通过重建过程,将关键区域作为一种隐式的视觉监督信号,引导模型生成所谓的“重建 token(reconstructive tokens)”,从而在不引入额外输入或输出的前提下,重塑视觉感知能力。

换句话说,它不再让模型“蒙着眼睛试动作”,而是强制模型在每一步决策前,先把目标对象看准,再去动手

关于从“结果可解释”,走向“结构可操作”:

论文名:Causal Structure Learning for Dynamical Systems with Theoretical Score Analysis

(基于理论评分分析的动态系统因果结构学习方法)

这篇论文提出了一种方法:CADYT。能够在连续时间、甚至不规则采样的数据中,同时刻画系统的动力学演化,并恢复其中的因果结构。

更重要的是,作者证明了用于判断因果关系的评分函数,在理论上等价于一种合理的模型选择准则,而不是经验性的启发式指标。换句话说,就是这个评分不是凭经验设计的,而是从理论上保证:它会偏向那些“解释得刚刚好、不多也不少”的因果结构。

在现实世界的系统中,无论是工业控制、物理系统,还是医疗过程,系统本质上都是连续时间演化的,而且由稳定的因果机制驱动。但以往的方法往往只能解决其中一半问题。

一类是时间序列因果发现方法,它们通常基于离散时间建模(如 DBN、Granger),并假设规则采样,因此在面对真实的连续动力学和不规则采样时,难以准确刻画系统本身的演化机制。

另一类是连续时间动力学建模方法(如 Neural ODE、GP-ODE),虽然能自然处理不规则采样,却主要关注预测精度,本质上并不区分因果依赖与偶然相关。

这就留下了一个长期存在的空白:几乎没有方法,既工作在连续时间框架下,又能够同时恢复系统的动力学机制和因果结构。

而 CADYT 正是针对这一空白提出的。它将连续时间的高斯过程动力学建模,与基于最小描述长度(MDL)和算法马尔可夫条件(AMC)的因果评分结合起来,在不规则采样条件下,通过比较不同因果结构对数据的“压缩能力”,来识别真正的因果关系,并给出了明确的理论保证。

说得更直白一点,这项工作把连续时间动力学建模,从“拟合得像不像真实轨迹”,推进到了“学到的机制在因果上是不是对的”。

论文名:Model Change for Description Logic Concepts

(描述逻辑概念的模型变更)

此论文还未公开上传,暂无链接。

关于表示学习,重新审视结构本身

论文名:LLM2CLIP: Powerful Language Model Unlocks Richer Cross-Modality Representation

(LLM2CLIP:强大语言模型解锁更丰富跨模态表征)

CLIP(Contrastive Language–Image Pre-training)是一个经典的多模态模型,通过对比学习,将图像和文本映射到同一语义空间,从而实现“以文找图、以图找文”等跨模态理解能力。

CLIP 在跨模态检索和基础语义对齐上表现出色,但它也有一个公认的短板:文本编码器容量较小、上下文长度有限,对长、复杂、信息密集的文本理解能力不足。这在长文本检索、多语言理解等场景中尤为明显。

LLM 在语言理解、上下文建模和世界知识方面,倒是明显更强。但问题在于,LLM 不能直接接入 CLIP

——一方面,原生 LLM 的句向量并不具备对比学习所需的“高区分度”,很难有效拉开不同 caption 之间的距离;另一方面,如果端到端联合训练 LLM 和 CLIP,计算成本也高得不可接受。

这篇论文提出了一种系统化的新方法,名曰:LLM2CLIP,顾名思义,把 LLM“接入”或“输送”到 CLIP 里,用 LLM 来替代或者增强 CLIP 的文本能力。

但这并不是简单地把 LLM 直接接进去。作者给出的解决路径,是分两步走,各解决一个关键障碍

第一步,是先让 LLM 成为一个“合格的文本 embedding 模型”。为此,论文提出了 Caption-Contrastive Fine-tuning

使用同一张图像对应的不同 caption 作为正样本,通过对比学习,让语义相近的描述在向量空间中更接近、不相关的描述更远;同时配合平均池化、双向注意力和 LoRA 等结构调整,提升句向量的稳定性和可区分性。

这一步的目标并不是做多模态,而是把 LLM 训练成一个真正“好用”的文本表示器。

第二步,则是直接用经过处理的 LLM,替换掉 CLIP 原有的文本编码器。在这一阶段,LLM 参数被冻结,仅训练一个非常轻量的 adaptor 来对齐视觉特征,使整体训练流程几乎等同于普通的 CLIP 微调,算力成本基本不变。

大量消融实验表明:同时保留两个文本编码器、或试图在两者之间做复杂对齐,效果反而更差;“直接替换”是最简单、也是最有效的方案。

实验结果显示,LLM2CLIP 在长文本检索任务上提升最为显著,短文本检索也有稳定增益,同时多语言检索能力明显增强。更重要的是,这些提升是在仅使用百万级数据、几乎不增加训练成本的前提下实现的。

总体来看,LLM2CLIP 的价值在于,它没有重造一个更大的多模态模型,而是用一种低成本、可复用的方式,把“语言理解”这块短板,直接补进了 CLIP 的核心结构里。

论文名:

High-Pass Matters: Theoretical Insights and Sheaflet-Based Design for Hypergraph Neural Networks

(高频信息的重要性:面向超图神经网络的理论分析与 Sheaflet 方法设计)

此论文还未公开上传,暂无链接。

总而言之,这些研究都在把关注点从结果层面的性能,推向模型内部的感知、结构和机制本身。

论文地址:

https://arxiv.org/abs/2508.10333

https://arxiv.org/abs/2411.04997

https://arxiv.org/abs/2512.14361

参考链接:

https://aaai.org/about-aaai/aaai-awards/aaai-conference-paper-awards-and-recognition/

https://aaai.org/about-aaai/aaai-awards/aaai-classic-paper-award/?utm_source

https://aaai.org/conference/aaai/aaai-26/award-talks/