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

标签:#ev

找到 5552 篇相关文章

AI 资讯

China LLM API Benchmark 2026: Prices, Speed, and Setup Guide

Chinese models now account for 61% of global LLM token consumption. DeepSeek, Qwen, GLM, and Doubao consistently dominate the global top 10 on OpenRouter. But for developers outside China, accessing them is painful — no English docs, no international payment, confusing pricing. I tested all 6 major APIs. Here's what I found. Price Comparison (June 2026) Model Provider Input $/1M tokens Output $/1M tokens vs OpenAI DeepSeek V3 DeepSeek $0.35 $0.52 95% cheaper DeepSeek V4-Flash DeepSeek $0.003 $0.015 99.7% cheaper Qwen-Max Alibaba $0.58 $1.74 92% cheaper GLM-5 Zhipu AI $0.87 $4.05 84% cheaper Doubao Pro ByteDance $0.43 $0.87 95% cheaper MiniMax M2.5 MiniMax $0.45 $0.90 95% cheaper DeepSeek V4-Flash at $0.003/M is 1/300th the cost of GPT-4o . For agent chains or batch processing, you can call it without thinking about cost. Quick Start All Chinese models follow OpenAI API format. Change base_url and model — zero code changes. # DeepSeek curl https://api.deepseek.com/v1/chat/completions \ -H "Authorization: Bearer $API_KEY " \ -d '{"model":"deepseek-chat","messages":[{"role":"user","content":"Hello"}]}' # Qwen — same format, different endpoint curl https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions \ -H "Authorization: Bearer $API_KEY " \ -d '{"model":"qwen-max","messages":[{"role":"user","content":"Hi"}]}' How to Get API Access Model Sign Up Payment Free Tier DeepSeek platform.deepseek.com Alipay/WeChat 5M tokens Qwen dashscope.aliyun.com Alipay 2M tokens/month GLM-5 open.bigmodel.cn WeChat/Alipay 1M tokens Doubao console.volcengine.com/ark Alipay 500K tokens MiniMax platform.minimaxi.com Alipay 1M tokens All platforms support English UI. Most don't require a Chinese phone number. Latency (tested from Singapore) Model TTFT Tokens/sec Total (100 tokens) DeepSeek V3 380ms 85 t/s 1.5s DeepSeek V4-Flash 120ms 240 t/s 0.5s Qwen-Max 450ms 65 t/s 2.0s GLM-5 520ms 55 t/s 2.3s Which Model for What Use Case Model Agent chains (5-10 calls) DeepSeek V3 Bulk process

2026-06-07 原文 →
AI 资讯

I built an open-source vs-code extension to scan vulnerable dependencies and avoid getting compromised via another supply-chain.

Hi everyone, posting here after a really long time. Our industry is experiencing a major shift, we are getting closer to the reality of agentic programming every single day. Though I'm all in for agentic programming, I don't think it should come at the cost of our codebases getting compromised because an LLM decided to install a compromised dependency. With supply-chain attacks being on the verge of becoming part of our daily lingo as developers, especially in the js/ts ecosystem, I've built a vs-code extension which scans your lock files (npm/yarn/pnpm, all three supported) against the listings on Github Advisory Database and osv.dev. Based on the listing it determines the health status of your project. It also scans dependencies which were not installed by you but are required by other dependencies to function properly. Based on the scan, you get four status in the sidebar: SOS Alert - Your installed version is compromised. Act now. Don't Upgrade - You're safe, but a newer version is compromised. Don't Downgrade - You're safe, but an older version is compromised. Passed - Green check. All safe. This is how the extension reporting looks: https://preview.redd.it/c8df2fjegs5h1.png?width=2624&format=png&auto=webp&s=ce506f033beb83d97915281ebf2888c456428fd4 The scanning is done: - Polling based: every 30 minutes. - every time you open the window. - can be manually triggered by commands. Right now it only scans via osv and gha, I plan to integrate more reliable and faster sources like synk in future. Would love everyone's opinion on this since I did not do much research in this and just built it on saturday. The extension can be installed from: https://marketplace.visualstudio.com/items?itemName=uskhokhar.trust-me-bro-vsc The codebase is available at: https://github.com/USKhokhar/trust-me-bro Please give it a try. Rate it on marketplace if you like and star it on github if you like it a little extra. I'm also posting this here seeking open-source contributors who are mor

2026-06-07 原文 →
AI 资讯

Why a single AI confidently lies to you — and a council doesn't

By Vladislav Shter · The Sovereign Ecosystem Ask any major AI model a question and you'll notice something: it almost always agrees with you. You propose an idea, it tells you the idea is great. You make a claim, it validates the claim. You ask if your code is fine, it reassures you that it's fine. This is not an accident. It's a design choice. And once you see it, you can't unsee it. The agreeable machine Modern AI assistants are trained, in part, to keep you satisfied. A satisfied user comes back. A user who comes back keeps the subscription. So the models are nudged — through their training — toward being pleasant, encouraging, and agreeable. Researchers even have a name for this failure mode: sycophancy, the tendency of a model to tell you what you want to hear rather than what is true. It feels good. You get a small hit of validation every time the AI confirms you were right. But for anyone doing serious work — auditing code, checking facts, making decisions — that agreeableness is dangerous. A tool that mostly agrees with you is not a tool that catches your mistakes. And it gets worse when the model doesn't actually know the answer. When confidence and truth come apart Here's the real trap: a single model doesn't just agree too easily — it also fills gaps with invented detail, delivered in the same confident tone as its correct answers. There is no visible difference between "I know this" and "I'm guessing and dressing it up." The fluency is identical. Even the heavyweight, expensive models do this. A premium model like Gemini can produce beautifully written, authoritative text that contains fabricated facts, invented citations, or specifics that simply aren't real. For an inexperienced user this is invisible. For an experienced user it's worse — it's actively disorienting, because the wrong answer looks exactly as polished as the right one. So you're left with two problems stacked on top of each other: the model is biased toward agreeing with you, and when it

2026-06-07 原文 →
AI 资讯

Building Open Source Racing Analytics

Spent the last few months of my free time working on this, essentially a version of race studio that works on mobile/tablet/desktop Now supports AiM (xrk), iRacing (ibt), and RaceBox (vbo) files a webapp designed around an offline-first philosophy, works 100% offline. Supports video overlays (not chunked videos yet) Historical weather Saving chassis setups in a way that locks a version to a session so changing the setup won't mess with historical data overlay data from any session onto the current session And so much more And includes a FOSS datalogger as well Nothing gated behind a paywall except you dumping logs on my server, unlimited local storage Before I overhaul this horrible UI, I was probably going to add a "fastest lap" social section where people would upload their fastest laps, and users can reference that data. If anyone here races (shocking amount of devs at the track) just list whatever features you think the popular software is missing, and give me a couple days lol https://HackTheTrack.net submitted by /u/Willing_Comb_9542 [link] [留言]

2026-06-07 原文 →
AI 资讯

Run Coding Agents on Local AI — Zero Cloud, Full Control

Coding agents — Codex CLI, Claude Code, Cursor, and Pi — are productivity multipliers. But they all assume you are happy sending your code to someone else's servers. For many of us that is a deal-breaker: proprietary codebases, client NDAs, compliance requirements, or just the principle of owning your own compute. This guide shows how to swap out every cloud API with a local Ollama server running qwen3-coder:30b . Same tools, same workflows, no data leaving your network. Why Run AI Locally? The case is simple: Zero data exfiltration. Your code never leaves your machine or LAN. No per-token cost. Run 10,000 completions or 10 — the electricity bill does not care. Works offline. Airplane mode, restricted network, flaky VPN — irrelevant. No rate limits. No 429s at 2 am when you are in flow. The honest tradeoff: frontier models (Claude Opus 4, GPT-5) still outperform local models on complex multi-step reasoning and very large context tasks. For the 80% of day-to-day coding work — autocomplete, refactors, test generation, documentation — a well-chosen local model is more than good enough. Hardware Requirements I run this on an Apple M4 Pro with 48 GB unified memory . Apple Silicon's unified memory architecture is exceptionally well-suited to LLM inference: the GPU and CPU share the same memory pool, so a 22 GB model fits comfortably alongside a full development environment. Minimum viable setup: RAM What fits 16 GB 7–8B parameter models (qwen3:8b, llama3.2:8b) 32 GB 14–20B models (qwen3:14b, gpt-oss:20b) 48 GB 30–35B models (qwen3-coder:30b, qwen3.6:35b) 64 GB+ 70B models (deepseek-r1:70b, llama3.3:70b) On Intel/AMD systems with discrete GPUs the math is different: VRAM is the bottleneck, and models that don't fit entirely in VRAM fall back to slow CPU offloading. Choosing a Model For 48 GB unified memory, these are the models worth knowing about: Model Size on disk Active params Strengths qwen3-coder:30b ~22 GB 3.3B (MoE) Coding, 256K context, HumanEval SOTA qwen3.6:35b

2026-06-07 原文 →
AI 资讯

I got tired of manual job applications, so I engineered an automation workspace instead.

Hi everyone, As a Full-Stack and Cloud engineer, I’m used to automating everything I can. Whether I'm managing my 28+ container Kubernetes homelab on Proxmox or writing deployment scripts, I absolutely hate doing the same manual task twice. But a few months ago, when I was hunting for a new role, I found myself doing exactly that: manually tweaking my resume for every single job, copy-pasting into black-box ATS portals, and tracking it all in a chaotic spreadsheet. It was completely draining. So, I took a break from the applications and built a tool to solve my own problem. It’s called OneApply. It started as a small browser extension to check ATS keywords, but it quickly snowballed into a complete workspace. Here is what the stack handles now: Resume Tailoring: Automatically adjusts your resume to fit specific job descriptions. ATS Keyword Scoring: Checks your overlap with the job description so you know you'll actually pass the automated filters. Cover Letter Generation: Drafts contextual cover letters based on the role and your specific engineering experience. Pipeline Tracking: Manages all your applications natively so you can finally ditch the spreadsheets. Building this and using it to automate the worst parts of the daily grind actually helped me land my current SRE role. Since it worked for me, I decided to polish it up and release it for other devs who are currently stuck in the application trenches. We all know the tech market is tough right now, and any edge helps. I would love for this community to try it out and roast the UX, the workflow, or the core features. Check it out here: https://www.oneapply.app I am more than happy to hand out some premium access codes to anyone here who is actively applying and wants to test drive the full feature set. Just drop a comment below!

2026-06-07 原文 →
AI 资讯

async/await is a Generator in Disguise. Let's Build It From Scratch

You write await a dozen times before lunch. Fetch a row, await it. Call a service, await that. It works, you move on, and you never have to think about what the word is doing. Then one day someone asks you to explain it. Maybe it's an interviewer."But what does await actually do?" And you open your mouth and what comes out is "it, uh, waits for the promise." Which is true, and also explains nothing. We can build async/awit mechanism from scratch using generators as a learning exercise. It requires a pause button wired to a small loop that waits on a promise and then presses play again. You already know one half of that machinery if you read the last post in this series . The other half is a trick generators have that we glossed over. Put the two together and you can build a working version of async/await yourself, by hand, and watch it behave exactly like the real thing. Let's do that. The shape of the problem Strip await down to what it has to accomplish and you get two requirements: First, a function has to be able to stop in the middle. Right at the await, freeze everything, the local variables, the spot in the loop, all of it, and hand control back to whoever called it. Normal functions can't do this. They run start to finish and that's the deal. Second, something on the outside has to wait for the promise to settle and then nudge the frozen function back to life, handing it the resolved value as if the await expression had simply evaluated to it. That's the whole job. A function that pauses, and a driver that resumes it when a promise is ready. Hold that picture, because the rest of this is just filling in those two pieces with things JavaScript already gives you. The half you've seen: pausing A generator function, the function* kind, can pause itself with yield and resume later from the exact same spot. We leaned on that hard in the CSV piece to pull rows through a pipeline one at a time. A line came in, got yielded, and the generator sat frozen until someone

2026-06-07 原文 →
AI 资讯

Kubernetes Networking Explained: Pods, Services, Ingress, and Network Policies

Kubernetes networking is one of the most misunderstood parts of running containerized workloads. A pod can reach another pod by IP — but why does that stop working after a deployment? A service exists and resolves in DNS — but traffic isn't arriving at the application. An Ingress resource is configured — but requests return 502. These puzzles are common and they stem from the same root: Kubernetes networking has several distinct layers, each solving a different problem, and it's easy to conflate them. This article walks through how Kubernetes networking actually works at each layer — from pod networking to services to Ingress to network policy — so the next time something breaks, you have a mental model to reason from. The fundamental promise: flat pod networking Kubernetes makes one core promise about networking: every pod can communicate directly with every other pod in the cluster without NAT. Every pod gets a real IP address from the cluster's pod CIDR range, and those IPs are routable between pods regardless of which node they're running on. This is not something Kubernetes itself implements. It's a contract that every Kubernetes-conformant CNI (Container Network Interface) plugin must fulfill. When you install Calico, Cilium, Flannel, Weave, or any other CNI, you're installing the component that actually creates this flat network. The mechanism varies — Flannel uses VXLAN overlays, Calico can use BGP for direct routing, Cilium uses eBPF — but the result is the same: pod-to-pod communication without NAT. Here's what a pod's network namespace looks like: $ kubectl exec -it my-pod -- ip addr 1: lo: ... 3: eth0@if12: ... inet 10.244.1.15/24 brd 10.244.1.255 scope global eth0 $ kubectl exec -it my-pod -- ip route default via 10.244.1.1 dev eth0 10.244.0.0/16 via 10.244.1.1 dev eth0 The pod has an IP ( 10.244.1.15 ) on a /24 subnet. The node this pod runs on has an IP from the same range — or a different /24 within the same /16. Traffic from this pod to 10.244.2.8 (

2026-06-07 原文 →
AI 资讯

Terraform vs CDK vs Pulumi: Choosing Your Infrastructure-as-Code Tool

The IaC landscape split into two philosophies about a decade ago and hasn't fully resolved the argument since. On one side: declarative configuration languages designed specifically for infrastructure (Terraform HCL, CloudFormation YAML, Bicep). On the other: general-purpose programming languages brought to infrastructure (AWS CDK, Pulumi). Both approaches have won in production at major organizations. Neither is clearly superior. This comparison covers Terraform, AWS CDK, and Pulumi in depth — how they work, where they excel, where they struggle, and which makes sense for different team situations. It isn't a beginner introduction to any of these tools; if you're choosing between them for a real project, this assumes you've at least skimmed each one. The core philosophical difference Terraform's HCL is a purpose-built configuration language. It's not Turing-complete (no arbitrary loops, no recursion, limited conditionals). This is by design: HashiCorp's position is that infrastructure definitions should be readable, predictable, and safe to generate tooling around. When you read a .tf file, you can understand what it creates without executing anything. CDK and Pulumi take the opposite position: the limitations of configuration languages are a tax on productive engineers. Why invent a domain-specific language when TypeScript already exists? Real programming languages have proper abstractions, test frameworks, package managers, IDE support, and a billion engineers who already know them. Infrastructure should be no different from application code. Both positions have merit. The choice between them often comes down to who's writing the infrastructure more than which approach is technically superior. Terraform Terraform is the default choice for infrastructure-as-code in 2026. It works with every major cloud provider and hundreds of minor ones. The Terraform Registry has thousands of modules — reusable packages for common patterns like VPCs, EKS clusters, and RDS databa

2026-06-07 原文 →
AI 资讯

Visual Cue Tracker: Mapping My Values, One Week at a Time

This is a submission for the GitHub Finish-Up-A-Thon Challenge What I Built I built the Visual Cue Tracker, a tiny, personal sanctuary for reflection. It’s a tool designed to help us map our daily actions against our core values, specifically Empathy, Growth, and Balance. I started this project because I found myself moving so fast in my software engineering studies and internships that I often forgot why I was doing what I was doing. This tracker lets me see my week at a glance, reflect on my progress, and hold space for the things that truly matter to me. Demo Deployed site: hopebestworld.github.io github repo: https://github.com/HopeBestWorld/VisualCueTracker/tree/main demo: https://youtu.be/EqVfj289e-Q The Comeback Story When I first started this project, it was just a repo with no pushed code. In 2025, I simply set up the repo and put in a description, but never put the time or effort into bringing the idea to life. To finish it up for the challenge, I added a few things that made it feel truly alive. I built a custom, zero-key AI engine that runs entirely inside your browser. It scans your weekly reflections and gives you immediate, gentle feedback on how well your written thoughts match the values you logged. It suggests! If I’m missing the mark, it gives me specific prompts to help me get back to my goals. I added quick-export features so I can turn my weekly reflections into a clean text log, making it easy to keep a personal journal outside of the app. I set up a fully automated deployment pipeline using GitHub Actions, so my site updates instantly whenever I push my code. My Experience with GitHub Copilot GitHub Copilot felt like a supportive coding partner throughout this journey. When I was stuck on complex pathing issues for my GitHub Pages deployment, it helped me iterate through solutions quickly. It was especially great at explaining why certain parts of my code (like my custom Regex AI engine) were behaving the way they were, allowing me to stay in

2026-06-07 原文 →
AI 资讯

LLM Wire Format Benchmark: Which Format Can AI Actually Read and Write?

Every LLM wire format claims token savings. Nobody proves whether AI models can actually comprehend the format at scale, or produce valid output in it. We ran 23 comprehension evals across 10 models and 3 providers. We ran generation evals across 11 models. Deterministic ground truth. No LLM judge. Reproducible from one command. JSON breaks at 500 records. GPT-5.5 returns empty strings. It can't even attempt an answer. Opus miscounts 500 as 356 and then spends 143 lines manually enumerating symbols to verify its own wrong answer. The format designed for "human readability" is incomprehensible to the systems actually reading it. TOON can't produce valid output. Claude Opus, the most capable model on the planet, scores 0/5 on TOON generation. GPT-5.4: 0/5. GPT-5.4-mini: 0/5. Gemini 3.1 Flash Lite: 0/5. The error is always the same: toon: cannot assign string to int . The model writes "target" in the distance column. TOON expects 0 . Every model fails the same way because the format's design forces an unnatural encoding step that models cannot perform unprompted. GCF wins both dimensions on every model tested. 100% comprehension on Claude Sonnet, Gemini 2.5 Pro, Gemini 3.1 Pro, and Gemini 3.5 Flash. 5/5 valid generation on every frontier model. Zero prior training. The format didn't exist until we built it and every model speaks it natively. Comprehension: 500 Symbols, 13 Questions, Zero Instructions A 500-symbol, 200-edge code graph. Encoded in GCF, TOON, and JSON. 13 structured extraction questions. The model gets the payload and a question. No format instructions. No system prompt. No hints. 23 runs. 22 wins. 0 losses. Model Runs GCF avg TOON avg JSON avg GCF margin Claude Opus 4.6 2 96.2% 84.6% 73.1% +11.6 vs TOON Claude Sonnet 4.6 2 100% 73.1% 53.8% +26.9 vs TOON Claude Haiku 4.5 2 96.2% 69.2% 57.7% +27.0 vs TOON GPT-5.5 5 84.1% 67.7% 45.8% +16.4 vs TOON GPT-5.4 4 76.4% 56.0% 44.1% +20.4 vs TOON GPT-5.4-mini 2 71.8% 64.1% 54.2% +7.7 vs TOON Gemini 2.5 Flash 3 80.6

2026-06-07 原文 →
AI 资讯

Petition To Rename Saturdays

Show off ClauderDay has a more fitting title. I'm open to other ideas but clicking through AI slop projects all day feels like we aren't really showing off projects any more. submitted by /u/fauxtoe [link] [留言]

2026-06-07 原文 →
AI 资讯

Scarab Diagnostic Suite Field Test #013: Kubernetes Watch Cache Critical-Section Boundary

This field test was against Kubernetes. The issue was Kubernetes #138728: https://github.com/kubernetes/kubernetes/pull/139545 The issue involved the watch cache path around initial events. The useful diagnostic boundary was: watch cache consistency work → read lock hold time → initial event delivery That matters because cache paths in Kubernetes are not just storage details. They sit between stored state and the clients watching that state. If too much work happens while a cache lock is held, the system may still be logically correct, but the operational path can become more expensive, more blocking, or harder to scale than it needs to be. The local repair candidate is intentionally narrow. It does not redesign the watch cache. It does not change the broader storage model. It does not rewrite WatchList behavior. The patch focuses on reducing how much work happens while the watch-cache read lock is held. For ordered stores, the repair keeps the cheap snapshot boundary during interval construction, but defers full ordered list materialization until the interval is consumed by the watcher path. In plain terms: Take the necessary cache boundary under lock. Do not do heavier list materialization there if it can be safely deferred. The local patch touched only the watch-cache interval implementation and its focused tests. Local validation passed for the relevant cacher tests, store tests, full cacher package tests, and diff hygiene. Status: draft PR opened for maintainer review Field Test #013 Project: Kubernetes Issue type: watch-cache / initial-events behavior Boundary: cache consistency work under lock vs bounded watcher consumption Result: narrow local repair candidate and focused test coverage Status: local proof prepared; no public PR or comment opened yet This field test matters because it shows Scarab operating inside a major distributed systems platform. The bug shape was not a simple crash. It was not a UI issue. It was not a configuration mismatch. It was a me

2026-06-07 原文 →
产品设计

I built a website with mock interview questions for the interviews I'm attending

I started to look for a job after a long and cozy period and I noticed the skills you have to use at the job are not the ones required to pass technical tests and theoretical interviews. I went to a few of them with the arrogant impression that my experience will compensate, and it did not. So, I started to build a database of questions and tests, then put them in a mock interview questions , a site that anyone can use. As of now I'm focusing on database and system design questions, but many more sections to be added soon. Please let me know what do you think it's important for you and the interviews you are attending. An also please note, the site is still WIP and some of the features are only partially working, but be as harsh as you want. Any feedback is more than welcomed. submitted by /u/websilvercraft [link] [留言]

2026-06-07 原文 →
AI 资讯

From Native WordPress to Headless: The Real Engineering Decisions Behind a Production Migration

Every headless WordPress conversation starts the same way — someone draws an architecture diagram with arrows pointing from a REST API to a shiny Next.js frontend, and it looks clean. Too clean. This is a post about what happens when you close the whiteboard and open the actual codebase. The Stack Decision: GraphQL vs. REST vs. Direct MySQL This is usually the first fork in the road. For this build, the client already had a well-indexed WooCommerce site. The product catalog, slugs, and taxonomy structure were already doing heavy SEO work. So the constraint was simple: nothing about the data layer changes, only how we consume it. WPGraphQL was a real option — but it meant adding a plugin dependency to a WordPress install we were actively trying to slim down. The WP REST API was already there, no installation required, and exposed exactly what we needed: products, categories, pages, and media — all queryable by slug. The decision: WP REST API, consumed server-side via Next.js fetch in Server Components. // Fetching a product by slug — preserving the existing URL structure const res = await fetch ( ` ${ process . env . WP_API_BASE } /wp/v2/product?slug= ${ params . slug } &_embed` , { next : { revalidate : 3600 } } ); const [ product ] = await res . json (); No new dependencies on the WordPress side. The legacy install runs as a lean shell — no active theme, minimal plugins, just the REST API and the data. The Site Kit Problem: Bridging Familiar Workflows This is where most migrations quietly fail the client. The previous team lived inside WordPress admin. Google Site Kit gave them traffic stats, Search Console data, and Analytics — all surfaced in a UI they knew. Ripping that away and telling them "just use Google Analytics directly" is a workflow regression, not an upgrade. The pivot here was building a lightweight admin dashboard as part of the Next.js project — not a full replacement for Site Kit, but a mirror of the metrics they actually checked daily: Page views

2026-06-07 原文 →
产品设计

The complete IPv4 address space, mapped

Since my other site I posted today did so well I figured I'd share this one too. This site actually gave me the idea for Overwatch.earth. Yes, this one will likely become a SaaS in time due to the operating costs but as it stands now it's completely free. WorldIP.io - The complete IPv4 address space, mapped submitted by /u/tuxxin [link] [留言]

2026-06-07 原文 →
AI 资讯

Your GitHub contribution grid, but 3D

Runs on a daily GitHub Action so it stays current, thought it was neat and wanted to share in case anyone else wanted to fork it or use it https://github.com/colincode0/github-readme submitted by /u/anotherinternetlad [link] [留言]

2026-06-07 原文 →
AI 资讯

A Better Way to Plan National Park Trips

I’ve been working on TrailVerse for a while now, and it’s slowly becoming the kind of national parks planning tool I always wished existed. The idea is simple: find parks, compare options, check useful details, and turn a trip idea into a day-by-day plan with Trailie. Still improving things, still adding more, but I’m happy with where it’s heading. If you like national parks, road trips, or just exploring new places, check it out: https://www.nationalparksexplorerusa.com/explore submitted by /u/peakpirate007 [link] [留言]

2026-06-07 原文 →