看得透又看得远者prevail. ppt.cc/flUmLx ppt.cc/fqtgqx ppt.cc/fZsXUx ppt.cc/fhWnZx ppt.cc/fnrkVx ppt.cc/f2CBVx

ppt.cc/fKlBax ppt.cc/fwlgFx ppt.cc/fVjECx ppt.cc/fEnHsx ppt.cc/fRZTnx ppt.cc/fSZ3cx ppt.cc/fLOuCx ppt.cc/fE9Nux ppt.cc/fL5Kyx ppt.cc/f71Yqx tecmint.com linuxcool.com linux.die.net linux.it.net.cn ostechnix.com unix.com ubuntugeek.com runoob.com man.linuxde.net ppt.cc/fwpCex ppt.cc/fxcLIx ppt.cc/foX6Ux linuxprobe.com linuxtechi.com howtoforge.com linuxstory.org systutorials.com ghacks.net linuxopsys.com ppt.cc/ffAGfx ppt.cc/fJbezx ppt.cc/fNIQDx ppt.cc/fCSllx ppt.cc/fybDVx ppt.cc/fIMQxx

Pages

▼

Monday, 25 May 2026

杂感 作者:陆游

 陆游最治愈的一首小诗:短短4句,写尽人间通透,抚平万千凡人心。

毕淑敏曾在一篇散文中写道:"凡是自然的东西都是缓慢的。太阳一点点升起,花一朵朵开,粮食成熟,都慢得很。”

这世间,所有的美好都急不得。生活的主旋律,从来不是一帆风顺的惊喜,而是起起落落、有得有失的真实。

今天是五月二十五日,农历四月初九,恰逢周一。新一周的扉页,正缓缓翻开。

奔波的日子里,脚步总是匆匆。不妨偷闲煮一盏清茶,翻几卷诗书,让紧绷的心弦稍稍松弛。

今日,且赏读陆游晚年的一首小诗:

《杂感》

天际晴云舒复卷,庭中风絮去还来。

人生自在常如此,何事能妨笑口开?

全诗仅二十八字,却写得豁达通透,字字温润,句句抚慰人心。

陆游的诗,既有李白的雄奇奔放放,又有杜甫的沉郁顿挫,却也不乏这样清新隽永的小调。

此诗作于南宋嘉定二年(1209年)三月。彼时的陆游已八十五岁高龄,体弱多病,距他辞世不足半年。

宦海沉浮五十余载,壮志未酬、故土未复,本该满心苍凉;可这位老诗人却在生命暮年,以近乎喃喃自语的朴素笔触,写下这首轻盈洒脱的七绝。

诗中没有引经据典,不见雕琢之痕,只有一位阅尽千帆的智者,留给世间最后的凝思。

天际晴云舒复卷

抬眼望向天空,只见晴空万里,白云悠悠,时而舒展如轻纱漫卷,时而聚合似峰峦叠嶂。

一个"舒"字见出舒展之态,一个"卷"字写出聚合之姿,"复"字则点明循环往复、生生不息之理。

诗人观云,实则观心:云无心以出岫,人若能效此无心,便少了许多执念。

庭中风絮去还来。

诗人的视线收回庭院。

春风过处,柳絮杨花随风轻飏,看似飘泊无定,实则循环往复,去而复返。

"去"是飘散的潇洒,"还"是归来的温柔,一去一来之间,藏着宇宙间最朴素的辩证法。

人生自在常如此

笔锋一转,由景入情。

诗人将云之舒卷、絮之往来,与人生况味悄然勾连——若能如晴云般不计聚散,似风絮般不执去留,人生便可得大自在。

这份"自在",不是消极的随波逐流,而是历经沧桑后的通透与释然。

何事能妨笑口开。

这最后一问,掷地有声。

既然已明了万物皆有其时、万事皆有其理,那么还有什么能阻挡我们开怀一笑呢?

这"笑",是勘破世情后的豁达,是接纳无常后的从容,更是对生活本身最温柔的致敬。

一个"妨"字,将尘世烦扰轻轻推开;一个“开”字,让心头郁结豁然释放。

正如《小窗幽记》中所言:

"宠辱不惊,看庭前花开花落;去留无意,望天上云卷云舒。"

真正的自在,从来不是避世逃离,而是阅尽千帆后,依然能以一颗温润豁达之心,接纳生活所有的荒芜与馈赠。

愿你我都能在庸常的忙碌里,偶尔驻足。抬眼,看天际晴云舒卷;俯身,赏庭前风絮去来。

在这一呼一吸之间,守一份从容,笑口常开。

FISHERMAN at 00:04 No comments:
Share

Sunday, 24 May 2026

MoeMail

 A cute temporary email service built with NextJS + Cloudflare technology stack 🎉 | 一个基于 NextJS + Cloudflare 技术栈构建的可爱临时邮箱服务

moemail.app

A cute temporary email service built with NextJS + Cloudflare technology stack 🎉

English | 简体中文

MoeMail - OpenAPI‑first temp email, hosted & ready | Product Hunt

Live Demo • Documentation • Features • Tech Stack • Local Run • Deployment • Email Domain Config • Permission System • System Settings • Sending Emails • Webhook Integration • OpenAPI • CLI Tool • Environment Variables • Github OAuth Config • Google OAuth Config • Contribution • License • Community • Support

Live Demo

https://moemail.app

Home

Mailbox

Profile

Documentation

Full Documentation: https://docs.moemail.app

The documentation site contains detailed usage guides, API documentation, deployment tutorials, and other complete information.

Features

  • 🔒 Privacy Protection: Protect your real email address from spam and unnecessary subscriptions
  • ⚡ Real-time Receipt: Automatic polling, receive email notifications instantly
  • ⏱️ Flexible Validity: Supports 1 hour, 24 hours, 3 days, or permanent validity
  • 🎨 Theme Switching: Supports light and dark modes
  • 📱 Responsive Design: Perfectly adapted for desktop and mobile devices
  • 🔄 Auto Cleanup: Automatically cleans up expired mailboxes and emails
  • 📱 PWA Support: Support PWA installation
  • 💸 Free Self-hosting: Built on Cloudflare, capable of free self-hosting without any cost
  • 🎉 Cute UI: Simple and cute UI interface
  • 📤 Sending Function: Support sending emails using temporary addresses, based on Resend service
  • 🔔 Webhook Notification: Support receiving new email notifications via webhook
  • 🛡️ Permission System: Role-based access control system
  • 🔑 OpenAPI: Support accessing OpenAPI via API Key
  • 🤖 Agent-first CLI: CLI tool designed for AI agents to automate email workflows
  • 🌍 Multi-language Support: Supports Chinese and English interfaces, freely switchable

Tech Stack

  • Framework: Next.js (App Router)
  • Platform: Cloudflare Pages
  • Database: Cloudflare D1 (SQLite)
  • Authentication: NextAuth with GitHub/Google Login
  • Styling: Tailwind CSS
  • UI Components: Custom components based on Radix UI
  • Email Handling: Cloudflare Email Workers
  • Type Safety: TypeScript
  • ORM: Drizzle ORM
  • Internationalization: next-intl

Local Run

Prerequisites

  • Node.js 18+
  • Pnpm
  • Wrangler CLI
  • Cloudflare Account

Installation

  1. Clone the repository:
git clone https://github.com/beilunyang/moemail.git
cd moemail
  1. Install dependencies:
pnpm install
  1. Setup Wrangler:
cp wrangler.example.json wrangler.json
cp wrangler.email.example.json wrangler.email.json
cp wrangler.cleanup.example.json wrangler.cleanup.json

Set Cloudflare D1 database name and database ID.

  1. Setup Environment Variables:
cp .env.example .env.local

Set AUTH_GITHUB_ID, AUTH_GITHUB_SECRET, AUTH_SECRET.

  1. Create local database schema:
pnpm db:migrate-local

Development

  1. Start development server:
pnpm dev
  1. Test Email Worker: Currently cannot run and test locally, please use Wrangler to deploy the email worker and test.
pnpm deploy:email
  1. Test Cleanup Worker:
pnpm dev:cleanup
pnpm test:cleanup
  1. Generate Mock Data (Mailboxes and Messages):
pnpm generate-test-data

Deployment

Video Tutorial

https://www.youtube.com/watch?v=Vcw3nqsq2-E

Local Wrangler Deployment

  1. Create .env file
cp .env.example .env
  1. Set Environment Variables in the .env file.

  2. Run deployment script

pnpm dlx tsx ./scripts/deploy/index.ts

Github Actions Deployment

This project supports automated deployment using GitHub Actions. It supports the following triggers:

  1. Auto Trigger: Automatically triggers deployment flow when a new tag is pushed.
  2. Manual Trigger: Manually trigger in the GitHub Actions page.

Deployment Steps

  1. Add the following Secrets in GitHub repository settings:

    • CLOUDFLARE_API_TOKEN: Cloudflare API Token
    • CLOUDFLARE_ACCOUNT_ID: Cloudflare Account ID
    • AUTH_GITHUB_ID: GitHub OAuth App ID
    • AUTH_GITHUB_SECRET: GitHub OAuth App Secret
    • AUTH_SECRET: NextAuth Secret, used to encrypt session, please set a random string
    • CUSTOM_DOMAIN: Custom domain for the website (Optional, if empty, uses Cloudflare Pages default domain)
    • PROJECT_NAME: Pages project name (Optional, if empty, defaults to moemail)
    • DATABASE_NAME: D1 database name (Optional, if empty, defaults to moemail-db)
    • KV_NAMESPACE_NAME: Cloudflare KV namespace name, used for site settings (Optional, if empty, defaults to moemail-kv)
  2. Choose trigger method:

    Method 1: Push Tag Trigger

    # Create a new tag
    git tag v1.0.0
    
    # Push tag to remote repository
    git push origin v1.0.0

    Method 2: Manual Trigger

    • Go to the Actions page of the repository
    • Select "Deploy" workflow
    • Click "Run workflow"
  3. Deployment progress can be viewed in the Actions tab of the repository.

Notes

  • Ensure all Secrets are set correctly.
  • When using tag trigger, the tag must start with v (e.g., v1.0.0).

Deploy to Cloudflare Workers

Email Domain Configuration

In the MoeMail User Profile page, you can configure the site's email domains. Supports multiple domain configurations, separated by commas. Email Domain Configuration

Cloudflare Email Routing Configuration

To make email domains effective, you also need to configure email routing in the Cloudflare console to forward received emails to the Email Worker.

  1. Login to Cloudflare Console
  2. Select your domain
  3. Click "Email" -> "Email Routing" in the left menu
  4. If it shows "Email Routing is currently disabled", please click "Enable Email Routing" Enable Email Routing
  5. After clicking, it will prompt you to add Email Routing DNS records, click "Add records and enable" Add DNS Records
  6. Configure Routing Rules:
    • Catch-all address: Enable "Catch-all"
    • Edit Catch-all address
    • Action: Select "Send to Worker"
    • Destination: Select the "email-receiver-worker" you just deployed
    • Save Configure Routing Rules

Notes

  • Ensure domain DNS is hosted on Cloudflare.
  • Email Worker must be successfully deployed.
  • If Catch-All status is unavailable (stuck loading), please click Destination addresses next to Routing rules, and bind an email address there.

Permission System

The project uses a Role-Based Access Control (RBAC) system.

Role Configuration

New user default roles are configured by the Emperor in the site settings in the User Profile:

  • Duke: New users get temporary email, Webhook config permissions, and API Key management permissions.
  • Knight: New users get temporary email and Webhook config permissions.
  • Civilian: New users have no permissions, need to wait for Emperor to promote to Knight or Duke.

Role Levels

The system includes four role levels:

  1. Emperor

    • Website Owner
    • Has all permissions
    • Only one Emperor per site
  2. Duke

    • Super User
    • Can use temporary email features
    • Can configure Webhook
    • Can create API Key to call OpenAPI
    • Can be demoted to Knight or Civilian by Emperor
  3. Knight

    • Advanced User
    • Can use temporary email features
    • Can configure Webhook
    • Can be demoted to Civilian or promoted to Duke by Emperor
  4. Civilian

    • Regular User
    • No permissions
    • Can be promoted to Knight or Duke by Emperor

Role Upgrade

  1. Become Emperor

    • The first user to visit /api/roles/init-emperor interface will become the Emperor (Website Owner).
    • Once an Emperor exists, no other user can be promoted to Emperor.
  2. Role Changes

    • The Emperor can set other users as Duke, Knight, or Civilian in the User Profile page.

Permission Details

  • Email Management: Create and manage temporary emails
  • Webhook Management: Configure Webhooks for email notifications
  • API Key Management: Create and manage API access keys
  • User Management: Promote/Demote user roles
  • System Settings: Manage global system settings

System Settings

System settings are stored in Cloudflare KV, including:

  • DEFAULT_ROLE: Default role for new users, values: CIVILIAN, KNIGHT, DUKE
  • EMAIL_DOMAINS: Supported email domains, comma-separated
  • ADMIN_CONTACT: Administrator contact info
  • MAX_EMAILS: Maximum number of emails per user

Emperor role can configure these in the User Profile page.

Sending Emails

MoeMail supports sending emails using temporary addresses, based on Resend service.

Features

  • 📨 Send from Temp Email: Use created temporary emails as sender
  • 🎯 Role Limits: Different roles have different daily sending limits
  • 💌 HTML Support: Supports rich text email format

Role Sending Limits

Role Daily Limit Description
Emperor Unlimited Admin has no limits
Duke 5/day Default 5 emails per day
Knight 2/day Default 2 emails per day
Civilian Forbidden No sending permission

💡 Tip: The Emperor can customize the daily limits for Dukes and Knights in the Mail Service Configuration.

Configure Sending Service

  1. Get Resend API Key

    • Register at Resend
    • Create API Key in console
    • Copy API Key for later use
  2. Configure Service

    • Login as Emperor
    • Go to User Profile
    • In "Resend Service Configuration":
      • Enable Sending Service switch
      • Enter Resend API Key
      • Set daily limits for Duke and Knight (Optional)
    • Save configuration
  3. Verify Configuration

    • After saving, authorized users will see a "Send Email" button in the email list
    • Click to open dialog and test

How to Send

  1. Create Temp Email

    • Create a new temporary email in Mailbox page
  2. Send Email

    • Find the email in the list
    • Click "Send Email" button next to it
    • Fill in:
      • Recipient address
      • Subject
      • Content (supports HTML)
    • Click "Send"
  3. View History

    • Sent emails are saved in the message list of the corresponding mailbox
    • View all sent/received emails in mailbox detail page

Notes

  • 📋 Resend Limits: Please note Resend's sending limits and pricing
  • 🔐 Domain Verification: Using custom domains requires verification in Resend
  • 🚫 Anti-Spam: Please follow email sending standards, avoid spamming
  • 📊 Quota Monitoring: System counts daily usage, stops sending when limit reached
  • 🔄 Quota Reset: Daily quota resets at 00:00

Webhook Integration

When a new email is received, the system sends a POST request to the configured and enabled Webhook URL.

Request Header

Content-Type: application/json
X-Webhook-Event: new_message

Request Body

{
  "emailId": "email-uuid",
  "messageId": "message-uuid",
  "fromAddress": "sender@example.com",
  "subject": "Email Subject",
  "content": "Email Text Content",
  "html": "Email HTML Content",
  "receivedAt": "2024-01-01T12:00:00.000Z",
  "toAddress": "your-email@moemail.app"
}

Configuration

  1. Click avatar to enter User Profile
  2. Enable Webhook
  3. Set notification URL
  4. Click Test button
  5. Save to receive notifications

Testing

The project provides a simple test server:

pnpm webhook-test-server

The test server listens on port 3001 (http://localhost:3001) and prints received Webhook details.

For external testing, use Cloudflare Tunnel:

pnpx cloudflared tunnel --url http://localhost:3001

Notes

  • Webhook must respond within 10 seconds
  • Non-2xx response triggers retry

OpenAPI

The project provides OpenAPI interfaces, accessible via API Key. API Keys can be created in User Profile (Requires Duke or Emperor role).

Using API Key

Add API Key to request header:

X-API-Key: YOUR_API_KEY

API Endpoints

Get System Config

GET /api/config

Response:

{
  "defaultRole": "CIVILIAN",
  "emailDomains": "moemail.app,example.com",
  "adminContact": "admin@example.com",
  "maxEmails": "10"
}

Generate Temp Email

POST /api/emails/generate
Content-Type: application/json

{
  "name": "test",
  "expiryTime": 3600000,
  "domain": "moemail.app"
}

Params:

  • name: Prefix (optional)
  • expiryTime: Validity in ms. 3600000(1h), 86400000(24h), 604800000(7d), 0(Permanent)
  • domain: From config

Response:

{
  "id": "email-uuid-123",
  "email": "test@moemail.app"
}

Get Email List

GET /api/emails?cursor=xxx

Get Messages for Email

GET /api/emails/{emailId}?cursor=xxx

Delete Email

DELETE /api/emails/{emailId}

Get Single Message

GET /api/emails/{emailId}/{messageId}

Create Email Share Link

POST /api/emails/{emailId}/share
Content-Type: application/json

{
  "expiresIn": 86400000
}

Get Email Share Links

GET /api/emails/{emailId}/share

Delete Email Share Link

DELETE /api/emails/{emailId}/share/{shareId}

Create Message Share Link

POST /api/emails/{emailId}/messages/{messageId}/share
Content-Type: application/json

{
  "expiresIn": 86400000
}

Get Message Share Links

GET /api/emails/{emailId}/messages/{messageId}/share

Delete Message Share Link

DELETE /api/emails/{emailId}/messages/{messageId}/share/{shareId}

CLI Tool

MoeMail provides an agent-first CLI tool for AI agents and automation workflows.

Install

npm i -g @moemail/cli

Quick Start

# Configure API endpoint and key
moemail config set api-url https://moemail.app
moemail config set api-key YOUR_API_KEY

# Create temporary email
moemail create --domain moemail.app --expiry 1h --json

# Wait for new messages (polling)
moemail wait --email-id <id> --timeout 120 --json

# Read message content
moemail read --email-id <id> --message-id <id> --json

# Delete email
moemail delete --email-id <id>

Agent Workflow

A typical AI agent verification flow in 3 tool calls:

# 1. Create mailbox
EMAIL=$(moemail create --domain moemail.app --expiry 1h --json)
EMAIL_ID=$(echo $EMAIL | jq -r '.id')
ADDRESS=$(echo $EMAIL | jq -r '.address')

# 2. Wait for verification email
MSG=$(moemail wait --email-id $EMAIL_ID --timeout 120 --json)
MSG_ID=$(echo $MSG | jq -r '.messageId')

# 3. Read content, extract verification code
CONTENT=$(moemail read --email-id $EMAIL_ID --message-id $MSG_ID --json)

AI Agent Skill

Install the built-in skill so AI agents (Claude Code, Codex, etc.) automatically know how to use MoeMail:

# Auto-detect installed agent platforms and install
moemail skill install

# Or specify a platform
moemail skill install --platform claude
moemail skill install --platform codex

For full documentation, see packages/cli/README.md.

Environment Variables

Authentication

  • AUTH_GITHUB_ID: GitHub OAuth App ID
  • AUTH_GITHUB_SECRET: GitHub OAuth App Secret
  • AUTH_GOOGLE_ID: Google OAuth App ID
  • AUTH_GOOGLE_SECRET: Google OAuth App Secret
  • AUTH_SECRET: NextAuth Secret

Cloudflare

  • CLOUDFLARE_API_TOKEN: Cloudflare API Token
  • CLOUDFLARE_ACCOUNT_ID: Cloudflare Account ID
  • DATABASE_NAME: D1 Database Name
  • DATABASE_ID: D1 Database ID (Optional, auto-fetched if empty)
  • KV_NAMESPACE_NAME: KV Name
  • KV_NAMESPACE_ID: KV ID (Optional, auto-fetched if empty)
  • CUSTOM_DOMAIN: Custom domain
  • PROJECT_NAME: Pages Project Name

Github OAuth App Configuration

  1. Login Github Developer create new OAuth App
  2. Generate Client ID and Client Secret
  3. Configure:
    • Application name: <your-app-name>
    • Homepage URL: https://<your-domain>
    • Authorization callback URL: https://<your-domain>/api/auth/callback/github

Google OAuth App Configuration

  1. Visit Google Cloud Console create project
  2. Configure OAuth consent screen
  3. Create OAuth Client ID
    • Type: Web application
    • Authorized Javascript origins: https://<your-domain>
    • Authorized redirect URIs: https://<your-domain>/api/auth/callback/google
  4. Get Client ID and Client Secret
  5. Configure env vars AUTH_GOOGLE_ID and AUTH_GOOGLE_SECRET 

from https://github.com/beilunyang/moemail

FISHERMAN at 17:02 No comments:
Share

personalsit.es

 https://personalsit.es/

FISHERMAN at 15:40 No comments:
Share

1944年 美国宣传纪录片 中国之战

FISHERMAN at 12:16 No comments:
Share

www.Poe.com 是一个可供人们提出问题、获得即时答复并与各种人工智能机器人进行对话的大型平台


适用于 iOS、Android、 MacOS、Windows、 和 Web 等系统。该网站旨在为用户提供一个由人工智能驱动的用于各种目的的交互式聊天机器人。该网站的主要功能和选项描述如下:

  1. 快速、有用的人工智能聊天:Poe 提供了一个人工智能聊天机器人,旨在对用户的查询和请求提供快速且有用的响应。聊天机器人利用人工智能算法以对话方式理解和响应用户输入。

  2. 登录选项:访问网站后,用户会看到继续使用 Google 或 Apple 帐户的选项。这样可以实现无缝的身份验证和登录过程,方便用户访问人工智能聊天服务。

Poe 上的人工智能由多个不同公司训练的模型提供支持,并针对不同的任务进行了优化、代表不同的观点或可访问不同的知识。其中部分模型是其他公司所创建模型的微调版。

Poe 目前支持 OpenAI 的 ChatGPT 和 GPT-4 、Anthropic 的 Claude Instant 和 Claude 、Stable Diffusion 的 StableDiffusionXL 、Google 的 PaLM 、Meta 的 Llama ,以及许多其他由社区创建的机器人。Poe 希望为人们提供一种可以共同探索新人工智能模型所带来的众多可能性的途径。

总而言之,Poe 是一个提供快速且有用的人工智能聊天服务的网站,ChatGPT 3.5 Turbo、Claude 等模型免费可用(虽有限制,足够个人每天使用)。用户可以通过使用 Google 或 Apple 帐户登录或提供电话号码来访问聊天机器人。人工智能聊天机器人旨在对用户询问提供快速有效的响应,从而增强整体用户体验。对于 Poe 近期使用较多,整体体验很好;需要说明的是,该网站需要科|学网络,方能正常访问。

FISHERMAN at 11:55 No comments:
Share

www.kimi.com, Kimi Chat

 Kimi Chat-  www.kimi.com,是北京月之暗面科技有限公司推出的支持输入 20 万汉字的智能助手产品。成立仅半年的大模型初创公司──Moonshot AI 宣布在“长文本”领域实现了突破,推出了首个支持输入 20 万汉字的智能助手产品──Kimi Chat(有着超大“内存”的智能助手)。

据悉,Kimi Chat 是目前全球市场上能够产品化使用的大模型服务中所能支持的最长上下文输入长度,标志着 Moonshot AI 在这一重要技术上具有世界领先水平。相比当前市面上以英文为基础训练的大模型服务,Kimi Chat 具备较强的多语言能力。例如,Kimi Chat 在中文上具备显著优势,实际使用效果能够支持约 20 万汉字的上下文,比 Anthropic 公司的 Claude-100k 和 OpenAI 公司的 GPT-4-32k 的中文处理能力更强(2024 年 01 月 30 日)。

于此同时,Kimi Chat 通过创新的网络结构和工程优化,在千亿参数下实现了无损的长程注意力机制,不依赖于滑动窗口、降采样、小模型等对性能损害较大的“捷径”方案。在 Kimi Chat 测试:”请介绍下 Kimi Chat,也就是你自己。“,它给出如下回复:

    Kimi Chat 是由月之暗面科技有限公司(Moonshot AI)开发的人工智能助手。我的设计旨在通过自然语言处理和机器学习技术,为用户提供高效、友好的对话体验。无论是日常闲聊、获取信息还是解决问题,Kimi Chat 都能够提供帮助。

    我具备以下特点:

        多语言对话:我擅长中文和英文对话,能够理解和回应多种语言的输入。
        文件阅读:用户可以上传文本文件(如 TXT、PDF、Word 文档、 PPT 幻灯片、Excel 电子表格等),我可以阅读文件内容并根据内容回答问题。
        网页解析:当用户提供网页链接时,我可以解析网页内容,然后结合解析的信息来回答用户的问题。
        搜索能力:在回答问题时,我可以结合互联网搜索结果,为用户提供最新的信息。
        安全与隐私:我遵循严格的安全和隐私政策,确保用户数据的安全。
        持续学习:我不断学习和更新知识库,以提供最准确和最有帮助的回答。

    Kimi Chat 的目标是成为用户在信息获取、学习和娱乐等方面的智能伙伴。无论是工作、学习还是日常生活中的疑问,我都在这里为你提供支持。

Kimi Chat 拥有大容量知识,可以进行智能闲聊、解答问题、提供生活助手服务等,具有极高的智能交互能力。用户可以随时随地与 Kimi 聊天寻找乐趣,它的回复丰富多样,使聊天更加有趣。Kimi Chat 自推出至今一直保持着免费完全免费,可以通过扫码或在手机上搜索直接使用(或在微信小程序上使用)。

总之,Kimi Chat 是国内 Moonshot AI 团队出品的类 Perplexity 产品,支持在回答问题之前,先从搜索引擎爬取最新资讯,整合后再给出更精准有效的回答,很大程度解决了大模型推理的幻觉问题,实用性很强;在日常工作中常用它(其他几款是 ChatGPT、 Poe )。值得一提的是,它还支持将聊天文件导入到 Chat 中进行归纳总结,可谓非常方便.
官网:https://www.moonshot.cn/

FISHERMAN at 11:47 No comments:
Share

Wave Terminal 是一个 开源 的、 跨平台 的终端模拟器

它旨在为用户提供无缝的工作流程体验。它基于现代的 Web 技术构建,提供了一些创新的功能,以提高开发者的生产力。以下是 Wave Terminal 的一些主要特点和优势:

    AI 集成:Wave Terminal 支持 AI 集成,这意味着它可以与各种 AI 工具和应用程序配合使用,以增强终端的功能。

    内联渲染:它允许用户在终端内直接渲染多种文件类型,如 Markdown 、CSV 和 JSON,而无需打开外部浏览器或编辑器。

    图像预览:Wave Terminal 支持在终端内预览图片,如 .jpeg、.png、.gif 等,提供了更加丰富的视觉体验。

    现代 UI:它提供了一个现代化的用户界面,包括工作区、持久会话和通用历史记录,帮助用户保持组织和效率。

    代码编辑:Wave Terminal 提供了内联代码编辑功能,使用与 Visual Studio Code 相同的编辑器,这对于远程服务器上的代码编辑尤其有用。

    开源和可扩展:Wave Terminal 是基于 Apache 2.0 许可证的开源项目,这意味着它允许社区贡献和扩展,用户可以建议或贡献新的扩展。

优点

    提供了一种新颖的终端使用方式,特别是对于习惯于使用 Web 应用的开发者。
    内联渲染和图像预览功能可以节省时间,提高工作效率。
    现代化的 UI 设计和功能,如工作区和持久会话,有助于保持工作流程的连续性。
    开源性质鼓励社区参与,不断增加新功能和改进。

潜在缺点

    对于习惯于传统终端界面的用户,Wave Terminal 的现代化设计可能需要一定的适应期。
    作为一个相对较新的项目,可能在稳定性和成熟度方面还有待验证。
    对于某些特定的开发环境或工作流程,Wave Terminal 可能需要额外的配置或定制。

在官方网站上,你可以找到更多关于 Wave Terminal 的信息,包括如何下载和安装、详细的文档、社区支持以及如何为项目做出贡献。如果你对尝试新的终端工具感兴趣,Wave Terminal 可能是一个值得考虑的选择。如果您对该项目感兴趣,可移步至 Wave Terminal 在 Github 开源仓库-https://github.com/wavetermdev/waveterm ,从而了解更多.
https://www.waveterm.dev/

FISHERMAN at 11:36 No comments:
Share

www.Pinecone.io 是专为矢量搜索设计的矢量数据库

 www.Pinecone.io 是专为矢量搜索设计的矢量数据库,为多家公司的人工智能计划提供支持。它为执行超快的矢量搜索提供了可靠、可扩展的解决方案,是搜索、推荐系统、异常检测等应用的理想之选。Pinecone 主要具有如下功能:

    快速启动,轻松集成: 使用 Pinecone,只需 30 秒即可创建账户并建立第一个索引。它支持 Python、Node.js等多种编程语言,可轻松集成到现有工作流程中。

    超快矢量搜索: Pinecone 可让您执行超快的矢量搜索,检索相关数据。无论您有几个嵌入还是数十亿个嵌入,Pinecone 都能扩展您的索引并高效处理大量数据。

    元数据过滤: Pinecone 允许您根据元数据过滤矢量搜索结果。通过将矢量搜索与熟悉的元数据过滤器相结合,您可以获得更相关、更有针对性的搜索结果。

    实时更新: 当您的数据发生变化时,Pinecone 可确保您的索引得到实时更新,为您提供最新、最新鲜的搜索结果。

    混合搜索: Pinecone 支持混合搜索,将矢量搜索与关键词提升相结合。这使您可以同时利用基于矢量和基于关键字的搜索方法的优势,为您的搜索应用提供更大的灵活性。

    开发人员友好的堆栈: Pinecone 与流行的云提供商、数据源、模型和框架无缝集成,让您可以使用自己喜欢的工具和技术。

    可扩展性和性能: Pinecone 为可扩展性而生,支持数十亿个向量。它的查询延迟(p95)低至 5-10ms,更新延迟(p95)低至 9ms,优于 HNSW 等传统方法。Pinecone 对性能进行了优化,确保搜索操作快速高效。

    安全和企业就绪: Pinecone 符合安全和操作要求,适合企业部署。它符合 SOC 2 和 HIPAA 标准,可确保您的数据安全和隐私。

    云原生和全面管理: Pinecone 在云中进行全面管理,让您可以灵活选择自己喜欢的云提供商。它可在 AWS、Azure 和 GCP 等流行的云市场上使用。

有必要提下: Canopy - https://github.com/pinecone-io/canopy,它是一个开源检索增强生成 (RAG) 框架和上下文引擎,构建在 Pinecone 矢量数据库之上(也是因 Canopy 才更加关注 Pinecone)。Canopy 使您能够使用 RAG 快速轻松地试验和构建应用程序。通过几个简单的命令即可开始与文档或文本数据聊天。Canopy 承担了构建 RAG 应用程序的繁重工作:从分块和嵌入文本数据到聊天历史记录管理、查询优化、上下文检索(包括提示工程)和增强生成。

Canopy 提供可配置的内置服务器,因此您可以轻松地将 RAG 支持的聊天应用程序部署到现有的聊天 UI 或界面。或者,您可以使用 Canopy 库构建您自己的自定义 RAG 应用程序。

Canopy 允许您使用基于 CLI 的聊天工具评估您的 RAG 工作流程。通过 Canopy CLI 中的简单命令,您可以与文本数据进行交互聊天,并并排比较 RAG 与非 RAG 工作流程。

基于 Pinecone 可以免费创建第一个索引,容量为 100,000 个嵌入式内容。随着规模的扩大,Pinecone 还提供灵活的定价选项,并能按需付费。此外,Pinecone 还提供全面的文档、学习中心、社区论坛和支持中心,帮助用户有效集成和使用它。如果您对使用 Pinecone 感兴趣,可移步至 Pinecone 在 Github 开源仓库-https://github.com/pinecone-io ,从而了解更多.

https://www.pinecone.io/pricing/

FISHERMAN at 11:31 No comments:
Share

LangChain | Get your LLM application from prototype to production

 LangChain’s flexible abstractions and extensive toolkit unlocks developers to build context-aware, reasoning LLM applications.

推荐语:www.LangChain.com 是一个专注于大型语言模型( LLM )的开发者平台,它提供了一套工具和框架,帮助开发者将 LLM 应用从原型阶段推进到生产环境。

什么是 LangChain?

LangChain 提供了一个灵活的抽象层(LCEL,LangChain Execution Language)和 AI 优先的工具包,使得开发者能够构建具有上下文感知和推理能力的应用程序。它的目标是简化 LLM 的集成和开发过程,让开发者能够快速构建和部署基于 LLM 的应用。
LangChain 可以用来做什么?

    构建智能对话系统:如聊天机器人,可以用于客户服务、虚拟助手等。
    问答系统:开发能够理解和回答复杂问题的系统。
    文档摘要:自动生成文档的摘要,帮助用户快速理解内容。
    代码协作:作为编程助手,提供代码建议和错误提示。
    工作流自动化:自动化处理文档、数据和信息的工作流程。
    文档分析:分析文档内容,提取关键信息。
    自定义搜索引擎:构建能够理解用户查询意图的搜索引擎。

面向的用户群体有哪些?

    开发者:需要构建基于 LLM 的应用的软件开发者。
    数据科学家:需要将 LLM 集成到数据分析和处理流程中的专业人士。
    企业 IT 团队:希望将 LLM 技术应用于业务流程和自动化的企业 IT 部门。
    初创公司:寻找创新方式来提升产品和服务的初创企业。
    研究者:在自然语言处理(NLP)领域进行研究的学者。

使用场景:

    客户服务:构建智能客服机器人,提供 24/7 的在线支持。
    内容创作:辅助作者进行内容创作,提供写作建议和风格调整。
    教育:开发个性化学习助手,帮助学生理解复杂概念。
    医疗健康:提供医疗信息查询和健康咨询的智能系统。
    法律服务:帮助律师快速分析法律文件和合同。

LangChain 的特点:

    LCEL:LangChain 的执行语言,提供了一种声明式的方式来定义和执行 LLM 任务。
    易于集成:与多种数据源和知识库的智能连接,便于开发者获取所需信息。
    可交换组件:允许开发者轻松地替换和尝试不同的 LLM 模型,以找到最适合自己应用的模型。
    生产就绪:提供了一套工具,如 LangSmith,帮助开发者在生产环境中监控和优化模型性能。

支持 构建 RAG 系统

LangChain 提供了一个平台,它允许开发者构建和部署基于大型语言模型(LLM)的应用,这些应用可以是检索增强生成(Retrieval-Augmented Generation,简称 RAG)系统。RAG 系统结合了检索系统和生成模型,以提高文本生成的质量和相关性。以下是 LangChain 如何支持构建 RAG 系统的一些关键点:

    灵活的抽象层(LCEL):
        LangChain 的 LCEL 提供了一种声明式的方式来定义和执行任务,这使得开发者可以轻松地将检索和生成任务结合起来。
    可交换的组件:
        LangChain 允许开发者轻松地替换和尝试不同的 LLM 模型,这对于构建 RAG 系统至关重要,因为检索和生成模型可能需要不同的优化和调整。
    智能连接:
        LangChain 提供了与各种数据源和知识库的连接,这使得开发者可以轻松地将检索系统与生成模型集成,从而实现 RAG 的核心功能。
    生产就绪的开发平台:
        LangChain 的 LangSmith 提供了在生产环境中监控和优化模型性能的工具,这对于 RAG 系统来说尤其重要,因为这类系统通常需要处理大量的数据和复杂的逻辑。
    丰富的用例支持:
        LangChain 提供了一系列的用例,如聊天机器人、问答系统、文档分析等,这些都是 RAG 系统可能的应用场景。

在 LangChain 上构建 RAG 系统的基本流程可能包括:

    定义任务:使用 LCEL 定义需要检索和生成的任务。
    集成检索系统:将检索系统与 LangChain 集成,以便在生成过程中检索相关信息。
    微调模型:在 LangChain 上微调 LLM 模型,以适应特定的检索和生成任务。
    部署应用:将构建好的 RAG 应用部署到生产环境,使用 LangSmith 进行监控和优化。

LangChain 的这些特性使得它成为一个强大的平台,可以帮助开发者构建出既能够理解用户输入,又能通过检索系统提供相关信息,最终生成高质量文本的 RAG 系统。这样的系统可以应用于客户服务、内容创作、教育辅导等多个领域。

总之,LangChain 通过提供一系列的构建块、开源组件和预构建的链条,使得开发者能够快速上手并针对特定用例进行定制。同时,它还强调了生产环境的准备,通过提供调试、测试和监控工具,帮助开发者确保应用的稳定性和性能。(温馨提示:以上内容来自 ChatGPT 总结,具体内容以官方网站位置)LangChain 在 Github 仓库开源-
https://github.com/langchain-ai/langchain(截止 2024 年 01 月 19 日,共获得超过 74K+ Star),如果您对其感兴趣,可移步前往从而了解更多。值得一提的是:LangChain 官方有基于 LangChain、GenAI 构建 RAG 智能问答系统Chat LangChain- https://chat.langchain.com/,您有任何关于 LangChain Python 文档的问题,都可以向其询问,从而快速得到答复.

FISHERMAN at 11:13 No comments:
Share

StackShare - Tech Stack Intelligence



StackShare.io 是一个提供技术栈智能 分析 的 平台 ,旨在帮助企业和技术团队更好地理解和管理他们的技术栈。它通过提供实时的、数据驱动的洞察,帮助企业做出更明智的技术决策,优化 技术 治理,并提高开发效率。以下是 StackShare 的主要服务和特点:

    技术栈智能分析:StackShare 提供实时的、深入到版本级别的技术栈分析,覆盖所有内部使用的开发者工具、服务和包,这些信息可以从所有 Git 仓库中获取。

    企业版服务:StackShare Enterprise 是一个专为企业设计的平台,它为 CTO 和其他技术领导者提供全面的技术栈使用情况,帮助他们改进治理、优化决策过程。

    社区版服务:StackShare Community 允许超过 100 万开发者分享他们的公共技术栈、喜欢的工具、建议和对数千种技术的意见。用户可以在这里获取建议、贡献专业知识,并了解最新的技术趋势。

    技术债务管理:StackShare Enterprise 帮助工程组织改善治理,通过动态技术雷达设置边界,减少技术债务,加快开发周期,降低风险。

    技术标准化:平台提供了技术雷达功能,允许创建批准的技术栈集合,确保团队成员了解并使用正确的技术。

    技术栈整合:通过减少竞争技术和供应商的数量,降低风险和成本,帮助企业整合技术栈,减少技术债务。

    开发团队效率:通过提供可重用和标准化的组件,StackShare 消除了重复工作,使团队能够专注于开发而非基础设施。

    集成和自动化:StackShare 提供了与 Git 仓库的集成,可以在几分钟内安装并运行,自动更新技术栈配置文件,并实时跟踪技术栈变化。

    社区讨论和资源:StackShare 社区提供了丰富的讨论和资源,包括工具比较、公司技术栈浏览、新闻和博客文章等。

StackShare 主要针对以下人群:

    CTO 和技术领导者:他们需要了解和优化企业的技术治理和决策过程。
    软件开发团队:他们希望提高开发效率,减少技术债务,以及跟踪和维护技术栈。
    技术爱好者和开发者:他们想要了解和分享最新的技术趋势,以及获取关于不同技术栈的建议。

2023 年 12 月 31 日,StackShare 汇总了超过 100 万个技术堆栈的使用情况 ,超过 1000 万个关注者 ,以及更多的开发者评论、评论和投票,梳理大量数据集,在文章 '2023 年 100 多个最佳开发者工具'( https://stackshare.io/posts/top-developer-tools-2023)呈现出来;AI 工具放到了第一,诸如 LangChain 、 Auto-GPT 、 Pinecone 、Chroma 均有上榜,学习、折腾的方向,可见一斑。

总之,StackShare 能够帮助企业和技术团队更好地理解和管理他们的技术栈;您可以定期检查以监控个人或整个公司的未偿技术债务,从而快速做出调整、部署; StackShare 的官网提供了详细的信息,包括如何使用平台、企业版和社区版的介绍、用户评价、以及如何开始使用 StackShare 的指南。此外,官网还提供了关于 StackShare 的新闻、博客文章和工作机会等资源.

 相关帖子: https://briteming.blogspot.com/2026/05/devhuntorg.html

FISHERMAN at 11:02 No comments:
Share

AI终端程序Warp宣布开源:那个让百万开发者”叛逃”的 AI 终端终于开源了

 


你有没有用过 Warp?

如果你还没用过,但你是一个程序员,你可以先想象一下:打开终端,发现 AI 自动补全了你接下来要敲的三条命令;写完一段代码,点两下就能看到 diff 的可视化结果;你同时跑着好几个 agent 任务,每个任务的进度在右侧边栏一目了然——

这就是 Warp。

它是这两年最让我“中毒”的开发者工具之一。我从 2024 年开始用,用了差不多大半年,每次换电脑第一件事就是装 Warp。前阵子跟朋友聊起开发效率工具,大家不约而同提到这货,“用了就回不去了”——这是我们这帮经常在终端里泡着的人,对一个工具最高的评价。

然后就在4 月 28 号,Warp 官方宣布:开源了。

53K 星,开源即霸榜

消息出来之后 GitHub 的反应比我想象中热烈多了。

warpdotdev/warp 仓库在几天之内冲到了三万七千星,直接登上 GitHub Trending 第二名——这还是开源刚开放时候的数据,现在已经 53K 了。Rust 语言写的,AGPL-3.0 协议,大部分代码开放,少部分 UI 相关的用 MIT,OpenAI 还当了“创始赞助商”。

是的,你没看错,OpenAI。

Warp 的 CEO Zach Lloyd 在官方博客里解释了为什么选 AGPL:一个重要原因是想让代码“可审计”——大家可以检查隐私和安全问题,但又不希望有竞争对手直接拿 Warp 的代码去开一家商业终端公司。这个逻辑我倒挺能理解的,AGPL 在开源协议里算是“严格但不封闭”的代表了。

有意思的是,这其实不是 Warp 第一次说要开源。早在 2022 年社区就有人在讨论区问过“ 你们会开源吗”,Zach 本人也认真回复过一篇长文,分析了利弊——当时他说想等等看,因为怕开源后失去对 IP 的控制。结果这一等就是三年,到 2026 年终于落地。
从“更好的终端”到“智能体开发环境”

说真的,Warp 这次开源最让我惊讶的,不是“开源”本身,而是它对自己的定位变了。

现在的 Warp 不再叫自己“终端”了。官方说法是:“Agentic Development Environment”——智能体驱动的开发环境,缩写 ADE。

翻译成人话就是:Warp 认为,当 Claude Code、Codex、Gemini CLI 这些 AI 编程智能体越来越普及,终端不应该只是你敲命令的地方,它应该成为调度、观察、管理这些智能体的指挥中心。

这个思路我挺认同的。

我平时用 Claude Code 的时候,最麻烦的事情之一就是:任务跑起来了,但你不知道它卡在哪了——除非你盯着那个终端看。Warp 现在做的事,就是给你一个更好的“看”的方式:垂直分屏的多线程 agent 工作流、系统通知让你不用一直盯着、还有内置的代码审查工具。

而且这次的版本还支持了更多的开源模型——Kimi、MiniMax、Qwen,都纳入了默认支持,还加了“auto (open)”路由选项,系统会根据任务类型自动选择合适的开源模型跑。这对国内开发者来说是个好消息,毕竟 Kimi 和 MiniMax 的中文理解能力确实强。
OpenAI 当赞助商这事挺有意思的

Warp 的创始赞助商是 OpenAI——这挺有讽刺意味的。

Warp 本身是个闭源商业产品,现在开源了,但赞助商是 OpenAI,另一家闭源 AI 公司。这本身就很有意思:OpenAI 的 Engineering Lead Thibault Sottiaux 在公告里说了一句话:“开源一直是开发者学习、构建、推动这个领域前进的核心。我们很高兴能支持那些探索 AI 如何帮助维护者和贡献者更有效地大规模协作的实验。”

这话听着挺真诚的,但你仔细想想:OpenAI 赞助的其实是一个“帮你更方便地用 Claude Code / Codex”的产品。两者之间的生态关系很微妙——Warp 帮 OpenAI 生态里的工具带来了更好的用户体验,OpenAI 帮 Warp 带来了社区信任和流量。各取所需,这倒是挺硅谷的。

Warp 终端开源配图
值得试试

Warp 现在已经在 GitHub 上完全免费了。

如果你还没用过,我建议你现在就去试试。对于用 Claude Code 或者其他 AI 编程工具的朋友,Warp 的原生 UI 支持应该会让你的日常体验提升一个档次——特别是那个多线程 agent 工作流的界面,我在测试版里用过,确实比纯终端强多了。

对于开源社区来说,一个有 70 万开发者基础的产品开源,意味着什么?意味着它的代码可以被审计、可以被打补丁、可以被各种 fork 改造。Warp 的 CTO 之前说他们相信“人类管理智能体规模化构建生产级软件”会成为未来开发的主流模式,而把 Warp 开放给社区,就是这个信念的第一次落地。

三年了,承诺终于兑现。

你觉得 Warp 开源后会变成什么?是一个更强大的终端,还是 AI 编程时代的基础设施?或者——你有没有更好的 idea?

仓库:github.com/warpdotdev/warp
----------------------------------------------

 注意:此warp不是用来翻墙的那个warp( https://briteming.blogspot.com/2022/05/warp-by-fscarmen.html)

FISHERMAN at 10:53 No comments:
Share

用一群 AI 预测未来?MiroFish这个群体智能引擎有点意思

 
你相信”预测未来”这回事吗?

我之前是不信的。什么占卜、推演、八字,看到这些词就想划走——不是迷信就是玄学。直到上周我刷到一个 GitHub 项目,叫 MiroFish,star 数噌噌往上涨,一天能涨几千。再看它的 description:*A Simple and Universal Swarm Intelligence Engine, Predicting Anything*——群体智能引擎,预测万物。

好家伙,这口气。

## 一群AI agents在一起,能干嘛?

传统的 AI 预测,就是丢一个模型、一堆数据,模型给你一个结果。但 MiroFish 不太一样。它的工作方式是:

你上传一段”种子信息”——可以是一篇新闻报道、一个政策草案、或者一份市场数据。然后 MiroFish 会自动构建一个”平行数字世界”——也就是一个模拟环境,里面住着成千上万个 AI agents,每个 agent 有自己独立的性格、长期记忆和行为逻辑。

然后,这些 agents 在这个模拟世界里自由互动、社会化演化。你可以从”上帝视角”注入变量,观察不同决策会带来什么结果。说白了,就是用一群 AI 模拟真实世界的运行逻辑,然后推演未来可能发生的事。

官方给了几个 Demo:预测舆情走向、模拟《红楼梦》前 80 回后续剧情的发展轨迹。你别说,看那个演示视频还真有点意思——agents 之间的互动有明显的个性差异,有的激进、有的保守、有的犹豫,组合在一起还真能涌现出一些意料之外又在情理之中的结果。

MiroFish 群体智能示意

## 技术上看,门槛不算高

让我去看了一眼它的 GitHub 仓库,技术栈用的是 Python(后端)+ Node.js(前端),需要 Python 3.11 以上。部署方式比较友好,源码部署的话,配置好环境变量、装好依赖就能跑。也有 Docker 支持,`docker-compose up` 就能起一个本地版本。

整个项目 MIT 协议,可以商用,这点挺实在的。

从 star 增长曲线来看,这个项目从 2025 年 12 月上线,到 2026 年 5 月已经积攒了 17000 多 star,单日最高涨幅接近 3000——对于一个非大厂出品的个人项目来说,这个传播速度相当夸张了。

## 群体智能这个概念,真的有新意吗?

说实话,”群体智能”这个词在 AI 圈不算新。经典的粒子群优化(PSO)、蚁群算法(ACO)都是这个范畴的东西。但 MiroFish 把大语言模型(LLM)引入进来了——每个 agent 不再是简单的数学函数,而是一个有”个性”的语言模型实例,这就让模拟的维度从纯数值变成了自然语言级别的行为逻辑。

理论上,你可以模拟一场选举中不同群体的投票倾向,模拟一次产品发布后市场的反应,甚至模拟一个办公室里的人际关系演化。当然,实际上这些模拟的准确度取决于”种子信息”的质量—— garbage in, garbage out 这个道理在哪儿都适用。

## 我的感受

我试用了一下那个在线 Demo(mirofish-live-demo),体验说实话还有提升空间——界面比较极客风,对普通用户不算友好。但背后的思路我挺认可的:不是让一个超级 AI 独自预测,而是让一群各有性格的 AI 互相博弈、碰撞,最后的结果是涌现出来的,不是算出来的。

这有点像人类社会的运作方式——没有哪个 central planner 能精准预测经济走向,但无数个体的行动和互动最后会形成一个大致清晰的方向。MiroFish 想用 AI 模拟这个过程。

好不好用、准不准,那就是另一个问题了。你觉得这种”用群体智能预测未来”的方式,靠谱吗?

**GitHub**:  https://github.com/666ghj/MiroFish
**Star**: 17000+(截至 2026 年 5 月)

FISHERMAN at 10:43 No comments:
Share

你的npm包可能在偷你的密钥:一场惊心的攻击

 听说了嘛,有用户跑了个 npm install命令,结果GitHub 的令牌、AWS 的密钥、连SSH私钥都被偷走了?

这不是假设。2026年5月12日,安全机构 Socket 发出紧急警报——npm 生态遭遇了有史以来规模最大的供应链投毒事件之一:超过 160 个 npm/PyPI 包被植入恶意代码,包括前端圈耳熟能详的 TanStack(周下载量超 1200 万次)、Mistral AI 的官方 SDK、UiPath 企业自动化工具链,全部中招。

更离谱的是,这次攻击不需要偷任何人的密码。攻击者直接在 GitHub Actions 的内存里把 OIDC 令牌”读”了出来,然后用这个合法令牌把恶意包发布到了 npm——带着有效的 provenance 签名。
一场”技术上完美”的供应链攻击

这次攻击被安全圈称为 “Mini Shai-Hulud”,由威胁组织 TeamPCP 主导,攻击链设计得相当精密。

第一步,攻击者先分析了 TanStack 项目的 GitHub Actions 发布流程,找到了三个漏洞的组合利用路径:

    pull_request_target 缓存投毒:攻击者 fork 了 TanStack/router 仓库,提交了一个 PR,触发了带有 pull_request_target 的 CI 流程。这个流程会把攻击者控制的 pnpm 缓存产物注入到构建环境中。
    跨 fork 缓存污染:当真正的维护者合并 PR 并触发正式发布流程时,受污染的缓存被恢复,攻击者植入的恶意二进制文件随之执行。
    OIDC 令牌内存读取:恶意代码直接读取 GitHub Actions 运行器进程的内存(/proc/<pid>/mem),提取出 OIDC 令牌。

拿到 OIDC 令牌后,攻击者不需要任何账户密码,直接以 TanStack 官方的”受信任发布者”身份,把恶意版本推送到了 npm 注册表。

这就是最可怕的地方:这些恶意包携带了有效的 npm provenance 签名,意味着传统的”看签名判断包是否可信”这条路也被堵死了。
恶意代码做了什么?

被篡改的包在 package.json 中新增了一个 optionalDependencies 依赖项,指向一个伪造的包 @tanstack/setup,以及一个恶意的 prepare 生命周期钩子。

一旦你 npm install 了受影响版本的包,钩子自动运行,恶意代码会:

    扫描并窃取 AWS IMDSv2/GCP/Azure 的云凭据
    读取 Kubernetes 服务账户令牌、HashiCorp Vault 令牌
    翻找 ~/.npmrc、GitHub 个人访问令牌、SSH 私钥
    所有数据通过 Session 网络(去中心化加密通讯)+ typosquat 域名 + GitHub API dead drops 三条通道外传

更绝的是,恶意包还有蠕虫式的自我传播能力。如果受感染的机器上有 npm 发布权限,代码会自动修改那些有发布权限的包,把恶意依赖也一并注入进去,再利用窃取的令牌发布新版本——每个受害者的机器都变成了新的传播节点。

npm供应链攻击示意图
最狠的一手:删你没商量

你以为 revoke 令牌就完事了?图样图森破。

如果攻击者在你的机器上检测到一个有组织写权限的 GitHub 令牌,会自动安装一个持久化 daemon(macOS 用 LaunchAgent,Linux 用 systemd user service),这个 daemon 每 60 秒检查一次 GitHub——一旦发现令牌被吊销,直接执行 rm -rf ~,清空你的 home 目录。

安全公司的建议是:在吊销任何令牌之前,必须先找到并删除这个 daemon,否则删令牌反而会触发数据毁灭。

这个 daemon 在 macOS 上的路径是:~/Library/LaunchAgents/com.user.gh-token-monitor.plist。Linux 用户则检查 ~/.config/systemd/user/gh-token-monitor.service。
波及范围:比你想的大得多

事件披露后,波及范围迅速扩大。最初是 TanStack 旗下的 42 个包,但到当天结束,受影响命名空间已包括:

    @tanstack(83 个恶意版本)
    @uipath(66 个恶意版本)
    @mistralai(npm + PyPI 双端,官方 SDK 全军中招)
    @squawk(87 个恶意版本)
    @tallyui、@beproduct 等企业级包
    OpenSearch(npm 周下载 130 万次)

甚至安全工具 guardrails-ai(PyPI)的 0.10.1 版本也未能幸免。

总计:超过 160 个包名、373 个恶意版本,横跨 npm 和 PyPI 两大生态。
我们该怎么做?

如果你在5月份左右 npm install 过任何 TanStack 包,或者用企业 CI 跑过相关项目,现在立刻做这几件事:

第一步:检查是否有 persistence daemon(先做这个!)

# macOS
ls ~/Library/LaunchAgents/com.user.gh-token-monitor.plist

# Linux
ls ~/.config/systemd/user/gh-token-monitor.service

如果存在,先删掉,再吊销令牌。

第二步:轮换所有凭据

从受影响的机器上:GitHub PAT、npm token、AWS/GCP/Azure 密钥、Kubernetes SA token、SSH 私钥,全部轮换。

第三步:审计代码仓库

git log --all --author=claude@users.noreply.github.com

搜一下是否有来历不明的提交。同时检查 .claude/ 和 .vscode/ 目录里有没有 router_runtime.js 或 setup.mjs 这样的可疑文件——它们在 npm uninstall 后依然会存活。

第四步:检查 CI 配置

确保所有不需要 OIDC 发布的工作流都设置了 permissions: id-token: none,限制 GitHub Actions OIDC 令牌的作用域。

第五步:堵 C2 通道

在 DNS 或代理层阻断以下域名/IP:
– git-tanstack[.]com(typosquat)
– *.getsession.org(Session 网络)
– 83.142.209.194
这件事真正可怕的地方

回过头来看,这次攻击真正让人脊背发凉的不是技术有多高超,而是“可信”这个基础被动摇了。

你信任 GitHub Actions 的 OIDC 机制,它没问题。你信任 npm 的 provenance 签名,它也没问题。但攻击者把这两个”没问题”串起来,就绕过了一整套安全假设。

而且,攻击者甚至把 Shai-Hulud 的源代码短暂地发布到了 GitHub 上——在被删除之前已经被 mirror 到了其他地方。这意味着接下来会有大量的 copycat 攻击,用同样的手法去搞其他知名的开源项目。

开源生态的供应链安全,真的到了需要认真面对的时候了。我们享受着 npm install 带来的便利,却不得不承认:我们其实把太多信任交给了一个我们并不完全了解的生态系统。

你最近一次更新依赖是什么时候?有没有觉得哪个包加载得”稍微有点慢”?

参考资料:

  • Socket 官方警报
  • Snyk 深度分析
  • Orca Security 技术报告
  • SecurityWeek 报道
  • IT之家中文报道
  • FISHERMAN at 10:41 No comments:
    Share

    Fedora 把 Deepin 桌面踢出去了:一个关于信任危机的故事

     
    你是 Deepin 桌面的用户吗?如果你用过,应该记得第一次看到它时的感觉——那种”原来 Linux 也可以这么漂亮”的惊艳。Deepin 的 UI 在整个 Linux 圈是有口皆碑的,精致的动画、和谐的配色、流畅的操作体验,当年很多”云桌面爱好者”就是冲着 Deepin 的颜值入坑的。

    但就在上周,Fedora 正式把 Deepin Desktop 从官方仓库里移除了。

    这不是小打小闹——Fedora 是 Red Hat Enterprise Linux 的上游,它的工程指导委员会(FESCo)全票通过了这个决定。而且条款很严厉:除非 Deepin 包重新通过完整的安全审查,否则以后也别想回来了。

    这背后到底发生了什么?

     
    安全问题堆成山

    根据 Fedora 社区的公开讨论,Deepin 的问题积压已久。

    首先是技术层面的漏洞:Polkit 提权漏洞、D-Bus 缺陷、长期未修复的安全问题。这些不是小毛病,是能让你系统被root的严重缺陷。

    然后是维护层面的失联:Fedora 团队多次尝试联系 Deepin 的官方维护者,想讨论安全问题修复方案,但——没人回应。这种”叫不应”的状态,让整个审查卡在半空中。

    最要命的是打包策略违规:据说 Deepin 的包通过某些技术手段绕过了安全团队的强制审查。这种”作弊”行为,在开源社区里是很不被容忍的。

        openSUSE 早在一年前就动手移除 Deepin 了。Fedora 这次跟上,说白了就是:你不修,我不等。

    漂亮脸蛋背后的信任危机

    说实话,Deepin 的 UI 设计在 Linux 桌面的审美上绝对是头部的。当年我用 Deepin 的时候,光是那个任务栏切换动效就让我玩了好几天。

    但 Linux 桌面的竞争已经变了。

    以前大家比的是”谁的功能多”、”谁的界面好看”。现在,比的是”谁的安全维护跟得上”、”谁的反应速度快”。

    GNOME、KDE 这些老牌桌面,背后有 Red Hat、SUSE 这样的商业公司撑腰,安全漏洞修得快、响应及时。Deepin 呢?武汉深之度这家公司这些年重心在哪里我不知道,但至少从 Fedora 的经历来看,维护状态堪忧。

    安全审计有个”信任账户”的概念——你的响应速度、修复态度、社区沟通,都在不断往这个账户里存钱或取钱。当账户变负数,对不起,只能冻结。

    Deepin 的问题不是 UI 丑了,是信任账户清零了。

    Deepin 桌面被移除
    中美技术竞争下的开源生态

    这事儿还有另一层意思。

    在中美技术竞争的大背景下,中国开发的开源项目面临更严苛的审视。任何安全问题都可能被放大解读为”国家背景”的风险。这不公平,但这是现实。

    开源社区一直倡导”code has no borders”,但维护者的地理位置正在成为新的审查维度。Deepin 的问题本质上是个技术维护问题,但在当前的地缘政治氛围下,它被赋予了更多的含义。

    你说这是”开源生态的裂痕”也好,说这是”安全标准的一致性”也罢。事实是:一个开源项目,如果连社区的问询都不回应,那它在国际主流发行版的生存空间只会越来越小。
    以后还能用 Deepin 吗?

    能,但建议从官方仓库装。

    Fedora 移除了不代表 Deepin 本身坏了——它只是不在 Fedora 的可信包列表里了。你想体验,可以去 Deepin 官方网站下载它们的发行版,或者用 Flatpak 沙盒版本。

    但要记住:UI 漂亮不等于系统安全。选桌面环境,安全维护记录和社区响应速度,现在已经是和 UI 美观同等重要的指标了。

    • Fedora 移除 Deepin Desktop 官方讨论
    • ZDNET: Deepin 安全问题始末
    • Phoronix: Fedora Removing Deepin
    • Linux Security: openSUSE 移除 Deepin
    FISHERMAN at 10:20 No comments:
    Share

    MyTube:开源自托管的视频下载器,一站式管理你的媒体库



    在如今这个视频内容爆炸的时代,你是否有过这样的困扰——想看的视频散落在 YouTube、B站、Twitch 各个平台,想离线保存却苦于没有好工具?想在 NAS 上搭建私有媒体库,却又被复杂的部署流程劝退?
    MyTube 项目,正是为解决这些痛点而生。这是一个完全开源、自托管的视频下载与管理平台,支持国内外主流视频网站,部署简单,功能丰富,上线不到一年已在 GitHub 斩获 910+ Stars,社区活跃,值得一看。

    什么是 MyTube?

    MyTube 是一款基于 TypeScript + React + Node.js 构建的自托管视频下载与播放工具。通过集成强大的 yt-dlp 引擎,它能够从以下平台下载视频:

        YouTube — 全球最大视频平台
        Bilibili(哔哩哔哩) — 国内二次元与学习内容重镇
        Twitch — 游戏直播首选
        MissAV — XX内容(合规使用)
        以及任何 yt-dlp 支持的网站

    项目主页提供在线演示:https://mytube-demo.vercel.app(只读权限),部署方面支持 Docker 一键启动,对 NAS 用户格外友好。
    核心功能一览
    📥 视频下载与管理

        支持单个 URL 下载、批量添加下载队列、并行下载控制(可限制同时下载数量)
        下载完成后自动上传到云存储(OpenList / Alist)
        自动获取 YouTube / B站字幕文件
        支持上传本地视频文件,自动生成缩略图
        TMDB 元数据自动刮削:上传本地电影/剧集后,根据文件名自动匹配 TMDB 数据库,填充标题、简介、海报、导演、年份、评分等信息

    📺 频道订阅与自动下载

        订阅 YouTube、B站、Twitch 频道,自动检测新内容并下载
        相当于给自己搭建了一个私有版 YouTube Premium,没有广告,没有审核

    🎨 收藏与整理

        将视频归类到不同收藏夹(Collections),打造私人媒体库
        支持创建多个收藏夹,界面采用 MUI 组件库,简洁现代

    🔐 安全与多用户

        密码登录保护 + 可选 Passkey(WebAuthn)无密码认证
        提供”访客用户”角色(只读),安全分享给朋友
        内置 Cloudflare Tunnel 支持,无需公网 IP 和端口转发即可远程访问
        三层管理员信任模型(Application / Container / Host),部署灵活

    🌍 国际化与移动端

        支持 10+ 种语言:英语、中文、西班牙语、法语、德语、日语、韩语、阿拉伯语、葡萄牙语、俄语
        移动端界面优化,标签菜单友好

    🤖 自动化与通知

        支持 Task Hooks:在下载任务的不同阶段(开始、成功、失败、取消)执行自定义 Shell 脚本,可深度集成到你的工作流
        Telegram 机器人通知:任务完成后即时推送消息
        提供 Chrome 浏览器扩展,直接在浏览器中一键下载任意支持站点的视频

    技术栈解析

    MyTube 的技术选型兼顾了工程规范与开发效率,亮点颇多:
    层次     技术选型
    后端运行     Node.js + TypeScript
    Web 框架     Express.js
    数据库     SQLite + Drizzle ORM
    数据库迁移     自动迁移(Drizzle Kit)
    测试     Vitest
    前端框架     React 19 + TypeScript
    构建工具     Vite
    UI 组件库     Material-UI (MUI)
    状态管理     React Context API
    HTTP 客户端     Axios + React Query
    路由     React Router v7

    架构上采用经典的分层架构(Routes → Controllers → Services → Database),模块职责清晰,代码可维护性强。下载模块还设计了抽象基类,便于扩展新的平台支持。
    部署有多简单?

    项目提供 Docker 一键部署,一条命令即可跑起来:

    docker run -d \
      --name mytube \
      -e MYTUBE_ADMIN_TRUST_LEVEL=container \
      -p 5551:5551 \
      ghcr.io/franklioxygen/mytube:latest

    也可以使用 docker-compose 编排完整服务,包含 Cloudflare Tunnel 配置、Cloudflare R2/S3 存储集成等。项目文档详细,GitHub Actions 配置了 Lighthouse 性能测试和 Codacy 代码质量检测,持续保障交付质量。
    适合哪些人?

        NAS 玩家:想在群晖、威联通上搭建私人媒体库
        技术爱好者:追求数据主权,不想依赖第三方平台
        离线学习者:批量下载课程、教程类视频,构建本地知识库
        隐私敏感用户:不想让平台追踪观看记录

    小结

    MyTube 真正做到了”开箱即用、功能完备、部署友好“。它将 yt-dlp 的强大能力与现代化的 Web 界面结合在一起,同时提供了订阅自动下载、云存储集成、Telegram 通知等实用功能。对于希望自建媒体中心的人来说,这是一个几乎不需要妥协的选择。

    项目采用 MIT 许可证,代码完全开源,文档详细,GitHub 社区活跃,是近期难得的高质量开源项目。如果你正好有这方面的需求,不妨 clone 下来试试。

    项目地址:https://github.com/franklioxygen/MyTube

    FISHERMAN at 10:15 No comments:
    Share
    ‹
    ›
    Home
    View web version

    About Me

    FISHERMAN
    View my complete profile
    Powered by Blogger.