IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

最新文章

采集自各技术站点的近期文章。

IT 后端/ 2026-06-21 19:10:45 / 累计浏览 65

使用 CLIProxyAPI, 让最新的 Codex 能够支持国内的各大模型

CLIProxyAPI 是一个轻量级 AI API 代理服务器,核心功能是实现 OpenAI Responses API 与 Chat Completions API 之间的双向格式转换,从而解决 OpenAI Codex CLI 仅支持 Responses API 而国内模型如 DeepSeek、GLM、Kimi 等仅提供 Chat Completions API 的兼容性问题。工作原理涉及请求方向的格式映射(如将 instructions 转换为 system message)和响应方向的流式 SSE 数据支持。安装通过 Git 克隆和 Go 编译完成,配置灵活,支持多 Provider 和模型别名设置,配置文件采用 YAML 格式并支持热加载。路由机制允许通过 prefix 前缀或 alias 自动匹配指定 Provider,避免重名冲突。文章提供了详细的配置示例,包括添加新 Provider 和模型,以及关键配置项说明。此工具简化了 Codex CLI 与国内 AI 模型的集成,适用于有 API 代理需求的开发者。

本机暂存
IT 开发者/ 2026-06-21 19:10:45 / 累计浏览 115

SPEC和PRD的区别

在软件开发中,产品需求文档(PRD)和技术规格说明书(SPEC)是两个关键文档,分别对应需求分析和系统设计阶段。PRD由产品经理主导,聚焦于“做什么及为什么做”,从用户与商业视角定义产品功能,包括用户故事、业务目标和信息架构,旨在转化商业需求为具体功能描述。SPEC则由技术主管或工程师负责,回答“怎么做及做成什么样”,关注技术实现细节,如数据库设计、API接口规范和系统边界,将PRD中的抽象需求落地为结构化标准。文章通过建造房屋的类比生动阐释:PRD如同业主需求清单(如“别墅两层”),SPEC则类似施工图纸(如“客厅面积45平方米,承重墙使用C30混凝土”)。此外,文章指出行业正从“看PRD写代码”转向规范驱动开发(SDD),因AI能高效执行高度结构化的SPEC,凸显其在自动化开发中的价值。在敏捷流程中,PRD先用于需求评审,SPEC随后指导编码和测试,确保从概念到实现的连贯性。

本机暂存
IT 开发者/ 2026-06-21 19:10:45 / 累计浏览 61

SPEC和方案设计有什么区别

在软件研发流程中,方案设计与SPEC(规格说明书)是两个关键但易混淆的文档类型。方案设计处于技术调研与评审阶段,核心是开放式的论证与权衡,通过对比多种备选方案(如缓存vs分库分表)来探索技术可行性,目的是暴露问题、达成共识,内容动态且可修改。SPEC则位于最终确认与开发阶段,作为闭环式的施工图,定义精准的技术细节,如API接口格式、数据库表结构和边界条件,提供静态、确定的执行标准,直接指导前端开发、测试用例编写等任务。例如,造桥场景中,方案设计讨论悬索桥与斜拉桥的选型理由,而SPEC规定斜拉索直径、混凝土标号等具体参数。实践中,团队可能将两者合并使用,前半部分写架构分析,后半部分写接口设计,以兼顾灵活性与确定性。理解区别有助于在不同研发阶段选择合适文档,提升协作效率与交付质量。

本机暂存
IT AI/ 2026-06-21 19:10:45 / 累计浏览 46

如何构建你自己的 Agent 运行时

文章剖析了当前AI Agent运行时框架的单体式缺陷,指出如LangChain等框架将运行时组件捆绑为整体,导致定制和扩展困难。iii引擎提出一种模块化架构,将运行时拆分为多个独立worker,包括turn-orchestrator、approval-gate、session、llm-budget等,每个worker通过共享引擎和WebSocket协议连接,使用触发器机制(如iii.trigger())实现通信。这种设计允许开发者替换特定worker而无需重写整个系统。文章详细列出Agent运行时必须完成的15项核心工作,涵盖持久化turn请求、凭证管理、模型目录查询、状态机驱动、策略检查、审批处理、预算追踪、上下文压缩等,并展示了iii引擎如何通过worker映射这些职责。执行流程从客户端请求开始,经过引擎触发、turn编排、模型调用、工具执行到结果返回,强调了自动化的OpenTelemetry集成用于调试。此外,文章通过五个示例说明构建自定义运行时的方法,如替换模型目录为实时API、添加新AI provider、从私有库提供技能、覆盖系统提示词以及替换审批UI,突出了模块化和可组合性优势。

本机暂存
IT 后端/ 2026-06-21 19:10:45 / 累计浏览 46

告别死锁和陈旧语法、告别性能瓶颈:三个开源 Skill,新手Gopher 秒变 Go 语言大神

文章聚焦Go语言开发者面临的三大核心挑战:并发死锁与数据竞争、性能瓶颈分析、代码语法现代化。针对并发问题,介绍AI Skill chao-go-sync,它整合并发编程知识,能诊断潜在竞态条件、锁竞争等bug,并推荐如RWMutex或WaitGroup.Go等优化方案。针对性能问题,chao-go-perf Skill提供数据驱动分析,指导基准测试编写、逃逸分析解读、CPU缓存优化及版本感知的性能改进。针对代码现代化,modern-go Skill基于go.mod版本自动应用28种语法转换规则,如将interface{}替换为any、使用slices.SortFunc等,确保代码符合最新Go惯用法。这些Skill嵌入AI编码助手后,可实时辅助开发者:例如分析项目并发缺陷时,提供详细报告和修复建议;检查性能问题时,指出热点函数和内存分配;升级旧代码时,自动执行转换并输出变更总结。文章通过实际案例演示Skill功能,并给出安装命令,强调这些开源工具如何降低Go开发门槛,提升效率与代码质量。

本机暂存
IT DevOps/ 2026-06-21 19:10:45 / 累计浏览 97

百度物理网络监控工具开源第二弹:毫秒级监控工具 baize,让你的网络问题无处遁形

baize 是百度开源的毫秒级网络监控工具,针对传统监控难以捕获的偶发性轻微丢包和比特翻转问题设计。它通过每秒5000包的高频探测,实现0.1%丢包率的精确检测,统计窗口可调至100ms。核心特性包括ECMP全路径覆盖,利用确定性端口轮转算法探测所有哈希路径;无需时钟同步的单向丢包检测,通过携带上一窗口发包信息在Server端无状态还原,避免NTP依赖;以及互补比特翻转检测,使用四种salt填充模式精确识别校验和漏检的翻转。性能优化采用Raw IP Socket和BPF过滤器减少内核开销,20MB Socket Buffer应对突发,8路并行读和无锁设计确保高吞吐。工具采用JSON配置驱动,单进程双角色部署,支持批量自动化,内置pprof便于调试。典型应用包括集群间监控、机房间探测、混合云链路等场景,与临时排查工具bitflip互补,专注于长期持续监控,为网络运维提供细粒度数据支撑。

本机暂存
IT 后端/ 2026-06-21 18:40:38 / 累计浏览 44

大厂的内部工具居然开源了! 一窥百度物理网络秒级监控定位的秘密

百度开源物理网络监控工具集nettools,首批发布bitflip和bitflip6,专注于大规模网络中的丢包检测与比特翻转识别。在物理网络环境中,传统ICMP的ping因无法构造五元组而失效,难以覆盖ECMP哈希分散的链路。bitflip采用UDP探测策略,通过生成大量五元组以确保覆盖所有可能路径。单向探测协议在包头上携带上一时间窗口的发送信息,使服务端能还原每个包的五元组,实现精确丢包定位,避免双向探测的路径误导。比特翻转检测使用四种salt填充模式,包括全0、全1、固定值和互补交替,专门应对绕过校验和的互补跳变问题。工程实现上,客户端利用raw socket直接构造IP和UDP包,结合BPF过滤优化收包性能,支持高并发探测。工具还支持双向对比故障方向,结合traceroute定位具体设备端口故障。该工具解决了大规模云服务中网络监控的精度与效率挑战,提供了从检测到定位的完整解决方案。

本机暂存
IT 后端/ 2026-06-21 18:40:38 / 累计浏览 36

百度网络监控工具开源第三弹:lidar — 不只是 pingmesh

百度开源的网络监控工具lidar是一种创新的探测方案,区别于传统pingmesh的全网互ping模式。传统pingmesh基于服务器间O(n²)复杂度的探测,百度原有netradar系统存在误报、漏报、时效慢和部署更新困难等问题。lidar采用单探测机发送TCP SYN包探测目标服务器,通过三种响应(SYN-ACK、RST、无响应)直接判断网络状态,无需安装agent或服务器端配置,简化了运维。开发中解决了跨平台收包差异:Linux上使用raw socket接收TCP响应副本,而macOS由于内核拦截,需通过BPF设备在链路层抓包。为优化高吞吐服务器性能,使用BPF过滤器在内核层过滤无关报文,仅投递匹配探测端口的报文,减少用户态开销。通过源端口轮转策略覆盖ECMP多路径,提高探测全面性。lidar具有高时效、高准确率和易于更新的优点,适用于机房内外网络监控,支持多种配置和高速率探测,已开源供社区使用。

本机暂存
IT 后端/ 2026-06-21 18:40:38 / 累计浏览 35

别只盯着gopacket了,看看这个强大的网络库

本文介绍了Go语言的新网络库goscapy,它是Python Scapy在Go生态的移植,旨在解决gopacket等传统库API繁琐的问题。goscapy提供两种核心数据包构造方式:一是流式Builder API,通过链式调用与类型安全的`Over()`方法逐层叠加协议,实现清晰的分层构建;二是针对常见协议组合的快捷函数,可实现一行代码完成复杂数据包构造。其核心优势在于自动化了繁琐的网络协议细节,通过BuildHook机制在序列化时自动计算各层校验和(包括伪头部),并利用BindingRule在层间绑定时自动设置正确的协议类型字段(如EtherType、IP Protocol),避免了手动设置易出错的痛点。这种设计显著提升了网络编程的效率和代码可读性,特别适用于需要快速构造、发送网络数据包并进行测试或探测的场景,为Go开发者提供了更优雅、强大的网络工具选择。

本机暂存
IT 后端/ 2026-06-21 18:40:38 / 累计浏览 45

寻找你代码中的臭味:一个让 AI 帮你嗅出架构腐化的开源 Skill

文章介绍了开源 Skill /smell,一个嵌入 AI 编程 Agent 的代码分析工具,用于检测架构腐化和坏味道。它扫描代码库,从架构到代码层面进行全面分析,输出 Markdown 报告,涵盖八个检测维度:架构级反模式(如 Big Ball of Mud、Anemic Domain Model)、耦合问题(循环依赖、内容耦合)、内聚性问题(God Object、Shotgun Surgery)、设计原则违反(SOLID、DRY)、代码级坏味道(Long Method、Magic Numbers)、测试健康度、命名质量、算法复杂度热点(N+1 查询、嵌套循环)。使用方式简单,在 Claude Code 中输入 /smell 命令,选择分析范围(如整个项目或指定模块),即可生成报告,包含问题严重度分级、代码证据、重构建议和分阶段路线图。工具整合了 Martin Fowler、Robert C. Martin 等大师的知识库,帮助开发者快速定位臭源,优先处理关键问题,提升代码质量和可维护性。对于团队协作和遗留项目治理,它提供了系统化的分析框架,减少人为盲点,支持 AI 辅助重构。

本机暂存
IT AI/ 2026-06-21 18:40:38 / 累计浏览 47

套壳不丢人!我用Go+AI搓了一个Agent统一编排框架,ClaudeCode-Codex-Pi全被我包了

作者在智能体开发中,从langchain转向套壳Claude Code、Codex、Pi等现有AI Agent,认为套壳是高效利用现成工具的合理方式。这些Agent已发展为通用智能体,不仅能处理代码任务,还可用于多种场景。面对多个Agent各自为政、胶水代码繁杂的问题,作者用Go语言开发了agent-wrapper框架,提供统一编排层。通过简单API,一行代码即可注册和切换不同Agent,如Claude Code、Codex、Pi等。框架核心功能包括三道安全闸门:审批拦截允许自定义工具调用权限,如只读操作而拒绝写入;预算监控在Token消耗超阈值时自动中断,防止成本失控;上下文压缩和自动重试处理上下文超限,通过滑动窗口和摘要策略提升稳定性。此外,支持会话恢复,通过SessionID跨会话保持上下文连续性,便于跨进程或跨天持续任务。框架既支持命令行测试,也可作为Go库嵌入项目,实现零额外进程和协议开销。作者通过在故障分析产品中的实际应用,展示了如何专注于业务逻辑而非基础设施。最终,agent-wrapper解决了Agent集成的安全性、预算管理和跨平台问题,将实验性套壳转化为生产就绪的解决方案。

本机暂存
IT AI/ 2026-06-21 18:40:38 / 累计浏览 61

Loop Engineering 实践:一次批量实现 8 个 issue,完成夔牛工具的开发

Loop Engineering(循环工程)是AI编程领域的前沿实践,由Anthropic的Boris Cherny等人倡导,核心思想是将编程工作从直接编写代码提升到设计自动化循环驱动编码代理。本文首先追溯Loop Engineering的演进历程:从2022年的ReAct学术循环到2023年AutoGPT的自主提示,再到2025年Ralph Loop的简单管道,最终发展为2026年支持循环间监督、并发执行和状态持久化的编排式Loop。作者基于此理念开发了goal-workflow开源工作流,其中/loop-it命令能批量处理GitHub issues,每个issue经历目标实现、代码审查、决策记录和提交合并四个阶段。技术实现包括使用.loop-state.json文件持久化循环状态以实现崩溃恢复,通过拓扑排序自动解析issue依赖关系确保执行顺序,引入split verifier机制让独立代理验证代码质量,并设计分级错误处理策略应对构建失败、测试红灯等常见问题。实战案例中,该工作流在一小时内完成kuiniu工具的8个feature开发,从PRD到代码合并全程自动化,展示了Loop Engineering在提升开发效率和自动化程度上的潜力。文章还对比了轻量级实现与更宏大编排系统的优缺点,强调状态管理和错误恢复在长链路任务中的关键作用。

本机暂存
IT 后端/ 2026-06-21 18:40:38 / 累计浏览 123

Loop Engineering 实践:我把 RDMA 开发库移植到 Go 语言,花费 239 块钱

作者为了在Go语言中实现高性能RDMA库,采用Loop Engineering方法进行自动化移植实验。Loop Engineering的核心是将复杂任务拆分为可管理的小单元,在循环中逐步执行实现、审查和发布。实验从一份PRD出发,生成15个依赖issue,通过AI Agent自动化处理,覆盖设备枚举、PD/MR分配、QP创建、TCP握手和perftest工具构建。AI在macOS上生成代码,使用stub实现确保跨平台编译。但流水线中审查步骤未真正执行,导致cgo与rdma-core库的兼容性问题未被及时发现。真机在Linux服务器编译时,暴露imm_data访问错误和ibv_query_port类型不匹配等致命bug,此外还有内存屏障缺失、资源泄漏等运行时问题。修复阶段通过静态分析工具和真机测试逐步解决,包括编写C辅助函数、调整unsafe.Pointer用法和引入原子操作。最终项目包含3981行Go代码和16个PR,花费239元。文章展示了Loop Engineering在结构化任务中的效率,同时强调了人工审查和硬件环境验证的必要性,对后端系统开发有实践参考价值。

本机暂存
IT 后端/ 2026-06-21 18:40:38 / 累计浏览 43

傻瓜式RDMA高性能网络开发:从零跑到 400 Gb每秒

RDMA(远程直接内存访问)是一种高性能网络技术,通过内核旁路、零拷贝和CPU卸载机制,使网卡能直接读写远程内存,实现微秒级延迟和数百Gb/s吞吐,广泛应用于AI训练、分布式存储等领域。但其编程复杂,涉及队列对(QP)、完成队列(CQ)、内存区域(MR)等术语,标准流程繁琐易错。本文介绍了gordma,一个用Go语言封装的RDMA库,提供两套API:高级API类似标准net包,简化开发;底层API直接映射RDMA原语,允许精细控制。在400Gb/s RoCE v2网卡实测中,gordma高级API吞吐达28Gb/s,底层API达232Gb/s,原生基准为392Gb/s。文章详解了RDMA核心概念,包括历史发展、术语速记、传输类型,并演示了使用perftest工具进行基准测试,讨论了单位换算和环境因素影响。gordma为Go开发者提供了从零开始RDMA开发的路径,平衡易用性与性能,适用于高性能计算场景。

本机暂存
IT 后端/ 2026-06-21 18:40:38 / 累计浏览 46

amd64 微架构级别对 Go 程序性能提升多少?

文章探讨了Go 1.18引入的AMD64微架构级别(v1至v4)对程序性能的影响。通过设置GOAMD64环境变量,开发者可以选择目标指令集级别:v1为默认基线,v2添加popcnt等指令,v3支持AVX2,v4包括AVX-512。作者以Roaring Bitmaps压缩位集库为例进行基准测试,该库依赖种群计数和位操作。测试在Intel Xeon Gold 6548N处理器上使用Go 1.26.2完成。结果显示,v2级别启用popcnt指令后,位图容器的种群计数操作耗时减少约43%,而v1级别因使用软件回退实现而性能较低。v3级别通过AVX2向量化进一步优化,例如从密集位图构建容器时性能提升38%,集合操作减少22%。v4级别未带来改善,因为Go编译器尚未生成AVX-512指令。文章指出,现代硬件应至少使用v2级别以免费获得性能增益,v3值得探索,但v4当前无效。结论强调编译器标志对性能的关键作用,并揭示了Go编译器在利用新指令方面的局限,为开发者提供了实际调优指导。

本机暂存
IT 后端/ 2026-06-21 18:40:38 / 累计浏览 38

Go 实验特性详解

Go语言在版本发布中引入实验性特性,旨在通过用户反馈优化后正式集成。这些特性可能表现为标准库新包、编译器运行时改动或行为变更。例如,Go 1.24的testing/synctest包在反馈后调整API并进入通用可用阶段;Go 1.25的新垃圾回收器设计提升性能,在Go 1.26成为默认选项;Go 1.21的循环变量语义变更消除了历史bug,作为实验发布以测试兼容性。实验特性生命周期多样:通常默认关闭,需通过GOEXPERIMENT环境变量选择加入;若反馈积极,经过版本迭代可能变为默认开启。部分特性如内存arena因负面反馈而搁置,Go 1.22的编译器内联逻辑持续评估。永久实验特性如FieldTrack结构体字段追踪和StaticLockRanking死锁诊断工具则长期存在但无意默认启用。截至Go 1.26,当前实验特性包括JSONv2改进JSON处理、RuntimeSecret清零内存、SIMD访问架构特定操作等。控制实验特性通过GOEXPERIMENT实现:启用时设置逗号分隔小写名称,禁用则添加no前缀,如GOEXPERIMENT=jsonv2,nogreenteagc。开发者应关注GreenTeaGC新垃圾回收器和Dwarf5调试信息生成等特性,它们默认开启但保留临时退出选项。理解这些机制有助于Go开发者利用语言演进,平衡创新与稳定性。

本机暂存
IT AI/ 2026-06-21 18:40:38 / 累计浏览 49

LLM 究竟是如何工作的?

本文系统解析大型语言模型(LLM)的工作原理,聚焦于transformer架构的核心机制。文本首先通过tokenization转换为整数序列,采用子词分词平衡效率与泛化能力。嵌入层将token ID映射为向量,通过训练学习语义关系,如“king”与“queen”的向量接近。位置编码(如Rotary Position Embeddings,RoPE)通过旋转Query和Key向量注入序列顺序信息,解决词序依赖并提升长上下文泛化。attention机制是关键,每个token生成Query、Key、Value向量,通过缩放点积计算相似度,softmax加权聚合信息,并利用因果掩码确保生成顺序。多头注意力并行运行多个attention头,学习语法、语义等多种关系模式,Grouped-Query Attention(GQA)优化内存使用。前馈网络独立处理每个token,通过扩展、非线性变换(如SwiGLU)和压缩存储事实知识,Mixture of Experts(MoE)扩展参数规模而不倍增计算成本。残差连接和层归一化促进梯度流动,使深层堆叠可训练。文章还提及KV缓存等优化,避免复杂数学,提供入门指南,帮助读者理解LLM内部组件及其训练与推理差异。

本机暂存
IT 前端/ 2026-06-19 22:40:45 / 累计浏览 131

A First Look at Scroll-Triggered Animations

Chrome 146率先实现了滚动触发动画功能,这是一种不同于滚动驱动动画的新CSS特性。滚动触发动画在元素滚动至特定阈值后,以固定时长播放动画,类似于CSS版的Intersection Observer。文章对比了两者,并详细阐述了`timeline-trigger`与`animation-timeline`的区别,核心在于前者用于触发,后者用于驱动。通过`@keyframes`定义动画,并使用`timeline-trigger: view()`配合`entry`和`exit`范围值,可以精确控制动画的触发和退出条件。文章深入讲解了``关键字(如`play-forwards`、`play-once`、`play-backwards`)与`animation-fill-mode`的组合使用,以实现一次性触发动画、双向播放或保留最终状态等不同效果。文中通过多个代码示例演示了如何将动画触发逻辑与动画定义解耦,利用CSS自定义属性和`animation-trigger`来实现多个元素的错开动画效果,甚至是一个元素触发其他元素动画的进阶用法。文章属于技术教程,全面展示了这一新特性的核心语法、控制机制及实际应用场景。

本机暂存
IT 数据库/ 2026-06-18 01:10:54 / 累计浏览 149

接手一个只差临门一脚的数据库恢复

本案例记录了Oracle数据库因虚拟机复制引发的恢复故障。在没有停机的情况下复制虚拟机后,数据库启动失败,alert日志显示ORA-00314和ORA-00312错误,指示在线重做日志序列号与预期严重不符,序列号差距较大,可能由数据不一致导致。客户尝试使用隐含参数强制打开数据库,但在open过程中遭遇ORA-01555快照过旧错误,对应bootstrap表访问失败,表明undo段空间不足。多次重启后,进一步出现ORA-600 2662内部错误,提示SCN不一致,客户重建控制文件和强制拉库均无效,陷入错误循环,最终出现ORA-600 4193/4194错误。接手处理时,通过将undo_management参数设置为手动模式,绕过自动undo管理,成功启动数据库实例,随后使用expdp工具导出用户数据,完成恢复。此案例强调了虚拟机操作需在数据库停机状态下进行,以确保数据一致性,同时展示了undo参数调整在故障恢复中的实用价值。文章为故障排查类型,提供了详细的错误日志分析和解决方案步骤。

本机暂存
IT 前端/ 2026-06-18 00:40:06 / 累计浏览 125

The Siren Song of ariaNotify()

本文深入介绍了即将到来的Web平台功能ariaNotify(),该方法由WAI-ARIA 1.3规范定义,旨在通过编程方式触发屏幕阅读器的叙述,从而解决ARIA live regions长期存在的不一致性和复杂性问题。ARIA live regions虽然理论上能通知辅助技术页面内容变化,但实践中浏览器和屏幕阅读器实现差异巨大,导致需要剥离语义化标记、处理时序问题,以及面对显示切换等常见场景失效。这些限制迫使开发者使用隐藏的live regions作为通知API,带来维护和测试负担。ariaNotify()提供了简洁的替代方案:只需调用document.ariaNotify()或element.ariaNotify(),传入字符串和可选配置如优先级设置,即可可靠触发叙述。文章通过代码示例和Firefox测试展示了其与JAWS、NVDA、VoiceOver的兼容性,并讨论了语言继承机制。然而,作者强调谨慎使用,遵循ARIA使用原则——优先使用原生HTML功能,只在绝对必要时使用ARIA,以防止引入未预见问题,确保用户体验的一致性和可靠性。

本机暂存