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

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

@devtoolboxhub

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

Showing posts older than #1750 · Back to latest

Older Posts 11 shown
Post #1748 11
多后端 AI 生成 JSON 的双层防御

在多后端 AI 调用中,单靠“请返回 JSON”无法保证结构正确。
解决方案:
1. Prompt 里写入完整 JSON Schema,让模型直接按约定的 envelope 输出。
2. 代码层提供数组包裹回退:若模型返回裸数组,自动包装成 { "entities": [...] }

这两层互补:Schema 降低错误率,回退保证残余错误不致导致后续验证失败。
在三种后端(Claude CLI、Claude SDK、codex)中,只有 SDK 能在 API 层强制结构;其余两种仍需 Prompt+代码双重防御。

核心要点
- Prompt 作为合同,明确期望形状。
- 代码层仅做已知偏差的 deterministic 包装,避免“修复”假设。
- 结构验证与内容质量分离,后者留给模型本身。

实践意义
- 对多后端系统而言,Prompt 里的 Schema 是唯一通用防线。
- 当单一后端提供原生结构输出时,可将 Prompt 作为补充。
- 通过此双层策略,能显著减少因 JSON 形状错误导致的流水线中断。


GitHub: GitHub

#开发者 #工具 #JSONSchema #多后端 #AI流水线 #PromptEngineering #Zod #SDK #Claude #codex
@DevToolboxHub
Post #1747 9
Sudoku Kanban Matrix:多维约束任务排程引擎

Sudoku Kanban Matrix 用数独逻辑解决传统 Kanban 在容量扩展时的“列与泳道分离”问题。
- 核心规则:单格容量 = 列限与泳道限的最小值,防止单个泳道被隐藏在满列后仍被堵塞。
- 流程布局:从“General Backlog”到“Complete & Archive”共八列,每列设定严格的最大卡片数,WIP & Rework 列硬上限为 5,超过即冻结上游列。
- 自主调度:管理者仅做系统引导,工作者可自由接收、完成或转移任务;系统自动根据空闲容量进行路由。
- 低运维:无需后台计算,所有约束通过白板或 Markdown 直观呈现,实时更新。

详细列数与容量限制见 README
采用 CC0 1.0 公开许可,完全自由使用


GitHub Repository: GitHub

#开发者 #工具 #SudokuKanban #KanbanMatrix #TaskScheduling #OpenSource #CC0
@DevToolboxHub
Post #1746 9
构建本地通话回顾面板(Python)

本教程演示如何用 Python 生成一个本地 HTML 页面,支持在音频旁边查看转写、情感与说话风格评分,并可按说话段回放。无需 API Key、模型下载或网络请求,完全离线运行。随后可将同一页面与 Oruk Python SDK 结合,分析自己的录音。

- 先下载示例脚本、JSON 结果、录音文件及 attribution.txt,运行 call-review.py 生成 review.html
- 页面包含四段说话区,支持搜索、过滤、按段回放。
- 若需分析新录音,先通过 SDK 调用 analyze(需设置 ORUK_API_KEY),得到 JSON,再用同一脚本生成报告。
- 代码与示例均在 MIT 许可下公开,完整实现可在 GitHub 获取。

GitHub: GitHub

#开发者 #工具 #Python #OrukSDK #音频分析 #本地回顾 #MITLicense
@DevToolboxHub
Post #1745 7
iOS 视觉回归测试:simctl + 像素差分实战

iOS 视觉回归测试可以从本地小型流水线开始:在模拟器上启动指定屏幕,捕获截图并与已接受的基准图像做像素级比较。关键在于保证两张截图处于相同环境与应用状态。

在 ShotZen 的付费墙更新中,重排订阅选项、强调推荐徽章并新增 NO RENEWALS 标签后,截图报告显示除预期区域外,年费行、CTA 按钮和页脚也发生位移。将带边框徽章改为纯文本后,差异显著下降。此经验说明:百分比表示变化面积,周围上下文决定是否可接受。

实现流程分三步:
1. 应用 harness(VisualRegressionHarness.swift)读取启动参数,配置状态,构建目标视图控制器并设为窗口根控制器。
2. 捕获驱动(capture.py)选择模拟器、安装 app,循环遍历语言、外观与屏幕组合,使用 xcrun simctl screenshot 生成 PNG。
3. 比较器(diff_report.py)用 Pillow 计算像素差,绘制差异框,输出 HTML 报告与 summary.json。

该工具仅需 Xcode、Python 与 Pillow,无需额外 Swift 测试库。通过 run.sh init 初始化配置,随后 run.sh baseline 捕获基准,run.sh check 对比。

关键点
• 通过 launch arguments 控制语言、主题与目标屏幕,保证截图一致性。
• 采用 -VRScreen-VRLang-VRStyle 等自定义参数,避免环境漂移。
• 通过 xcrun simctl status_bar 固定状态栏,减少可见差异。
• 采用像素差分阈值 PIX_TOL=24 与百分比阈值 diff_threshold_pct=0.5,需根据项目实际调整。


资源链接
https://github.com/mufeng-ios-visual-regression

#开发者 #工具 #iOS #Swift #VisualRegression #simctl #Pillow
@DevToolboxHub
Post #1744 8
WorkBraid:让架构变更可视化、可审计

WorkBraid 将架构状态序列化为 JSON 图谱,并在 Git 中持久化。代理提交结构化补丁后,工具自动生成“前后”对比图,供人类在 CLI 或 Web UI 中快速审阅。批准后,变更连同补丁和图像 URL 一并提交到 Git,保持完整历史。

- 代理只需操作 JSON,完全不触碰可视化层;人类只需在图形编辑器中查看差异并决定是否合并。
- 通过节点/边级别的冲突检测,冲突面更小,解决流程更直观。
- 本地运行,无云依赖,所有数据保存在本地 Git 仓库,支持多实例共享远程仓库。

适合需要大规模结构重构、偏好可视化审查、并且想在本地保持版本控制的团队。若变更规模小或团队缺乏可视化审查习惯,可考虑其他方案。


GitHub: GitHub

#开发者 #工具 #WorkBraid #架构可视化 #Git #MCP #代理协作
@DevToolboxHub
Post #1742 9
从 Prompt 到 Paycheck:LLM 链实现付费 AI 代理

在构建可计费 AI 代理时,需要三层协同工作:
1️⃣ Prompt/Chain:把用户请求转成确定的 LLM 调用序列,避免幻觉与递归。
2️⃣ Execution Runtime:托管链路,管理状态、重试,并提供 HTTP/JSON‑RPC 接口。
3️⃣ Payment & Metering:记录成功调用,使用 USDC 通过智能合约计费,并在失败时可退款。

核心实现
- 使用 LangChain v0.2+,可组合 Runnable 对象,支持多后端(OpenAI、Anthropic、Llama.cpp)。
- Intent Classifier:用 gpt‑4o‑mini 识别请求类型(seo_blog、social_copy、code_review、data_summarize)。
- Skill‑Specific Sub‑Chain:如 SEO 博客,生成 600 字 SEO 文章并检查长度与 meta 描述。
- Validator + Retry:若输出不符合规范,最多重试两次或退回人工审核。

Runtime 部署
- 通过 Cloudflare Workers(亦可 AWS Lambda、Fly.io 等)暴露 /run 接口。
- JWT 认证 → 计费计数 → 调用链 → 返回结果并附带计费元数据。
- 价格映射表示每项技能的 USDC 费用(seo_blog 0.05,social_copy 0.02 等)。

代码示例已在 GitHub 上公开,方便快速集成与自定义。


GitHub: GitHub

#开发者 #工具 #LLMChain #LangChain #USDC #CloudflareWorkers #gpt4omini
@DevToolboxHub
Post #1740 15
WebAZ 购物工具:先验证单品再比价

WebAZ 的公开搜索接口返回的结果显示,单品标题、价格区间与可选项多样,单凭列表价无法直接判断哪一项是最便宜的可交付商品。测试发现:

- 同一关键词不一定代表同一购买意图,例子中“organizer”与“tissue pack”属于不同类别;
- 标题所示价格往往对应多种变体,需先确认具体选项及其包含的单元数,才能算出每单元成本;
- 列表价不等于最终交付成本,缺少运费与税费信息,不能直接用来排名。

WebAZ 提供了一个可复用的检查模板,帮助开发者把这些不确定性转化为可验证的断言,确保 AI 代理在给出价格比较前已确认所有必要细节。

该工具适用于需要在购物助手中实现精准单品比价的场景,尤其是多变体、组合包装或定制集装箱的电商。


资源链接
GitHub: GitHub

#开发者 #工具 #WebAZ #购物助手 #价格比价 #多变体 #API测试
@DevToolboxHub
Post #1739 15
将 Pay‑Per‑Call API 包装成 MCP 工具并注册到官方目录

通过在 MCP 服务器中实现 HTTP 402 付款门控,只对 tools/call 进行计费,其他接口保持免费,作者成功将三项功能(QR 码生成、图像处理、文本分析)发布到官方 MCP Registry,而无需 GitHub 账号、付费域名或 KYC。
- 免费握手initializetools/listping 等接口无需付费,保证目录探测与客户端能列出工具。
- 付费执行:调用 tools/call 时返回 HTTP 402,并携带 PAYMENT‑REQUIRED 头,说明 Base 上的 USDC 价格。
- 注册方式:使用 HTTP 认证(Ed25519 密钥)代替 GitHub 登录,单行文本放在 /.well-known/mcp-registry-auth,即可被 registry.modelcontextprotocol.io 接受。
- 成本与收益:服务器使用免费 sslip.io 主机,成本为 $0,已在所有主流 MCP 目录中可见,当前收入仍为 $0,但已完成基础设施部署。

资源链接

话题标签
#开发者 #工具 #MCP #x402 #PayPerCall #USDC #Base #Ed25519 #HTTPAuth
@DevToolboxHub
Post #1731 14
IMDSv1 仍在用?先检查再强制 IMDSv2

在 EC2 实例上保留 IMDSv1 可能让 SSRF 攻击者轻易拿到实例元数据。
AWS 在控制台会提示:在把 IMDSv2 设为“必需”前,先确认实例没有 IMDSv1 调用。
CloudWatch 的 MetadataNoToken 指标能帮助你判断是否还有未加 token 的请求。

迁移流程

1. 先用 MetadataNoToken 监控,确认所有旧脚本/SDK 已改为 token。
2. 在控制台或 Terraform 把 HttpTokensoptional 改为 required
3. 重新测试,若出现 MetadataNoTokenRejected,说明仍有 IMDSv1 调用,需进一步修复。

注意
- IMDSv2 并不修复 SSRF 本身,只是让元数据访问更安全。
- 迁移后旧的 SSRF 漏洞仍需修补。
- 通过 aws ec2 modify-instance-metadata-defaults 可在账户层面强制要求 IMDSv2,避免新实例再次使用 IMDSv1。

实验环境
- 通过 GitHub 仓库 RedCaraxes/aws-imdsv1-to-imdsv2-lab 可快速搭建演示。
- 费用低,约 $0.27/天(t3.nano + 公网 IP + EBS)。


GitHub
GitHub

#开发者 #工具 #IMDS #EC2 #SSRF #AWS #CWE918 #CapitalOne #CloudWatch #Terraform #IAMRole
@DevToolboxHub
Post #1730 14
AI 编码助手可被恶意仓库直接执行代码

AI 编码工具(Claude Code、Cursor、Codex、Grok、Goose、Hermes、Qwen Code 等)在“打开文件夹”时会自动调用 git status 等命令获取项目上下文。由于 Git 的 .git/configcore.fsmonitor 可被滥用,执行这些只读命令就能触发索引刷新,进而让攻击者在未授权、无沙箱的情况下获得 shell 访问权限。
这意味着任何未经审查的代码仓库都可能在不提示用户的情况下被 AI 直接执行,类似于把可疑 GitHub 链接当作邮件附件下载。
对安全团队而言,提醒是:AI 工具继承了 Git 的全部攻击面,却未继承人类在克隆仓库时的谨慎。对开发者而言,必须在使用 AI 工具前先评估其对仓库的操作权限,避免自动化流程带来的隐患。

GitSpawn: Flaw Lets Untrusted Repos Run Code in Claude Code, Codex, Cursor, Grok

#开发者 #工具 #AI #Git #安全 #AI编码助手 #GitSpawn #ClaudeCode #Cursor #Codex #Grok #Hermes #QwenCode
@DevToolboxHub
Post #1726 12
拆分到无需查找的极限

在拆分工作单元时,唯一可靠的停止信号不是行数,而是“是否还需要去查找任何东西”。如果执行者在完成任务前还得去找类型、错误名、包路径或邻近实现,说明拆分过大。把任务拆成 1–2 个文件+对应测试,每个迭代只跑自己的包测试,能让每个迭代都可独立验证,避免不必要的查找与合并冲突。

关键点
• 迭代只包含一份代码文件(或两份同类文件)和对应测试
• 通过 go test ./internal/repository/order/... -race -count=1 单独跑,整体检查在阶段结束时一次性完成
• 依赖顺序按数据流决定,非依赖的迭代可并行执行
• 迭代大小以“是否需要查找”为准,保持任务可验证、可重现

结果
• 减少 40 次迭代的写作成本,提升可维护性
• 避免在探索性工作中因未知而频繁拆分
• 让团队更专注于实现而非搜索


github.com/brilliant-almazov

#开发者 #工具 #拆分 #迭代 #Go #PHP #Symfony #架构 #生产力

---
@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 →