个人技术博客,始于2014年。专注于 Android 开发、Java Web、移动端架构与 Linux 运维,累计 500+ 篇原创技术文章。
Clash Party 桌面客户端打包指南:从源码到全平台安装包
1. 项目概览 clash-party(https://github.com/zdltech8989/clash-party)是一套 Electron + Vue3(或 React) 的跨平台桌面客户端,用来可视化管理 Clash(代理)规则、订阅等功能。 项目的目录结构大致如下(以官方仓库为准): clash-party/ ├─ public/ # 静态资源(图标、网页入口文件等) ├─ src/ # 前端代码(Vue/React + TypeScript) │ ├─ renderer/ # 渲染进程(UI) │ └─ main/ # 主进程(Electron 主入口) ├─ build/ # 打包脚本、electron-builder 配置 ├─ electron-builder.yml # electron‑builder 配置文件 ├─ package.json └─ ... # 其他 核心技术栈 Electron(负责创建跨平台的原生窗口、系统托盘、文件系统 API) Vite / Webpack(编译前端资源) electron‑builder(把 Electron 项目打包成 Windows .exe、macOS .dmg/.pkg、Linux .AppImage/.deb/.rpm 等可分发文件) 下面会一步步讲解 如何把源码编译并打包成可运行的桌面客户端,并分别说明在 Windows、macOS、Linux 三个平台上需要的工具与注意事项。 2. 打包前的准备工作 环境 必装软件 说明 通用 - Node.js ≥ 18(LTS) - npm(或 yarn、pnpm) - Git 项目本身的依赖管理与构建脚本都基于 Node。 Windows 本机打包 - Windows 10/11 - VS Build Tools(包含 windows-build-tools) - (可选) wine 用来在 Linux 上交叉编译 Windows Electron‑builder 会调用 nsis 生成安装程序,需要本机或交叉的 wine。 macOS 本机打包 - macOS 12+(推荐最新) - Xcode Command Line Tools (xcode-select --install) 生成 .dmg/.app 需要 codesign 与 productsign,如果要做 notarization(苹果公证),还需要 Apple Developer 账号并配置 APPLE_ID、APPLE_APP_SPECIFIC_PASSWORD 环境变量。 Linux 本机打包 - Ubuntu 22.04 / Debian 12 / Fedora 39 等(64‑bit) - fakeroot、dpkg、rpm、snapcraft(取决于要生成的包格式) Linux 打包相对直接,只要系统支持对应的打包工具。 交叉编译(可选) - wine(Linux → Windows) - electron-builder 内置的 electron-osx-zip(macOS 包必须在 macOS 环境下生成) Linux/macOS 可以用 wine 生成 Windows 安装包;但 macOS 包只能在 macOS 上生成(除非使用 CI/CD/macOS 虚拟机)。 Tip:如果你只想快速生成可执行文件而不在意安装器(.exe、.dmg),可以直接使用 electron-builder 的 --dir 选项生成 “解压即用”(portable) 的文件夹。 ...
CodeGraph:把代码变成可查询图谱
开源工具 · 代码分析 · 图数据库 📌 **开源地址:**github.com/colbymchenry/codegraph(⭐ 971 Stars) 📜 **语言:**Python 🏷️ **标签:**code-analysis · dependency-graph · tree-sitter · Neo4j ⚠️ **状态:**Pre-alpha(开发中,欢迎尝鲜) 你有没有过这种经历? 入职第一天,前辈丢给你一个 10 万行 的项目源码,说:“先熟悉一下代码。” 你打开文件夹,几百个文件、几千个函数,谁调谁、谁依赖谁、改一处会不会崩十处——完全看不懂。 又或者你在做 Code Review,看到一个函数 processData() 被改了,你想知道:“还有哪些地方在调用它?改了会不会影响其他模块?” 传统的解决方案是全局搜索 + 人工梳理,费时费力还容易漏。要是能把整个代码库变成一张「关系网」,点点鼠标就能查到所有调用链,那该多好? 💡 **这就是 CodeGraph 想做的事:**把你的代码解析成一张可查询的图谱,函数、文件、类型是「节点」,调用、导入、包含关系是「边」。用图数据库的强大查询能力,秒级回答各种代码关系问题。 CodeGraph 是一个基于图数据库的代码分析工具。它能把你的代码仓库(Python、C、C++、Go、JavaScript)解析成结构化的图谱数据,存入 Neo4j 图数据库,然后通过 REST API 进行高效查询。 它能回答这些问题: 哪些函数调用了 foo? foo 又调用了哪些函数? 函数的完整「调用树」是什么?(递归展开) 谁使用了 foo 的返回值? foo 的定义在哪里?在哪些地方被调用? 哪些文件导入了 foo? foo 的类型是什么?还有哪些函数是同一类型? 三、核心能力详解 🌐 多语言支持 基于 tree-sitter 解析引擎(和 Neovim、Helix 等编辑器用的是同一个),统一支持 5 种主流语言: 语言解析器状态Pythontree-sitter-python✅Ctree-sitter-c✅C++tree-sitter-cpp✅Gotree-sitter-go✅JavaScripttree-sitter-javascript✅ ...
Horizon:让AI帮你读完HN、Reddit、RSS
开源 AI 新闻雷达 · 自动聚合 · 智能打分 · 双语日报 📌 **开源地址:**github.com/Thysrael/Horizon 🌐 **在线演示:**thysrael.github.io/Horizon 📜 **许可证:**MIT(完全免费)| ⭐ 4,800+ Stars 信息焦虑时代 你有没有这种感觉—— 每天刷 Hacker News、Reddit、RSS、公众号……刷了半天,真正有价值的内容没几条,反而被标题党和重复信息淹没。 好新闻分散在各处,坏信息却源源不断。 💡 你需要的不是更多的信息源,而是一个帮你"先筛一遍"的工具。 Horizon 是什么 Horizon 是一个开源的 AI 新闻雷达工具,核心理念: 🌅 你只需享受新闻,剩下交给 Horizon。 它能从 Hacker News、Reddit、RSS、Telegram、Twitter/X、GitHub 等 7 大平台自动抓取内容,用 AI 给每条新闻打分(0-10),去掉重复的,补上背景知识,最后生成一份排版精美的中英双语日报。 项目在 GitHub 上已获得 4,800+ Star,被 HelloGitHub 推荐,非常活跃。 核心功能详解 📡 7 大信息源一网打尽 Horizon 支持从以下平台抓取信息,覆盖了开发者日常关注的大部分渠道: 📰 Hacker News 抓取内容:热门技术故事 ✅ 支持 Top N 评论摘要 💬 Reddit ...
Open Design:开源免费的全能 AI 设计工具,16种Agent+129套设计系统+31种技能
本地优先 · 完全开源 · Claude Design 的最佳替代方案 📌 **开源地址:**github.com/nexu-io/open-design(⭐ 40k+ Stars) 🌐 **官网:**open-design.ai 📥 **下载:**Releases 页面 📜 **许可证:**Apache 2.0 一、Open Design 是什么? 2026年4月,Anthropic 发布了 Claude Design(基于 Opus 4.7),展示了 LLM 从「写文字」到「出设计稿」的飞跃。它一度爆火——但始终闭源、付费、纯云端、绑定 Anthropic 模型,无法自部署、无法切换 Agent、无法定制。 **Open Design(OD)**就是开源界的回答:同样的设计循环,同样的 Artifacts-first 理念,零锁定。 它的核心思路是:不造 Agent,只做连接。你电脑上已经装好的编程 Agent(Claude Code、Codex、Gemini CLI 等),Open Design 会自动检测并将它们转化为设计引擎,配合 31 种可组合技能和 129 套品牌级设计系统,驱动整个设计流程。 💡 **一句话概括:**告诉 AI「帮我做一个 SaaS 落地页」,它会先弹出问卷锁定需求,再选出视觉方向,然后自动生成带交互效果的完整页面——整个过程 1-3 分钟。 二、核心能力详解 🤖 16 种 Agent 自动检测 Open Design 不绑定任何单一模型。它会自动扫描你 PATH 中已安装的 Agent CLI,一键切换: ...
TinyFish:给AI Agent装上「上网能力」的企业级基础设施
在AI Agent飞速发展的今天,大模型越来越聪明,但它们有一个共同的短板——上不了网。无法实时搜索信息、无法浏览网页、无法自动操作网站,这让AI Agent的能力被大大限制。 TinyFish 就是为了解决这个问题而生的。它提供了一套企业级的 Web API,让任何 AI Agent 都能获得搜索、浏览、提取网页内容甚至自动操作网站的能力。 一个API Key,四大核心能力 TinyFish 的核心设计理念是「简单集成」。一个 API Key,统一的 credit 池,四个独立的 API 覆盖从搜索到自动化操作的全链路场景。 1. Search API — 网页搜索 输入查询关键词,返回结构化的搜索结果(标题、摘要、URL),直接可供 LLM 消费或程序化处理。 核心特性: 支持地区和语言偏好设置,获取本地化搜索结果 完全免费,不消耗 credits 速率限制:60次/分钟 使用示例(Python): `from tinyfish import TinyFish client = TinyFish() response = client.search.query( query=“2024年最佳AI编程工具”, location=“CN”, language=“zh” ) for r in response.results: print(r.title, “→”, r.url)` **cURL 调用:** `curl "https://api.search.tinyfish.ai?query=2024年最佳AI编程工具&location=CN&language=zh" \ -H "X-API-Key: $TINYFISH_API_KEY"` 2. Fetch API — 网页内容提取 用真实浏览器渲染网页(包括 JS 动态渲染的 SPA 页面),提取干净的页面内容。单次请求最多支持 10 个 URL,每个 URL 独立处理。 ...
别再被 AI 编程工具绑架了——Pi 让 Agent 自己改造自己
当所有 AI 编程工具都在"帮你决定一切"的时候,Pi 走了完全相反的路:给你一个最小核心,剩下的你自己组装。3000+ 社区包、50+ 扩展示例、30+ LLM 供应商——这不是一个产品,这是一个生态。 🔗 **项目主页:**pi.dev 📂 **GitHub:**earendil-works/pi 📜 **开源协议:**MIT 一、Pi 是什么? Pi 是一个极简主义的开源 AI 编程 Agent 框架,核心理念只有八个字:“提供原语,而非功能”(Primitives, not features)。 什么意思?Cursor 帮你内建了 Tab 补全、Windsurf 帮你内建了 Cascade 流程、Copilot 帮你内建了 Chat 面板——Pi 什么都不内建。它只给你四个工具(读、写、编辑、运行命令),然后说: “你需要什么功能,自己搭。搭不了?让我帮你搭。” 这就是 Pi 最特别的地方——它可以自己改造自己。你让 Pi 构建一个子代理系统,它写完代码后 /reload 立刻生效,Pi 就有了子代理能力。 二、三个独特优势 🎯 优势一:30+ LLM 供应商,想用谁用谁 Pi 支持 Anthropic、OpenAI、Google Gemini、Azure、Bedrock、Mistral、Groq、Cerebras、xAI、DeepSeek、Hugging Face、Kimi、MiniMax、小米 MiMo、OpenRouter、Ollama 等 30+ 供应商。 认证方式灵活: API Key:export ANTHROPIC_API_KEY=*** OAuth 订阅:/login 直接登录 Claude Pro/Max、ChatGPT Plus/Pro、GitHub Copilot ...
别再跪着啃源码了!Understand Anything 让你10分钟看透20万行代码
你有没有过这种经历? 刚入职一家新公司,领导丢过来一个20万行的代码库说:“这是咱们的核心系统,你先熟悉一下。” 然后你打开IDE,面对几百个文件夹、几千个文件,完全不知道从哪看起。看哪个文件?谁调谁?这个模块干嘛的?那个接口跟谁对接? 一整天下来,除了眼睛疼,啥也没看明白。 更惨的是接手"祖传代码"——前人已离职,文档不存在,注释是乱码,你只能一个函数一个函数地跟踪跳转,像在黑暗的迷宫里摸墙走。 今天介绍的这款开源工具,就是来终结这种痛苦的。 一、Understand Anything 是什么? Understand Anything 是一个 Claude Code 插件,它能用多 Agent 协作的方式,把你的整个代码库变成一个可交互的知识图谱。 不是简单的文件依赖树,而是一个你能点、能搜、能问的智能知识网络。每个文件、函数、类都是图上的节点,点击就能看到依赖关系、自然语言解释、架构分层。 GitHub 地址:https://github.com/Lum1104/Understand-Anything 截至目前:29k+ Star,2400+ Fork,上线不到两个月就冲上 GitHub Trending 榜首,热度可见一斑。 一句话总结:它不只是展示代码结构,它教你理解代码库。 二、核心功能拆解 1️⃣ 一键生成代码知识图谱 运行 /understand,工具会启动5个专业 Agent 协作: project-scanner:扫描项目,识别语言和框架 file-analyzer:提取函数、类、依赖关系,构建图谱节点和边 architecture-analyzer:识别架构分层(API / Service / Data / UI) tour-builder:生成架构导览路线 graph-reviewer:校验图谱完整性和一致性 最终输出一个 JSON 格式的知识图谱,并可通过 Dashboard 可视化展示。 支持 26+ 文件类型,不只是代码——Dockerfile、Terraform、SQL、Markdown 都能纳入图谱。 2️⃣ 交互式 Dashboard 运行 /understand-dashboard,浏览器自动打开一个交互式可视化面板: 🎨 按架构分层颜色编码(API 层蓝色、Service 层绿色、数据层橙色……) ...
谷歌 Antigravity 2.0 深度解读:从 AI 编程工具到通用智能体工作平台
2026年5月,谷歌I/O大会重磅发布 📌 官网地址: antigravity.google 📥 下载地址: antigravity.google/download 📚 官方教程: Getting Started 教程 一、Antigravity 是什么? 2025年11月,谷歌随 Gemini 3 一同发布了 Antigravity——一个「Agent 优先」的敏捷开发平台。它基于 VS Code 内核重构,整合了谷歌以 24亿美元 收购的 Windsurf 团队技术,将 IDE 从「AI 辅助编码」推进到 「Agent 自主执行 + 开发者审核」 的新范式。 简单来说:传统 AI 工具是帮你写代码,Antigravity 是 AI 帮你 规划、编码、测试、运行,你只负责审核和决策。 2026年5月的谷歌 I/O 大会上,谷歌发布了 Antigravity 2.0,定位从「开发者的 AI IDE」全面升级为 「通用智能体优先工作平台」,可以作为统一中枢管理多个数字智能体。 💡 核心理念: 「Agent 做事,开发者审核」——Agent 不仅能写代码,还能启动应用、在浏览器中测试、验证功能是否正常。通过 Tasks 和 Artifacts 进行更高层次的沟通。 二、Antigravity 2.0 核心更新 1️⃣ 多智能体协同 Antigravity 2.0 最大的亮点之一是 多智能体并行。你可以同时部署多个子智能体,分别处理不同的编程任务,互不干扰,多任务并行效率大幅提升。 以前开发需求要等一个任务完成才能开始下一个,中间只能盯着屏幕发呆。现在,你可以在 Agent Manager 中同时跑多个 Agent,在不同工作区处理多个不同任务,真正解放双手。 ...
关于java中使用split方法末尾空值被丢弃的问题
在最近的一次项目中,使用split方法分割字符串后得到的数组与预期不符。 查找原因后发现,使用默认的split方法时,会默认丢弃字符串末尾的空值,而字符串中间的空值则>会作为数组中的一项数据,不会被丢弃。 查询相关资料得知java中的split方法有两个参数,第一个参数是被分割的字符串,第二个参数则是一个int值,此值默认为0,丢弃末尾空数据。 而当第二个参数值大于0时,代表分割字符串后数组的最大长度,当它小于0时,代表获取数组所有值,不会丢弃末尾空值。 `String a="a,"; String[] charsArr=a.split(","); System.out.println(charsArr.length); 代码输出的是1 ` `String a="a,"; String[] charsArr=a.split(",",-1); System.out.println(charsArr.length); 代码输出的是2 `
在Centos7上使用YUM升级更新Git版本(Git 2.x )
网站在部署到服务器的这个过程,有时候会非常麻烦,以前SEO禅都是用FTP或者用rsync命令,现在因为Github私有仓库免费了,就直接使用Git来部署,修改后的源码只要Push到仓库里,再在服务器Pull下来,别说有多方便有多爽了,要是再使用Docker去部署服务器程序,那就是分分种搞定网站部署的事,以前要部署一个网站少说要个把小时,这篇文章主要是分享下在阿里云的ECS服务器如何更新Git到2.x版本。 更新方法 默认在Centos上使用YUM命令安装的Git版本是1.8x,在使用的时候会有些问题,有很多种更新办法,这里只分享最简单方便的一种,先运行如下命令看看Git的版本信息: `git --version git version 1.8.3.1 ` 如果这不是你想要的版本,那我们第一步要做的就是先移除Git,运行如下命令: `sudo yum remove git* ` 之后安装相关的RPM仓库,运行如下命令: `sudo yum -y install https://packages.endpoint.com/rhel/7/os/x86_64/endpoint-repo-1.7-1.x86_64.rpm ` 再重新安装一遍Git,运行如下命令: `sudo yum install git ` 当出现提示的时候,输入y,完成安装 再看看安装后的Git版本: `git --version `