主页 | Web版 | 订阅 | 归档 | Feed

GopherDaily

20260129

每日一谚:Do not be afraid to copy, when it makes sense


Go技术生态

20 年 Java 老店的“背叛”:WSO2 为何高呼“Goodbye Java, Hello Go”?
近日,全球知名的开源中间件厂商 WSO2 发布了一篇震动技术圈的博文——《Goodbye Java, Hello Go!》。 这是企业级软件在云原生时代技术风向标的一次重要偏转。作为 Java 时代的既得利益者,WSO2 曾在 API 管理、集成中间件领域构建了庞大的 Java 帝国。为何在今天,他们会做出如此激进的转向?Java 真的不适合未来了吗?Go 到底赢在哪里?

你的 CLAUDE.md 写错了:为什么指令越多,AI 越笨?
在使用 Claude Code、Cursor 或 Gemini Cli 等 AI 编程工具时,你是否遇到过这样的情况: 明明在项目根目录写了 CLAUDE.md(或 AGENTS.md),洋洋洒洒列了几十条项目规范:“使用 TypeScript”、“不要用 any”、“单元测试覆盖率要达标”…… 但 AI 就像个叛逆的实习生,经常对这些指令视而不见,反复犯同样的低级错误。 是你写的 Prompt 不够严厉吗?还是模型不够聪明?

【分布式系统】11 理论的试金石:用 Go 从零实现一个迷你 Raft 共识

Rebase, Everybody Rebase!
Rebase 是 Git 和 Dolt 中一个强大的工具。尤其对于智能体(Agent)而言。如果你的智能体无法解决冲突,那么你为它花费的 Token 就没有价值了。

在 Go 语言中追踪数据库交互:将原子事务与上下文关联起来的惯用方法

我提交了一个事务bug,所以我构建了一个linter
数据库操作泄露在事务之外并破坏了生产环境。以下是我如何构建一个Go linter来防止这种情况发生。 这篇文章详细介绍了作者如何因为在Go代码中意外地在数据库事务边界之外执行了数据库操作而导致生产环境问题,并决定构建一个自定义的Go linter(名为`transactioncheck`)来在编译时捕获此类错误。文章深入探讨了如何使用`go/analysis`框架来: 1. 识别事务调用(如`repo.Transaction(...)`)。 2. 捕获事务回调中的第一个参数(即`tx`事务范围的存储库实例)。 3. 遍历回调的抽象语法树(AST),检查所有数据库操作(如`GetUser`或`SaveUser`)是否使用了事务参数`tx`,而不是外部的、非事务范围的存储库实例(如`s.repo`)。 4. 处理将非事务存储库实例传递给辅助函数的情况,并递归分析这些辅助函数以检测深层泄漏。 作者还介绍了如何使用`analysistest`进行单元测试以及如何将自定义linter集成到工作流中(例如,通过任务运行器mise)。

云原生技术

Kthena:面向云原生时代的大语言模型推理
Volcano 社区自豪地宣布推出 Kthena,这是一个专为全球开发者和 MLOps 工程师设计的新子项目。Kthena 是一个云原生、高性能的大语言模型 (LLM) 推理路由、编排和调度系统,专为 Kubernetes 定制。它通过拓扑感知调度、KV 缓存感知路由和预填充-解码 (PD) 分离等特性,显著提高了 GPU/NPU 的利用率和吞吐量,同时最小化了延迟。作为 Volcano 的子项目,Kthena 将 Volcano 的能力从 AI 训练扩展到整个 AI 生命周期,提供了一个统一的端到端解决方案。

使用 kind 实验 Gateway API
本文档将指导您在 kind (Kubernetes in Docker) 上为 Gateway API 设置本地实验环境。此设置专为学习和测试而设计,帮助您在没有生产复杂性的情况下理解 Gateway API 的概念。 **警告:** 这是一个实验学习设置,不应用于生产环境。本文档中使用的组件不适合生产环境使用。当您准备在生产环境中部署 Gateway API 时,请选择适合您需求的实现。 在本文中,您将完成以下操作: 1. 使用 kind 设置本地 Kubernetes 集群。 2. 部署 cloud-provider-kind,它同时提供 LoadBalancer Service 和 Gateway API 控制器。 3. 创建一个 Gateway 和一个 HTTPRoute 以将流量路由到演示应用程序。 4. 在本地测试您的 Gateway API 配置。 此设置非常适合学习、开发和实验 Gateway API 概念。

AI

向一个激进缓存的网站添加动态功能
这篇文章介绍了作者如何在其使用Cloudflare进行激进缓存(缓存头15分钟)的博客上实现动态功能。主要通过使用`localStorage`在客户端实现以下两个功能: 1. **仅作者可见的编辑链接**:通过检查`localStorage`中的特定键,动态显示指向Django管理界面的编辑链接,作者还为此在后台添加了一个复选框来控制该功能的开启和关闭。 2. **标签内随机导航**:允许用户在特定标签的文章中随机跳转。点击“Random”按钮后,会使用`localStorage`记录标签和时间戳,并在接下来的5秒内(页面加载时间内),在页眉保持该随机导航按钮的可见性,使用户可以持续在该标签主题内随机冲浪。文章最后还展示了如何使用Claude Code for web来构建`/random/TAG/`这个动态跳转端点,包括使用CTE(公用表表达式)进行优化。

从提示到点击:将 MCP 应用部署到生产环境
了解 monday.com 如何使用 MCP 应用将交互式 UI 交付到 ChatGPT。关于在 AI 聊天中构建小部件的实用模式,从原型到生产。

Cursor 如何将其编码智能体投入生产
Cursor 的工程团队分享了构建 Composer 和将其编码代理投入生产的技术细节和挑战。本文将深入探讨这些工程挑战以及他们如何解决这些问题。文章首先区分了编码代理和代理式编码模型,并概述了 AI 编码的三个浪潮。接着,文章详细介绍了 Cursor 代理系统的核心组件,包括路由器、LLM(Composer)、工具、上下文检索、编排器和沙箱环境。最后,文章总结了在将代理投入生产过程中遇到的三大工程挑战:可靠的编辑(Diff 问题)、延迟累积(通过 MoE、推测解码和上下文压缩解决)以及大规模沙箱化。

技术发展的青春期
本文是Dario Amodei关于人工智能(AI)风险和机遇的深刻思考。作者将当前AI发展阶段比作人类的“技术青春期”,认为我们正面临着巨大的考验。文章的核心观点在于,虽然强大AI(Powerful AI)带来了巨大的潜在益处,但我们必须正视其带来的多方面风险,并制定应对策略。作者详细阐述了五大类风险:1. 自主性风险(AI失控或行为不可预测);2. 滥用风险(个体或小团体利用AI进行大规模破坏,尤其关注生物武器);3. 权力滥用风险(威权国家利用AI巩固或夺取全球权力);4. 经济颠覆风险(大规模工作岗位取代和财富过度集中);5. 间接影响风险(快速技术进步带来的社会和人类意义上的未知挑战)。 为了应对这些挑战,作者提出了多层次的防御措施,包括公司层面的宪法式AI训练(Constitutional AI)、可解释性科学(Mechanistic Interpretability)、透明度报告,以及社会层面的审慎立法和国际协调。作者强调,停止或大幅减缓技术发展是不现实的,关键在于民主国家必须抢在威权国家之前谨慎地、负责任地发展出安全可靠的强大AI,同时通过政策手段(如芯片出口管制和透明度立法)来争取缓冲时间,以确保人类能平稳度过这一“文明的考验”。

Closing the Software Loop | Benedict Brady
本文探讨了编码代理如何改变软件开发流程,从功能请求到最小干预下的自主部署。作者对比了传统的、耗时较长的产品开发循环(用户反馈 -> 产品团队 -> 工程团队 -> 人工审查 -> 产品更新),以及编码代理介入后加速的循环(尤其是在将需求转化为代码提交阶段)。文章还展望了更进一步的“闭环软件开发”,其中特性代理可以自主生成和验证用户需求,最终目标是实现一个几乎完全自主的系统,人类主要负责定义高层目标和品味。

流行工具与项目

hashicorp/vault
A tool for secrets management, encryption as a service, and privileged access management

kubernetes/ingress-nginx
Ingress NGINX Controller for Kubernetes

Tencent/WeKnora
LLM-powered framework for deep document understanding, semantic retrieval, and context-aware answers using RAG paradigm.

containers/podman
Podman: A tool for managing OCI containers and pods.

grpc/grpc-go
The Go language implementation of gRPC. HTTP/2 based RPC

navidrome/navidrome
🎧☁️ Your Personal Streaming Service

opencost/opencost
Cost monitoring for Kubernetes workloads and cloud costs

projectcalico/calico
Cloud native networking and network security

opentofu/opentofu
OpenTofu lets you declaratively manage your cloud infrastructure.

ollama/ollama
Get up and running with GLM-4.7, DeepSeek, gpt-oss, Qwen, Gemma and other models.

charmbracelet/crush
Glamourous agentic coding for all 💘

influxdata/telegraf
Agent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.

docker/cagent
Agent Builder and Runtime by Docker Engineering

go-chi/chi
lightweight, idiomatic and composable router for building Go HTTP services

opencontainers/runc
CLI tool for spawning and running containers according to the OCI specification

knadh/koanf
Simple, extremely lightweight, extensible, configuration management library for Go. Supports JSON, TOML, YAML, env, command line, file, S3 etc. Alternative to viper.

charmbracelet/bubbletea
A powerful little TUI framework 🏗

nats-io/nats.go
Golang client for NATS, the cloud native messaging system.

go-vikunja/vikunja
The to-do app to organize your life.

tailscale/tailscale
The easiest, most secure way to use WireGuard and 2FA.

gin-gonic/gin
Gin is a high-performance HTTP web framework written in Go. It provides a Martini-like API but with significantly better performance—up to 40 times faster—thanks to httprouter. Gin is designed for building REST APIs, web applications, and microservices.


编辑:Tony Bai

编辑主页:tonybai.com

GopherDaily项目:github.com/bigwhite/gopherdaily

Copyright 2019-2024 GopherDaily