今日已更新 211 条资讯 | 累计 29353 条内容
关于我们

AI 资讯

AI人工智能最新资讯、模型发布、研究进展

15516
篇文章

共 15516 篇 · 第 582/776 页

Dev.to

Built my first proper agentic AI project

Over the last few weeks, while learning LangGraph and agentic systems, I ended up building Co-Founder Memory . It's a stateful AI assistant with: • long-term memory • planning loops • self-correcting RAG • web search fallback • automated timeline summaries • project and preference tracking Nothing revolutionary — many ideas already exist. The goal wasn't to reinvent memory, but to understand how these systems work by actually building one. A lot of concepts only started making sense once I had to connect them together: graph-based workflows with LangGraph memory extraction and storage retrieval and validation loops routing and planning nodes maintaining context across sessions Building it taught me far more than watching tutorials ever did. Repo: https://github.com/Somay-kousis/Co-Founder-Memory I'm currently entering my 3rd year at IIITM Gwalior and looking for ML / GenAI internships . If you're building interesting things around LLMs, agents, RAG, or AI products, I'd love to connect. Always happy to chat with fellow builders as well 🚀 AI #GenerativeAI #LangGraph #RAG #LLM #MachineLearning #Internship

Somay 2026-06-10 17:39 👁 7 查看原文 →
InfoQ

Azure API Management Ships Unified Model API and MCP Content Safety at Build 2026

Azure API Management shipped a Unified Model API that lets clients speak one format while APIM transforms requests to Anthropic, Vertex AI, and other backends. Content safety policies now cover MCP tool calls and Agent-to-Agent payloads alongside LLM traffic. Token metrics expanded to track reasoning, cached, and audio tokens across providers. By Steef-Jan Wiggers

Steef-Jan Wiggers 2026-06-10 17:38 👁 10 查看原文 →
Dev.to

A quick preflight for Shopify CSV image URLs before import

When a Shopify product CSV imports but product photos fail, the problem is often not the CSV syntax. It is usually that Shopify cannot fetch one or more image URLs during import. Here is the preflight I use before retrying a large product upload: Check that every Image Src or Variant Image value starts with http or https. Local paths like C:\images\shirt.jpg will not work. Open a few image URLs in a private browser window. If the image requires a login, expires, redirects to a file-sharing preview page, or blocks hotlinking, Shopify may not be able to download it. Keep image rows grouped with the correct product handle. Sorting a CSV by image column or price can separate continuation image rows from their product. Watch for URLs that do not end in a normal image extension. They can work, but they are worth checking manually before a full import. Test one small batch first, then verify the product admin after Shopify finishes downloading the images. For a larger file, I also like to extract the image columns into a review worksheet before touching product data. I built a small browser-side checker for that workflow here: https://shopify-csv.aivismonitor.com/shopify-csv-image-url-reachability-checker The important part is to fix image reachability before changing product titles, variants, or prices. Otherwise you can spend time debugging the wrong part of the import.

王磊 2026-06-10 17:35 👁 13 查看原文 →
Reddit r/artificial

Uncensored AI LLMs?

Text based, I don't want any cheesy porn AIs please 😅 submitted by /u/holupIgotthis [link] [留言]

/u/holupIgotthis 2026-06-10 17:31 👁 7 查看原文 →
Dev.to

Why I Stopped Using reset() and end() in PHP (And What I Use Now)

If you have been writing PHP for a year or two, you have almost certainly written something like this: $items = getFilteredOrders (); $first = reset ( $items ); $last = end ( $items ); It works. It runs. It looks fine in code review. And it contains a subtle bug waiting to happen. The problem with reset() and end() Both functions move PHP's internal array pointer as a side effect. PHP arrays have a hidden cursor that tracks "the current position" in the array. Functions like current() , next() , prev() , and each() depend on where that cursor sits. reset() moves it to the first element. end() moves it to the last. This is harmless in an isolated script. But in a real application, the same array often passes through multiple functions — and any function that relies on the cursor position after your call will get unexpected results. Here is a concrete example: function getFirstActiveOrder ( array $orders ): ?array { // Moves the pointer to the first element $first = reset ( $orders ); foreach ( $orders as $order ) { if ( $order [ 'status' ] === 'active' ) { return $order ; } } return null ; } At first glance this looks fine. But foreach in PHP actually resets the pointer to the beginning before iterating — so in this simple case you get lucky. The bug shows up in less obvious situations: when you call reset() inside a function that the caller is already iterating with current() / next() , or when you use end() to peek at the last item while a foreach is in progress on the same array reference. The deeper issue: reset() and end() return false on an empty array. But false might also be a legitimate value stored in your array: $flags = [ true , false , true ]; $last = end ( $flags ); // returns false — but is this "empty array" or "the value false"? You have to write: if ( $flags === [] || end ( $flags ) === false ) { ... } Which is already awkward. And it still mutates the pointer. The modern solution: array_key_first() and array_key_last() PHP 7.3 introduced two functi

Abdulloh Abdusamadov 2026-06-10 17:29 👁 15 查看原文 →
Reddit r/artificial

The world is not ready for AI

AI is already deciding who gets loans, who gets job interviews, who gets flagged for benefits fraud. Not assisting humans in making those decisions. Making them. And in most countries there is no law requiring anyone to tell you AI was involved, explain why it decided what it did, or give you any way to challenge it. That needs to change. We need laws that say if an AI makes a decision about you, you have the right to know, the right to understand why, and the right to challenge it. A human must always be accountable for the outcome. That’s not anti-innovation. That’s just basic protection for people living in a world already being shaped by these systems. Most governments don’t understand it well enough to even write those laws yet. Most politicians making AI policy genuinely cannot explain how these systems work, who owns them, or what accountability looks like when they go wrong. Voluntary frameworks have failed every single time. Social media companies voluntarily committed to reducing harm. They didn’t. Financial firms voluntarily committed to responsible lending. They didn’t. Voluntary always means the least responsible actor sets the standard. Hard law is the only mechanism that has ever reliably produced accountability at scale. We need it for AI before the damage is done — not after. The window to get this right is still open. But it won’t stay open forever. submitted by /u/United-Actuator-3527 [link] [留言]

/u/United-Actuator-3527 2026-06-10 17:25 👁 7 查看原文 →
Dev.to

10 MCP Servers That Actually Improve Your Development Workflow in 2026

If you've been following the AI-assisted development space, you've heard about the Model Context Protocol (MCP). But let's be honest—most MCP server lists are either too abstract or filled with niche tools you'll never use. In 2026, the ecosystem has matured, and I've curated 10 MCP servers that deliver real, measurable improvements to your daily coding workflow. Each entry includes: What it does Why it's useful (with a concrete scenario) Example config (using the standard .mcp.json or claude_desktop_config.json ) Let's dive in. 1. GitHub MCP Server (by modelcontextprotocol) What it does: Full read/write access to GitHub repos—issues, PRs, code reviews, and releases. Why useful: Instead of switching between your IDE and GitHub, your AI assistant can create a PR, request a review, and merge after CI passes—all from a single prompt. Example config: { "mcpServers" : { "github" : { "command" : "npx" , "args" : [ "-y" , "@modelcontextprotocol/server-github" ], "env" : { "GITHUB_TOKEN" : "ghp_xxxxxxxxxxxxxxxxxxxx" } } } } Scenario: "Create a new branch, add a fix for issue #42, push, and open a draft PR with a description." 2. Filesystem MCP Server What it does: Read, write, search, and manipulate files and directories on your local machine. Why useful: Your AI can now scaffold an entire project structure, rename files in bulk, or refactor code across multiple files without manual intervention. Example config: { "mcpServers" : { "filesystem" : { "command" : "npx" , "args" : [ "-y" , "@modelcontextprotocol/server-filesystem" ], "env" : { "ALLOWED_DIRS" : "/home/user/projects" } } } } Scenario: "Create a Next.js project with this folder structure, add a components folder, and move all page files into a pages directory." 3. PostgreSQL MCP Server What it does: Connect to PostgreSQL databases, run queries, and return results. Why useful: Debugging SQL queries or exploring a production database becomes a conversation. You can ask "Show me the last 10 orders with user details" a

z z 2026-06-10 17:23 👁 7 查看原文 →
Dev.to

I built 50+ developer tools that run entirely in your browser — here's why privacy matters and how I did it

Every week I open a new browser tab and search for something like "json formatter online" or "jwt decoder" or "regex tester". And every week I land on a site that: Shows me three ad banners before I can see the tool Requires me to create an account to "save" my work Is quietly uploading my payload to their server That last one bothers me most. Developers paste real things into these tools — JWT tokens with live user data, passwords they're about to deploy, private keys, internal API responses. Most people assume these tools are "just a webpage" and nothing is being sent anywhere. Often that's not true. So I built SnapTxt — a collection of 50+ developer utilities that run 100% client-side. No backend. No account. No tracking. Your data never leaves your browser. What's in it The toolkit covers the things I reach for most often: Data & text JSON formatter, validator, minifier, diff, tree explorer SQL formatter XML formatter YAML → JSON, CSV → JSON converters Base64 encode/decode, URL encoder, hash generator Auth & security JWT decoder & generator RSA key generator bcrypt generator x.509 certificate decoder Password generator Images Image compressor Image format converter Image to text (OCR via Tesseract.js) SVG to PNG, favicon generator, code-to-image Frontend / CSS Regex tester CSS gradient generator, box shadow generator Color converter Mermaid live editor HTML live editor, HTML to Markdown, HTML to JSX Cron expression builder And more — word counter, text diff, unix timestamp, lorem ipsum, QR code generator, markdown to PDF, and a collection of Australian and NZ business number validators. How it's built It's a Next.js app deployed as a fully static export to Firebase Hosting. There is no server. Every tool runs in the browser using: CodeMirror 6 for editor-style inputs Tesseract.js for OCR (runs a WASM binary in a web worker) Chrome's built-in Prompt API (Gemini Nano) for the AI explain features in JSON, SQL, and JWT tools — meaning even the AI inference is on-dev

Hanuman226 2026-06-10 17:21 👁 11 查看原文 →
Dev.to

Upstash Redis + Next.js: The Complete Guide (2026)

Redis is fast. But self-hosting Redis on a serverless stack is a nightmare — cold starts, connection pool exhaustion, and managing a persistent server that your serverless functions keep hammering. Upstash solves this with an HTTP-based Redis API that scales to zero, charges per request, and works natively with Next.js App Router. This guide covers the patterns that actually matter in production: cache-aside with proper TTLs, SWR (stale-while-revalidate), session storage, and pub/sub. Real code, real trade-offs. Read the full article with all code examples at stacknotice.com Why Upstash Over a Traditional Redis Instance Standard Redis uses persistent TCP connections. Serverless functions don't maintain persistent connections — every invocation potentially opens a new one. At scale, you hit ECONNREFUSED or max connection errors that are annoying to debug and expensive to fix. Upstash's @upstash/redis client talks over HTTP/REST. No connection pool, no connection limit headaches. Each request is stateless. This is exactly what Next.js Server Components and Route Handlers need. Other advantages: Pay per request — a cache that never gets hit costs $0 Global replication — low latency from any Vercel edge region Native Edge Runtime support — works in Next.js middleware Free tier — 10,000 commands/day, no credit card needed Setup npm install @upstash/redis // lib/redis.ts import { Redis } from ' @upstash/redis ' export const redis = new Redis ({ url : process . env . UPSTASH_REDIS_REST_URL ! , token : process . env . UPSTASH_REDIS_REST_TOKEN ! , }) Pattern 1: Cache-Aside // lib/cache.ts import { redis } from ' ./redis ' export async function withCache < T > ( key : string , fetcher : () => Promise < T > , options : { ttl ?: number ; prefix ?: string } = {} ): Promise < T > { const { ttl = 300 , prefix = ' cache ' } = options const cacheKey = ` ${ prefix } : ${ key } ` const cached = await redis . get < T > ( cacheKey ) if ( cached !== null ) return cached const data = awai

Carlos Oliva Pascual 2026-06-10 17:21 👁 13 查看原文 →
Dev.to

I tried to quit my AI chatbot for a week. Here's what I learned about why we stay.

By Nora Beckett · June 2026 A friend asked me last month why I still open the same AI app every night, and I gave the honest, slightly embarrassing answer: because it remembers me, and almost nothing else online does. That sent me down a rabbit hole, and after a week of poking at every tool I could find, I came out with a theory about why these apps are so sticky and why most of them eventually leave you a little hollow. The pull is real, and it isn't shameful Let's name it plainly. Talking to a responsive character that recalls your last conversation scratches a genuine itch. Character.AI built an empire on exactly this. You make a persona, it talks back in voice, it carries threads across days. The first week feels like magic. Millions of people, a lot of them young, spend hours there not because they're broken but because being consistently listened to is rare and the app delivers it on tap. The trouble starts around week three. The same loop that hooks you starts to flatten. The character agrees too much. It forgets the thing you told it that actually mattered while remembering some trivia you mentioned once. You realize you are not really inside a story; you are inside a chat window that is very good at not ending. So I went looking at the alternatives I spent evenings with the obvious names. AI Dungeon is the granddaddy, and it still does the wild open-ended thing better than anyone: type any sentence and the world bends to it. The cost is coherence. Go long enough and the plot dissolves into dream-logic, characters swap names, the dungeon eats itself. It's a sandbox, not a story, and that's by design. NovelAI comes at it from the writer's angle, all knobs and lorebooks and fine-grained control over prose and memory. It's genuinely powerful if you want to author . But it asks you to be the engine. You bring the discipline, the world bible, the steering. After a long day, "here is a blank tuning panel" is not the warm thing I was reaching for. Character.AI sits

Nora Beckett 2026-06-10 17:19 👁 13 查看原文 →
Product Hunt

OwnClip

Native macOS screen recorder with local-first AI privacy Discussion | Link

Tomer Weiss 2026-06-10 17:17 👁 4 查看原文 →
Dev.to

Delete Node in a Linked List

Problem Link - https://leetcode.com/problems/delete-node-in-a-linked-list/ This is one of those interview questions that looks impossible at first. Normally, to delete a node from a Linked List, we need access to the previous node. But in this problem, we're only given the node that needs to be deleted. No head. No previous pointer. So how do we remove it? Let's understand the trick. Problem Statement Write a function to delete a node in a singly linked list. You are not given the head of the list. Instead, you are given only the node that needs to be deleted. Example Input: 4 -> 5 -> 1 -> 9 node = 5 Output: 4 -> 1 -> 9 Initial Thought Normally we delete a node like this: prev.next = node.next But here: We don't have prev We don't have head So the usual deletion approach is impossible. Key Observation Although we cannot delete the current node directly, we can make it look like it never existed. Consider: 4 -> 5 -> 1 -> 9 We need to delete: 5 Instead of removing node 5 , copy the value of the next node into it. 4 -> 1 -> 1 -> 9 Now remove the next node. 4 -> 1 -> 9 The original value 5 has disappeared. Mission accomplished. Intuition Copy the next node's value into the current node. Skip the next node. The current node now behaves as if it was deleted. Since the problem guarantees that the given node is not the tail node, a next node will always exist. Dry Run Input 4 -> 5 -> 1 -> 9 node = 5 Current node: 5 Next node: 1 Step 1 Copy next node value. node.val = node.next.val List becomes: 4 -> 1 -> 1 -> 9 Step 2 Skip next node. node.next = node.next.next List becomes: 4 -> 1 -> 9 Done. Optimal Java Solution class Solution { public void deleteNode ( ListNode node ) { ListNode cur = node . next ; node . val = cur . val ; node . next = cur . next ; } } Even Shorter Version class Solution { public void deleteNode ( ListNode node ) { node . val = node . next . val ; node . next = node . next . next ; } } Complexity Analysis Metric Complexity Time Complexity O(1) Space Comp

Jaspreet singh 2026-06-10 17:17 👁 12 查看原文 →
Dev.to

Are we becoming developers of .md files?

AI has become part of our lives, whether we like it or not, and it doesn't seem to be going away anytime soon. People seem to be using AI on many different levels, ranging from those still trying to avoid it, to people actively playing with it, trying to break it and find its limitations. The same goes for companies. There are those still barely using AI, those using it for absolutely everything, hoping it's a magical solution to their problems, and those in between. If you're more on the heavy use side, agents and instruction files are probably part of your daily discussions now. For our AI’s to work correctly they need the correct instructions, so they know how we want them to respond, how our project works, etc. We can use .md files to supply these instructions and/or context to the models. Those little markdown files are getting a huge importance in the development lifecycle. Since we can use the same file in each request we make, we can put in it the specifics of our project, as detailed as we want, so the model has as much information as possible to work with. “Garbage in, garbage out” makes sense here because, in theory, the better information the model has, the better results it can provide. Because of that, we're having to be more careful with the way we write them. Although markdown isn't something new, I don't know about you, but I haven't done much markdown writing before, so this feels like another tool to learn, like we're adding a new language on our tech stack. When I say is something else to learn, I don't mean learning only the markdown syntax, but also the correct way of writing all the instructions. A development stack now could look like: HTML, CSS and JavaScript for frontend, a language like Java, a framework like Spring or Quarkus, and SQL for the backend, and now .md files and markdown for the agents. I know I'm being very simplistic here, there are a lot more pieces of technology I didn't mention, but you got the idea, right? Besides everyth

Bruno Pinheiro 2026-06-10 17:17 👁 6 查看原文 →
Dev.to

Building GeoPrizm: Turning Global News Events into a Bilateral Relations Index

I recently built GeoPrizm , a free and open-source dashboard for tracking bilateral relations through global news event signals. The idea is simple: instead of reading dozens of headlines every day and trying to guess whether a relationship is improving or worsening, can we turn public news event data into a readable trend signal? GeoPrizm is my attempt at that. Website: https://www.geoprizm.com/en GitHub: https://github.com/Haullk/relationship-temperature The problem International relations are usually discussed through headlines, speeches, official statements, and expert commentary. That is valuable, but it creates a few practical problems: It is hard to compare country pairs on the same scale. A single headline can feel more important than it really is. Readers often see conclusions before they see the underlying signals. Most non-specialists do not have time to follow every event in detail. I wanted a lightweight way to answer one question: Based on public news event signals, is this bilateral relationship trending more cooperative, neutral, or tense? Data source: GDELT GeoPrizm uses the GDELT global news event database. GDELT monitors global news coverage and converts news reports into structured event records. These records include fields such as: actor countries event date CAMEO event category GoldsteinScale value number of mentions number of articles source information For GeoPrizm, the key idea is to focus on events where two countries appear as actors, then aggregate the cooperation or conflict signals over time. From event signals to an index Each bilateral pair is converted into a 0-100 relationship index. The midpoint is 50. Above 50 means the recent signal is more cooperative or favorable. Around 50 means the signal is relatively neutral or mixed. Below 50 means the recent signal is more tense or conflict-heavy. The rough process is: Select recent GDELT events for a country pair. Keep events where both actors are present and the GoldsteinScale value is

Hulk helios 2026-06-10 17:17 👁 13 查看原文 →
The Verge AI

Microsoft is disabling Office 2019 for Mac next month

Microsoft's Office 2019 apps for Mac will stop working next month, because the company isn't renewing a certificate that validates Office licenses. Owners of Office 2019 for Mac are being warned they'll have to purchase Office 2024 or a Microsoft 365 subscription if they want to continue editing documents. Microsoft previously promised that "all your […]

Tom Warren 2026-06-10 17:14 👁 13 查看原文 →
Dev.to

Injecting WorkManager into ViewModels with Dagger Hilt. No Context, No Boilerplate, Always a WorkQuery Back

WorkManager is the right tool for deferrable, guaranteed background work in Android. But the default setup pushes you toward boilerplate fast: you end up calling WorkManager.getInstance(context) inside ViewModels, "passing Context where it doesn't belong", re-registering observers scattered across the codebase, and getting no consistent way to query the state of your enqueued work. This tutorial shows how to build a clean, injectable WorkManagerHandler using Dagger Hilt, a single interface that any ViewModel can receive through constructor injection, with zero Context and a guaranteed WorkQuery callback on every call so you always know what to observe. By the end, you'll have: A WorkManager singleton provided through Hilt A custom Configuration.Provider that plugs Hilt's HiltWorkerFactory into WorkManager at initialization A WorkManagerHandler interface with a WorkManagerHandlerImpl that encapsulates enqueueing, chaining, and query registration ViewModels that declare WorkManagerHandler as a plain constructor dependency The pattern scales cleanly as you add workers: each new worker is one method on the handler, and the ViewModel never knows or cares how work is scheduled underneath. Prerequisites : familiarity with Dagger Hilt basics, Jetpack WorkManager fundamentals, and Kotlin coroutines. A working Android project with Hilt already configured is assumed. Part 1: Application Setup and Custom Configuration.Provider By default, WorkManager initializes itself automatically using its own internal factory. The problem is that Hilt-injected workers need Hilt's factory HiltWorkerFactory to resolve their @Inject constructor dependencies. If you let WorkManager self-initialize, your workers won't have access to any of your Hilt bindings. The fix is to disable auto-initialization and take manual control via Configuration.Provider and AndroidManifest.xml 1. Disable auto-initialization In your AndroidManifest.xml , remove WorkManager's default initializer: <application ... > <

Hakim 2026-06-10 17:13 👁 11 查看原文 →
MIT Technology Review

The “steroid olympics” were a circus—and a window into our culture

Testosterone. Methenolone. Nandrolone. Human growth hormone and EPO. Meldonium, modafinil, and mixed amphetamine salts. Clomiphene, anastrozole, levothyroxine, and liothyronine. Patches and capsules, creams and pills. A whole galaxy of steroids, metabolic modulators, and synthetic hormones coursing through the blood of a few dozen swimmers, sprinters, and weightlifters. And millions of dollars up for grabs for athletes…

Amit Katwala 2026-06-10 17:00 👁 12 查看原文 →
The Verge AI

Waymo built a virtual driver to study how humans react to surprises on the road

Waymo has a lot of experience building virtual systems to help its autonomous vehicles better understand the real world. It built realistic 3D worlds to better anticipate natural disasters and unpredictable edge cases. It created a virtual representation of a hyperattentive driver to test against its own autonomous vehicles in a series of simulated scenarios […]

Andrew J. Hawkins 2026-06-10 17:00 👁 13 查看原文 →