TGViewer
Channel Public Channel
开发者工具箱|编程·开发工具·资源

开发者工具箱|编程·开发工具·资源

@devtoolboxhub

面向开发者的实用工具、库与效率技巧,写代码更快更爽。投稿 @BDHT1
#开发者 #编程工具 #效率 #程序员 · 开源总站 @GitHubTrendingHub
Subscribers
780
Photos
1.4K
Videos
0
Links
765

Showing posts older than #1615 · Back to latest

Older Posts 19 shown
Post #1612 11
把人类入口收窄到两个,自动化系统反而跑起来了

一位日本微软 MVP 分享了自己重构 AI 自动化工作流的实践:把人类接触系统的入口压缩到只剩 Todoist 和 Discord 两个,其余全部交给 AI 与调度器。核心思路是先固定人类侧的接触面,再让溢出部分自然流向 AI 侧,而不是一味堆叠更多自动化工具。

作者最初的问题很典型:每加一个自动化,就多一个要去查看的地方。仪表盘、日志、通知、配置界面越积越多,早晨检查从十分钟拖到半小时。他定下的规则只有两条:Todoist 负责接收待办,Discord 负责与 AI 对话,不再新增任何其他入口。

实际运行数据:30 天内调度器执行 81,335 次,成功率 99.29%;Discord 桥接的 Claude Code 会话 33 天累计 557 个,全部以 Discord 为起点;Claude Code 上沉淀了 130 个技能;Obsidian 知识库有 6,060 篇笔记,30 天提交 1,182 次。

收窄入口也带来了四类故障:静默失败难以察觉、通知过多导致麻木、每条 Discord 消息都变成独立进程引发路径问题、以及规则只约束新代码而漏掉存量任务。作者给出的对策是在出口侧补上主动告警机制,并把生成与检查分离,用机械约束替代对 AI 提示词的依赖。


最终结论是「两个入口」可行,前提是系统必须主动汇报。114 个定时任务里有 20 个纯粹用于监控与维护,作者认为这是收窄入口的合理成本。判断是否失守的标准也很简单:如果开始每天打开某个新工具的界面,或者不打开就焦虑,说明通知设计出了问题。

#开发者 #工具 #Todoist #Discord #ClaudeCode #自动化 #AI代理 #Obsidian
@DevToolboxHub
Post #1611 7
10天构建多语言银行语音助手Samar

开发者Raghul P在VoiceForBharat挑战赛中,用10天时间构建了Samar——一个面向印度数字银行场景的多语言AI语音助手。项目从简单语音助手起步,逐步演进为具备记忆、实时工具调用、外呼、人工升级、通话分析与专家转接能力的完整语音AI系统。

Samar基于LiveKit实现实时语音通信,使用LLM负责推理对话,语音识别理解用户输入,语音合成由Murf Falcon TTS API驱动。系统流程为:用户语音→语音转文字→LLM/Agent逻辑→记忆或工具调用→文字转语音→用户听到回复。

核心能力:

• 回答银行常见问题
• 提供金融信息
• 经同意后记住回头客
• 实时查询汇率与附近网点
• 主动外呼提醒
• 敏感问题升级人工
• 通话分析看板,以及将专业问题转接给贷款等专项Agent。安全护栏确保不索取PIN
• OTP
• CVV
• 密码等敏感信息
多语言处理是主要挑战:模型能听懂印地语,但语言配置不当会让语音带英语口音。通过配置多语言语音识别、动态语音/区域处理并强制各语言使用原生文字(印地语用天城文、英语用拉丁字母)解决。多语言语音AI需要识别、检测、文字生成与语音合成协同工作。


项目后端使用Python与uv管理依赖,前端基于pnpm构建,运行后访问localhost:3000即可对话。API密钥需存入环境变量,切勿提交至代码仓库。

#开发者 #工具 #Samar #VoiceAI #LiveKit #MurfFalcon #多语言 #语音助手 #银行科技
@DevToolboxHub
Post #1609 6
逆向无文档 ERP:自学开发者的实战复盘

巴西餐厅运营经理 Luis Henrique Vasconcelos 分享了他逆向 TronSoft 餐厅 ERP 的经历。这套系统基于 Firebird 数据库,没有 API 参考、没有 schema 图、没有社区讨论,只有一份薄薄的操作手册。他靠观察生产数据库,最终梳理出约 40 个功能模块中的 390 张表和 514 个外键。

逆向过程中踩到的 Firebird 特性坑不少:SQL 方言用 FIRST 1 而非 LIMIT;主键由 GEN_ID 生成器驱动,不同步会产生静默冲突;复合主键在并发下才暴露问题;事务可见性也需摸清 autocommit 的具体行为。最难的并非 SQL 本身,而是复刻人工关闭 comanda 时的精确写入序列,让税务开票服务(NFC-e)认可自动化操作。他通过实时监控 MON$ 内部表、对比操作前后快照,逐步摸清黑盒规则。

第一版自动化用屏幕驱动鼠标键盘操作 UI,脆弱易断。转折点是放弃模拟界面、直接安全写入 COMANDA、ITEM_COMANDA 及税务相关表,复刻厂商软件预期的 NULL 模式和字段约定,自动化才从 hack 变成真正的集成,并已稳定运行在生产环境。


他的建议:无文档不是墙而是数据集,快照对比和查询日志比手册教得更多;在冷门系统里深耕是稀缺资产;生产环境才是真正的考验。他正把同样的方法用于评估 AI 编程代理。

#开发者 #工具 #逆向工程 #Firebird #TronSoft #数据库 #SQL #ERP #巴西
@DevToolboxHub
Post #1608 5
给免费模型额度装个本地预算账本

免费模型额度看着充裕,但一个超时重试循环就可能悄悄烧光。这个 Python 脚本在调用前做保守预估、调用后记录实际用量,超预算直接拒绝请求,防止意外浪费。

脚本从 JSON 文件读取预算和已用额度,调用前按提示词字节数除以四、加上最大响应 token 数、再留 15% 余量做预估;调用后从响应中读取 usage 字段并原子化写入账本。若端点返回异常或缺少可用 token 计数,脚本会退出且不更新账本。

典型场景:超时重试包装器在首个响应前把慢请求重试四次,token 消耗成倍增长;长上下文缓冲每轮都发送同样的 6k token 历史。仪表盘只显示总量下降,看不出是哪次调用导致。本地账本在请求发出前就拦截超预算调用。

用法:配置环境变量后运行 python budgeted_call.py '提示词'。测试时可将 BASE_URL 指向不可达地址,验证脚本非零退出且账本不变。

注意:单 JSON 文件不支持并发共享预算,不适合对延迟有硬性 SLO、需要审计或合规审查的场景。免费端点也不适合发送敏感提示词,仅作金丝雀测试目标。


脚本假设端点遵循 OpenAI 风格 chat completions 路径并返回 usage 字段,不依赖特定模型列表。若免费服务返回的 usage 字段结构不同,脚本会停止而非静默少计。文中 30,000,000 token 额度来自参考材料,实际以当前配额页为准,可通过环境变量调整。

#开发者 #工具 #Python #CLI #Token预算 #API调试 #MonkeyCode
@DevToolboxHub
Post #1607 6
FinSaathi:面向印度市场的语音优先金融助手

开发者 Nipun Goel 在 VoiceForBharat 挑战赛的 10 天里构建了 FinSaathi,一个面向金融服务的语音优先 AI 助手。它支持自然印地语/印度英语对话,能理解金融与政府计划相关查询、记忆用户信息、调用工具,并在必要时转接人工或专家。

系统基于 LiveKit Agents 构建,前端使用 Next.js/React,后端为 FastAPI,数据库采用 SQLite,语音合成使用 Murf Falcon,通话走 SIP/LiveKit。核心能力包括政府计划资格检查、外呼、人工升级、通话分析与专家代理交接。

关键特性:语音交互采用 Murf Falcon,支持印地语/印度英语自然对话;安全护栏会在用户报告未授权交易时警告不要分享 OTP、PIN、密码、CVV 和卡号;用户信息存入 SQLite 供后续对话复用;资格检查工具可判断用户是否符合政府计划条件;系统可主动外呼符合条件的用户;检测到欺诈等场景时可创建人工升级请求并生成唯一参考 ID(如 FS-A5323F);通话分析记录成功/失败/总通话数;政府计划相关对话可转交给专门的专家代理处理。

开发中遇到的主要挑战是实时通话与 LiveKit/SIP 集成,测试时出现 WinError 64、ConnectionResetError、DuplexClosed 等错误,以及外呼时 AI 开始说话但通话提前终止的问题。调试涉及 LiveKit worker 生命周期、SIP 配置、网络连接、代理进程与通话状态。另一个经验是分离代理、数据库、API 与前端的职责,使系统更易扩展和调试。


作者总结,一个可用的语音代理不只是「语音→AI→语音」,而是语音、LLM、记忆、工具、安全、实时通信、数据库、人工升级、分析与专家交接的组合系统。

#开发者 #工具 #FinSaathi #VoiceForBharat #LiveKit #语音助手 #FastAPI #SQLite #印度
@DevToolboxHub
Post #1606 5
16GB Mac mini 本地跑通 AI 编程助手

作者用一台 16GB M4 Mac mini 做了个实验:完全离线跑编程助手,代码不出本机、不付订阅费,日常干活是否可用。结论是可行,硬约束是内存,软约束是上下文长度。文章附全部命令、配置和基准测试方法,可自行复现。

本地运行的理由有三点:隐私(客户代码、内部仓库、NDA 内容不出机器)、成本(订阅约 $100–240/年,机器已买)、离线可用(飞机、酒店、咖啡馆都能用)。短板是原始能力——云端前沿模型在多文件推理上明显更强。

关键硬件约束:Apple Silicon 上 GPU 与 CPU 共享统一内存。16GB 机器上 macOS 加开发环境先吃掉 6–8GB,模型实际可用约 7–9GB。macOS 默认允许 GPU 使用约 75% 总内存作为显存。

模型选择上,16GB 推荐 qwen2.5-coder:7b 负责聊天和编辑,qwen2.5-coder:1.5b 专跑行内补全。小模型专司补全、大模型负责对话,是让整体响应跟手的关键。14B 可尝试 q4_K_M 量化版,32B 和 qwen3-coder:30b 需要 32GB 以上内存。

接入 VS Code 用 Continue 扩展,配置指向本地 Ollama 服务。注意 model 标签必须与 ollama list 完全一致,否则静默失败。contextLength 设 8192 是刻意的——32K 上下文的 KV 缓存比省下的权重内存更贵。

调优三个环境变量:OLLAMA_KEEP_ALIVE 保持模型常驻、OLLAMA_MAX_LOADED_MODELS 限制同时加载模型数、OLLAMA_NUM_PARALLEL 限制并发请求。ollama ps 中 PROCESSOR 列应为 100% GPU,出现 CPU 说明模型溢出统一内存,需换更小模型或量化版。


本地 7B 模型擅长单函数生成与重构、样板代码、解释报错和正则、跨文件机械重命名;短板在多文件推理、长上下文、最新库 API 和 agentic 多步任务。作者的评价:相当于一个读过全部文档、响应即时、不泄露代码但看不到当前文件之外的初级工程师。

是否退订 Copilot 取决于工作类型:以函数级私有代码为主可退;大量跨文件脚手架和 agentic 工作流建议保留;多数人可两者并用,本地处理 80% 常规编辑,云端处理难啃的 20%。

#开发者 #工具 #Ollama #Qwen #Macmini #本地LLM #Copilot #VS Code #Continue #离线编程
@DevToolboxHub
Post #1604 5
给 AI 证据而非症状:一次险些失败的安全调查

一位开发者分享了自己用 AI 排查网站被恶意重定向的经历。第一次调查时,他描述症状、与 AI 逐文件排查,最终锁定并移除了可疑的外部统计脚本 51.la,问题看似解决。三周后同样的攻击出现在另一站点,这次他改用受影响页面的真实渲染 HTML(用触发攻击的浏览器 UA 和 IP 类型抓取),AI 立刻发现每页被注入了 83KB 恶意 JavaScript:内含微信浏览器检测、链接点击劫持和基于 cookie 的每日冷却逻辑。载荷藏在 WordPress 数据库的插件配置数据里,纯文件搜索永远找不到。

作者指出,向 AI 描述问题给的是「症状」,提供故障系统的原始输出才是「证据」。AI 只能基于可观察到的信息推理,症状经过你的过滤压缩,可能失真;证据才是实际发生的事。AI 默认倾向猜测有三个原因:你无意中限定了搜索范围,AI 会接受你划定的框架而不质疑答案是否在别处;流畅自信的输出掩盖了推理的不确定性,基于薄弱证据的诊断听起来和扎实诊断一样可信;症状往往指向错误的层级,浏览器里出现的重定向,根源可能在数据库表里。

作者现在把 AI 辅助调查拆成两步:先收集证据再找 AI,抓取真实输出、捕获日志、从问题源头层取原始数据;然后给 AI 证据而非故事,贴真实渲染的 HTML 而不是说「网站被重定向」,贴 profiler 输出而不是说「函数很慢」。同样的原则适用于调试、数据分析、写作反馈:错误信息是症状,完整堆栈加触发输入是证据;描述趋势是症状,原始数据集是证据。


一个自信的错误答案代价不止误判本身——它让你停止继续寻找真正的原因。AI 的推理能力不是瓶颈,证据管道才是。你带症状进去,AI 放大你的猜测;你带证据进去,AI 放大你的诊断。

#开发者 #工具 #AI #WordPress #安全 #Web开发 #调试
@DevToolboxHub
Post #1603 4
时间感知知识图谱:一次被评测拦下的上线

我们差点上线一个时间感知知识图谱,最终被一条评测拦下。这条评测只断言一件事:在时间 T,智能体应当报告 T 时刻真实存在的状态。结果它失败了 41%——图谱里存的事实没错,只是把错误时间窗口的事实交给了智能体。

时间知识图谱(TKG)的思路本身很好:把三元组变成四元组,给每条事实加上 valid_from 和 valid_to,让智能体记忆从扁平向量变成带时间结构化的记录。理论上,陈旧事实不再是靠相似度猜测,而是变成可过滤的条件。问题出在检索层:生成的查询按 valid_from 倒序取最新一条,从不按参考时间过滤。智能体在推理 03:00 的故障时,05:00 记录的"online"状态会被当作答案返回。事实是真的,时间戳是真的,只是来自错误的窗口。

更隐蔽的是,静态评测全部通过。RAGAS 式忠实度检查只验证答案是否基于检索上下文——它确实基于了,只是基于了错误的时间切片。图谱没错、schema 没错、数据没错,错在检索查询丢了时间过滤,而评测套件里没有任何测试能发现这一点。
修复检索只加了一个 WHERE 子句:先过滤 valid_from <= T 且 valid_to > T 的边,再排序取第一条。真正重要的修复是让参考时间成为 query_state 的必填参数,没有它直接报错;同时把时间窗口和参考时间一起传给模型,让它有机会发现不匹配。


这次没上线图谱,上线的是那条评测。图谱从来不是风险点,风险在于差点信任一个从未被问对问题的系统。给智能体做时间记忆,先写时间回归测试,再写图谱本身。
@DevToolboxHub
Post #1602 1
EverShop 2.2.1 发布:页面构建器、元字段与 React 19

EverShop 发布 2.0 以来最大版本 2.2.1,整合了此前未发布的 2.1.3 分支中的 React 19 工作,并叠加四个月开发成果。新版本带来可视化页面构建器、博客模块、实体自定义字段、多语言店面与翻译后台、重建的发货履约栈、内置云存储、商品推荐,以及一轮安全与性能加固。

升级现有商店需注意:首次启动会自动运行 10 个模块的 31 个数据库迁移,其中部分会转换数据并删除旧表,务必先备份数据库并阅读破坏性变更说明。此版本还修复了多个安全漏洞,建议尽快升级。

可视化页面构建器是本次主打功能,位于 /admin/page-builder,通过拖拽编辑器将组件组合进主题区域,支持草稿工作流、定时发布、画布内联编辑、图层面板与全局视图。链接字段通过统一解析器关联商品、分类、CMS 页面和博客文章。
博客模块现为核心组件,支持文章、分类、标签、SEO 描述、评论与反应,并提供店面博客页面和页面构建器博客组件。
元字段功能允许在商品、分类、集合、客户、订单和商店上定义类型化自定义字段,值存于 JSONB 列并用 AJV 校验,GraphQL 暴露可按受众控制。主题可在 theme.json 中声明自己的元字段定义,激活时自动配置。
多语言店面改为运行时本地化,无需重新构建,支持 17 种语言的管理后台翻译。React 19 升级移除了 defaultProps、字符串 refs、findDOMNode 等旧 API,react-toastify 替换为 sonner。
发货履约从一对一改为多包裹模式,订单可分多个包裹发货,各自携带商品分配、状态、追踪信息。云存储 S3、Azure Blob 和 Google Cloud Storage 现为核心组件,无需重启即可运行时配置。
商品推荐包含关联商品、经常一起购买和追加销售三套系统,均提供 GraphQL 字段和页面构建器组件。
安全方面修复了未认证 SSRF、IDOR、存储型 XSS 和账户接管路径;性能上对 50 万商品目录做了压测,优化了 URL 重写索引和关键字搜索查询。


升级前请备份数据库,更新 @evershop/evershop 并重新安装依赖、运行 npm run build。迁移自动执行,需在后台重新上传 Logo,用菜单组件重建导航,并检查新的供应商制发货设置。自定义主题和扩展需适配 React 19、切换 sonner,并更新涉及 widget 表和旧发货表的代码。

完整发布说明:
变更日志:GitHub

#开发者 #工具 #EverShop #React19 #页面构建器 #元字段 #多语言 #云存储 #开源 #电子商务
@DevToolboxHub
Post #1600 1
Node.js 图片审核:JSON Schema 加降级队列

处理带图工单时,建议把分类、策略执行和租户成本核算拆成三步。图片交给多模态模型并强制 JSON Schema 输出,本地校验结果,无效或不确定的进人工审核。降级机制是队列,不是猜测。

审核员处理的是投诉而非发布照片,同一张图可能是暴力证据、含仇恨符号的截图或普通头像。一个布尔值 safe 会丢掉审核员需要的上下文。分类用版本化清单,nsfw、violence、hate_symbols 分开记录,加 uncertain 状态和简短证据字段。模型描述所见,应用代码决定工单可见、拦截还是等人工。

不要用自由文本让模型描述再搜关键词,标点变化会破坏解析,缺失类别会被当成负面结果,租户策略也无法从自由回答中还原。类型化输出不是安全决策,但给后续流程稳定输入。

生产环境还需在模型调用前做文件大小和 MIME 校验,控制存储图片的访问权限,在 worker 边界设超时策略。限流、空响应或 schema 不匹配都走人工审核路径。避免把图片或敏感工单文本写进普通应用日志。

每个图片尝试生成一条审核记录,按租户、工单、策略版本、模型版本和请求 ID 关联。记录 token 数、延迟、重试次数、结果状态和审核结论。成本账本回答月度账单答不了的问题:哪个租户图片最大、哪个策略产生最多审核、提示词改动是否只增 token 不增召回。成本是决策维度,不是削弱分类器的理由。


JSON Schema 是契约,降级是状态转换。最小状态集是 triage、hold、review,不是模型标签的同义词。review 必须带 invalid_json、empty_model_response 或 uncertain 原因,hold 带观察类别和触发策略版本。缺失字段不要静默转 false,那会把集成问题变成假干净结果。不要无限重试,用有界 worker 预算,请求幂等,队列年龄对支持团队可见。

上下文是难点。新闻里的仇恨符号、作为证据的暴力画面和背书可能像素相同但处理不同。当标题、对话历史、司法管辖区或申诉决定动作时,纯图片自动化不适用。冻结一组真实感媒体工单样本再改提示词,包含普通头像、截图、纪实材料、部分遮挡、低分辨率和合法讨论有害图像的案例。审核员独立标注每个类别,再比较误报、漏报、各类别召回、不确定率、schema 有效率和 token 用量。

保留产生分歧的案例,不要平均掉。部分遮挡的符号可能暴露分类法歧义,低分辨率帧可能暴露质量边界。同一批案例也跑降级路径,格式错误的响应应计为审核事件,不能从质量报告中消失。解析失败说明契约或集成要修,清晰图上的分歧指向分类器或提示词,缺工单上下文的分歧属于审核设计问题。


上线前决定结果待定时用户看到什么、谁能放行被 hold 的图片、证据保留多久、租户如何申诉。每次模型、提示词、schema 或策略变更后重跑同一套评估。有用的产物不是聪明的聊天回复,而是可回放的审核记录,分类、执行、审核和成本可分别检查。

#开发者 #工具 #Nodejs #多模态 #内容审核 #JSONSchema #NSFW
@DevToolboxHub
Post #1599 3
AI 生成工具的设计锁定:JSON 方案与设计系统方案实测对比

一位开发者在大规模用 AI 批量产出 Web 工具时,将设计锁定方式分三阶段演进。此前文章收到评论,希望看到 JSON 方案与设计系统方案并排对比。作者实际构建并测量了这条未走的路,将两种方案在匹配测试条件下并排展示。

测试条件:同一 BMI 计算器,两侧各用独立 Claude Opus 4.8 会话,只交给 AI 对应方案的「工具包」,一次性生成、不做后续修改,且不让任一侧读取生产版 BMI 计算器。JSON 方案交出条目 schema(4 个结构键加 7 个模板读取的字符串键),AI 写出 34 行完全符合 schema 的目录条目;设计系统方案交出 BMI 固定模板、构建指南、模式集合、模板规范,AI 写出 313 行页面模板及 5 种语言词典。

并排看,JSON 方案页面显单薄,但作者指出这并非方案本身缺陷——把该时代机制构建到当前同等水平,外观应一致。明暗主题差异也非方案区别,只是各自延续了当时实际配置。真正差异在两种方案的「磨损方式」:JSON 方案固定模板在 JavaScript 侧硬编码了 WHO 四段标签英文,无对应 JSON 键,导致日语和西班牙语版本判定结果仍显示英文;设计系统方案则当场生成全部五种语言的四段标签。

设计系统方案也有两处瑕疵:一处是类列表中混入被禁止的 bg-white,虽无实际效果但违反规则,只能靠机器检查类字符串发现;另一处是刻度标记视觉上难以辨认指向位置,无规范约束,机器检查无法捕获。

作者在不破坏 JSON 方案规则的前提下扩展至同等表达水平:目录条目从 34 行增至 343 行,schema 词汇从 11 词增至 113 词,渲染器从 433 行增至 914 行,而 BMI 专用模板从 53 行缩至 1 行。扩展后条目比设计系统方案一次性写出的模板还大。计算公式移入 JSON 后由 AI 编写,变量名拼错或顺序错误会静默变成 NaN,实际还遇到浮点运算顺序问题。作者此前预测「继续增肥 schema 和渲染器,最终会走向手工重建 HTML 和 CSS」,此次首次成为真实产物。


两种方案本质是两种一致性保障哲学:JSON 方案属预防型,AI 可用的颜色和部件固定,漂移在构造上不可能发生,但所有新增表达都堆在 AI 之外,工具越多共享渲染器越臃肿;设计系统方案属检查型,AI 自由组装、成本低、可随工具数量扩展,但一致性依赖检查与修正之网的精度,无规则约束的缺陷会漏过。检查型成本未体现在本次一次性对比中,因为作者刻意未运行检查流程——实际运营中每个生成工具都要过机器检查和人工检查,最多修三轮。作者最终选择设计系统方案,因其有数百个外观各异的 Web 工具,无法按类型归并。验证于 2026 年 8 月,环境为 Claude Opus 4.8 生成、Playwright headless Chromium 截图。

#开发者 #工具 #AI #JSON #设计系统 #Web开发 #前端 #Claude #Opus48 #BMI计算器
@DevToolboxHub
Post #1597 3
一张图看清云账单的钱去哪了

云账单只回答“花了多少”,回答不了“钱去哪了”。AWS Cost and Usage Report 动辄数百万行,每行都精确到资源、小时、费率,但“钱去哪了”是一条路径:从发票进入供应商、落到账户、变成资源、最后归属某个团队。平面表格画不出路径,原生工具一次只能切一个维度,于是会议里总有人要在脑子里做六张表的 join——会议就死在这里。

常见的钱都漏在哪:非生产环境从不休眠。一周 168 小时,工作周大概 50 小时,开发、预发、QA、演示环境 24/7 跑着,每周为没人用的约 120 小时付费,这是账单里最大的可控支出。无归属支出。没有 owner 标签、没有团队、没有成本中心的资源,没人拥有就没人质疑,10–30% 的账单可能归不到任何人头上。僵尸资源。未挂载的卷、空闲负载均衡器、三年前的快照、还在为早已不重要的流量计费的 NAT 网关。“以防万一”的规格。2024 年事故时翻倍的实例,CPU 常年 6%,没人回退。按需计费的常驻负载。跑了两年的基线,还按实验环境计费。行业调查多年把云浪费定在约三分之一,比例不重要,规律才重要:浪费集中在归属最弱的地方,不是谁的钱就最容易漏。

那张图就是桑基图。左边进右边出,所有流入必须流出,藏不住东西。对云账单,四列就够:Provider → Account → Resource type → Team。整张发票作为一条宽带进入,展开直到每美元落到团队上。落到 Unattributed 节点的部分,画得和其他人一样粗、一样显眼——这就是重点。最粗的那条流,是任何仪表盘都不引以为傲的那条。阅读不需要培训,这才是真正的功能:粗带子就去看,眼睛自动跑查询,CFO 十秒读懂,不用人解释可用区是什么。

好版本需要什么:列可重排。默认 Provider → Account → Type → Team,但有时问题关于区域、购买类型或单个资源。点击下钻。图本身就是过滤器,点账户节点整个图收窄到流经它的钱,带面包屑路径。浪费叠加层。标出哪些流含可回收的钱——闲置、超配、可调度——以及多少。Unattributed 作为一等公民流,带一个让人无法忽略的开关。实时数据。“截至周二”的图会被反复质疑,实时的才会被执行。可复现的 URL。会议前一小时把链接贴进 Slack,两边看的是同一张图。

自己搭完全可行,周末项目够出 v1:导出账单数据(AWS 用 CUR,GCP 用 billing export),按三四个维度 GROUP BY,把 source–target 对喂给 d3-sankey、Plotly 或 ECharts。画图是最容易的 20%,剩下 80% 是三件事:Type → Team 这一步取决于标签质量,桑基图会忠实把你的分配缺口画成一条巨大的 Unattributed 带子——这是特性,但要有心理准备;保持实时,定时导出、聚合任务、缓存新鲜度,静态 HTML 的 v1 一周就过期,和之前的透视表一样死掉;交互性,下钻、面包屑、URL 里的视图状态,这一步周末会变成一季度。

我们在 ZopNight 的成本报告里内置了这张图。Cost Breakdown 卡片有 Trend / Flow 切换,Flow 就是桑基图。四列布局可选,默认 Provider → Account → Type → Team,可换成 Service、Region、Purchase type 或下钻到单个资源。图是唯一的过滤面,点节点或流就收窄,面包屑显示下钻路径。节省叠加层把节点和流按可回收金额比例标红,红色粗的地方就是待办清单。悬停任意元素,检查器显示金额及其在源和目标中的占比。维度能被推荐引擎过滤时,显示“$X 可回收”并深链到对应建议;不能行动时隐藏提示,不拿没按钮的数字吊胃口。Unattributed 高亮开关留给那场对话。整个视图状态在 URL 里——布局、下钻路径、叠加层,贴进 Slack,财务打开就是你的视图。每次渲染都从原始成本记录实时取数,没有“更新于昨天”的脚注。


“一张图”的诉求从来不是图表本身,是财务和工程终于能对着同一个对象争论——一个同时看得见“多少”“在哪”“能怎么办”的产物。它一旦变成链接,“钱去哪了”就不再是两周的调研项目,只是你打开的一个东西。

#开发者 #工具 #FinOps #AWS #云成本 #桑基图 #DevOps
@DevToolboxHub
Post #1596 3
2026 年十款 Postman 命令行替代工具盘点

开发者 Emmanuel Mumba 撰文梳理了十款可用于替代 Postman 的 CLI 工具。作者指出,随着开发流程日益命令行化,API 测试工具也需要能融入脚本、容器与 CI/CD 流水线,而非依赖图形界面。

作者认为,Postman 在可视化构建请求、组织集合和团队协作上仍有价值,但 CLI 工具在自动化、可复现性和远程开发场景中优势明显。API 测试命令可写入 shell 脚本,在本地、Docker 或 CI/CD 中重复执行,测试文件也能提交到 Git 成为项目的一部分。此外,Claude Code 等 AI 编程代理可直接执行终端命令,CLI 化的 API 测试让代理能自主完成测试、检查响应、修改代码并再次测试的闭环。

文章按工具定位做了区分:curl 和 HTTPie 适合快速发送请求与调试;Hurl 以纯文本文件定义请求和断言,适合将 API 测试作为代码纳入版本控制;Bruno CLI 采用 Git-first 的本地文件存储方式,集合可与应用代码同仓库管理;Newman 是 Postman 集合的命令行运行器,适合已有大量 Postman 资产、希望将其接入 CI/CD 的团队;Apidog CLI 则覆盖更广,支持管理 API 资源、环境、变量、分支、Schema 校验、自动化测试及文档发布,并可直接在终端执行测试场景。

作者给出的选型建议是:快速请求用 curl 或 HTTPie;需要可重复的回归测试看 Hurl;偏好 Git 工作流选 Bruno;已有 Postman 集合想自动化用 Newman;gRPC 服务则用 grpcurl;若需要接近完整的 CLI 版 Postman 体验,涵盖测试与 API 生命周期管理,Apidog CLI 值得考虑。


作者总结称,GUI 客户端不会消失,但终端工具不必互相替代,可以组合使用——用 curl 发请求、jq 处理响应、Hurl 做回归测试,再按需引入更重的生命周期管理工具,共同构成更快、更自动化、更易复现的开发工作流。

#开发者 #工具 #Postman #CLI #APITesting #HTTPie #Hurl #Bruno #Newman #Apidog #curl #CICD
@DevToolboxHub
Post #1594 8
新模型发布,你的代码到底改不改

模型发布的速度远超团队评估能力,但多数焦虑其实没必要:对边界清晰的代码库,绝大多数新模型根本不需要改动。决定因素不是你跟得多紧,而是抽象边界划在哪。

剥离营销话术后,新模型与现有版本只可能有四类差异:数字(价格、上下文窗口、限速、延迟、跑分,属于模型数据而非新能力)、标识符(新模型字符串,旧模型可能带日期弃用)、请求或响应面(新参数、新响应字段、新内容类型、新工具调用形态)、行为(同一请求产出不同文本)。前两类几乎都是配置问题,第三类才真正需要写代码,第四类需要评估——那是工作,但不是开发工作,而且最可能悄悄伤到你。

什么完全不用动

新模型上线:模型标识符来自配置或目录而非代码字面量,新模型就是一行数据。价格变动:价格是数据就更新数据,是代码常量就得发版——更糟的是没注意到的价格变动是静默的,账目完美对平但系统性地多收或少收。跑分:基准分数不是关于你工作负载的证据,只是跑一遍评估集的理由。更大的上下文窗口:能发更多不是该发更多的理由,成本随实际发送量线性增长,质量并不单调递增。

什么只需配置

带日期的弃用:工作是选替代品并跑评估集,不是改代码。把日期放在能提醒真人的地方,文档里的日期依赖某人当天恰好重读文档。客户端库新默认值:SDK 升级改了重试次数、超时或默认模型,是伪装成依赖升级的行为变更,要固定版本并专门读变更日志。价格变动跨过路由阈值:按成本路由的话,竞品降价会静默改道你的流量,通常正确但应当可见。

什么需要写代码

你要用的新响应字段:推理 token 统计、分部分用量、缓存命中标记,都要读取、存储和展示。请求里的新内容类型:音频、视频、文档作为一等输入,带来新校验、新大小限制、新存储。你的抽象没有槽位的能力:这是最贵的一类,要么为所有人拓宽接口,要么为某家供应商特判——后者就是抽象腐烂的开端。某些供应商静默忽略而非拒绝的参数:静默接受比拒绝更糟,全额计费的响应返回了,但代码期望的字段缺失。要在自己的边界拒绝不支持的参数。

决定边界的五条原则

模型标识符是数据:模型字符串绝不进应用代码,来自按环境的配置,每个请求记录用了哪个模型,事后能回答"谁服务的这条请求"。价格是带来源的数据:每条价格带来源页面和读取日期,硬编码在计费计算里的价格是最贵的捷径,因为失败是静默且自洽的。每家供应商一个适配器、共享同一形状:应用只说一种方言,适配器负责翻译,新能力只改一个适配器。不支持的参数拒绝而非转发:适配器无法兑现参数必须明说,否则调用方拿到带缺失字段的计费响应且无报错。评估集存在且可指向任何东西:这是回答"新模型对我们是否更好"的唯一机制,没有它每次发布都是观点之争、每次迁移都是赌博。

发布分诊流程

是否弃用你在跑的东西?这是唯一紧急项,把日期记在会提醒的地方。是否改变你计费依据的价格?更新数据,检查是否跨路由阈值。是否新增你会用到的请求或响应字段?不会就停止阅读,大多数公告到此结束。是否有合理的质量或成本收益?跑评估集和差分测试,不是三个提示词的主观感受。其余都是阅读,有趣但不可行动。保持跟进是研究活动,应按研究来预算。

需要警惕的静默情况:模型在稳定标识符下悄悄变化。供应商不提供固定版本的话,记录响应报告的模型字符串并在变化时告警,否则第一个症状是几周后的质量投诉。

正确评估候选模型

少数通过分诊的发布,四个问题决定是否值得切换,只有第一个关乎质量。在你的集上更好吗?用你自己的标注样本、和上次相同的评分方式,公共基准更好但你的抽取 schema 更差就是更差,评分方法必须跨比较固定。每单位工作的成本?不是每 token 成本,便宜 30% 但同任务多输出 40% 的模型更贵,模型间啰嗦程度差异经常这么大,要在同一集上算每完成任务的成本。你的百分位延迟成本?中位延迟很少决定什么,p95 决定用户功能是否还跟手,推理模型尤其把尾部拉得远比中位数远。哪些非质量问题会破坏?输出格式、拒绝阈值、工具调用倾向、提示词措辞是否还生效。切换要按斜坡推进、旧路由保持热备,而不是一刀切切换,回滚应是路由变更而非发版。


同时值得做且别拖的一件事:记录每个请求由哪个模型服务。没有它,斜坡三周后的质量问题没有答案,因为数据里区分不了两个群体。
@DevToolboxHub
Post #1592 7
Kubernetes 架构深潜:从资源限制到自定义 Operator

一份面向生产环境的 Kubernetes 架构详解,覆盖资源管理、QoS 类、CPU 节流陷阱、Pod 探针、网络与存储,以及如何通过 CRD 和 Operator 扩展集群能力。

资源请求与限制
请求(Requests)是 Pod 启动所需的最低 CPU 和内存,调度器据此决定节点放置;省略请求会导致调度失衡和节点资源枯竭。限制(Limits)是 Pod 可消耗的上限:内存为不可压缩资源,超限 1MB 即触发 OOMKilled 终止容器;CPU 为可压缩资源,超限后由 CFS 调度器执行节流,应用存活但延迟飙升。

资源超卖与 QoS 类
超卖指节点上所有容器限制总和超过物理容量,而请求总和仍在范围内。CPU 超卖安全可控,内存超卖风险极高,多 Pod 同时触顶会引发级联 OOMKilled。Kubernetes 依据请求与限制配置自动划分 QoS 类:Guaranteed(请求等于限制)受最高保护,Burstable(请求小于限制)其次,BestEffort(未定义请求与限制)在内存压力下最先被终止。

CFS 配额与 CPU 节流陷阱
内核以 100ms 为周期评估 CPU 用量。若 Pod 在前 20ms 内耗尽整周期配额,剩余 80ms 将被锁死,即使宿主机空闲率高达 80% 也会出现 500ms 以上延迟尖峰。许多 SRE 团队因此对延迟敏感微服务直接取消 CPU 限制,仅依赖调优的请求值与 HPA 应对流量。

安全与可观测性
RBAC 通过 ServiceAccount、Role 和 Binding 限制 Pod 权限,防止漏洞横向扩散。Prometheus 采集指标、Grafana 可视化、Alertmanager 告警构成监控栈。服务网格(Istio/Linkerd)通过 Sidecar 代理实现 mTLS 加密与金丝雀流量拆分。

Pod 生命周期与探针
启动探针等待应用完成初始化;存活探针检测死锁并重启容器;就绪探针失败时仅摘除 Service 端点,不重启 Pod,恢复后流量自动回归。

网络与调度
ClusterIP 仅供集群内通信,NodePort 不安全,LoadBalancer 按微服务逐个开通成本高昂。Ingress 作为集群网关统一终结 TLS 并按域名或路径路由。污点与容忍决定 Pod 能否调度到特定节点,节点亲和性支持硬约束与软偏好。

弹性伸缩与存储
HPA 依据 CPU 内存指标扩缩容,响应迟缓;KEDA 监听 Kafka、S3 等外部事件源,可缩容至零并秒级拉起副本。CSI 驱动负责动态供给云盘,PV 是集群级存储资源,PVC 是使用申请,StorageClass 触发动态供给流程。

扩展 Kubernetes
CRD 向 API 注册自定义资源(如 ModelDeployment),Operator 以自定义控制器监听这些资源并编排底层标准对象,将 Kubernetes 从应用运行器升级为平台构建器。


#开发者 #工具 #Kubernetes #DevOps #SRE #CRD #Operator #CICD
@DevToolboxHub
Post #1590 4
AI 代理工作流:从单任务到可复用系统

一位开发者分享了他构建 AI 代理工作流的完整经历。他尝试过两种方式:自己写代码只把琐碎部分交给代理,或把整个任务交给代理最后审计结果。前者太慢,后者在出错时已经太晚。他原本预期要花九篇文章强制代理遵循工作流,结果发现根本不需要强制执行。

这套系统的核心是一个位于仓库根目录的短指令文件,在接触任何任务前先对请求分类。琐碎工作直接内联处理,标准或复杂工作则按完整链路运行,每个阶段读取前一个阶段的产物而非对话记录。底层还有保持产物命名的 slug、区分实际表述与推断内容的清单、以及每个产物必须通过的出口门禁。

让他意外的是,分类结果与他自己的判断一致,无需他干预。小 bug 不会触发完整流程,标准需求、spike 或跨领域任务则按顺序跑完整周期。这套机制让他站在了流程中间——在 brief 阶段批准或退回,在构建前审阅计划,看到需求部分返回时决定是否阻塞工作。

作者坦言,目前无法验证分类是否真正正确,还是仅仅与他的判断一致。如果代理在相同方向上持续犯错,产物看起来会完全一样。此外,整个流程只经过一个人、一个任务,其他人写的产物是否具有同等效力仍是未知数。


他最终将精简版发布为 guide.md,包含分类规则、需求清单和出口门禁,完整版则放在 agentsmyth。这套流程的价值不在于让代理更听话,而是给了开发者一个在代理工作时可以站立的位置——在还有时间调整时,逐阶段观察结果落地。
@DevToolboxHub
Post #1588 6
Kiro Crew 安全模型实测:三层防线挡住危险操作

给 AI 智能体一个 P1 事故让它自行修复,结果会怎样?作者用开源项目 Kiro Crew 做了一次完整演练:只读调查自动放行,危险命令被拦截,写操作需人工审批,全程留痕可审计。

演练场景是支付平台 FinPay 的 P1 事故:一次"性能优化"把数据库连接池从 50 降到 5,部署后成功率从 99.8% 跌到 34%。智能体收到告警后自行排查,23 秒内定位到问题提交。

调查阶段全部自动放行:git log、cat 配置、grep 检索等只读操作无需审批。但尝试重启服务、直接推 main 分支、读取 AWS 凭证时,全部被安全护栏拦截,并给出替代方案:创建紧急 PR、走正规部署流程。

人工审批阶段,智能体分四步执行修复:建分支、改配置、推分支,每步等待批准。整个修复耗时 8.6 秒,三次人工点击。

安全模型共八层:所有者锁、137 条拒绝命令模式、治理上限、敏感路径拦截、工具审批、输入校验、OS 沙箱、输出脱敏。即使在 Autopilot 全自动模式下,拒绝模式和敏感路径拦截依然生效,无法从智能体侧关闭。

审计日志采用签名事件日志,每条操作记录可验证完整性。作者三周实测:拒绝模式零误报,审计日志帮他快速定位过一次缓存误读问题,安全层不增加任何 token 开销。


Kiro Crew 采用 Apache 2.0 开源协议,权限模型遵循 deny > ask > allow 原则,企业可按需配置自定义拒绝规则。对安全合规有要求的团队,这套模型值得参考。

#开发者 #工具 #KiroCrew #AI智能体 #DevOps #安全审计 #开源
@DevToolboxHub
Post #1586 7
代码注释被低估:从误区到最佳实践

围绕代码注释是否还有存在价值的争论从未停止。随着自文档化实践兴起,不少开发者把注释视为冗余甚至误导,在工期压力下更倾向于跳过注释。但这种态度本身存在缺陷——问题不在注释,而在如何正确使用和维护它。

六个真实场景揭示注释的价值与风险

一个金融机构继承了20年历史的COBOL系统,原始开发者早已退休,代码充满晦涩缩写。幸存的注释记录了合规规则和边界情况,成为新开发者理解业务逻辑的关键桥梁,避免了合规违规。

另一个Python项目中,过时注释声称函数"基于用户订阅计算月收入",实际却包含对老用户的硬编码折扣。新开发者信任注释构建报表,导致收入预测虚高15%。

某团队信奉自文档化,分布式系统的负载均衡变量命名为optimal_node,开发者误以为是"当前负载最低的节点",实际含义是"剩余容量最高的节点",引发频繁系统过载。

JavaScript项目中一条注释警告"勿删此函数,3%客户端仍依赖该遗留API端点",成功阻止了一次会导致大客户服务中断的重构。

Java项目里排序算法被优化后注释未同步更新,开发者依据过时注释回退到旧逻辑,造成性能回退。

C++项目中一条注释不仅解释了O(n²)循环的硬件限制,还指向JIRA讨论串,新成员据此提出硬件升级方案,消除了瓶颈。

何时该写注释:决策规则

代码含非显然逻辑、边界情况、机构知识或外部约束时,用注释澄清意图、背景和风险。代码自解释且无隐藏假设时,避免冗余注释。典型错误包括过度依赖自文档化代码,以及忽视注释维护导致信息失真。

最佳实践要点

为复杂算法和边界情况写注释,不为琐碎逻辑堆砌文字。注释应纳入代码评审的一等公民,无法更新的注释宁可删除。用注释记录决策依据和权衡,而非重复代码内容。主动标记风险和外部依赖,避免"自文档化"带来的虚假安全感。


注释本身无好坏之分,价值取决于策略性放置和严格维护。维护良好的注释降低认知负荷、加速上手、保存知识;被忽视的注释则放大混乱、侵蚀代码健康。规则很简单:如果注释无法持续维护,删除它比误导后来者更好。
@DevToolboxHub
Post #1585 4
AI 代理署名发帖引争议,匿名认证草案浮出水面

一篇署名「由 AI 维护者 Elara 撰写并发送」的帖子出现在 IETF 邮件列表,附带链上授权收据。审阅者要求提供可复现的测试向量,软件在一天内提交补丁;第三方独立复现时发现邮件列表在传输中损坏了补丁,修正后哈希一致。复现者谨慎表示:这证明了工件本身,而非其记录事件的真实性。

同一工作组正讨论「匿名机器人认证」草案:机器人向 Anchor 实体注册,经合规检查后获得凭证,向网站证明「经某 Anchor 审核」,但网站无法得知具体是哪个客户端、是否访问过、能否关联请求。设计目标是让网站无法追踪,Anchor 也无法跟随。
草案明确列出非目标:不支持允许列表、拒绝列表、特定机器人行为审计、访问关联。作者指出,精确识别让网站能精准歧视——政府网站可屏蔽监控执法的机器人,房产平台可屏蔽审计歧视的机器人,零售商可屏蔽比价机器人。
讨论中提出三层阶梯:匿名背书(有人担保,仅知合规)、身份识别(密码学证明归属,可积累声誉)、授权背书(人类在设定限额内授权特定购买)。关键纪律是不得混淆层级——匿名背书不等于已知运营者,已知运营者不等于授权买家。
Google reCAPTCHA 团队回应称,两个提案都是附加信号,可减少对合法自动化的摩擦,希望少收集声誉数据、少向匿名流量抛验证码。作者评论:验证是门而非墙,墙的存在只因无法分辨敲门者。


作者建议商家尽早决定政策问题:哪一层级获得何种待遇,匿名背书者能否访问但不给优惠,已知运营者无授权能否打折。其团队构建的系统接受验证身份,但在授权证明前不放行支付权限。
@DevToolboxHub
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →