MoreRSS

site iconruyo | 如有乐享修改

分享一些网络资源。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

ruyo | 如有乐享的 RSS 预览

腾讯 Agent 专属邮箱来了,附CLI安装与Python API封装

2026-06-29 08:28:23

腾讯 Agent 专属邮箱来了,附CLI安装与Python API封装

Agent Mail,是 QQ 邮箱团队为 Agent 打造的专属邮箱服务。与个人邮箱隔离,原生适配 Agent,助力你安全、高效地使用 Agent 收发邮件。

看似非常不错的功能,之前网易也推出类似服务:ClawEmail  并未激起太大的水花~

 

官方地址

agent.qq.com

 

使用限制

1,仅限微信扫码登录

2,同时拥有2个 @agent.qq.com 邮箱

3,每个邮箱每天限制发送 50封邮件,收信不限制,1Gb容量

4,发信必须使用Agent才可以

5,邮箱前缀随机分配,也可修改为自己心仪的前缀(抓紧选自己的心仪前缀)

 

实名认证

目前平台还未强制要求实名认证!实名认证仅需填写姓名,必须和微信实名姓名一致即完成实名。

 

 

 

简单体验

1,首先用腾讯自家的 WorkBuddy,配置好之后,确实可以发送邮件!没有太多难度!

 

2,这里推荐大家体验一下华为云的 AI Shell。历史文章:华为云AI Shell体验:免费4核7G云服务器,附自动保活脚本

仅需将提示词在AI Shell中发给AI

请阅读 https://agent.qq.com/doc/cli-setup.md 文档,按照步骤为我安装并配置 Agent Mail CLI。

 

 

封装API

可用使用代码封装一下,利用API发信!

"""
Agently Mail API - Python wrapper for agently-cli email operations.

Usage:
    from agently_mail import send_email, list_messages, read_message, search_messages

    # Send email
    result = send_email(
        to=["[email protected]"],
        subject="Hello",
        body="<p>This is a test email.</p>"
    )

    # List messages
    messages = list_messages(limit=10)
"""

import subprocess
import json
import os
from typing import Optional, List, Dict, Any, Union


def _run_cli(args: List[str], input_data: Optional[str] = None) -> Dict[str, Any]:
    """
    Execute agently-cli command and return parsed JSON result.
    
    Args:
        args: Command arguments (e.g., ["message", "+send", "--to", "[email protected]"])
        input_data: Optional stdin data
        
    Returns:
        Parsed JSON response as dict
        
    Raises:
        RuntimeError: If command fails
    """
    cmd = ["agently-cli"] + args
    
    result = subprocess.run(
        cmd,
        capture_output=True,
        text=True,
        input=input_data,
        timeout=60
    )
    
    if result.stdout:
        try:
            return json.loads(result.stdout)
        except json.JSONDecodeError:
            pass
    
    if result.returncode != 0:
        raise RuntimeError(f"CLI error: {result.stderr or 'Unknown error'}")
    
    return {"ok": True, "data": None}


def send_email(
    to: Union[str, List[str]],
    subject: str,
    body: Optional[str] = None,
    body_file: Optional[str] = None,
    cc: Optional[Union[str, List[str]]] = None,
    bcc: Optional[Union[str, List[str]]] = None,
    attachments: Optional[Union[str, List[str]]] = None,
    body_format: Optional[str] = None,
    dry_run: bool = False,
    auto_confirm: bool = True
) -> Dict[str, Any]:
    """
    Send an email via agently-cli.
    
    Args:
        to: Recipient email address(es). Required.
        subject: Email subject. Required.
        body: Email body content (HTML or plain text).
        body_file: Path to file containing email body (alternative to body).
        cc: CC recipient(s).
        bcc: BCC recipient(s).
        attachments: File path(s) to attach.
        body_format: Force body format ('plain' or 'html').
        dry_run: Print API calls without executing.
        auto_confirm: Automatically confirm and send (default True).
        
    Returns:
        Dict with 'ok' and 'data' fields containing send result.
        
    Example:
        result = send_email(
            to=["[email protected]", "[email protected]"],
            subject="Meeting Tomorrow",
            body="<p>Hi all,</p><p>Let's meet at 10am.</p>",
            cc=["[email protected]"]
        )
    """
    # Normalize recipients to list
    if isinstance(to, str):
        to = [to]
    if cc and isinstance(cc, str):
        cc = [cc]
    if bcc and isinstance(bcc, str):
        bcc = [bcc]
    if attachments and isinstance(attachments, str):
        attachments = [attachments]
    
    # Build command arguments
    args = ["message", "+send"]
    
    for recipient in to:
        args.extend(["--to", recipient])
    
    args.extend(["--subject", subject])
    
    if body:
        args.extend(["--body", body])
    elif body_file:
        args.extend(["--body-file", body_file])
    else:
        raise ValueError("Either 'body' or 'body_file' must be provided")
    
    if cc:
        for c in cc:
            args.extend(["--cc", c])
    
    if bcc:
        for b in bcc:
            args.extend(["--bcc", b])
    
    if attachments:
        for att in attachments:
            args.extend(["--attachment", att])
    
    if body_format:
        args.extend(["--body-format", body_format])
    
    if dry_run:
        args.append("--dry-run")
    
    # First call - get confirmation token
    result = _run_cli(args)
    
    # Check if confirmation is required
    if result.get("ok") and result.get("data", {}).get("confirmation_required"):
        confirmation_token = result["data"].get("confirmation_token")
        
        if not auto_confirm or not confirmation_token:
            # Return for manual confirmation
            return result
        
        # Second call - confirm and send
        args.extend(["--confirmation-token", confirmation_token])
        result = _run_cli(args)
    
    return result


def list_messages(
    limit: Optional[int] = None,
    folder: Optional[str] = None,
    unread_only: bool = False
) -> Dict[str, Any]:
    """
    List emails in inbox.
    
    Args:
        limit: Maximum number of messages to return.
        folder: Folder to list (e.g., 'inbox', 'sent').
        unread_only: Only return unread messages.
        
    Returns:
        Dict with 'ok' and 'data' fields containing message list.
    """
    args = ["message", "+list"]
    
    if limit:
        args.extend(["--limit", str(limit)])
    
    if folder:
        args.extend(["--folder", folder])
    
    if unread_only:
        args.append("--unread-only")
    
    return _run_cli(args)


def read_message(message_id: str) -> Dict[str, Any]:
    """
    Read a specific email message.
    
    Args:
        message_id: The message ID to read.
        
    Returns:
        Dict with 'ok' and 'data' fields containing message content.
    """
    args = ["message", "+read", "--id", message_id]
    return _run_cli(args)


def search_messages(query: str, limit: Optional[int] = None) -> Dict[str, Any]:
    """
    Search emails by keyword.
    
    Args:
        query: Search keyword.
        limit: Maximum number of results.
        
    Returns:
        Dict with 'ok' and 'data' fields containing search results.
    """
    args = ["message", "+search", "--q", query]
    
    if limit:
        args.extend(["--limit", str(limit)])
    
    return _run_cli(args)


def reply_to_message(
    message_id: str,
    body: str,
    reply_all: bool = False
) -> Dict[str, Any]:
    """
    Reply to an email message.
    
    Args:
        message_id: The message ID to reply to.
        body: Reply body content.
        reply_all: Reply to all recipients.
        
    Returns:
        Dict with 'ok' and 'data' fields containing reply result.
    """
    args = ["message", "+reply", "--id", message_id, "--body", body]
    
    if reply_all:
        args.append("--reply-all")
    
    result = _run_cli(args)
    
    # Handle two-phase confirmation
    if result.get("ok") and result.get("data", {}).get("confirmation_required"):
        confirmation_token = result["data"].get("confirmation_token")
        if confirmation_token:
            args.extend(["--confirmation-token", confirmation_token])
            result = _run_cli(args)
    
    return result


def forward_message(
    message_id: str,
    to: Union[str, List[str]],
    body: Optional[str] = None
) -> Dict[str, Any]:
    """
    Forward an email message.
    
    Args:
        message_id: The message ID to forward.
        to: Recipient email address(es).
        body: Optional additional body content.
        
    Returns:
        Dict with 'ok' and 'data' fields containing forward result.
    """
    if isinstance(to, str):
        to = [to]
    
    args = ["message", "+forward", "--id", message_id]
    
    for recipient in to:
        args.extend(["--to", recipient])
    
    if body:
        args.extend(["--body", body])
    
    result = _run_cli(args)
    
    # Handle two-phase confirmation
    if result.get("ok") and result.get("data", {}).get("confirmation_required"):
        confirmation_token = result["data"].get("confirmation_token")
        if confirmation_token:
            args.extend(["--confirmation-token", confirmation_token])
            result = _run_cli(args)
    
    return result


def upload_attachment(file_path: str) -> Dict[str, Any]:
    """
    Upload a file as attachment.
    
    Args:
        file_path: Path to the file to upload.
        
    Returns:
        Dict with 'ok' and 'data' fields containing upload result.
    """
    args = ["attachment", "+upload", "--file", file_path]
    return _run_cli(args)


def download_attachment(message_id: str, attachment_id: str, output_path: Optional[str] = None) -> Dict[str, Any]:
    """
    Download an attachment from a message.
    
    Args:
        message_id: The message ID.
        attachment_id: The attachment ID.
        output_path: Optional path to save the file.
        
    Returns:
        Dict with 'ok' and 'data' fields containing download result.
    """
    args = ["attachment", "+download", "--msg", message_id, "--att", attachment_id]
    
    if output_path:
        args.extend(["--output", output_path])
    
    return _run_cli(args)


def get_user_info() -> Dict[str, Any]:
    """
    Get current user info and alias list.
    
    Returns:
        Dict with 'ok' and 'data' fields containing user info.
    """
    return _run_cli(["+me"])


# Convenience function for AI callers
def mail_send(
    to: Union[str, List[str]],
    subject: str,
    body: str,
    cc: Optional[Union[str, List[str]]] = None,
    bcc: Optional[Union[str, List[str]]] = None
) -> Dict[str, Any]:
    """
    Simple send function optimized for AI callers.
    
    This is a simplified wrapper around send_email() for easy AI integration.
    
    Args:
        to: Recipient email address(es).
        subject: Email subject.
        body: Email body (HTML supported).
        cc: Optional CC recipient(s).
        bcc: Optional BCC recipient(s).
        
    Returns:
        Result dict with 'ok' boolean and 'data' or 'error'.
        
    Example:
        result = mail_send(
            to="[email protected]",
            subject="Hello",
            body="<p>Hi there!</p>"
        )
        if result.get("ok"):
            print("Email sent successfully!")
        else:
            print(f"Failed: {result}")
    """
    try:
        return send_email(
            to=to,
            subject=subject,
            body=body,
            cc=cc,
            bcc=bcc,
            auto_confirm=True
        )
    except Exception as e:
        return {"ok": False, "error": str(e)}


if __name__ == "__main__":
    # Demo usage
    import sys
    
    if len(sys.argv) < 4:
        print("Usage: python agently_mail.py <to> <subject> <body>")
        print("Example: python agently_mail.py [email protected] 'Hello' '<p>Hi!</p>'")
        sys.exit(1)
    
    result = mail_send(
        to=sys.argv[1],
        subject=sys.argv[2],
        body=sys.argv[3]
    )
    
    print(json.dumps(result, indent=2, ensure_ascii=False))

 

# Agently Mail Python API

Python 封装的 Agent Mail 发信 API,可直接被 AI 调用。

## 快速开始

```python
from agently_mail import mail_send, send_email, list_messages, read_message, search_messages

# 简单发信(推荐 AI 调用)
result = mail_send(
    to="[email protected]",
    subject="Hello",
    body="<p>这是一封测试邮件。</p>"
)

if result.get("ok"):
    print("发送成功!")
else:
    print(f"发送失败: {result}")
```

## API 函数

### `mail_send()` - 简单发信(AI 调用推荐)

```python
result = mail_send(
    to="[email protected]",           # 收件人(字符串或列表)
    subject="邮件主题",               # 主题
    body="<p>邮件正文</p>",           # 正文(支持 HTML)
    cc="[email protected]",           # 抄送(可选)
    bcc="[email protected]"         # 密送(可选)
)
```

### `send_email()` - 完整发信

```python
result = send_email(
    to=["[email protected]", "[email protected]"],
    subject="会议通知",
    body="<p>各位好,</p><p>明天 10 点开会。</p>",
    cc=["[email protected]"],
    attachments=["./report.pdf"],    # 附件
    auto_confirm=True                # 自动确认发送
)
```

### `list_messages()` - 列出邮件

```python
result = list_messages(limit=10, unread_only=True)
```

### `read_message()` - 读取邮件

```python
result = read_message("msg_xxxxx")
```

### `search_messages()` - 搜索邮件

```python
result = search_messages("关键词", limit=10)
```

### `reply_to_message()` - 回复邮件

```python
result = reply_to_message("msg_xxxxx", "收到,谢谢!")
```

### `forward_message()` - 转发邮件

```python
result = forward_message("msg_xxxxx", to="[email protected]")
```

### `get_user_info()` - 获取用户信息

```python
result = get_user_info()
# 返回邮箱地址、配额、权限等信息
```

## 命令行使用

```bash
python agently_mail.py [email protected] "主题" "<p>正文</p>"
```

## 返回格式

所有函数返回统一格式:

```python
{
    "ok": True,          # 是否成功
    "data": { ... }      # 返回数据
}
```

失败时:

```python
{
    "ok": False,
    "error": "错误信息"
}
```

## 依赖

- Python 3.6+
- agently-cli(已安装并授权)

 

提示词

  📁 文件结构

  ```
  agent-mail-guide/
  ├── README.md                    # 主文档(安装指南 + 目录)
  ├── install.sh                   # 一键安装脚本
  ├── agent_mail_api.py            # Python API 封装(完整)
  ├── agent_prompt_template.md     # Agent 提示词模板
  └── examples.py                  # 使用示例代码
  ```

  📦 内容概览

  1. CLI 安装指南 (README.md + install.sh)

    • 前置要求检查
    • 四步安装流程
    • 常用命令速查表

  2. Python API 封装 (agent_mail_api.py)

    • AgentMailAPI 类:完整封装所有 CLI 操作
    • 类型安全:使用 Enum 和 dataclass
    • 错误处理:自定义异常类,根据 exit code 分类处理
    • 两阶段确认:自动管理 confirmation_token
    • 便捷函数:quick_send(), quick_search()

  3. Agent 提示词模板 (agent_prompt_template.md)

    • 完整系统提示词:可直接用于 Agent 系统提示
    • 场景化片段:搜索、发送、回复、下载等场景
    • Python 集成提示词:API 使用说明
    • 快速集成模板:最小集成 + 完整集成
    • 常见问题处理:FAQ 格式

  🚀 快速使用

  ```bash
  # 安装
  cd agent-mail-guide
  bash install.sh

  # 授权
  agently-cli auth login

  # Python 使用
  python examples.py
  ```

  所有文档已整理完成,可直接用于其他 Agent 集成!

 

 

华为云AI Shell体验:免费4核7G云服务器,附自动保活脚本

2026-06-26 08:40:38

华为云AI Shell体验:免费4核7G云服务器,附自动保活脚本

最近腾讯推出了 Agent Mail,原本打算体验一番。不过考虑到需要本地运行 Agent,多少还是有点折腾。

如果你只是想体验 AI Agent 在终端中的能力,其实华为云还有一个容易被忽略的产品:AI Shell。

无需本地部署,打开浏览器即可使用,体验相当不错。

更多内容:华为云 / 免费云服务器

 

官网地址

https://developer.huaweicloud.com/aishell.html

 

简单介绍

云端作业环境一键拉起,开箱即用 一键快速拉起专属云端作业环境,预置AI CLI、精选华为云资源管理最佳实践等技能,无需复杂配置,开箱即用。容器运行环境免费使用,搭载多款预置大模型,轻松开展各类云上作业。

AI Shell 本质上就是一个集成 AI 能力的 Web Shell

打开浏览器即可获得一台云端 Linux,无需安装任何环境,同时还内置了 AI CLI 和华为云 Skills。

你可以直接通过自然语言让 AI 帮你执行 Shell 命令,也可以退出 AI Chat,当成一台普通 Linux 使用。

这里华为云深度集成了自家的Skills(skills.huaweicloud.com)

 

使用限制

每个账户同时可打开 3 个 Shell(相当于同时拥有 3 台临时云端 Linux服务器)。

每个 Shell 默认有效期 6 小时,到期前可点击 延期 按钮继续使用,否则容器会自动销毁。

 

机器配置

4核心 + 7G内存 + 130G磁盘 + Huawei Cloud EulerOS 2.0 系统 + 北京数据中心

----------------------------------------------------------------------
 CPU Model          : CPU model not detected
 CPU Cores          : 4 @ 2900.0000 MHz
 AES-NI             : ✓ Enabled
 VM-x/AMD-V         : ✗ Disabled
 Total Disk         : 136.1 GB (8.6 GB Used)
 Total RAM          : 7.2 GB (990.6 MB Used)
 System Uptime      : 3 days, 5 hour 9 min
 Load Average       : 0.22, 0.20, 0.18
 OS                 : Huawei Cloud EulerOS 2.0 (aarch64)
 Arch               : aarch64 (64 Bit)
 Kernel             : 5.10.0-182.0.0.95.r3353_273.hce2.aarch64
 TCP Congestion Ctrl: cubic
 Virtualization     : DOCKER
 IPv4/IPv6          : ✓ Online / ✗ Offline
 Organization       : AS55990 Huawei Cloud Service data center
 Location           : Beijing / CN
 Region             : Beijing
----------------------------------------------------------------------
 I/O Speed(1st run) : 187 MB/s
 I/O Speed(2nd run) : 156 MB/s
 I/O Speed(3rd run) : 156 MB/s
 I/O Speed(average) : 166.3 MB/s
----------------------------------------------------------------------
 Node Name        Upload Speed      Download Speed      Latency     
 Speedtest.net    47.75 Mbps        47.82 Mbps          4.68 ms     
 Los Angeles, US  47.77 Mbps        47.60 Mbps          186.09 ms   
 Dallas, US       47.79 Mbps        0.48 Mbps           208.01 ms   
 Montreal, CA     47.79 Mbps        0.98 Mbps           242.41 ms   
 Paris, FR        47.76 Mbps        46.06 Mbps          259.33 ms   
 Amsterdam, NL    47.80 Mbps        1.71 Mbps           288.57 ms   
 Suzhou, CN       Test failed       
 Ningbo, CN       Test failed       
 Hong Kong, CN    2.61 Mbps         9.74 Mbps           45.44 ms    
 Singapore, SG    15.29 Mbps        50.64 Mbps          180.75 ms   
 Taipei, CN       47.77 Mbps        14.63 Mbps          165.67 ms   
 Tokyo, JP        1.58 Mbps         49.88 Mbps          222.86 ms   
----------------------------------------------------------------------
 Finished in        : 7 min 44 sec
 Timestamp          : 2026-06-25 22:43:07 CST
----------------------------------------------------------------------

 

核心步骤

1、首次打开 Shell

首次进入 AI Shell 时,默认会进入 AI Chat 模式。你可以直接通过自然语言与 AI 对话,让它在 Shell 中执行相应的命令,无需手动输入复杂的终端指令。

 

2、切换到普通 Shell

如果不想使用 AI Chat,只需连续按 两次 Ctrl + C 即可退出聊天模式,返回到普通的 Shell 界面。之后就可以像使用普通 Linux 终端一样,自由执行各种命令。

 

如何保活

下面是一段可用于【篡改猴】的脚本,每2小时自动点击延期按钮。

// ==UserScript==
// @name         Refresh Auto Click
// @namespace    https://51.ruyo.net
// @version      1.0
// @description  每2小时自动执行一次点击
// @author       malaohu
// @match        https://devstation.connect.huaweicloud.com/*
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    // 执行点击
    function autoClick() {
        console.log("[AutoClick] " + new Date().toLocaleString() + " 开始执行...");

        const el = document.getElementsByClassName("bottom-content")[0]?.childNodes[1];

        if (el) {
            el.click();
            console.log("[AutoClick] 点击成功");
        } else {
            console.log("[AutoClick] 未找到目标元素");
        }
    }

    // 页面加载完成后等待12秒执行第一次
    window.addEventListener('load', () => {
        setTimeout(() => {
            autoClick();

            // 之后每2小时执行一次
            setInterval(autoClick, 2 * 60 * 60 * 1000);

        }, 12000);
    });

})();

 

 

篡改猴?

应该有不少童鞋第一次用Tampermonkey(篡改猴),其实我就是第一次用。简单快速介绍步骤。

1,安装扩展程序,地址:https://u1.cm/ENWSY3

2,如果该扩展没被启动?访问 chrome://extensions/ 启用下

3,篡改猴扩展 - 右键 - 管理扩展程序 - 允许运行用户脚本 - 开启

4,篡改猴扩展 - 鼠标单击 - 添加新脚本

5,粘贴上面的脚本即可,记得启用该脚本

6,刷新一下AI Shell 的界面(必须是页面重新加载)即可触发自动脚本

 

最后总结

如果你想体验 AI + Terminal,但又不想折腾本地环境,那么华为云 AI Shell 确实是一个不错的选择。

相比需要本地部署的方案,它真正做到了开箱即用:打开浏览器就是一台 Linux,AI Chat、Shell、Skills 都已经准备好了。对于临时开发、运维排障、脚本测试甚至学习 Linux,都非常方便。

另外,本文也分享了一个简单的 Tampermonkey 保活脚本,可以自动帮你点击延期按钮,避免频繁手动续期。

感兴趣的话,不妨亲自体验一下,也欢迎在评论区分享你的使用感受。

 

Wasmer免费云部署:支持GitHub一键部署,可绑自定义域名

2026-06-25 08:40:03

Wasmer 是一个上手简单、部署便捷的云应用托管平台,支持 GitHub 一键部署、文件上传部署以及多种官方模板快速创建项目。

免费版提供 3 个应用、100GB+ 级别的月度资源额度以及自定义域名功能,对于个人开发者、学生和技术爱好者来说已经足够用于学习、测试和项目演示。

 

官方地址

https://wasmer.io/signup

账号注册支持Google账号 和 Github直接授权登录!该平台可不登录直接部署,不登录的话部署的站点仅1小时有效。

 

免费套餐

免费版本:Hobby - free

项目 免费额度
月费 免费
成员数 1 人
应用数量 3 个
请求数(Requests) 100,000 次/月
带宽流量 150 GB/月
Compute Hours 100 小时
Active CPU Hours 50 小时
存储空间 1 GB
数据库 每个 App 1 个数据库,总计 100 MB
自定义域名 50 个
Build Minutes 500 分钟
CDN 全球 Edge Network
SSL 免费自动配置
日志保留 1 天
支持 Community Support

 

部署步骤

1,注册登录平台后,访问地址:https://wasmer.io/new

2,可以选择上传文件夹;也支持直接Github授权部署;也可以选择模板部署支持WP,Flask等等;

3,可设置打包编译方式等

 

4,部署成功了!

 

5,访问Domains,添加要绑定的域名。按要求添加解析即可!

 

演示地址

ruyonet.wasmer.app

wordpress-7311c.wasmer.app

绑定域名:wasmer.ruyonet.kdns.fr

 

动态语言

目前Wasmer 的运行时环境几乎支持所有其他编程语言

  • Rust
  • Python
  • JavaScript
  • Go
  • PHP
  • Ruby
  • C / C++
  • .NET

 

最后总结

不过需要注意的是,免费套餐在计算资源、存储空间以及日志保留时间方面存在一定限制,更适合用于开发测试、个人展示和功能验证,不建议直接承载高并发或生产级业务。

免费领 50 万 Tokens!EdgeOne Makers AI Agent 部署实测

2026-06-23 22:36:57

免费领 50 万 Tokens!EdgeOne Makers AI Agent 部署实测

EdgeOne Pages 已正式升级为 EdgeOne Makers!

除了原有的 Web 应用托管能力外,我们新增了 AI Agent 托管能力,帮助开发者将 GitHub 上的 Agent 项目快速部署上线,获得可直接分享给用户体验的 Demo 站点。

目前支持 OpenAI Agents SDK、Claude Agent SDK、LangGraph、CrewAI 等主流 Agent 开发框架,开发者无需自行配置服务器即可完成部署。

 

活动地址

国内地址:https://cloud.tencent.com/act/pro/edgeone-makers-agent?from=30102

海外地址:https://pages.edgeone.ai/zh/solutions/ai-agent?activity=ruyo

当前官方推出“限时加码”活动,参与活动并填写邀请码 31278891,即可领取最高 50 万 Token 资源。

 

使用体验

1,首次访问需要授权开通服务!

 

2,本次测试选择官方提供的 OpenAI Agent Starter 模板进行部署演示。

 

3,必须选择一个Git平台支持Github,GitLab,Gitee等才能继续。

 

4,完成仓库授权和基础配置后,按照向导提示继续操作,系统会自动完成构建与部署,整个过程仅需几分钟。

 

 

5,部署完成后,系统会自动生成预览地址,用户可直接通过浏览器访问并体验 Agent 功能。如需长期使用可绑定自定义域名!

 

最后总结

从实际体验来看,EdgeOne Makers 的 AI Agent 托管流程相对简单,开发者无需关注服务器部署、域名配置等运维工作,只需连接代码仓库即可快速获得可访问的演示站点。

对于希望快速验证 Agent 产品原型、展示项目成果或进行团队协作演示的开发者而言,是一个较为便捷的选择。

当前官方活动期间还可领取额外 Token 资源,感兴趣的开发者可以体验一下。

 

RustDesk内网远程控制教程:开启IP直连,无需自建服务器

2026-06-18 08:40:37

26年6月23日更新:实测UU远程控制内网设备优先走内网,不过必须得有公网登录账号,完成打洞后才可使用。

2023年博主曾推荐过RustDesk,自建使用非常方便!历史文章:远程控制软件RustDesk自建服务器全平台部署及使用教程

自建前提你得有一个公网的服务器,没有?推荐使用免费的:网易UU远程,可能是目前最好的免费远程控制软件

UU远程目前还是非常良心的!登录同一个账号的设备都可相互远程,也可以远程控制未登录账号的设备!

 

前言

从去年年底开始,“养小龙虾”突然火了起来,Mac mini 一度卖到缺货。我也终于忍不住入手了一台。

其实去年丐版价格降到2800多元时就有点心动,但总觉得用处不大,一直没下手。没想到兜兜转转,最后还是买了。

这台Mac mini是  M4芯片 + 32G内存 + 256G硬盘,使用了教育优惠+国补 5609元入手!

之前也折腾过小龙虾,但实际体验只能说一般。服务状态经常不太稳定,不是掉线就是连接异常。

最近随着大家基本都人手一个 OpenAI K12,美国大兵,Go订阅 等等,Codex 的讨论度和口碑也明显提升了不少。电脑里的反重力突然不香了!

不过我很快遇到了一个问题,家里的 Windows 用的是 LTSC 版本,无法安装 Codex。

公司的电脑是Win 11,但博主2023年就把自动更新彻底关了。

Microsoft Store 也处于不可用状态,结果折腾半天还是没能装上 Codex。

哎,这类型的软件针对Mac一般都兼容特别好,这下Mac mini 用上了!!!

 

问题

Mac mini 放在家里!在公司可通过UU远程访问。速度感觉还行。

在家里访问Mac,也用UU远程确实有点浪费?在内网能不能远程Mac呢?

第一时间想到的就是 RustDesk,之前就知道它支持局域网直连。而且不需要搭建中转服务器。

 

设置

RustDesk 只需简单设置几步,就能让局域网内其他设备直接连接。

第一步:被控端,设置 - 安全 - 勾选 允许IP直接访问,端口保持默认的21118。

 

第二步:主控端,直接输入被控端的内网IP,点击连接即可!

 

第三步:连接成功后即可开始远程控制,操作十分流畅。

 

总结

1,简单,方便,只能内网互通即可

2,如内网上游想访问子网的电脑?仅需将 21118 TCP/UPD协议转发到子网的IP设备即可,大部分路由器都支持。

3,RustDesk IP直连模式适用于局域网环境。如果跨公网访问可试一试内网穿透(风险大!谨慎!)

历史文章:frp专注于内网穿透的反向代理应用,部署使用实战教程

4,如果连接失败,请检查被控设备系统防火墙是否放行 RustDesk,Windows 防火墙、macOS 防火墙均可能拦截 21118 端口通信。

 

甲骨文云ARM免费主机额度缩水,付费账户需注意扣费风险

2026-06-16 10:02:05

博主最近几年陆续更新了一系列关于 甲骨文云 的文章!也许有你需要的内容哦~

目前全球最良心的服务器运营商,甲骨文云必须上榜首!从 2019-09-17一直免费用到现在!

全网首发甲骨文云免费服务器:申请Oracle Cloud永久免费服务+300美元试用额度

最近甲骨文云即将对ARM免费服务器额度调整,大家务必注意!付费账户建议提前操作!

 

免费额度

26年6月12日左右,有童鞋说甲骨文云免费额度调整了!上去一看果然是!

官方始终免费说明:https://docs.oracle.com/en-us/iaas/Content/FreeTier/freetier_topic-Always_Free_Resources.htm

 

这次调整主要是针对ARM的服务器!之前是能开通4C + 24G内存,以最新的额度只能开 2C +12G内存!

项目 旧版本 新官方版本
ARM Always Free 4 OCPU / 24GB
ARM Always Free 2 OCPU / 12GB ✅ 最新
AMD Micro 2× 1CPU / 1GB 不变

 

超出额度

童鞋们最关心的是超了免费额度会怎么样?目前官方还没统一公布这方面的说明!网上大多都是猜测!

下面是官方FAQ说明:

但是,如果您供应的 Ampere A1 Compute 实例数超过了 Always Free 租户可用的实例,除非您升级到付费账户,否则所有现有 Ampere A1 实例将被禁用并在 30 天后被删除。要以 Always Free 用户的身份继续使用基于 Arm 的现有实例,请在试用结束之前,确保租户中的所有 Ampere A1 计算实例中 OCPU 和内存的总使用量均在“Always Free”限制范围内。

 

免费用户:可不用担心,就算怎么超也不会产生费用!最多停服务器。

付费账户:最好提前降配!下面有降配操作!

关于付费账户说明:甲骨文云(Oracle Cloud)升级付费账户,免费云服务器不再被停用了

 

时间太长忘记是否是付费账户?

左侧菜单 - 选择计费和成本管理 - 升级和管理付款 可见是否是付费账户!如图则为付费账户!

 

手动降配

1,实例详情,右上角可见操作按钮 - 更多操作 - 编辑

 

2,修改OCPU 和 内存 保存更改!保存重启实例即可!

 

 

最后总结

1,官方文档12日更新,但是官方一直没有明确时间点。也没有明确针对付费账户的处理方案,务必关注邮件通知。

2,担心被扣费,建议提前降配。避免产生账单,一旦产生扣费账单不支付的话账户可能就没了。

3,如果这个政策强制执行,未来几个个月可能有闲置出大量资源。到时候新创建实例容易一些。

4,免费用户如果开通了4C + 24G内存服务器,做好随时被停机的准备!做好备份!观察官方政策!

5,后续更新本文会更新!!!