AI 资讯
Validate the manifest, reject on failure, and your plugin client is non-conformant
Agent Plugins 1.0.0 ships a JSON Schema for plugin.json . It sets additionalProperties: false . So the obvious loader is four lines: const manifest = JSON . parse ( await readFile ( join ( dir , ' plugin.json ' ))); if ( ! validate ( manifest )) return reject ( ' invalid manifest ' ); That loader is wrong, and the specification says so in a sentence most people never reach. §5.2: Clients MUST report and ignore each unknown field and MUST continue loading the plugin if the manifest otherwise satisfies this section. An unknown top-level field is a schema violation you have to tolerate . §8.1 says the same for an extensions field that isn't an object. Every other schema violation is fatal. So a validator gives you one boolean where the spec wants three different outcomes, and the natural implementation is non-conformant in exactly two cases and correct everywhere else. That is the kind of bug that doesn't show up in your tests. It shows up as a plugin that works in one client and not another, six months later, in someone else's bug tracker. This has already happened, repeatedly I went looking before building anything. In the last few months: Codex loaded any directory with a root plugin.json through its Agent Plugins loader, which had no hook support. Every hook in .codex-plugin/plugin.json silently stopped running. Two plugins were dead for a week before anyone noticed. oh-my-pi routed packages declaring an agent-plugins.org $schema to a strict provider that dropped any SKILL.md with an extra frontmatter key. Downstream, a plugin went from 33 skills to 3. The fix was to delete $schema from the manifest, so conforming to the standard cost them the standard. dotnet/skills shipped manifests with no $schema and with skills , agents and mcpServers as top-level fields. Kiro refused them. Adding $schema got past the rejection and then loaded the package with every functional component excluded. VS Code , the largest shipping client, has no validation surface at all. Its trou
AI 资讯
FreshCtx 0.6.0: Stop AI agents from acting on stale data
AI agents do not need to hallucinate to make the wrong decision. They can read accurate information, reason correctly, and still take the wrong action because the information changed before execution. That is the problem FreshCtx is built to address. The same failure keeps appearing in different systems Developer feedback around FreshCtx surfaced several versions of the same underlying problem: A subscription status changed in Stripe, but an application acted on its old snapshot. A deployment worker continued after another worker had already claimed the job. An agent relied on remembered database action items instead of checking their current status. A research source changed after a claim had been prepared. A voice workflow reached an outdated business record after correctly understanding the request. Different industries and different tools, but the same gap: The reasoning was valid when produced, but stale when executed. What changed in FreshCtx 0.6.0 FreshCtx now provides the same pre-action freshness boundary across several practical environments: Stripe Subscription validation An Agno pre-tool integration Synchronous LangGraph action-node wrappers Asynchronous LangGraph action-node wrappers Selective revalidation of only the evidence an action declared Audit evidence explaining why an action was allowed or blocked The LangGraph integration checks the evidence an action depends on immediately before the node runs. If a required dependency changed or cannot be verified, FreshCtx blocks before the node body starts. FreshCtx does not replace LangGraph routing, retries, checkpointing, transactions, or idempotency. It adds the missing freshness check at the point where reasoning becomes action. Why framework neutrality matters Agno and LangGraph have different execution models. Stripe is not an agent framework at all. The integration changes, but the control remains consistent: An action declares the evidence it depends on. FreshCtx checks that evidence again at the
AI 资讯
Spark X2.5-4B & 1.7B: the only on-device models with native 1M-token context — now open source
Today SparkLLM releases and open-sources two on-device general models: Spark X2.5-4B and Spark X2.5-1.7B . Both natively support a context window of up to 1,000,000 tokens — as far as we know, the only on-device models to do so. Why 1M context on-device In real work, you rarely hand a model a single question — you hand it a whole after-sales manual, a set of meeting materials, a batch of project docs, or an entire code repository. On-device models used to chop long content into pieces and ask about each separately, which loses context and drops information. Spark X2.5-4B and 1.7B natively support up to a 1M-token context window, trained on hundreds-of-billions-of-tokens of high-quality long-document data, so they can take in and reason over far more information in a single task — and keep the full picture across a continuous, multi-step interaction. Not just answering — doing the work Long context decides whether the model can see everything; agent + tool-use decides whether it can act on it. Office (with Loomy): upload a sales spreadsheet and ask for an analysis plus a bilingual department report — X2.5-4B writes a script to aggregate the data, extracts key metrics and trends, generates a ~3,000-word Chinese report, produces an English version in the same structure, and validates content, structure and layout end to end. Code: on algorithm implementation, completion and generation, X2.5-4B rivals cloud models 2–3× its size . It plugs into open harnesses like DeepSeek Harness, OpenCode, Codex and Pi for local dev and automation — with low latency, offline use, and code kept on-device. Smart home: on the Domux smart-home test set, X2.5-1.7B reaches 90.3% end-to-end command accuracy at 0.85s average latency. Robotics: both sizes suit continuous perception-and-execution on-robot or on edge devices — operation control, target tracking, navigation decisions — with less dependence on the cloud. Domestic compute, open deployment Both models were trained end to end on a ful
AI 资讯
Archify: A Verifiable Architecture Diagramming Skill for AI Coding Agents
Verifiable Architecture Visualization: Meet Archify As autonomous AI coding assistants (such as Claude Code, Cursor, and Codex CLI) become central to system design, engineering teams increasingly use them to map complex architectures. However, typical AI-drawn diagrams suffer from inconsistent geometry, untyped syntax errors, and an inability to track structural changes across Git revisions. Archify is an open-source diagramming and validation engine developed by tt-a1i to bring rigor to AI-generated system maps. Rather than generating loose markdown charts, Archify requires AI agents to produce a typed JSON Intermediate Representation (IR) that compiles deterministically into interactive, self-contained HTML and SVG artifacts. What is Archify? Archify operates as a verification engine and rendering compiler. When you ask an AI agent to map a codebase or design a cloud architecture, the agent outputs a structured JSON schema. Archify validates node clearances, boundary crossings, and layout hierarchies before generating a complete, standalone visual artifact. Key Core Features 1. Five Specialized Diagram Types Archify supports five core technical visualization models: Architecture: Component services, databases, external dependencies, and trust boundaries. Workflow: Multi-lane CI/CD pipelines, approvals, runbooks, and exception handlers. Sequence: API call chains, authentication flows, cache fallbacks, and async event traces. Data Flow: Data pipelines, ETL transforms, storage tiers, and PII boundaries. Lifecycle: Finite state machines, retries, timeout loops, and terminal states. 2. Architecture Delta Review During pull request reviews or system refactors, Archify supports side-by-side snapshot diffing. Developers can compare Before , Delta , and After states to inspect exact added, removed, moved, or rerouted components with a deterministic verification receipt. 3. Interactive Standalone HTML Viewer Archify outputs self-contained HTML files with advanced interactiv
AI 资讯
Merge PDFs in the browser with JavaScript (no uploads, no server)
In this post I'll show how to merge PDF files entirely in the browser using PDF.js and pdf-lib — no server, no file upload, no backend. Everything runs on the user's machine, which is great for privacy and for keeping hosting costs at zero (it's just a static site). Why process PDFs on the client? Most "free" PDF websites quietly upload your documents to their server, which: Exposes private/sensitive files to third parties Imposes size limits Often slaps a watermark on the output Requires you to trust their storage If you handle PDFs with client-side JavaScript (WebAssembly / WASM + PDF.js), none of that happens. The user's file never leaves their device, and you don't need a backend at all — so it's cheap and private. Caveats pdf-lib works well with standard PDFs; heavily encrypted or unusual documents may need extra handling. Very large PDFs are memory-hungry since everything is client-side, but for typical documents it's fast and free. Some complex PDFs with unusual fonts can lose fidelity — test on your own files first. Try it I packaged this approach (plus split, compress, rotate, unlock, image-to-PDF) into a free no-upload tool: https://yourutilityhub.com/pdf/merge-pdf The whole project is open source: https://github.com/Jalal-khn/utilityhub- If you have questions about the architecture or want a deeper dive on any part, ask away. The basic idea Read the input file with FileReader Parse it with pdf-lib (a pure-JS PDF library) Copy the source pages into a new document Save the merged PDF and trigger a download Here's the core function: js import { PDFDocument } from "pdf-lib"; async function mergePdfs(files) { const merged = await PDFDocument.create(); for (const file of files) { const bytes = await file.arrayBuffer(); const src = await PDFDocument.load(bytes, { ignoreEncryption: true }); const pages = await merged.copyPages(src, src.getPageIndices()); pages.forEach((page) => merged.addPage(page)); } const out = await merged.save(); return new Blob([out], { typ
AI 资讯
Case Study: Scaling Smart Teleassistance Voice Routing with Edge Compute and Zero-Cold-Start Cascades
In mission-critical infrastructure, latency isn't just a metric—it's the difference between a resolved incident and a catastrophic outage. Whether you are managing an SRE team handling cluster failures or a teleassistance platform routing domestic SOS alerts, the core engineering challenge remains identical: getting a human's attention in milliseconds without administrative friction. This technical breakdown explores how we architected a high-availability voice routing engine using Cloudflare Workers and Twilio, bridging the gap between hardware teleassistance and DevOps incident workflows. The Dual-Use Architecture: From Teleassistance to SRE Paging Our platform core serves two distinct but structurally identical needs: Senior Safe: A Chilean domestic teleassistance product where an SOS trigger must reach a family guardian instantly. DevOps On-Call: An infrastructure alert triggered via Grafana or UptimeRobot webhooks that must wake up an engineer at 3 a.m. The blast radius differs (a household vs. a production database), but the technical path is identical. To solve this at scale without charging steep "per-seat" licensing models that penalize growing squads, we built the entire pipeline on serverless isolates. Bypassing Cold Starts with Edge Ingest When an emergency happens, you cannot afford to wait for a virtual machine or container to boot. The public ingest pipeline lives directly on Cloudflare Workers ( api.wakeupdev.com ). Because V8 isolates are kept warm globally across the edge network, there is zero Lambda-style cold start penalty on the first page. The ingest contract is minimal: Authentication: Handled via an x-api-key header. Payload: Raw text or JSON (capped at 4,000 characters). Execution: Credits are consumed atomically in a global Postgres layer before the voice cascade is scheduled. An HTTP 202 Accepted status code guarantees that the credit is validated and the call flow is in flight. Solving the Voicemail Problem: True Human Acknowledgement A
创业投融资
I Followed the Appeal Path. There Was No Appeal.
This is part four of the Defender Access series. Each part is standalone, but here is the thread if...
开源项目
🔥 alphaXiv / openresearch-cli - Run parallel research agents with any model
GitHub热门项目 | Run parallel research agents with any model | Stars: 531 | 65 stars today | 语言: Rust
开源项目
🔥 ionic-team / capacitor - Build cross-platform Native Progressive Web Apps for iOS, An
GitHub热门项目 | Build cross-platform Native Progressive Web Apps for iOS, Android, and the Web ⚡️ | Stars: 16,506 | 79 stars today | 语言: TypeScript
开源项目
🔥 hieunc229 / mailflare - Professional email for professionals and teams
GitHub热门项目 | Professional email for professionals and teams | Stars: 2,114 | 450 stars today | 语言: TypeScript
开源项目
🔥 Hiram-Wong / zyfun - 跨平台桌面端视频资源播放器,免费高颜值.
GitHub热门项目 | 跨平台桌面端视频资源播放器,免费高颜值. | Stars: 8,825 | 6 stars today | 语言: TypeScript
开源项目
🔥 PurpleDoubleD / locally-uncensored - Plug-and-play local AI studio: uncensored chat, image & vide
GitHub热门项目 | Plug-and-play local AI studio: uncensored chat, image & video generation, coding agent. Runs abliterated LLMs + ComfyUI 100% offline. One installer, no Docker, no cloud. | Stars: 1,314 | 57 stars today | 语言: TypeScript
开源项目
🔥 DsThakurRawat / Backend-from-first-Principle
GitHub热门项目 | | Stars: 317 | 27 stars today | 语言: JavaScript
AI 资讯
My Tests Agreed With My Code. Neither of Them Checked Reality
I had twenty-two passing tests and two separate reviewers on a piece of code. None of it objected. Then I pointed it at a real API owned by somebody else and it broke on the first live read. The mismatch fit in one sentence: my parser required ISO 8601, the documented API returned Unix seconds. The repair was not one line. It touched five files, 74 lines of parser and 52 lines of tests. The assumption was small; making it safe was not. Here is why nothing caught it, and it is the part worth keeping: My tests used ISO because my code used ISO, so they agreed with each other and never checked reality. The fixtures were written by the person who wrote the parser. They encoded the same assumption. The suite confirmed internal behaviour without ever challenging the ISO assumption, because both halves of it came from one head. Internally consistent is not the same claim as right, and nothing in that suite could tell the difference. Two separate reviewers missed it too. I cannot prove why, and I am not going to invent a reason. What I can show is that the parser and every fixture encoded the same ISO assumption, so none of the artifacts in front of anyone supplied the live contract that contradicted it. The second one was worse Working against a real system made redirect containment matter, so an independent breaker went at it. In Python 3.13 the default redirect handler rebuilds the redirected request from req.headers , dropping only content length and type. My X-API-Key sat in that header set, so the redirected request inherited it. Python has Request.add_unredirected_header() for exactly this, which marks a header as one that will not be added to a redirected request. I was not using it. The breaker reproduced it offline with a sentinel value and a cross-origin Location , and the sentinel crossed. No live FIPSign credential was ever shown to have crossed an origin. The defect was real and unshipped. I did not find it by auditing my own code, and I did not find it myself
AI 资讯
Hello, DEV! I'm a Game Backend Engineer
I'm a backend engineer mainly working on game servers, with Java as my primary language. Over the years, I've spent a lot of time building and debugging backend systems, and recently I've been digging deeper into concurrency, I/O, logging, and performance. Working on game servers has taught me that many problems look simple at first, but become surprisingly complicated once the system gets busy. I'll be sharing some of the things I've learned from real-world systems, including experiments, benchmarks, design decisions, and a few open-source projects I'm working on. Glad to be here. Looking forward to learning from everyone on DEV!
AI 资讯
The Day I Became the One Being pip Installed: My Pre-Release Checks Caught 3 Leaks
(Translation of my Japanese article on Zenn.) This is part 4 of a series where I keep delegating implementation to AI without being able to read the code, building a vulnerability triage CLI called triage-lens. This installment is about distribution rather than the tool's internals: the tool had been sitting on GitHub, and I published it to PyPI so a single pip install triage-lens brings it in. A confession first. Shipping took more nerve than any of the feature work did. And three "leaks" actually turned up right before release. From the installing side to the installed side I can't read code, but I have typed pip install before. Years ago I dabbled in Python out of curiosity, and the one thing that stuck was the experience of a useful tool arriving in one line. Now that I'm the one publishing, the other side of that one line finally became concrete. Someone builds a thing, shapes it into a package, and puts it on the public shelf called PyPI. That's why it installs in one line anywhere in the world. My turn to put something on the shelf. I delegated the release work to AI too: package metadata, the release workflow, and one thing I insisted on. Instead of an API token, authentication to PyPI uses Trusted Publishing (OIDC). Nothing like a long-lived password gets stored anywhere; you declare "trust publishes from this workflow in this GitHub repository" and that's it. A secret you never hold is a secret that can't leak. The pre-release check caught three real ones In this project, nothing goes out to a public repository without passing a mechanical check. Procedures and tests, not eyeballs, verify that no personal or development-only information is mixed in. For three releases it came up empty. That's what insurance looks like. On the fourth run it caught something real. Three somethings. First, test code had slipped into the distribution. The packaging tool's default behavior had a path where the whole development test suite gets bundled along. I was about to scat
AI 资讯
Taming the Beast: Building a High-Performance ETL Pipeline for Apple Health’s Massive XML Exports
If you’ve ever tried to open an Apple Health export.xml file in VS Code, you’ve probably watched your RAM melt into a puddle of sadness. 🫠 Apple’s HealthKit data is a treasure trove of biological insights, but at the scale of 5GB+ of "dirty" XML, it’s a Data Engineering nightmare. In this tutorial, we are building a high-concurrency Apple Health ETL Engine . We’ll be leveraging Rust for blazing-fast parsing, Apache Arrow for memory-efficient data transport, and ClickHouse for lightning-fast analytical queries. Whether you are building a personal bio-hacking dashboard or a population health platform, this architecture is designed to handle "Big Data" on "Small Hardware." The Problem: Why XML is Killing Your Pipeline Apple Health exports everything as a single, massive XML file. A typical 3-year history contains millions of <Record> tags with inconsistent attributes. Standard DOM parsers (like Python’s ElementTree ) will crash your system because they try to load the entire tree into memory. To solve this, we need a Streaming ETL approach. The Architecture 🏗️ Our pipeline follows a "Performance-First" philosophy: we parse in a low-level language, pass data through a zero-copy memory format, and sink it into a columnar database. graph TD A[Apple Health export.xml] -->|Streaming I/O| B(Rust XML Parser) B -->|Schema Mapping| C{Apache Arrow Batches} C -->|Zero-copy| D[Python/Polars Wrapper] D -->|Bulk Insert| E[(ClickHouse OLAP)] E -->|SQL/Grafana| F[Health Insights] style B fill:#f96,stroke:#333,stroke-width:2px style E fill:#00f,stroke:#fff,stroke-width:2px Prerequisites 🛠️ Before we dive in, ensure you have the following installed: Rust (Latest stable) Python 3.10+ ClickHouse (Local or Cloud) Tech Stack : quick-xml , arrow-rs , polars , clickhouse-connect . Step 1: The High-Speed Rust Parser 🦀 We use the quick-xml crate because it provides a "pull-based" API. This allows us to read the file byte-by-byte without ever loading more than a few KB into memory. // src/parser
AI 资讯
I Wanted to Press F5 and Debug JavaScript — So I Built My Own VS Code Debugger
Sometimes software development reaches a point where the tools designed to make your job easier start becoming part of the job. I ran into that with browser debugging. I wanted something that should have been simple: Set a breakpoint. Press F5. Debug my JavaScript. Instead, I found myself spending too much time thinking about development servers, browser launch configuration, debugger connections, ports, profiles, and the debugging environment itself. That led to a simple question: What if browser debugging could go back to convention over configuration? So I built CloudIDEaaS JavaScript Debugger . ⚡ The Goal: Press F5 and Debug The philosophy behind CloudIDEaaS is straightforward: Spend your time debugging your application instead of debugging your debugging environment. For a straightforward JavaScript or HTML project, I wanted the workflow to look like this: Set a breakpoint. Press F5 . Start debugging. Behind those three steps, CloudIDEaaS can start the local web server, launch Chrome, establish the debugging connection, configure your breakpoints, and then load the application. The important part is that you don't have to think about most of that. 🔴 Real Debugging Inside VS Code This isn't intended to replace Chrome DevTools or compete feature-for-feature with every large JavaScript debugging platform. It's focused on providing the debugging features I use most often directly inside Visual Studio Code: 🔴 Source and conditional breakpoints 👣 Step over, step into, and step out ▶️ Continue and pause 🔍 Local variables and object inspection 📚 Scopes and call stacks 🧮 Expression evaluation ⚠️ Exception breakpoint configuration 🌐 A built-in local web server One feature that was particularly important to me was startup breakpoints . The debugger establishes the connection and configures your breakpoints before loading the application, making it possible to catch JavaScript that executes during startup. 🧠 What's Actually Happening Under the Hood? Building the debugger a
AI 资讯
Ponytail: An Open-Source "Lazy Senior Dev" Skill Pack for AI Coding Agents
Minimalist AI Code Generation: Meet Ponytail As developer adoption of autonomous AI coding assistants (such as Claude Code, Cursor, and GitHub Copilot CLI) reaches peak momentum, codebases are facing a new challenge: "AI bloat." AI models often tend to over-build—generating multi-file abstraction layers, injecting third-party dependencies, or re-implementing standard library functions when simple one-liners would suffice. Ponytail is an open-source skill pack developed by DietrichGebert to curb AI over-engineering. Built on the philosophy that "the best code is the code you never wrote," Ponytail forces AI agents to think like experienced senior developers, seeking the cleanest, lowest-footprint path to a working solution. What is Ponytail? Ponytail acts as a quality-control ruleset for AI coding clients. When an AI agent receives a prompt, Ponytail intercepts the task execution and forces the model through a strict 7-step decision ladder before writing code. The 7-Step Decision Ladder YAGNI (You Ain't Gonna Need It): Does this feature or abstraction really need to exist? Codebase Reuse: Is there an existing utility or helper in the project? Standard Library: Does the programming language's standard library provide native functions for this? Native Platform Features: Does the browser or OS already provide a built-in UI/API (e.g., <input type="date"> )? Installed Dependencies: Does a dependency already in package.json solve this? One-Liner Evaluation: Can this task be completed in a single clear line of code? Minimal Execution: Only if steps 1–6 do not apply, write the minimum safe implementation. Empirical Performance & Benefits According to benchmarks conducted across real open-source repositories (FastAPI + React stacks): ~54% Code Reduction: On average, agents write 54% fewer lines of code (reaching up to 94% reduction on over-engineered tasks). ~20% Token Savings: Fewer generated lines translate directly to lower API token consumption. ~27% Faster Task Completio
AI 资讯
Ownership, and Making This Template Your Own (Part 5)
Part 4 covered how this platform actually ships — scaffolding, CI/CD, and the two deployment shapes. This closing part is the two things every one of the last four parts has assumed: who actually owns each piece of this, and what it takes to make this whole template yours. Who owns what Every piece of this platform belongs to exactly one team, and that split is what makes independent deploys survive contact with a real organization, not just a single-team demo: Piece Owned by Depends on Host / Shell Platform team Store, Components, the manifest, the identity provider Components MFE Platform / design-systems team Nothing (a leaf) Store MFE Platform team The identity provider Utilities MFE Platform team Nothing (a leaf) Domain MFE (×N) Domain team Components, Store, Utilities only Manifest Registry Platform team Nothing Identity provider(s) Outside the platform — whichever the deployment configures — Backend / BFF Domain team, or a shared gateway (Part 2) Each team's own data The rule underneath the table: domain teams never import from each other, only from the shared platform layer. That keeps the dependency graph a strict two-level tree — Host → platform layer → domain leaves — instead of a mesh, which is what keeps independent deployability tractable once there's more than a handful of domain teams. It's the same rule that made every part of this series possible to write in isolation: Part 3's auth flow doesn't need to know Part 4's deploy pipeline exists, and neither needs to know how many domain teams there eventually are. Making this template your own Everything organization-specific in this platform — branding, which identity provider(s) it trusts, where the manifest lives — has lived in one file across this entire series, on purpose: // platform.config.json { "orgName" : "acme-corp" , "branding" : { "primaryColor" : "#0B5FFF" , "logoUrl" : "..." }, "idp" : { "issuers" : [ { "id" : "primary" , "issuer" : "https://issuer.example.com" , "clientId" : "..." , "def