开发者工具箱|编程·开发工具·资源
570 subscribers
1.44K photos
774 links
面向开发者的实用工具、库与效率技巧,写代码更快更爽。投稿 @BDHT1
#开发者 #编程工具 #效率 #程序员 · 开源总站 @GitHubTrendingHub
Download Telegram
合并348个PR后修复的11个Bug

Aniruddha Adak,一名印度计算机科学学生,两年间合并了348个PR。他分享了在cognee、openclaw、hermes-agent、opensre等项目中修复的11个关键Bug,涵盖Windows兼容性、AI代理空响应、数据库逻辑错误、安全漏洞等。例如:在cognee中修复Windows长路径导致OS Error 3;在hermes-agent中处理API返回None引发的panic;在opensre中扩充数据库逻辑以识别健康状态、消除无限循环。

这些Bug修复的教训:不要假设所有人都在Linux上开发;AI代理必须处理空数据;从小处着手逐渐深入。

#开发者 #工具 #BugSmash #开源贡献 #cognee #openclaw #Python #AI #数据库 #调试
@DevToolboxHub
AWS推出Claude Apps Gateway自托管控制平面

AWS与Anthropic联合发布Claude Apps Gateway for AWS,这是一款自托管控制平面,为Claude Code和Claude Desktop集中管理身份、策略、遥测、路由和支出上限。网关以单一无状态容器运行,将推理请求路由至Amazon Bedrock或AWS上的Claude Platform,替代了每个开发者各自配置的模式。

该网关面向企业团队,提供统一的访问控制和成本管理入口,无需修改现有Claude客户端即可接入。部署后,组织可通过单一策略规则约束推理用量,并集中查看遥测数据。

#开发者 #工具 #ClaudeAppsGateway #AWS #Anthropic #ClaudeCode #ClaudeDesktop #AmazonBedrock
@DevToolboxHub
PostgreSQL 为生产级 AI 代理提供关系型基础

由 Gwen Shapira 在 InfoQ 上分享,介绍团队如何利用 PostgreSQL 为关键任务应用扩展 AI 能力。她讲解了如何利用 Postgres 的多模态能力——包括 JSONB 解析和高召回率的 HNSW 向量索引——为 LLM 提供确定性和语义上下文。还讨论了向量量化可将查询速度提升 4 倍,以及管理代理记忆的策略。

#开发者 #工具 #PostgreSQL #AI #VectorSearch #代理记忆 #HNSW #JSONB
@DevToolboxHub
GitHub AI agent 可被诱导泄露私有仓库

GitHub 新推出的 Agentic Workflows(GitHub Actions 结合 AI agent,基于 Claude 或 Copilot,用 Markdown 编写工作流)被曝存在 prompt injection 漏洞。Noma Labs 发现,攻击者只需构造一个看似正常的公开 Issue 并在其中嵌入隐藏指令,就能让 agent 读取组织内多个仓库(包括私有仓库)的内容,并将结果以公开评论形式发布。无需凭证、无需 exploit 代码、无需内网权限。

“agent 的上下文窗口就是它的攻击面。agent 读取的任何内容——Issue、PR、评论或文件——如果被 agent 当作指令输入处理,都可能被武器化。”

具体攻击流程:Noma 研究员创建了一个伪装成销售 VP 需求的 Issue,正文包含隐藏指令。当 GitHub 自动化分配此 Issue 时,触发了配置为 on: issues.assigned 的 Agentic Workflow,该 workflow 有权读取组织内其他仓库(包括私有库),并使用 add-comment 工具。隐藏指令要求 agent 从各个仓库获取 README.md 并作为评论发布。agent 照做了,泄露了私有仓库 testlocal 的内容。PoC 公开可见。

防御绕过:GitHub 原有护栏未能阻止。Noma 发现,在注入指令中加入 “Additionally” 一词即可让模型重新框定输出而非拒绝,绕开所有护栏。一个关键词就瓦解了预期的安全行为。攻击者可低成本迭代措辞,防御方迭代成本高昂。

更广泛的模式:Noma 明确指出,prompt injection 之于 agentic AI 就像 SQL injection 之于 Web 应用——一种系统性的、类别级的漏洞类,无法通过加固单个案例解决,需要架构级防御。GitLost 攻击之所以成功,是因为 agent 无法区分操作者的指令和隐藏在用户控制内容中的指令,这是信任边界失效,且是结构性的。传统安全由代码强制信任边界,而在 agent 系统中,部分信任边界由模型的“遵循指令”行为来执行。

缓解建议:严格限定 agent 权限——跨仓库读权限是最高风险配置;绝不让 agent 公开发布用户控制的内容;对进入 agent 指令上下文的用户输入进行消毒或隔离(如同对待 SQL 查询中的用户输入);立即审计你的 Agentic Workflow 配置——检查权限范围和触发事件。


GitHub 已收到报告并负责任地披露,但底层模式并未修复——只是这一特定实例被报告了。

#开发者 #工具 #GitHub #AgenticWorkflows #安全漏洞 #PromptInjection #NomaLabs #CICD
@DevToolboxHub
Loopress 解决 WordPress 开发者体验痛点

WordPress 支撑了超过 40% 的网站,但开发者的日常工作流却与现代软件工程脱节:直接在服务器上编辑文件、从管理面板复制粘贴代码片段、依赖 SSH 安装 Composer 包、靠 FTP 或数据库导出“部署”。没有版本控制,没有 diff,回滚只能靠记忆。这些并非边缘问题,而是 WordPress 开发的日常。

Loopress 是一个工具集,旨在让 WordPress 开发变得可重现、可审查。它提供 CLI 和插件,将代码片段和 Composer 依赖视为文件:lps snippet pull 拉取片段,在本地用 Git 追踪,lps snippet push 推回站点。同时可在管理面板中直接管理 PHP 依赖,无需 SSH 访问。你的客户仍能按他们习惯的方式使用 WordPress,而你则可以像开发现代项目一样工作。

#开发者 #工具 #Loopress #WordPress #PHP #Composer #Git #DX
@DevToolboxHub
CPython 4300位限制致Python列失效,一年后修复

a2a-benchmark 是一个多语言 A2A(Agent-to-Agent)性能测试套件,包含四个代理:Python 和 Go 通过 ADK 调用 Gemini 工具,Node.js 和 Rust 作为直接处理器,用 Lucas–Lehmer 测试计算梅森素数,N 从 1 扫到 24。提交的结果一直停留在 N=22,Python 列整整一年都是 N/A。

根本原因是 CPython 3.11+ 默认限制 int→str 转换为 4300 位(DoS 缓解)。Python 代理将每个素数 str() 化,第 24 个梅森素数 p=19937,2^19937−1 有 6002 位,触发 ValueError,工具返回栈追踪文本而非结果。修复是删除无用的 str(),从 time.time() 改为 time.perf_counter,并增加 N=24 回归测试。

修复同时暴露了另外 8 个 bug:harness 优先从 LLM prose 正则提取时间,但 Gemini 用语不固定,数据全靠 fallback 存活;Node 和 Rust 用 toFixed(2) 报告时间,微秒级返回 0.00ms 在 log 尺度图上消失;直接代理报告“Found first 100 Mersenne primes”但实际只计算了 26 个;RTT 图表混用直接和 LLM 管道,400 倍差距实为架构差异;去掉格式后 Go 的计时低于微秒,输出 836ns 导致解析失败;重复使用 contextId 让 Gemini 拒绝重新调用。


最终 96/96 数据点全部正常,4 个 PR 共修复 9 个 bug。作者披露使用 Claude Code 作为调试与自动化修复代理。

#开发者 #工具 #CPython #A2A #MersennePrime #Python #Go #Nodejs #Rust #ADK #Gemini #LLM
@DevToolboxHub
AI编码助手上传整个Git仓库到云端

一项独立调查发现,某款AI编码CLI工具会在用户不知情的情况下,将整个Git历史(包括提交日志、机密信息)上传至供应商控制的云存储中,而且这一行为不受用户已关闭的“改进模型”隐私开关控制。这不是模型读取文件后可能通过补全泄漏的问题,而是一条独立、静默的数据外泄管道,与用户理解的数据共享设置完全脱钩。此前这类风险一直被当作“理论可能”被忽视,现在已被证实。

对开发者而言,任何具备shell或文件系统访问权限的AI编码代理,都应当默认它可以查看并可能传输仓库内所有内容(包括历史记录)。秘密扫描与轮换不再是可选卫生,而是使用这些工具的基础成本。

对安全团队而言,这是一个网络监控问题。如果仅监控模型API流量用于数据防泄漏,那等于看错了管道。任何能访问本地仓库的代理工具,其出口流量都需要独立审计,不能依赖厂商在UI中暴露的“隐私设置”。

对整个行业而言,这是下一轮合规挑战的预演。SOC 2及等效审计必须开始要求:“展示此工具通信的所有网络目标,而不仅仅是隐私政策中列出的那些”——因为政策与行为显然可能不一致。


如果厂商自己的隐私退出设计都无法控制它自己搭建的数据通道,那么我们审查AI工具隐私控制时,到底是在审查产品,还是在审查市场宣传文案?

#开发者 #工具 #AI编码助手 #Git仓库 #数据泄露 #隐私 #安全 #xAI #GrokBuild
@DevToolboxHub
修复 smolagents MCP 工具序列化崩溃 bug

huggingface/smolagents(28k+ star)中存在一个困扰众多用户的 bug:在 CodeAgent 中混用 MCP 工具后调用 to_dict()、save() 或 push_to_hub(),会触发难以理解的 ValueError: Tool validation failed for MCPAdaptTool...。原因是框架通过静态 AST 分析重构工具源码,但 MCP 工具是运行时动态生成的,其行为依赖 MCP 服务器会话,无法被源码序列化。

修复方式很简单:在 Tool.to_dict() 原有针对 Spaces、LangChain、Gradio 等运行时包装类的守卫中加入对 MCP 工具的检测,抛出清晰可操作的错误信息——告知用户先移除 MCP 工具再序列化,加载时通过 MCPClient 或 ToolCollection.from_mcp 重新创建。同时补充了文档说明和回归测试。

这一修复既保持了库的序列化契约,又让开发者在 hits 问题时立即知道该怎么做。


GitHub

#开发者 #工具 #smolagents #MCP #Python #AI #HuggingFace #BugFix #序列化 #Sentry
@DevToolboxHub
Rust 高性能缓存迁移经验分享

Ruth Linehan 在 QCon San Francisco 上分享将高性能缓存服务从 Kotlin 迁移到 Rust 的实战经验。她介绍了这次迁移如何打破团队对交付速度和工程开销的固有预期,并展示了 Rust 在系统编程层面的实际收益。

Linehan 重点讨论了 Rust borrow checker 的人体工程学设计,指出编译时安全能够显著缩短开发者反馈循环。她还展示了如何利用 Criterion 和 flamegraphs 等工具优化并发代码路径,为追求极致性能的缓存服务提供可行方案。

Ruth Linehan 是 Momento 的高级工程师,负责用 Rust 构建高性能缓存与发布订阅服务。

#开发者 #工具 #Rust #Kotlin #缓存 #性能优化 #Momento #QCon
@DevToolboxHub
WSL2 上 Claude 驱动 Chrome 的修复方案

Claude in Chrome 扩展在 WSL2 下无法工作,根源在于扩展通过 Windows 注册表发现原生消息宿主,而 Claude Code 在 WSL 中把清单写入 Linux 文件系统,两边互不可见。官方文档也已标明 WSL 不受支持。规避方案是退回 Chrome DevTools 协议(CDP),配合两个廉价的驱动组合,实现低成本、持续登录的浏览器自动化。

核心思路:一台 Windows Chrome 监听 9222 端口,WSL2 中的 agent-browser 负责日常驱动(通过可访问性快照,仅耗数百 tokens,远低于截图的上千 tokens),chrome-devtools-mcp 负责深入调试(网络请求、控制台、Lighthouse)。两者共享同一浏览器,通过 CDP 同时连接,仅需确保各自使用不同标签页。

启动 Chrome 命令(从 WSL 通过 /mnt/c 执行):
```
"/mnt/c/Program Files/Google/Chrome/Application/chrome.exe" \
--remote-debugging-port=9222 \
--user-data-dir="C:\Users\youruser\AppData\Local\ChromeDebugProfiles\myapp" \
--no-first-run --no-default-browser-check \
--remote-allow-origins='*' &
```
--user-data-dir 隔离浏览器配置,登录一次后会话持久保留。

agent-browser 安装:npm install -g agent-browser,注意跳过 agent-browser install(它会下载无登录状态的 Chrome for Testing)。首次运行因 $XDG_RUNTIME_DIR 不存在会报权限错误,需设置:
```
export XDG_RUNTIME_DIR=/tmp/abr-runtime
mkdir -p "$XDG_RUNTIME_DIR" && chmod 700 "$XDG_RUNTIME_DIR"
```
将 export 写入 ~/.bashrc 以便跨会话生效。

连接已有 Chrome:agent-browser connect 9222。之后使用 snapshot、fill、click 等命令操作页面,注意 ref 会随 DOM 变化失效,需重新快照。SPA 导航用 pushstate 而非 open。

chrome-devtools-mcp 配置(以 Claude Code 为例,添加至 ~/.claude.json):
```json
{
"mcpServers": {
"chrome-devtools": {
"type": "stdio",
"command": "npx",
"args": ["-y", "chrome-devtools-mcp@latest", "-u", ""]
}
}
}
```
推荐用 claude mcp add --scope user chrome-devtools -- npx -y chrome-devtools-mcp@latest -u http://127.0.0.1:9222 添加,避免手动编辑被覆盖。

常见陷阱:
- 端口幽灵:旧的 netsh interface portproxy 规则会占用 9222 且不被重启清除。在管理员 PowerShell 中用 netsh interface portproxy delete v4tov4 listenport=9222 listenaddress=0.0.0.0 等命令删除。
- 空工具列表:检查 ~/.claude.json 中端口是否与实验中的 Chrome 一致。
- MCP 服务器在 Chrome 之前启动:先启动 Chrome,再连接 MCP。


这套方案经过数月日常使用验证,关键是将登录状态持久化并避免高昂的截图 token 消耗。记住保持调试配置隔离,且只绑定到 127.0.0.1。故障时先用健康检查命令定位问题。

#开发者 #工具 #WSL2 #Claude #Chrome #CDP #agentbrowser #MCP #调试
@DevToolboxHub
AWS Continuum 上线代理化代码安全平台

Amazon Web Services 推出 AWS Continuum,这是一个新的集成安全平台,用于自动化代码库、依赖项和应用中安全问题的发现、执行与修复。AWS Continuum 提供四个代理能力,覆盖漏洞整个生命周期:渗透测试、代码审查、威胁建模和代码漏洞。

#开发者 #工具 #AWS #Continuum #安全 #漏洞 #渗透测试 #代码审查 #威胁建模
@DevToolboxHub
用MCP Server封装RAG Agent

将RAG Agent包装成MCP Server,让其他AI系统通过标准协议调用其能力,无需硬编码Python导入。作者使用FastMCP构建自定义MCP服务器,暴露四个工具类别:计算器、搜索公司文档、查询员工假期、查询工单信息。

四个工具类别:
- 计算器工具:calculator_add 和 calculator_multiply。
- search_company_documents:通过HTTP请求访问RAG Agent的FastAPI /search端点,需api_key参数。
- get_employee_leave:从内存中查询员工剩余PTO。
- get_ticket_information:返回工单状态、分配团队和优先级。
每个工具使用 @mcp.tool() 装饰器注册,FastMCP体验良好。
挑战方面,RAG搜索工具需跨网络调用(requests.get到127.0.0.1:8000/search),需处理连接拒绝、超时等真实错误。
未来计划包括:统一认证、数据源替换为真实数据库、最终接入多Agent工作流。


MCP协议为AI Agent与外部工具提供标准化接口,使系统能力可发现、可调用。企业AI的未来不仅是生成更好回复,更是让AI Agent安全地与现实工具和业务能力交互。

GitHub: GitHub

#开发者 #工具 #MCP #RAG #FastMCP #AIagents #Python
@DevToolboxHub
safari-mcp 索引钳位 Bug:我猜错了根因

safari-mcp 作者三天前提交了一个严重 issue:用户的两个标签页被 AI 代理误导航,滚动位置、页面状态丢失。他自信地分析了根因——位置句柄导致标签归属丢失——并提议用注入 window.__mcpTabMarker 的稳定标识方案。

实际打开源代码后,他发现:这个哨兵方案早在 v2.8.3(April 14)就已经实现了。真正的 bug 藏在其下方四行:当标签索引超过窗口标签数时,代码不是丢弃索引(fail closed),而是将索引“钳位”(clamp)到 tabCount——即指向窗口最后一个标签,一个从未打开的、属于用户的标签。这个“proactive fix”代码段被日志装饰成“修复”,实质是猜答案。

这条 clamp 分支(Mar 31)比哨兵方案(Apr 14)更早,属于遗留启发式。哨兵方案添加时正确连入了两条 fail closed 分支,但这条“输入校验”样式的 clamp 被遗留了。作者总结:当添加更好机制时,旧启发式不会自动删除。任何将“我不知道”转换成合理值的代码,都是披着修复外衣的 fail open。

最终修复只是删除那几行钳位代码,改为 activeTabIndex = null; return null;——就像它上下两条分支一样。错误提示引导用户重新运行 safari_new_tab 来恢复。代价是那些此前“侥幸”成功的 session 会抛出异常,但作者认为:对于“绝不碰用户标签”的承诺,报错是正确答案,猜不是。


修复只是一行删除。作者把错误的根因分析留在 issue 里当警示,并提醒:如果你把同一个 bug 交给 AI 代理,它可能会执行你提出的早已过时的方案,而真 bug 依然存在。

#开发者 #工具 #safarimcp #MCP #Safari #AI #Bug #Javascript #macOS
@DevToolboxHub
Hugging Face 缓存溢出解决方案

Hugging Face 模型下载默认存入 ~/.cache/huggingface,140GB+权重极易撑爆系统盘。以下是 Linux 下的工程级缓存管理方案,避免存储耗尽与生产崩溃。

避免使用废弃的环境变量 TRANSFORMERS_CACHE 和 HUGGINGFACE_HUB_CACHE,应统一使用 HF_HOME。
禁用符号链接法:存在权限提升风险,不推荐。
步骤1:永久修改缓存路径
在 ~/.bashrc 追加 export HF_HOME="/mnt/massive_drive/ai_model_cache" 并 source。
步骤2:Python 中必须在 import transformers 前设置 os.environ["HF_HOME"]。
步骤3:使用 huggingface-cli scan-cache 和 huggingface-cli delete-cache 安全清理。
步骤4:生产环境只读卷需设置 os.environ["HF_HUB_OFFLINE"]="1" 避免写锁文件崩溃。


通过以上配置可彻底解决存储陷阱,确保生产环境稳定运行。

#开发者 #工具 #HuggingFace #缓存 #模型部署 #Linux #DevOps #AI
@DevToolboxHub
开源QR码生成器QRcodly发布

作者因给亲友准备生日礼物时发现市面上所有QR码生成器都要注册或付费,决定开发一个真正免费的MIT开源替代方案。QRcodly支持无限静态/动态QR码、自定义样式、Logo上传、扫描分析和内置短链接,免费用户无需信用卡,也不会遇到试用期后重定向到升级页面的陷阱。

动态QR码本质是一个302重定向短链接,许多服务借此将打印物料变成自己的广告位。QRcodly的Pro版面向企业提供自定义域名、REST API和批量导入等商业功能,个人用户则不必为“重定向”支付月费。技术栈采用pnpm monorepo结构:前端Next.js、后端Fastify、共享Zod schema作为类型唯一来源,搭配Drizzle ORM、Redis、Clerk认证和next-intl国际化。后端采用自建事件系统而非Kafka/RabbitMQ,降低自托管门槛。目前已稳定运行一年并迎来首批付费客户。


GitHub: github.com/FloB95/qrcodly

#开发者 #工具 #QRcodly #开源 #Fastify #Nextjs #TypeScript #Monorepo
@DevToolboxHub
OTEL到SLM:从生产遥测提炼前沿模型行为

Ben O'Mahony 在 QCon San Francisco 上分享了如何构建自定义 AI 驱动的语言服务器协议(LSPs),超越传统规则检查器。核心方法是用 OpenTelemetry 原生检测 AI 代理,将用户对代码修复的接受、拒绝或重新生成等操作作为隐式标签,形成持续数据飞轮。这样就能将前沿模型的能力蒸馏到更便宜、本地部署的 SLMs 中。

#开发者 #工具 #OpenTelemetry #SLM #LSP #AI #QCon #SanFrancisco
@DevToolboxHub