聊天和社交 QQ - 80,90的青春。 微信 - 国内TOP1社交软件。brew install --cask wechat 钉钉 - 阿里巴巴出品协同办公软件。 企业微信 - 腾讯出品协同办公软件。 飞书 - 字节跳动出品协同办公软件。 Telegram - 地下社交软件,通信加密。 X(原twitter) - 地下社交软件,了解国内外大事。 XDeck 𝕏桌面客户端 Franz 多合一聊天工具 邮箱工具 Spark 输入法及键盘扩展 AutoSwitchinput 当你在Mac上打开不同的软件的时候,它可以自动帮你切换中文和英文输入法 Input Source Pro,推友开发的一个输入法自动切换工具 Tickeys 键盘打字风格模拟应用, 支持 Cherry轴等多种风格. keycue 快捷键辅助应用, 帮助记忆快捷键. KeyKey macOS 上优雅好用的键盘打字练习。 Karabiner-Elements 键盘映射工具 输入法 rime 可以下载鼠鬚管 Squirrel brew install squirrel-app 可以集成雾凇拼音更好用,具体的步骤如下: 1.打开 Terminal 进入 cd "$HOME/Library“ 2 .保留自带的配置目录 mv Rime Rime.old或者直接干掉这个目录 3.下载配置 git clone --depth=1 https://github....
Arch Linux 常用软件
本文部内容理论上基于Arch的发行版都可以使用本文进行安装。推荐的发行版本 Manajro EndeavourOS CachyOS 如果您安装好了manajro但是又不想重装系统,可以试下这个脚本来将Manjaro自动转换为Arch。此外,DHH的omarchy (github)也值得一试~ Arch 安装后必装的软件 通过archinstall 安装以后,是没图形界面的。需要安装下面的一些软件和配置 安装时,声音后端的选择: PulseAudio,历史悠久、最为常用; PipeWire,新生代,采用全新架构,整合多种音频后端(PulseAudio、ALSA和JACK),提供低延迟的音频体 连接无线网 iwctl # 进入交互式命令行 device list # 列出无线网卡设备名,比如无线网卡看到叫 wlan0 station wlan0 scan # 扫描网络 station wlan0 get-networks # 列出所有 wifi 网络 station wlan0 connect wifi-name # 进行连接,注意这里无法输入中文。回车后输入密码即可 exit # 连接成功后退出 启用网络 systemctl enable dhcpcd systemctl enable wpa_supplicant systemctl enable NetworkManager 蓝牙 sudo systemctl enable --now bluetooth 如果没这个服务,可能需要通过 paru -S bluetooth进行安装。 如果需要启用蓝牙音频支持,请安装 paru -S pulseaudio-bluetooth 蓝牙高级管理工具 paru -S blueman...
懒猫微服 Go-SDK 使用指南
本文基于 apps-scheduler 和 cat-led 两个实际项目,介绍懒猫微服 Go-SDK 的使用方法。 SDK 简介 懒猫微服 Go-SDK(gitee.com/linakesi/lzc-sdk)是懒猫微服平台提供的 Go 语言 SDK,允许应用通过 gRPC 与懒猫微服系统交互。SDK 封装了以下核心能力: 应用管理(PkgManager):查询、启动、暂停应用 用户管理(Users):查询用户信息 设备管理(Box):查询设备信息、控制 LED、关机/重启 项目结构 使用 Go-SDK 开发的懒猫应用推荐采用如下项目结构: your-app/ ├── cmd/ │ └── your-app/ │ └── main.go # 应用入口 ├── internal/ │ ├── web/ │ │ └── server.go # Web 服务器配置与路由 │ ├── handlers/ │ │ ├── app.go # SDK 调用相关 handler │ │ └── userinfo.go # 用户信息 handler │ ├── biz/ │ │ └── usecase....
go-kratos使用备忘
我搭建的一个kratos项目模板,欢迎使用,仓库地址 需要特别注意的一些建议 API路由覆盖的问题 比如有两个接口 A get /v1/user/{user_id}和 B get /v1/user/profile如果A定义在B之前,那么B可能会被A覆盖路由。需要将A放到B之前。 JWT使用的建议 摘自极客时间课程《高并发系统实战课》 通讯过程必须使用 HTTPS 协议,这样才可以降低被拦截的可能。 要注意限制 token 的更换次数,并定期刷新 token,比如用户的 access_token 每天只能更换 50 次,超过了就要求用户重新登陆,同时 token 每隔 15 分钟更换一次。这样可以降低 token 被盗取后给用户带来的影响。 Web 用户的 token 保存在 cookie 中时,建议加上 httponly、SameSite=Strict 限制,以防止 cookie 被一些特殊脚本偷走。 配置文件 配置文件校验 配合buf的validate可以方便地进行配置文件的校验,在程序启动之前就对配置文件进行一次校验。下面是一个简单的proto配置定义 syntax = "proto3"; package conf; import "buf/validate/validate.proto"; import "google/protobuf/duration.proto"; option go_package = "github.com/tpl-x/kratos/internal/conf;conf"; message Bootstrap { Server server = 1; Data data = 2; Log log = 3; } message Server { message HTTP { string network = 1; string addr = 2; google....
我的 AI 采纳之旅【译】
本文原文地址,使用claude进行了翻译,作者是HashiCorp的创始人Mitchell Hashimoto。 作者:Mitchell Hashimoto | 原文日期:2026年2月5日 我在采纳任何一款有价值的工具时,通常都会经历三个阶段:(1)低效期、(2)适应期,最终才到达(3)彻底改变工作流程乃至生活方式的顿悟期。 大多数情况下,我必须强迫自己熬过第一阶段和第二阶段——因为我通常已经有一套令自己满意且顺手的工作流程。引入新工具意味着额外的付出,我实在不想花这份力气,但出于对所在领域的全面性追求,我通常还是会去尝试。 这篇文章记录了我如何在 AI 工具链中找到真正价值的历程,以及我正在探索的下一步方向。在一片夸大其词、充斥炒作的声浪中,我希望这篇文章能呈现一种更细腻、更审慎的视角,如实反映我对 AI 的看法是如何随着时间推移而演变的。 本文完全由我亲手写就,字字出自本人之口。这句话放在这里本不必要,但鉴于文章的主题特殊,我想明确声明。 第一步:放弃聊天机器人 立即停止通过聊天机器人(如 ChatGPT、Gemini 网页版等)完成有实质意义的工作。聊天机器人确实有其价值,也是我日常 AI 工作流程的一部分,但在编程场景下,其效用极为有限——因为你基本上是寄希望于模型凭借预训练知识碰巧给出正确答案,而纠错则需要人工(即你本人)反复告知它哪里错了,效率极低。 我认为,几乎所有人与 AI 的第一次接触都是聊天界面。同样,几乎所有人第一次尝试用 AI 辅助编程,也都是向聊天界面输入需求、让它生成代码。 在我还是个坚定的 AI 怀疑论者时,我第一次发出"哇哦"的感叹,是将 Zed 命令面板的截图粘贴给 Gemini,让它用 SwiftUI 复现出来——它的表现之出色令我真正震惊。如今 Ghostty macOS 版中内置的命令面板,正是在 Gemini 几秒内为我生成的代码基础上,仅做了极少量改动后发布的。 但当我试图将这种成功经验复制到其他任务时,却屡屡失望。在存量代码库(brownfield project)的上下文中,聊天界面产出的结果往往很差,我发现自己在代码和命令输出的复制粘贴上来回折腾,效率明显低于亲自动手。 要真正发掘价值,你必须使用智能体(Agent)。智能体是业界公认的术语,指能够在对话循环中调用外部能力的大型语言模型(LLM)1。至少,该智能体必须具备以下能力:读取文件、执行程序,以及发起 HTTP 请求。 第二步:用智能体重现自己的工作 在探索历程的下一阶段,我尝试了 Claude Code。直说吧:最初我并不买账。每次会话产出的结果都不尽如人意,几乎每次都需要大量的后期修改,这比自己动手还要耗时。我读了不少博客文章、看了不少视频,但依然兴趣寥寥。 没有放弃,我强迫自己用智能体重做所有原本手动完成的提交(commit)。我字面意义上把每件事做了两遍:先手动完成,再与智能体较量,迫使它在质量与功能上达到相同水准(当然,不让它看到我的手动方案)。 这个过程极其痛苦,因为它妨碍了"把事情做完"这一最直接的目标。但我与非 AI 工具打交道的经验足够丰富,深知摩擦阻力是一种自然现象,不把精力耗尽就无法得出坚实可靠的结论。 然而,专业认知在磨砺中逐渐成形。我从第一性原理出发,很快就亲身验证了别人已有的发现——而正因为是自己发现的,底层理解也更为深刻: 将会话拆分为若干清晰、可执行的独立任务,切勿试图在一次超长会话中"一步画完猫头鹰"。 对于模糊的需求,应将工作分拆为独立的规划会话与执行会话,分步推进。 若为智能体提供校验其工作成果的手段,它在大多数情况下能够自主纠错,并有效防止功能退化(regression)。 更宏观地看,我也摸清了当时智能体的能力边界——它们擅长什么、不擅长什么,以及对于它们擅长的任务,如何获得满意的输出。 这一切带来了显著的效率提升——我开始自然而然地使用智能体,感觉不比自己亲手做更慢(尽管也没感觉更快,因为我大部分时间仍在充当"监工")。 这里有一个值得反复强调的"负空间":效率提升的一部分,恰恰来自于清楚地知道何时不该使用智能体。让智能体去尝试它很可能失败的任务,显然是巨大的时间浪费;而掌握这种判断力、主动规避,本身就是一种节省2。 第三步:下班前的智能体任务 为了进一步挖掘效率空间,我开始尝试一种新的工作模式:每天预留最后 30 分钟,用于启动一个或多个智能体任务。我的假设是:如果智能体能够在我无法工作的时间里取得实质进展,或许就能在时间之外创造时间。也就是说:与其在现有的工作时间内多做事,不如在原本"空置"的时间里多做事。 和之前一样,起初我觉得这既无效又令人烦躁。但我很快又梳理出了几类真正奏效的工作: 深度研究型会话:让智能体梳理某个领域,例如找出某种语言中采用特定许可证的所有库,并为每个库生成多页摘要,涵盖优缺点、开发活跃度、社区口碑等维度。 并行探索模糊构想:同时启动多个智能体,分别尝试我还没时间着手的不同想法。我并不指望它们产出可上线的成果,但希望它们能帮我在第二天真正着手时,提前发现一些"未知的未知"。 Issue 与 PR 的分类梳理:智能体善用 gh(GitHub CLI),我编写了一个简单脚本来并行启动多个智能体做 Issue 分类。我不允许智能体直接回复,只需要隔天早上看到报告,帮助我识别高价值或低难度的任务。 需要说明的是,我没有像某些人那样,让智能体整夜不停地循环运行。大多数情况下,任务在半小时内就会完成。但工作日下午的后半段,我通常已经精力耗尽、离开心流状态,个人效率大打折扣——将这段精力转移到启动智能体任务上,让我第二天早上能够"热启动",比以往更快进入工作状态。...
掌控 LLM 输出:API 层的干预手段
你买不到模型的权重,但你可以在 API 层实施"外科手术式"控制。本文用 OpenAI Go SDK 演示每种干预手段在真实业务中的完整用法。 前置准备 go get github.com/openai/openai-go // client.go — 全文共用的客户端 package main import ( "github.com/openai/openai-go" "github.com/openai/openai-go/option" ) func newClient() *openai.Client { return openai.NewClient( option.WithAPIKey("sk-..."), // 或读取 os.Getenv("OPENAI_API_KEY") ) } 1. System Message — 给模型装"人格芯片" 原理 System Message 是发给模型的"宪法",在对话开始前设定角色、禁忌和回答格式。它不会被用户消息覆盖(模型会优先遵从)。 业务场景:客服机器人只允许回答产品相关问题 package main import ( "context" "fmt" "github.com/openai/openai-go" ) func customerServiceBot(userQuestion string) (string, error) { client := newClient() resp, err := client.Chat.Completions.New(context.Background(), openai.ChatCompletionNewParams{ Model: openai.F(openai.ChatModelGPT4o), Messages: openai....
Bun ORM 全面指南:Go 语言高性能数据库操作利器
(本文内容基于 Bun ORM 官方文档 翻译整理) 1. 简介:什么是 Bun ORM? Bun 是一个 SQL 优先的 Go 语言 ORM(对象关系映射)框架,支持 PostgreSQL、MySQL、MSSQL 和 SQLite。它旨在提供一种简单高效的方式来操作数据库,同时利用 Go 的类型安全特性并减少样板代码。 核心特性 基于标准库构建:构建在 Go 标准 database/sql 包之上 类型安全:提供类型安全的查询构建器,性能卓越 复杂关系支持:支持复杂的关系和连接操作 迁移支持:提供迁移和架构管理功能 强大的扫描能力:全面的数据扫描功能 钩子和中间件:支持钩子和中间件 生产就绪:经过广泛测试,可用于生产环境 为什么选择 Bun? Bun 通过 SQL 优先 的理念区别于其他 Go ORM,不试图对开发者隐藏 SQL。这种方法具有以下优势: 可预测的查询:你确切知道生成的 SQL 是什么 高性能:对原始 SQL 的开销最小 渐进式采用:易于集成到现有代码库 灵活性:需要时可降级到原始 SQL 类型安全:大多数操作的编译时检查 2. 安装与配置 安装 Bun 要安装 Bun 和所需的数据库驱动: # 核心 Bun 包 go get github.com/uptrace/bun@latest # 数据库驱动(选择一个或多个) go get github....
在Dokploy中通过Cloudflare Tunnel发布应用
通过 Cloudflare Tunnel,你可以不需要公网 IP、不需要在路由器/防火墙开启 80 或 443 端口,就能安全地将 Dokploy 上的应用发布到互联网。 核心流程图 用户 -> Cloudflare 域名 (HTTPS) -> Cloudflare 隧道 -> Docker 内部网络 (HTTP) -> 你的应用容器 第一步:在 Cloudflare 创建隧道 (Tunnel) 登录 Cloudflare Zero Trust。 进入 Networks -> Tunnels -> Create a Tunnel。 选择 Cloudflared,起个名字(如 my-server)。 在安装页面,找到 Connector Token(那一长串字符串),复制备用。 第二步:在 Dokploy 中部署隧道服务 在 Dokploy 中新建一个 Compose 服务(建议命名为 cloudflare-tunnel),使用以下配置: services: cloudflared: image: 'docker.1ms.run/cloudflare/cloudflared:latest' environment: - 'TUNNEL_TOKEN=你的TOKEN' # 建议在 Environment 变量中设置 networks: - dokploy-network # 必须加入此网络 restart: unless-stopped command: ["tunnel", "--no-autoupdate", "run"] networks: dokploy-network: external: true 第三步:部署应用 (以 Excalidraw 为例) 部署应用时,务必确保它与隧道在同一个 Docker 网络中,以便隧道能通过“服务名”找到它。...
Git Filer Repo快速指南
本文使用claude code编写,旨在提供一个详尽的 git-filter-repo 使用指南,涵盖安装、基础概念、路径和内容过滤、实用场景、高级功能、安全机制、完整工作流示例、故障排除、性能优化、常见错误与陷阱、与其他工具配合以及最佳实践总结等方面的内容。 什么是 git-filter-repo? git-filter-repo 是一个快速、功能强大的 Git 历史重写工具,是 git filter-branch 的官方推荐替代品。它由 Git 项目贡献者 Elijah Newren 开发,速度比 filter-branch 快 10-100 倍以上。 核心原理: git fast-export <options> | filter | git fast-import <options> git-filter-repo 同时扮演管道编排者和中间过滤器的角色,基于 fast-export 和 fast-import 实现高效的历史重写。 为什么选择 git-filter-repo? vs git filter-branch 特性 git filter-branch git-filter-repo 速度 极慢(大型仓库几乎不可用) 快 10-100 倍 安全性 易出错,可能静默损坏数据 内置多重安全检查 易用性 复杂的 shell 语法 简洁的命令行参数 跨平台 依赖 shell,跨平台问题多 纯 Python,跨平台一致 官方态度 已废弃,不推荐使用 Git 官方推荐 Git 官方警告: filter-branch 的问题无法向后兼容地修复,强烈建议停止使用。...
Calude Code编写的Ent ORM 完整指南
本文由claude code生成。作为备忘录和分享,欢迎指正和补充。 一、Ent简介 Ent是一个简单但功能强大的实体框架,用于Go语言,使构建和维护具有大型数据模型的应用程序变得容易。 Ent是由Meta(Facebook)开源团队构建的ORM框架,提供了一个API,用于将任何数据库模式建模为Go对象。 核心特性 Ent的主要特性包括: Schema As Code:将任何数据库模式建模为Go对象 轻松遍历任何图结构:运行查询、聚合并轻松遍历任何图结构 静态类型和显式API:100%静态类型和显式API,通过代码生成实现 多存储驱动支持:支持MySQL、PostgreSQL、SQLite和Gremlin 易于扩展:使用Go模板简单扩展和自定义 Ent是一个相当新的ORM,使用代码优先的方法,在Go代码中定义模式。Ent之所以流行,是因为它能够优雅地处理复杂的数据模型和关系。 二、快速开始 2.1 安装Ent # 初始化Go模块 go mod init myapp # 安装ent CLI工具 go install entgo.io/ent/cmd/ent@latest # 或者使用go get go get entgo.io/ent/cmd/ent 2.2 创建第一个Schema # 创建User实体 ent new User 这会在 ent/schema/ 目录下生成一个基础的schema文件: package schema import ( "entgo.io/ent" "entgo.io/ent/schema/field" ) // User holds the schema definition for the User entity. type User struct { ent.Schema } // Fields of the User....