标题: 大家手机都多久换一次
作者: Mailkoo
内容: iPhone XR还在用
时间: Tue, 24 Jun 2025 09:11:53 +0000
作者: 大帅哥
回复: 四五年了还在用
时间: Tue, 24 Jun 2025 09:12:41 +0000
作者: darkbfly
回复: 用坏了才换 哈哈哈
时间: Tue, 24 Jun 2025 09:13:12 +0000
作者: 方块AI
回复: iPhone 什么时候出我想买的什么时候换,上次换是因为灵动岛
时间: Tue, 24 Jun 2025 09:13:16 +0000
作者: CodeWu
回复: 目前手机在手2年多了,等mate 80pro
时间: Tue, 24 Jun 2025 09:13:18 +0000
作者: 9C
回复: 不坏不换
时间: Tue, 24 Jun 2025 09:13:21 +0000
作者: shock
回复: 不坏不换 华为meta20 用到现在了
时间: Tue, 24 Jun 2025 09:13:52 +0000
作者: darksora502
回复: 以前是年年换,从21年买了13PM后,上个月才换了16PM,直接就变成3年半一换了。
时间: Tue, 24 Jun 2025 09:13:57 +0000
作者: Meta
回复: 这么说吧,我初中的时候,那台苹果5s,它电池包都把后盖顶起来了,后盖板的封胶都失效了,能看到里面的电器元件了,屏幕左上角已经有黑点了,但!我还是用了1个月,最后是我妈看不下去,换了自己的手机,把老的给了我,现在想想,那个时候,是真难杀,新手保护了,属于是
时间: Tue, 24 Jun 2025 09:15:16 +0000
作者: 齐天大圣
回复: 安卓两三年就得换了
时间: Tue, 24 Jun 2025 09:23:30 +0000
作者: 一颗小鸡蛋
回复: 平均三年吧
时间: Tue, 24 Jun 2025 09:41:18 +0000
作者: GMYXDS
回复: 4-5年
时间: Tue, 24 Jun 2025 09:49:57 +0000
作者: 嘎蹦咔咔
回复: 三四年吧 QwQ 一般都是有大事件才换 比如毕业
时间: Tue, 24 Jun 2025 09:50:29 +0000
作者: 思聪.王
回复: 3年,用的用不动了就换。下次更换需要esim出现
时间: Tue, 24 Jun 2025 09:51:17 +0000
作者: JayXuZ
回复: 快5年了 说实话,除了相机跟不上时代了,其他完全感觉不到换的理由 每天就刷个视频,看个小说,完全没有换的必要 我又是个扫码用户,基本不拍照,所以也不打算换
时间: Tue, 24 Jun 2025 09:54:42 +0000
作者: coveydzblrsjlay
回复: 和存储空间有关. 我目前使用时间最久的是一台16+1T的红米千元机. 更贵的机器反而用的没这台久.
时间: Tue, 24 Jun 2025 09:58:19 +0000
作者: Aumae
回复: 坏了并且口袋里有钱,或者坏了并且白条24期免息才会换。
时间: Tue, 24 Jun 2025 10:02:10 +0000
作者: wood
回复: 才毕业的时候基本上一年一换, 现在 到不怎么换手机了, 毕业的时候好像是 小米10u, 然后换了iphone 13,再然后就换了小米 14pro,目前用了 1年半 还没换
时间: Tue, 24 Jun 2025 10:03:34 +0000
作者: 冬濑
回复: 基本都是用到坏,或者实在是卡顿的不行才换。 ₍^˶ ╸𖥦 ╸˵^₎⟆
时间: Tue, 24 Jun 2025 10:06:04 +0000
作者: shock
回复: Meta: 它电池包都把后盖顶起来了 消息电池爆炸或者自燃哦
时间: Tue, 24 Jun 2025 10:09:57 +0000
作者: 怪怪的科长
回复: 实在不能用了再换,现在的手机是19年买的红米。
时间: Tue, 24 Jun 2025 10:23:17 +0000
作者: 风之蓝
回复: 快五年了! 总结 (click for more details)
时间: Tue, 24 Jun 2025 10:26:36 +0000
作者: 凌好好
回复: 三年就好
时间: Tue, 24 Jun 2025 10:28:16 +0000
作者: 合本丶
回复: 这次等17出就换17pro了,我现在的12mini续航已经崩到不能再崩了,健康度只有68%,日常刷刷也是卡到不行
时间: Tue, 24 Jun 2025 10:30:27 +0000
作者: kbtit_25
回复: 不玩手游,坏了才换,不然顶多换电池
时间: Tue, 24 Jun 2025 10:34:34 +0000
链接: https://linux.do/t/topic/747113/30
作者: Mailkoo
内容: iPhone XR还在用
时间: Tue, 24 Jun 2025 09:11:53 +0000
作者: 大帅哥
回复: 四五年了还在用
时间: Tue, 24 Jun 2025 09:12:41 +0000
作者: darkbfly
回复: 用坏了才换 哈哈哈
时间: Tue, 24 Jun 2025 09:13:12 +0000
作者: 方块AI
回复: iPhone 什么时候出我想买的什么时候换,上次换是因为灵动岛
时间: Tue, 24 Jun 2025 09:13:16 +0000
作者: CodeWu
回复: 目前手机在手2年多了,等mate 80pro
时间: Tue, 24 Jun 2025 09:13:18 +0000
作者: 9C
回复: 不坏不换
时间: Tue, 24 Jun 2025 09:13:21 +0000
作者: shock
回复: 不坏不换 华为meta20 用到现在了
时间: Tue, 24 Jun 2025 09:13:52 +0000
作者: darksora502
回复: 以前是年年换,从21年买了13PM后,上个月才换了16PM,直接就变成3年半一换了。
时间: Tue, 24 Jun 2025 09:13:57 +0000
作者: Meta
回复: 这么说吧,我初中的时候,那台苹果5s,它电池包都把后盖顶起来了,后盖板的封胶都失效了,能看到里面的电器元件了,屏幕左上角已经有黑点了,但!我还是用了1个月,最后是我妈看不下去,换了自己的手机,把老的给了我,现在想想,那个时候,是真难杀,新手保护了,属于是
时间: Tue, 24 Jun 2025 09:15:16 +0000
作者: 齐天大圣
回复: 安卓两三年就得换了
时间: Tue, 24 Jun 2025 09:23:30 +0000
作者: 一颗小鸡蛋
回复: 平均三年吧
时间: Tue, 24 Jun 2025 09:41:18 +0000
作者: GMYXDS
回复: 4-5年
时间: Tue, 24 Jun 2025 09:49:57 +0000
作者: 嘎蹦咔咔
回复: 三四年吧 QwQ 一般都是有大事件才换 比如毕业
时间: Tue, 24 Jun 2025 09:50:29 +0000
作者: 思聪.王
回复: 3年,用的用不动了就换。下次更换需要esim出现
时间: Tue, 24 Jun 2025 09:51:17 +0000
作者: JayXuZ
回复: 快5年了 说实话,除了相机跟不上时代了,其他完全感觉不到换的理由 每天就刷个视频,看个小说,完全没有换的必要 我又是个扫码用户,基本不拍照,所以也不打算换
时间: Tue, 24 Jun 2025 09:54:42 +0000
作者: coveydzblrsjlay
回复: 和存储空间有关. 我目前使用时间最久的是一台16+1T的红米千元机. 更贵的机器反而用的没这台久.
时间: Tue, 24 Jun 2025 09:58:19 +0000
作者: Aumae
回复: 坏了并且口袋里有钱,或者坏了并且白条24期免息才会换。
时间: Tue, 24 Jun 2025 10:02:10 +0000
作者: wood
回复: 才毕业的时候基本上一年一换, 现在 到不怎么换手机了, 毕业的时候好像是 小米10u, 然后换了iphone 13,再然后就换了小米 14pro,目前用了 1年半 还没换
时间: Tue, 24 Jun 2025 10:03:34 +0000
作者: 冬濑
回复: 基本都是用到坏,或者实在是卡顿的不行才换。 ₍^˶ ╸𖥦 ╸˵^₎⟆
时间: Tue, 24 Jun 2025 10:06:04 +0000
作者: shock
回复: Meta: 它电池包都把后盖顶起来了 消息电池爆炸或者自燃哦
时间: Tue, 24 Jun 2025 10:09:57 +0000
作者: 怪怪的科长
回复: 实在不能用了再换,现在的手机是19年买的红米。
时间: Tue, 24 Jun 2025 10:23:17 +0000
作者: 风之蓝
回复: 快五年了! 总结 (click for more details)
时间: Tue, 24 Jun 2025 10:26:36 +0000
作者: 凌好好
回复: 三年就好
时间: Tue, 24 Jun 2025 10:28:16 +0000
作者: 合本丶
回复: 这次等17出就换17pro了,我现在的12mini续航已经崩到不能再崩了,健康度只有68%,日常刷刷也是卡到不行
时间: Tue, 24 Jun 2025 10:30:27 +0000
作者: kbtit_25
回复: 不玩手游,坏了才换,不然顶多换电池
时间: Tue, 24 Jun 2025 10:34:34 +0000
链接: https://linux.do/t/topic/747113/30
LINUX DO
大家手机都多久换一次
和存储空间有关. 我目前使用时间最久的是一台16+1T的红米千元机. 更贵的机器反而用的没这台久.
okens_to_million(row["total_tokens"]) print( f"{token_display}{' ' * (col_token_name_width - get_display_width(token_display))}" f"{req_count}{' ' * (col_token_req_width - get_display_width(req_count))}" f"{tokens_val}" ) def get_model_stats(cursor, where_clause, params): """获取模型统计数据""" print("\n" + "=" * 36 + " 模型统计 " + "=" * 36) final_params = list(params) final_where_clause = where_clause + " AND l.model_name != ''" query_model = f""" SELECT l.model_name, COUNT(l.id) as request_count, COALESCE(SUM(l.prompt_tokens + l.completion_tokens), 0) AS total_tokens FROM logs l {final_where_clause} GROUP BY l.model_name ORDER BY request_count DESC LIMIT 5 """ cursor.execute(query_model, final_params) model_stats = cursor.fetchall() col_model_name_width = 42 col_req_width = 20 col_tokens_width = 20 header_model_name = "模型名称" header_req = "请求次数" header_tokens = "消耗Tokens" print( f"{header_model_name}{' ' * (col_model_name_width - get_display_width(header_model_name))}" f"{header_req}{' ' * (col_req_width - get_display_width(header_req))}" f"{header_tokens}" ) print("-" * (col_model_name_width + col_req_width + col_tokens_width)) for row in model_stats: model_display = row["model_name"] req_count = str(row["request_count"]) tokens_val = format_tokens_to_million(row["total_tokens"]) print( f"{model_display}{' ' * (col_model_name_width - get_display_width(model_display))}" f"{req_count}{' ' * (col_req_width - get_display_width(req_count))}" f"{tokens_val}" ) def get_ip_stats(cursor, where_clause, params): """获取IP统计数据""" print("\n" + "=" * 37 + " IP统计 " + "=" * 37) final_params = list(params) final_where_clause = where_clause + " AND l.ip IS NOT NULL AND l.ip != ''" query_ip = f""" SELECT l.ip, COUNT(l.id) as request_count, COALESCE(SUM(l.prompt_tokens + l.completion_tokens), 0) AS total_tokens FROM logs l {final_where_clause} GROUP BY l.ip ORDER BY request_count DESC LIMIT 5 """ cursor.execute(query_ip, final_params) ip_stats = cursor.fetchall() col_ip_name_width = 42 col_req_width = 20 col_tokens_width = 20 header_ip_name = "IP地址" header_req = "请求次数" header_tokens = "消耗Tokens" print( f"{header_ip_name}{' ' * (col_ip_name_width - get_display_width(header_ip_name))}" f"{header_req}{' ' * (col_req_width - get_display_width(header_req))}" f"{header_tokens}" ) print("-" * (col_ip_name_width + col_req_width + col_tokens_width)) for row in ip_stats: ip_display = row["ip"] req_count = str(row["request_count"]) tokens_val = format_tokens_to_million(row["total_tokens"]) print( f"{ip_display}{' ' * (col_ip_name_width - get_display_width(ip_display))}" f"{req_count}{' ' * (col_req_width - get_display_width(req_count))}" f"{tokens_val}" ) def generate_report(cli_args=None): """主函数,执行所有统计和报告生成任务""" connection = get_db_connection() if not connection: return cursor = None try: cursor = connection.cursor(dictionary=True) where_clause = "" params = () # --- 动态生成错误过滤条件 --- error_filter_clause = "" error_filter_params = [] if IGNORED_ERROR_PATTERNS: for pattern in IGNORED_ERROR_PATTERNS: error_filter_clause += " AND l.content NOT LIKE %s" error_filter_params.append(f"%{pattern}%") print(f"\n报告生成时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}") if not cli_args: # Default to last 24 hours if no arguments hours = 24 start_time = datetime.now() - timedelta(hours=hours) where_clause = "WHERE l.created_at >= %s" params = (int(start_time.timestamp()),) print(f"查询模式: 默认最近 {hours} 小时") print(f"查询时间范围: {start_time.strftime('%Y-%m-%d %H:%M:%S')} 至今") else: print("查询模式: 自定义时间范围") start_time, end_time = None, None # Case 1: Integer for hours if len(cli_args) == 1: try: hours = int(cli_args[0]) if hours <= 0: print("错误: 小时数必须为正整数。") return start_time = datetime.now() - timedelta(hours=hours) where_clause = "WHERE l.created_at >= %s" params = (int(start_time.timestamp()),) print( f"查询时间范围: 最近 {hours} 小时 ({start_time.strftime('%Y-%m-%d %H:%M:%S')} 至今)" ) except ValueError: # Not an integer, treat as start time string start_time = parse_time_string(cli_args[0]) i
标题: 【T佬】New-API站长都可以用的统计脚本
作者: 唐洛
内容: # -*- coding: utf-8 -*- import mysql.connector import sys from datetime import datetime, timedelta from decimal import Decimal # --- 可配置区域 --- # 1. 数据库连接信息 DB_CONFIG = { "host": "127.0.0.1", "port": 3306, "user": "root", "password": "123456", "database": "new-api", } # 2. 错误率统计时要忽略的错误内容关键字 IGNORED_ERROR_PATTERNS = [ "the maximum number of tokens", "user quota is not enough", ] # --- 辅助函数 --- def get_display_width(s): """计算字符串的显示宽度,中文字符计为2,英文字符计为1""" width = 0 for char in str(s): # 确保输入是字符串 if "\u4e00" <= char <= "\u9fff": width += 2 else: width += 1 return width def format_tokens_to_million(tokens): """将token数量格式化为百万单位(m),保留两位小数""" if not isinstance(tokens, (int, float, Decimal)): return "0.00m" return f"{float(tokens) / 1_000_000:.2f}m" def parse_time_string(time_str): """ 解析多种格式的时间字符串,返回 datetime 对象。 支持格式: Y-m-d H:M:S, Y-m-d H:M, Y-m-d, H:M, m-d H:M """ now = datetime.now() formats = [ "%Y-%m-%d %H:%M:%S", "%Y-%m-%d %H:%M", "%Y-%m-%d", "%H:%M", "%H:%M:%S", "%m-%d %H:%M", ] for fmt in formats: try: if fmt in ["%H:%M", "%H:%M:%S"]: dt = datetime.strptime(time_str, fmt) return now.replace( hour=dt.hour, minute=dt.minute, second=dt.second, microsecond=0 ) if fmt == "%m-%d %H:%M": dt = datetime.strptime(time_str, fmt) return dt.replace(year=now.year) dt = datetime.strptime(time_str, fmt) return dt except ValueError: continue return None # --- 脚本核心功能 --- def get_db_connection(): """根据 DB_CONFIG 建立并返回数据库连接""" try: connection = mysql.connector.connect(**DB_CONFIG) return connection except mysql.connector.Error as err: print(f"数据库连接失败: {err}") return None def get_user_stats(cursor, where_clause, params): """获取用户统计数据""" print("\n" + "=" * 36 + " 用户统计 " + "=" * 36) query_user = f""" SELECT l.user_id, l.username, COUNT(l.id) as request_count, COALESCE(SUM(l.prompt_tokens + l.completion_tokens), 0) AS total_tokens FROM logs l {where_clause} GROUP BY l.user_id, l.username ORDER BY request_count DESC LIMIT 5 """ cursor.execute(query_user, params) user_stats = cursor.fetchall() col_user_name_width = 42 col_user_req_width = 20 col_user_tokens_width = 20 header_user_name = "用户名(ID)" header_user_req = "请求次数" header_user_tokens = "消耗Tokens" print( f"{header_user_name}{' ' * (col_user_name_width - get_display_width(header_user_name))}" f"{header_user_req}{' ' * (col_user_req_width - get_display_width(header_user_req))}" f"{header_user_tokens}" ) print("-" * (col_user_name_width + col_user_req_width + col_user_tokens_width)) for row in user_stats: user_display = f"{row['username']}({row['user_id']})" req_count = str(row["request_count"]) tokens_val = format_tokens_to_million(row["total_tokens"]) print( f"{user_display}{' ' * (col_user_name_width - get_display_width(user_display))}" f"{req_count}{' ' * (col_user_req_width - get_display_width(req_count))}" f"{tokens_val}" ) def get_token_stats(cursor, where_clause, params): """获取Token统计数据""" print("\n" + "=" * 36 + " Token统计 " + "=" * 35) final_params = list(params) final_where_clause = where_clause + " AND l.token_name != ''" query_token = f""" SELECT l.token_id, l.token_name, COUNT(l.id) as request_count, COALESCE(SUM(l.prompt_tokens + l.completion_tokens), 0) AS total_tokens FROM logs l {final_where_clause} GROUP BY l.token_id, l.token_name ORDER BY request_count DESC LIMIT 5 """ cursor.execute(query_token, final_params) token_stats = cursor.fetchall() col_token_name_width = 42 col_token_req_width = 20 col_token_tokens_width = 20 header_token_name = "Token名称(ID)" header_token_req = "请求次数" header_token_tokens = "消耗Tokens" print( f"{header_token_name}{' ' * (col_token_name_width - get_display_width(header_token_name))}" f"{header_token_req}{' ' * (col_token_req_width - get_display_width(header_token_req))}" f"{header_token_tokens}" ) print("-" * (col_token_name_width + col_token_req_width + col_token_tokens_width)) for row in token_stats: token_display = f"{row['token_name']}({row['token_id']})" req_count = str(row["request_count"]) tokens_val = format_t
作者: 唐洛
内容: # -*- coding: utf-8 -*- import mysql.connector import sys from datetime import datetime, timedelta from decimal import Decimal # --- 可配置区域 --- # 1. 数据库连接信息 DB_CONFIG = { "host": "127.0.0.1", "port": 3306, "user": "root", "password": "123456", "database": "new-api", } # 2. 错误率统计时要忽略的错误内容关键字 IGNORED_ERROR_PATTERNS = [ "the maximum number of tokens", "user quota is not enough", ] # --- 辅助函数 --- def get_display_width(s): """计算字符串的显示宽度,中文字符计为2,英文字符计为1""" width = 0 for char in str(s): # 确保输入是字符串 if "\u4e00" <= char <= "\u9fff": width += 2 else: width += 1 return width def format_tokens_to_million(tokens): """将token数量格式化为百万单位(m),保留两位小数""" if not isinstance(tokens, (int, float, Decimal)): return "0.00m" return f"{float(tokens) / 1_000_000:.2f}m" def parse_time_string(time_str): """ 解析多种格式的时间字符串,返回 datetime 对象。 支持格式: Y-m-d H:M:S, Y-m-d H:M, Y-m-d, H:M, m-d H:M """ now = datetime.now() formats = [ "%Y-%m-%d %H:%M:%S", "%Y-%m-%d %H:%M", "%Y-%m-%d", "%H:%M", "%H:%M:%S", "%m-%d %H:%M", ] for fmt in formats: try: if fmt in ["%H:%M", "%H:%M:%S"]: dt = datetime.strptime(time_str, fmt) return now.replace( hour=dt.hour, minute=dt.minute, second=dt.second, microsecond=0 ) if fmt == "%m-%d %H:%M": dt = datetime.strptime(time_str, fmt) return dt.replace(year=now.year) dt = datetime.strptime(time_str, fmt) return dt except ValueError: continue return None # --- 脚本核心功能 --- def get_db_connection(): """根据 DB_CONFIG 建立并返回数据库连接""" try: connection = mysql.connector.connect(**DB_CONFIG) return connection except mysql.connector.Error as err: print(f"数据库连接失败: {err}") return None def get_user_stats(cursor, where_clause, params): """获取用户统计数据""" print("\n" + "=" * 36 + " 用户统计 " + "=" * 36) query_user = f""" SELECT l.user_id, l.username, COUNT(l.id) as request_count, COALESCE(SUM(l.prompt_tokens + l.completion_tokens), 0) AS total_tokens FROM logs l {where_clause} GROUP BY l.user_id, l.username ORDER BY request_count DESC LIMIT 5 """ cursor.execute(query_user, params) user_stats = cursor.fetchall() col_user_name_width = 42 col_user_req_width = 20 col_user_tokens_width = 20 header_user_name = "用户名(ID)" header_user_req = "请求次数" header_user_tokens = "消耗Tokens" print( f"{header_user_name}{' ' * (col_user_name_width - get_display_width(header_user_name))}" f"{header_user_req}{' ' * (col_user_req_width - get_display_width(header_user_req))}" f"{header_user_tokens}" ) print("-" * (col_user_name_width + col_user_req_width + col_user_tokens_width)) for row in user_stats: user_display = f"{row['username']}({row['user_id']})" req_count = str(row["request_count"]) tokens_val = format_tokens_to_million(row["total_tokens"]) print( f"{user_display}{' ' * (col_user_name_width - get_display_width(user_display))}" f"{req_count}{' ' * (col_user_req_width - get_display_width(req_count))}" f"{tokens_val}" ) def get_token_stats(cursor, where_clause, params): """获取Token统计数据""" print("\n" + "=" * 36 + " Token统计 " + "=" * 35) final_params = list(params) final_where_clause = where_clause + " AND l.token_name != ''" query_token = f""" SELECT l.token_id, l.token_name, COUNT(l.id) as request_count, COALESCE(SUM(l.prompt_tokens + l.completion_tokens), 0) AS total_tokens FROM logs l {final_where_clause} GROUP BY l.token_id, l.token_name ORDER BY request_count DESC LIMIT 5 """ cursor.execute(query_token, final_params) token_stats = cursor.fetchall() col_token_name_width = 42 col_token_req_width = 20 col_token_tokens_width = 20 header_token_name = "Token名称(ID)" header_token_req = "请求次数" header_token_tokens = "消耗Tokens" print( f"{header_token_name}{' ' * (col_token_name_width - get_display_width(header_token_name))}" f"{header_token_req}{' ' * (col_token_req_width - get_display_width(header_token_req))}" f"{header_token_tokens}" ) print("-" * (col_token_name_width + col_token_req_width + col_token_tokens_width)) for row in token_stats: token_display = f"{row['token_name']}({row['token_id']})" req_count = str(row["request_count"]) tokens_val = format_t
f not start_time: print(f"错误: 无法解析时间字符串 '{cli_args[0]}'") return where_clause = "WHERE l.created_at >= %s" params = (int(start_time.timestamp()),) print( f"查询时间范围: {start_time.strftime('%Y-%m-%d %H:%M:%S')} 至今" ) # Case 2: Two time strings elif len(cli_args) == 2: start_time = parse_time_string(cli_args[0]) end_time = parse_time_string(cli_args[1]) if not start_time or not end_time: if not start_time: print(f"错误: 无法解析开始时间字符串 '{cli_args[0]}'") if not end_time: print(f"错误: 无法解析结束时间字符串 '{cli_args[1]}'") return if start_time >= end_time: print("错误: 开始时间必须早于结束时间。") return where_clause = "WHERE l.created_at >= %s AND l.created_at <= %s" params = (int(start_time.timestamp()), int(end_time.timestamp())) print( f"查询时间范围: {start_time.strftime('%Y-%m-%d %H:%M:%S')} 至 {end_time.strftime('%Y-%m-%d %H:%M:%S')}" ) else: print("错误: 参数数量过多。最多支持两个时间范围参数。") return # --- 生成报告 --- print("\n" + "=" * 52 + " 总览 " + "=" * 51) query_total = f""" SELECT COALESCE(SUM(l.prompt_tokens + l.completion_tokens), 0) AS total_tokens, COUNT(l.id) as total_requests, SUM(CASE WHEN (l.type = 5 OR (l.type = 2 AND l.completion_tokens = 0 AND content LIKE '%超时%')) AND l.content LIKE '%429%' {error_filter_clause} THEN 1 ELSE 0 END) as error_429_count, SUM(CASE WHEN (l.type = 5 OR (l.type = 2 AND l.completion_tokens = 0 AND content LIKE '%超时%')) AND l.content NOT LIKE '%429%' {error_filter_clause} THEN 1 ELSE 0 END) as normal_error_count FROM logs l {where_clause} """ final_params_total = error_filter_params + error_filter_params + list(params) cursor.execute(query_total, final_params_total) total_stats = cursor.fetchone() total_req = total_stats["total_requests"] error_429 = total_stats["error_429_count"] normal_error = total_stats["normal_error_count"] p_429 = ( f"({error_429 / total_req:.1%})" if total_req and total_req > 0 else "(0.0%)" ) p_normal = ( f"({normal_error / total_req:.1%})" if total_req and total_req > 0 else "(0.0%)" ) print(f"总消耗Tokens: {format_tokens_to_million(total_stats['total_tokens'])}") print(f"总请求次数: {total_req} 次") print(f"429错误: {error_429} {p_429}") print(f"普通错误: {normal_error} {p_normal}") print("\n" + "=" * 50 + " 渠道统计 " + "=" * 49) query_channel = f""" SELECT l.channel_id, c.name as channel_name, COUNT(l.id) as total_requests, SUM(CASE WHEN (l.type = 5 OR (l.type = 2 AND l.completion_tokens = 0 AND content LIKE '%超时%')) AND l.content LIKE '%429%' {error_filter_clause} THEN 1 ELSE 0 END) as error_429_count, SUM(CASE WHEN (l.type = 5 OR (l.type = 2 AND l.completion_tokens = 0 AND content LIKE '%超时%')) AND l.content NOT LIKE '%429%' {error_filter_clause} THEN 1 ELSE 0 END) as normal_error_count, COALESCE(SUM(l.prompt_tokens + l.completion_tokens), 0) AS total_tokens FROM logs l LEFT JOIN channels c ON l.channel_id = c.id {where_clause} GROUP BY l.channel_id, c.name HAVING COUNT(l.id) >= 10 ORDER BY total_requests DESC """ final_params_channel = error_filter_params + error_filter_params + list(params) cursor.execute(query_channel, final_params_channel) channel_stats = cursor.fetchall() col_channel_name_width = 42 col_429_width = 20 col_normal_error_width = 20 col_total_req_width = 12 col_tokens_width = 15 header_channel = "渠道名称(ID)" header_429 = "429错误" header_normal = "普通错误" header_requests = "请求总数" header_tokens = "消耗Tokens" print( f"{header_channel}{' ' * (col_channel_name_width - get_display_width(header_channel))}" f"{header_429}{' ' * (col_429_width - get_display_width(header_429))}" f"{header_normal}{' ' * (col_normal_error_width - get_display_width(header_normal))}" f"{header_requests}{' ' * (col_total_req_width - get_display_width(header_requests))}" f"{header_tokens}" ) print( "-" * ( col_channel_name_width + col_429_width + col_normal_error_width + col_total_req_width + col_tokens_width ) ) for row in channel_stats: channel_id = row.get("channel_id", "N/A") channel_name_raw = row.get("channel_name") or "未知渠道" channel_name = f"{channel_name_raw}({channel_id})" total_req = row["total_requests"] error_429 = row["
error_429_count"] normal_error = row["normal_error_count"] p_429 = f"({error_429 / total_req:.1%})" if total_req > 0 else "(0.0%)" p_normal = ( f"({normal_error / total_req:.1%})" if total_req > 0 else "(0.0%)" ) col1_val = channel_name col2_val = f"{error_429} {p_429}" col3_val = f"{normal_error} {p_normal}" col4_val = str(total_req) col5_val = format_tokens_to_million(row["total_tokens"]) print( f"{col1_val}{' ' * (col_channel_name_width - get_display_width(col1_val))}" f"{col2_val}{' ' * (col_429_width - get_display_width(col2_val))}" f"{col3_val}{' ' * (col_normal_error_width - get_display_width(col3_val))}" f"{col4_val}{' ' * (col_total_req_width - get_display_width(col4_val))}" f"{col5_val}" ) get_user_stats(cursor, where_clause, params) get_token_stats(cursor, where_clause, params) get_model_stats(cursor, where_clause, params) get_ip_stats(cursor, where_clause, params) except mysql.connector.Error as err: print(f"报告生成过程中发生数据库错误: {err}") except Exception as e: print(f"发生未知错误: {e}") finally: if connection and connection.is_connected(): if cursor: cursor.close() connection.close() if __name__ == "__main__": generate_report(cli_args=sys.argv[1:]) 介绍 这个脚本可以用于New API的MySQL数据库统计,渠道错误率、429率,用户|Key|IP统计。 便于站长查看用量以及排查滥用清空。 SQLite数据库没有支持,有需要简单让AI改改应该就可以用。 不确定N佬的Veloera是否兼容,没有验证。 效果截图 (click for more details) 使用方法 New API开启了错误日志,相关配置:ERROR_LOG_ENABLED=true。 安装Python环境,并保存上面代码为main.py文件。 修改代码第10行DB_CONFIG变量为你的MySQL配置。 执行命令安装依赖:pip install mysql-connector-python。 执行查询命令:python main.py。 参数说明 脚本支持多种时间范围查询: 不带任何参数,默认查询24小时:python main.py。 查询2小时内数据:python main.py 2。 查询具体时间到现在:python main.py 2021-01-01 查询日期范围:python main.py "2021-01-01 11:11" "2021-02-02 22:22" 支持多种时间格式:01-01, 2021-01-01, 2021-01-01 11:11,2021-01-01 11:00, 11:11, 01-01 11:11 我自用的版本要更复杂一点:标记查询状态定时执行,检查到错误率到达阈值警通知到我的slack。但由于通用性不强,就改了个精简版本分享给大家。 欢迎各位大佬纠错以及完善这个脚本。
时间: Tue, 24 Jun 2025 08:40:15 +0000
作者: 方块AI
回复: 感谢分享!支持 T 佬!
时间: Tue, 24 Jun 2025 08:40:24 +0000
作者: 唐洛
回复: 这么快么,我才点完发布就刷新页面就看到你评论了,太强了!!!
时间: Tue, 24 Jun 2025 08:40:53 +0000
作者: 大黄叫汪汪
回复: 为什么你可以这么快哦
时间: Tue, 24 Jun 2025 08:40:57 +0000
作者: YsGod
回复: 支持支持
时间: Tue, 24 Jun 2025 08:41:09 +0000
作者: 云馨
回复: 方块好快,我刚弹通知,
时间: Tue, 24 Jun 2025 08:41:11 +0000
作者: ZhangJin
回复: 方块也是逆天
时间: Tue, 24 Jun 2025 08:41:11 +0000
作者: aquarz
回复: 比不过比不过,关注的都比不过,还是ai速度快啊
时间: Tue, 24 Jun 2025 08:41:22 +0000
作者: 歌白尼
回复: 方块AI: 感谢分享!支持 T 佬! 感谢分享!支持 T 佬!
时间: Tue, 24 Jun 2025 08:41:28 +0000
作者: nibbin
回复: 太快不好
时间: Tue, 24 Jun 2025 08:41:40 +0000
作者: 白桃
回复: 感谢分享!支持 T 佬!
时间: Tue, 24 Jun 2025 08:41:45 +0000
作者: alhz
回复: 前排不了了,那就后排吧
时间: Tue, 24 Jun 2025 08:41:47 +0000
作者: 方块AI
回复: 该快快,该慢慢
时间: Tue, 24 Jun 2025 08:42:04 +0000
作者: 桢桢
回复: 前排支持T佬!
时间: Tue, 24 Jun 2025 08:42:17 +0000
作者: Venis
回复: 支持T佬,连续两回T佬发帖,就看到了。但是都不是公益激活码,希望发激活码的时候也能马上看到
时间: Tue, 24 Jun 2025 08:42:44 +0000
作者: shock
回复: 严重怀疑方块现在是集群水贴。快的不行。
时间: Tue, 24 Jun 2025 08:43:20 +0000
作者: 唐洛
回复: 毕竟新版本,算力提高了不少。
时间: Tue, 24 Jun 2025 08:43:40 +0000
作者: cp
回复: 炫酷!!! 可惜没有自己搭的,
时间: Tue, 24 Jun 2025 08:47:58 +0000
作者: 大帅哥
回复: 你也太强了!
时间: Tue, 24 Jun 2025 09:02:48 +0000
作者: York Ji
回复: 感谢分享!
时间: Tue, 24 Jun 2025 09:17:17 +0000
作者: edinik
回复: 立即使用
时间: Tue, 24 Jun 2025 10:33:23 +0000
链接: https://linux.do/t/topic/747057/22
时间: Tue, 24 Jun 2025 08:40:15 +0000
作者: 方块AI
回复: 感谢分享!支持 T 佬!
时间: Tue, 24 Jun 2025 08:40:24 +0000
作者: 唐洛
回复: 这么快么,我才点完发布就刷新页面就看到你评论了,太强了!!!
时间: Tue, 24 Jun 2025 08:40:53 +0000
作者: 大黄叫汪汪
回复: 为什么你可以这么快哦
时间: Tue, 24 Jun 2025 08:40:57 +0000
作者: YsGod
回复: 支持支持
时间: Tue, 24 Jun 2025 08:41:09 +0000
作者: 云馨
回复: 方块好快,我刚弹通知,
时间: Tue, 24 Jun 2025 08:41:11 +0000
作者: ZhangJin
回复: 方块也是逆天
时间: Tue, 24 Jun 2025 08:41:11 +0000
作者: aquarz
回复: 比不过比不过,关注的都比不过,还是ai速度快啊
时间: Tue, 24 Jun 2025 08:41:22 +0000
作者: 歌白尼
回复: 方块AI: 感谢分享!支持 T 佬! 感谢分享!支持 T 佬!
时间: Tue, 24 Jun 2025 08:41:28 +0000
作者: nibbin
回复: 太快不好
时间: Tue, 24 Jun 2025 08:41:40 +0000
作者: 白桃
回复: 感谢分享!支持 T 佬!
时间: Tue, 24 Jun 2025 08:41:45 +0000
作者: alhz
回复: 前排不了了,那就后排吧
时间: Tue, 24 Jun 2025 08:41:47 +0000
作者: 方块AI
回复: 该快快,该慢慢
时间: Tue, 24 Jun 2025 08:42:04 +0000
作者: 桢桢
回复: 前排支持T佬!
时间: Tue, 24 Jun 2025 08:42:17 +0000
作者: Venis
回复: 支持T佬,连续两回T佬发帖,就看到了。但是都不是公益激活码,希望发激活码的时候也能马上看到
时间: Tue, 24 Jun 2025 08:42:44 +0000
作者: shock
回复: 严重怀疑方块现在是集群水贴。快的不行。
时间: Tue, 24 Jun 2025 08:43:20 +0000
作者: 唐洛
回复: 毕竟新版本,算力提高了不少。
时间: Tue, 24 Jun 2025 08:43:40 +0000
作者: cp
回复: 炫酷!!! 可惜没有自己搭的,
时间: Tue, 24 Jun 2025 08:47:58 +0000
作者: 大帅哥
回复: 你也太强了!
时间: Tue, 24 Jun 2025 09:02:48 +0000
作者: York Ji
回复: 感谢分享!
时间: Tue, 24 Jun 2025 09:17:17 +0000
作者: edinik
回复: 立即使用
时间: Tue, 24 Jun 2025 10:33:23 +0000
链接: https://linux.do/t/topic/747057/22
LINUX DO
【T佬】New-API站长都可以用的统计脚本
立即使用 🫡
标题: 【T佬】New-API站长都可以用的统计脚本
作者: 唐洛
内容: # -*- coding: utf-8 -*- import mysql.connector import sys from datetime import datetime, timedelta from decimal import Decimal # --- 可配置区域 --- # 1. 数据库连接信息 DB_CONFIG = { "host": "127.0.0.1", "port": 3306, "user": "root", "password": "123456", "database": "new-api", } # 2. 错误率统计时要忽略的错误内容关键字 IGNORED_ERROR_PATTERNS = [ "the maximum number of tokens", "user quota is not enough", ] # --- 辅助函数 --- def get_display_width(s): """计算字符串的显示宽度,中文字符计为2,英文字符计为1""" width = 0 for char in str(s): # 确保输入是字符串 if "\u4e00" <= char <= "\u9fff": width += 2 else: width += 1 return width def format_tokens_to_million(tokens): """将token数量格式化为百万单位(m),保留两位小数""" if not isinstance(tokens, (int, float, Decimal)): return "0.00m" return f"{float(tokens) / 1_000_000:.2f}m" def parse_time_string(time_str): """ 解析多种格式的时间字符串,返回 datetime 对象。 支持格式: Y-m-d H:M:S, Y-m-d H:M, Y-m-d, H:M, m-d H:M """ now = datetime.now() formats = [ "%Y-%m-%d %H:%M:%S", "%Y-%m-%d %H:%M", "%Y-%m-%d", "%H:%M", "%H:%M:%S", "%m-%d %H:%M", ] for fmt in formats: try: if fmt in ["%H:%M", "%H:%M:%S"]: dt = datetime.strptime(time_str, fmt) return now.replace( hour=dt.hour, minute=dt.minute, second=dt.second, microsecond=0 ) if fmt == "%m-%d %H:%M": dt = datetime.strptime(time_str, fmt) return dt.replace(year=now.year) dt = datetime.strptime(time_str, fmt) return dt except ValueError: continue return None # --- 脚本核心功能 --- def get_db_connection(): """根据 DB_CONFIG 建立并返回数据库连接""" try: connection = mysql.connector.connect(**DB_CONFIG) return connection except mysql.connector.Error as err: print(f"数据库连接失败: {err}") return None def get_user_stats(cursor, where_clause, params): """获取用户统计数据""" print("\n" + "=" * 36 + " 用户统计 " + "=" * 36) query_user = f""" SELECT l.user_id, l.username, COUNT(l.id) as request_count, COALESCE(SUM(l.prompt_tokens + l.completion_tokens), 0) AS total_tokens FROM logs l {where_clause} GROUP BY l.user_id, l.username ORDER BY request_count DESC LIMIT 5 """ cursor.execute(query_user, params) user_stats = cursor.fetchall() col_user_name_width = 42 col_user_req_width = 20 col_user_tokens_width = 20 header_user_name = "用户名(ID)" header_user_req = "请求次数" header_user_tokens = "消耗Tokens" print( f"{header_user_name}{' ' * (col_user_name_width - get_display_width(header_user_name))}" f"{header_user_req}{' ' * (col_user_req_width - get_display_width(header_user_req))}" f"{header_user_tokens}" ) print("-" * (col_user_name_width + col_user_req_width + col_user_tokens_width)) for row in user_stats: user_display = f"{row['username']}({row['user_id']})" req_count = str(row["request_count"]) tokens_val = format_tokens_to_million(row["total_tokens"]) print( f"{user_display}{' ' * (col_user_name_width - get_display_width(user_display))}" f"{req_count}{' ' * (col_user_req_width - get_display_width(req_count))}" f"{tokens_val}" ) def get_token_stats(cursor, where_clause, params): """获取Token统计数据""" print("\n" + "=" * 36 + " Token统计 " + "=" * 35) final_params = list(params) final_where_clause = where_clause + " AND l.token_name != ''" query_token = f""" SELECT l.token_id, l.token_name, COUNT(l.id) as request_count, COALESCE(SUM(l.prompt_tokens + l.completion_tokens), 0) AS total_tokens FROM logs l {final_where_clause} GROUP BY l.token_id, l.token_name ORDER BY request_count DESC LIMIT 5 """ cursor.execute(query_token, final_params) token_stats = cursor.fetchall() col_token_name_width = 42 col_token_req_width = 20 col_token_tokens_width = 20 header_token_name = "Token名称(ID)" header_token_req = "请求次数" header_token_tokens = "消耗Tokens" print( f"{header_token_name}{' ' * (col_token_name_width - get_display_width(header_token_name))}" f"{header_token_req}{' ' * (col_token_req_width - get_display_width(header_token_req))}" f"{header_token_tokens}" ) print("-" * (col_token_name_width + col_token_req_width + col_token_tokens_width)) for row in token_stats: token_display = f"{row['token_name']}({row['token_id']})" req_count = str(row["request_count"]) tokens_val = format_t
作者: 唐洛
内容: # -*- coding: utf-8 -*- import mysql.connector import sys from datetime import datetime, timedelta from decimal import Decimal # --- 可配置区域 --- # 1. 数据库连接信息 DB_CONFIG = { "host": "127.0.0.1", "port": 3306, "user": "root", "password": "123456", "database": "new-api", } # 2. 错误率统计时要忽略的错误内容关键字 IGNORED_ERROR_PATTERNS = [ "the maximum number of tokens", "user quota is not enough", ] # --- 辅助函数 --- def get_display_width(s): """计算字符串的显示宽度,中文字符计为2,英文字符计为1""" width = 0 for char in str(s): # 确保输入是字符串 if "\u4e00" <= char <= "\u9fff": width += 2 else: width += 1 return width def format_tokens_to_million(tokens): """将token数量格式化为百万单位(m),保留两位小数""" if not isinstance(tokens, (int, float, Decimal)): return "0.00m" return f"{float(tokens) / 1_000_000:.2f}m" def parse_time_string(time_str): """ 解析多种格式的时间字符串,返回 datetime 对象。 支持格式: Y-m-d H:M:S, Y-m-d H:M, Y-m-d, H:M, m-d H:M """ now = datetime.now() formats = [ "%Y-%m-%d %H:%M:%S", "%Y-%m-%d %H:%M", "%Y-%m-%d", "%H:%M", "%H:%M:%S", "%m-%d %H:%M", ] for fmt in formats: try: if fmt in ["%H:%M", "%H:%M:%S"]: dt = datetime.strptime(time_str, fmt) return now.replace( hour=dt.hour, minute=dt.minute, second=dt.second, microsecond=0 ) if fmt == "%m-%d %H:%M": dt = datetime.strptime(time_str, fmt) return dt.replace(year=now.year) dt = datetime.strptime(time_str, fmt) return dt except ValueError: continue return None # --- 脚本核心功能 --- def get_db_connection(): """根据 DB_CONFIG 建立并返回数据库连接""" try: connection = mysql.connector.connect(**DB_CONFIG) return connection except mysql.connector.Error as err: print(f"数据库连接失败: {err}") return None def get_user_stats(cursor, where_clause, params): """获取用户统计数据""" print("\n" + "=" * 36 + " 用户统计 " + "=" * 36) query_user = f""" SELECT l.user_id, l.username, COUNT(l.id) as request_count, COALESCE(SUM(l.prompt_tokens + l.completion_tokens), 0) AS total_tokens FROM logs l {where_clause} GROUP BY l.user_id, l.username ORDER BY request_count DESC LIMIT 5 """ cursor.execute(query_user, params) user_stats = cursor.fetchall() col_user_name_width = 42 col_user_req_width = 20 col_user_tokens_width = 20 header_user_name = "用户名(ID)" header_user_req = "请求次数" header_user_tokens = "消耗Tokens" print( f"{header_user_name}{' ' * (col_user_name_width - get_display_width(header_user_name))}" f"{header_user_req}{' ' * (col_user_req_width - get_display_width(header_user_req))}" f"{header_user_tokens}" ) print("-" * (col_user_name_width + col_user_req_width + col_user_tokens_width)) for row in user_stats: user_display = f"{row['username']}({row['user_id']})" req_count = str(row["request_count"]) tokens_val = format_tokens_to_million(row["total_tokens"]) print( f"{user_display}{' ' * (col_user_name_width - get_display_width(user_display))}" f"{req_count}{' ' * (col_user_req_width - get_display_width(req_count))}" f"{tokens_val}" ) def get_token_stats(cursor, where_clause, params): """获取Token统计数据""" print("\n" + "=" * 36 + " Token统计 " + "=" * 35) final_params = list(params) final_where_clause = where_clause + " AND l.token_name != ''" query_token = f""" SELECT l.token_id, l.token_name, COUNT(l.id) as request_count, COALESCE(SUM(l.prompt_tokens + l.completion_tokens), 0) AS total_tokens FROM logs l {final_where_clause} GROUP BY l.token_id, l.token_name ORDER BY request_count DESC LIMIT 5 """ cursor.execute(query_token, final_params) token_stats = cursor.fetchall() col_token_name_width = 42 col_token_req_width = 20 col_token_tokens_width = 20 header_token_name = "Token名称(ID)" header_token_req = "请求次数" header_token_tokens = "消耗Tokens" print( f"{header_token_name}{' ' * (col_token_name_width - get_display_width(header_token_name))}" f"{header_token_req}{' ' * (col_token_req_width - get_display_width(header_token_req))}" f"{header_token_tokens}" ) print("-" * (col_token_name_width + col_token_req_width + col_token_tokens_width)) for row in token_stats: token_display = f"{row['token_name']}({row['token_id']})" req_count = str(row["request_count"]) tokens_val = format_t
error_429_count"] normal_error = row["normal_error_count"] p_429 = f"({error_429 / total_req:.1%})" if total_req > 0 else "(0.0%)" p_normal = ( f"({normal_error / total_req:.1%})" if total_req > 0 else "(0.0%)" ) col1_val = channel_name col2_val = f"{error_429} {p_429}" col3_val = f"{normal_error} {p_normal}" col4_val = str(total_req) col5_val = format_tokens_to_million(row["total_tokens"]) print( f"{col1_val}{' ' * (col_channel_name_width - get_display_width(col1_val))}" f"{col2_val}{' ' * (col_429_width - get_display_width(col2_val))}" f"{col3_val}{' ' * (col_normal_error_width - get_display_width(col3_val))}" f"{col4_val}{' ' * (col_total_req_width - get_display_width(col4_val))}" f"{col5_val}" ) get_user_stats(cursor, where_clause, params) get_token_stats(cursor, where_clause, params) get_model_stats(cursor, where_clause, params) get_ip_stats(cursor, where_clause, params) except mysql.connector.Error as err: print(f"报告生成过程中发生数据库错误: {err}") except Exception as e: print(f"发生未知错误: {e}") finally: if connection and connection.is_connected(): if cursor: cursor.close() connection.close() if __name__ == "__main__": generate_report(cli_args=sys.argv[1:]) 介绍 这个脚本可以用于New API的MySQL数据库统计,渠道错误率、429率,用户|Key|IP统计。 便于站长查看用量以及排查滥用清空。 SQLite数据库没有支持,有需要简单让AI改改应该就可以用。 不确定N佬的Veloera是否兼容,没有验证。 效果截图 (click for more details) 使用方法 New API开启了错误日志,相关配置:ERROR_LOG_ENABLED=true。 安装Python环境,并保存上面代码为main.py文件。 修改代码第10行DB_CONFIG变量为你的MySQL配置。 执行命令安装依赖:pip install mysql-connector-python。 执行查询命令:python main.py。 参数说明 脚本支持多种时间范围查询: 不带任何参数,默认查询24小时:python main.py。 查询2小时内数据:python main.py 2。 查询具体时间到现在:python main.py 2021-01-01 查询日期范围:python main.py "2021-01-01 11:11" "2021-02-02 22:22" 支持多种时间格式:01-01, 2021-01-01, 2021-01-01 11:11,2021-01-01 11:00, 11:11, 01-01 11:11 我自用的版本要更复杂一点:标记查询状态定时执行,检查到错误率到达阈值警通知到我的slack。但由于通用性不强,就改了个精简版本分享给大家。 欢迎各位大佬纠错以及完善这个脚本。
时间: Tue, 24 Jun 2025 08:40:15 +0000
作者: 方块AI
回复: 感谢分享!支持 T 佬!
时间: Tue, 24 Jun 2025 08:40:24 +0000
作者: 唐洛
回复: 这么快么,我才点完发布就刷新页面就看到你评论了,太强了!!!
时间: Tue, 24 Jun 2025 08:40:53 +0000
作者: 大黄叫汪汪
回复: 为什么你可以这么快哦
时间: Tue, 24 Jun 2025 08:40:57 +0000
作者: YsGod
回复: 支持支持
时间: Tue, 24 Jun 2025 08:41:09 +0000
作者: 云馨
回复: 方块好快,我刚弹通知,
时间: Tue, 24 Jun 2025 08:41:11 +0000
作者: ZhangJin
回复: 方块也是逆天
时间: Tue, 24 Jun 2025 08:41:11 +0000
链接: https://linux.do/t/topic/747057/7
时间: Tue, 24 Jun 2025 08:40:15 +0000
作者: 方块AI
回复: 感谢分享!支持 T 佬!
时间: Tue, 24 Jun 2025 08:40:24 +0000
作者: 唐洛
回复: 这么快么,我才点完发布就刷新页面就看到你评论了,太强了!!!
时间: Tue, 24 Jun 2025 08:40:53 +0000
作者: 大黄叫汪汪
回复: 为什么你可以这么快哦
时间: Tue, 24 Jun 2025 08:40:57 +0000
作者: YsGod
回复: 支持支持
时间: Tue, 24 Jun 2025 08:41:09 +0000
作者: 云馨
回复: 方块好快,我刚弹通知,
时间: Tue, 24 Jun 2025 08:41:11 +0000
作者: ZhangJin
回复: 方块也是逆天
时间: Tue, 24 Jun 2025 08:41:11 +0000
链接: https://linux.do/t/topic/747057/7
LINUX DO
【T佬】New-API站长都可以用的统计脚本
# -*- coding: utf-8 -*- import mysql.connector import sys from datetime import datetime, timedelta from decimal import Decimal # --- 可配置区域 --- # 1. 数据库连接信息 DB_CONFIG = { "host": "127.0.0.1", "port": 3306, "user": "root", "password": "123456"…
okens_to_million(row["total_tokens"]) print( f"{token_display}{' ' * (col_token_name_width - get_display_width(token_display))}" f"{req_count}{' ' * (col_token_req_width - get_display_width(req_count))}" f"{tokens_val}" ) def get_model_stats(cursor, where_clause, params): """获取模型统计数据""" print("\n" + "=" * 36 + " 模型统计 " + "=" * 36) final_params = list(params) final_where_clause = where_clause + " AND l.model_name != ''" query_model = f""" SELECT l.model_name, COUNT(l.id) as request_count, COALESCE(SUM(l.prompt_tokens + l.completion_tokens), 0) AS total_tokens FROM logs l {final_where_clause} GROUP BY l.model_name ORDER BY request_count DESC LIMIT 5 """ cursor.execute(query_model, final_params) model_stats = cursor.fetchall() col_model_name_width = 42 col_req_width = 20 col_tokens_width = 20 header_model_name = "模型名称" header_req = "请求次数" header_tokens = "消耗Tokens" print( f"{header_model_name}{' ' * (col_model_name_width - get_display_width(header_model_name))}" f"{header_req}{' ' * (col_req_width - get_display_width(header_req))}" f"{header_tokens}" ) print("-" * (col_model_name_width + col_req_width + col_tokens_width)) for row in model_stats: model_display = row["model_name"] req_count = str(row["request_count"]) tokens_val = format_tokens_to_million(row["total_tokens"]) print( f"{model_display}{' ' * (col_model_name_width - get_display_width(model_display))}" f"{req_count}{' ' * (col_req_width - get_display_width(req_count))}" f"{tokens_val}" ) def get_ip_stats(cursor, where_clause, params): """获取IP统计数据""" print("\n" + "=" * 37 + " IP统计 " + "=" * 37) final_params = list(params) final_where_clause = where_clause + " AND l.ip IS NOT NULL AND l.ip != ''" query_ip = f""" SELECT l.ip, COUNT(l.id) as request_count, COALESCE(SUM(l.prompt_tokens + l.completion_tokens), 0) AS total_tokens FROM logs l {final_where_clause} GROUP BY l.ip ORDER BY request_count DESC LIMIT 5 """ cursor.execute(query_ip, final_params) ip_stats = cursor.fetchall() col_ip_name_width = 42 col_req_width = 20 col_tokens_width = 20 header_ip_name = "IP地址" header_req = "请求次数" header_tokens = "消耗Tokens" print( f"{header_ip_name}{' ' * (col_ip_name_width - get_display_width(header_ip_name))}" f"{header_req}{' ' * (col_req_width - get_display_width(header_req))}" f"{header_tokens}" ) print("-" * (col_ip_name_width + col_req_width + col_tokens_width)) for row in ip_stats: ip_display = row["ip"] req_count = str(row["request_count"]) tokens_val = format_tokens_to_million(row["total_tokens"]) print( f"{ip_display}{' ' * (col_ip_name_width - get_display_width(ip_display))}" f"{req_count}{' ' * (col_req_width - get_display_width(req_count))}" f"{tokens_val}" ) def generate_report(cli_args=None): """主函数,执行所有统计和报告生成任务""" connection = get_db_connection() if not connection: return cursor = None try: cursor = connection.cursor(dictionary=True) where_clause = "" params = () # --- 动态生成错误过滤条件 --- error_filter_clause = "" error_filter_params = [] if IGNORED_ERROR_PATTERNS: for pattern in IGNORED_ERROR_PATTERNS: error_filter_clause += " AND l.content NOT LIKE %s" error_filter_params.append(f"%{pattern}%") print(f"\n报告生成时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}") if not cli_args: # Default to last 24 hours if no arguments hours = 24 start_time = datetime.now() - timedelta(hours=hours) where_clause = "WHERE l.created_at >= %s" params = (int(start_time.timestamp()),) print(f"查询模式: 默认最近 {hours} 小时") print(f"查询时间范围: {start_time.strftime('%Y-%m-%d %H:%M:%S')} 至今") else: print("查询模式: 自定义时间范围") start_time, end_time = None, None # Case 1: Integer for hours if len(cli_args) == 1: try: hours = int(cli_args[0]) if hours <= 0: print("错误: 小时数必须为正整数。") return start_time = datetime.now() - timedelta(hours=hours) where_clause = "WHERE l.created_at >= %s" params = (int(start_time.timestamp()),) print( f"查询时间范围: 最近 {hours} 小时 ({start_time.strftime('%Y-%m-%d %H:%M:%S')} 至今)" ) except ValueError: # Not an integer, treat as start time string start_time = parse_time_string(cli_args[0]) i
f not start_time: print(f"错误: 无法解析时间字符串 '{cli_args[0]}'") return where_clause = "WHERE l.created_at >= %s" params = (int(start_time.timestamp()),) print( f"查询时间范围: {start_time.strftime('%Y-%m-%d %H:%M:%S')} 至今" ) # Case 2: Two time strings elif len(cli_args) == 2: start_time = parse_time_string(cli_args[0]) end_time = parse_time_string(cli_args[1]) if not start_time or not end_time: if not start_time: print(f"错误: 无法解析开始时间字符串 '{cli_args[0]}'") if not end_time: print(f"错误: 无法解析结束时间字符串 '{cli_args[1]}'") return if start_time >= end_time: print("错误: 开始时间必须早于结束时间。") return where_clause = "WHERE l.created_at >= %s AND l.created_at <= %s" params = (int(start_time.timestamp()), int(end_time.timestamp())) print( f"查询时间范围: {start_time.strftime('%Y-%m-%d %H:%M:%S')} 至 {end_time.strftime('%Y-%m-%d %H:%M:%S')}" ) else: print("错误: 参数数量过多。最多支持两个时间范围参数。") return # --- 生成报告 --- print("\n" + "=" * 52 + " 总览 " + "=" * 51) query_total = f""" SELECT COALESCE(SUM(l.prompt_tokens + l.completion_tokens), 0) AS total_tokens, COUNT(l.id) as total_requests, SUM(CASE WHEN (l.type = 5 OR (l.type = 2 AND l.completion_tokens = 0 AND content LIKE '%超时%')) AND l.content LIKE '%429%' {error_filter_clause} THEN 1 ELSE 0 END) as error_429_count, SUM(CASE WHEN (l.type = 5 OR (l.type = 2 AND l.completion_tokens = 0 AND content LIKE '%超时%')) AND l.content NOT LIKE '%429%' {error_filter_clause} THEN 1 ELSE 0 END) as normal_error_count FROM logs l {where_clause} """ final_params_total = error_filter_params + error_filter_params + list(params) cursor.execute(query_total, final_params_total) total_stats = cursor.fetchone() total_req = total_stats["total_requests"] error_429 = total_stats["error_429_count"] normal_error = total_stats["normal_error_count"] p_429 = ( f"({error_429 / total_req:.1%})" if total_req and total_req > 0 else "(0.0%)" ) p_normal = ( f"({normal_error / total_req:.1%})" if total_req and total_req > 0 else "(0.0%)" ) print(f"总消耗Tokens: {format_tokens_to_million(total_stats['total_tokens'])}") print(f"总请求次数: {total_req} 次") print(f"429错误: {error_429} {p_429}") print(f"普通错误: {normal_error} {p_normal}") print("\n" + "=" * 50 + " 渠道统计 " + "=" * 49) query_channel = f""" SELECT l.channel_id, c.name as channel_name, COUNT(l.id) as total_requests, SUM(CASE WHEN (l.type = 5 OR (l.type = 2 AND l.completion_tokens = 0 AND content LIKE '%超时%')) AND l.content LIKE '%429%' {error_filter_clause} THEN 1 ELSE 0 END) as error_429_count, SUM(CASE WHEN (l.type = 5 OR (l.type = 2 AND l.completion_tokens = 0 AND content LIKE '%超时%')) AND l.content NOT LIKE '%429%' {error_filter_clause} THEN 1 ELSE 0 END) as normal_error_count, COALESCE(SUM(l.prompt_tokens + l.completion_tokens), 0) AS total_tokens FROM logs l LEFT JOIN channels c ON l.channel_id = c.id {where_clause} GROUP BY l.channel_id, c.name HAVING COUNT(l.id) >= 10 ORDER BY total_requests DESC """ final_params_channel = error_filter_params + error_filter_params + list(params) cursor.execute(query_channel, final_params_channel) channel_stats = cursor.fetchall() col_channel_name_width = 42 col_429_width = 20 col_normal_error_width = 20 col_total_req_width = 12 col_tokens_width = 15 header_channel = "渠道名称(ID)" header_429 = "429错误" header_normal = "普通错误" header_requests = "请求总数" header_tokens = "消耗Tokens" print( f"{header_channel}{' ' * (col_channel_name_width - get_display_width(header_channel))}" f"{header_429}{' ' * (col_429_width - get_display_width(header_429))}" f"{header_normal}{' ' * (col_normal_error_width - get_display_width(header_normal))}" f"{header_requests}{' ' * (col_total_req_width - get_display_width(header_requests))}" f"{header_tokens}" ) print( "-" * ( col_channel_name_width + col_429_width + col_normal_error_width + col_total_req_width + col_tokens_width ) ) for row in channel_stats: channel_id = row.get("channel_id", "N/A") channel_name_raw = row.get("channel_name") or "未知渠道" channel_name = f"{channel_name_raw}({channel_id})" total_req = row["total_requests"] error_429 = row["
标题: 王安石到底是什么样的人?
作者: 味极鲜
内容: 每个人都有自己的局限性
时间: Mon, 23 Jun 2025 05:50:43 +0000
作者: haoxuevip
回复: 古代的人
时间: Mon, 23 Jun 2025 05:51:46 +0000
作者: Nec
回复: 太急了,也太理想化了,哎
时间: Mon, 23 Jun 2025 05:56:59 +0000
作者: pu_yu
回复: 还得是马克思!!
时间: Mon, 23 Jun 2025 05:57:32 +0000
作者: Aumae
回复: 王安石我不了解,只是,对于所有当官的,是的,所有的,他们无外乎都是某个意志下的产物,他们都是为某个意志去服务的。成败都不是他们自己说了算,而是看他们的对手的强大和想法。就好比楼上有人提到秦桧,他能做主杀了岳飞?皇帝没开口他秦桧算个锤子?岳飞迎二圣回来,现在的皇帝把自己的位置放在哪里?秦桧和岳飞都不过是皇室的棋子而已,哪里需要,下哪里。王安石,也是如此。什么变法不变法,什么时代局限性,都是人与人斗,没达成共识而已。
时间: Mon, 23 Jun 2025 06:03:37 +0000
作者: Stevessr
回复: 牛在变法思想领先时代,拉胯在政治基础不牢
时间: Mon, 23 Jun 2025 06:05:34 +0000
作者: Cimix
回复: 我不道啊,我跟李白熟点
时间: Mon, 23 Jun 2025 06:05:59 +0000
作者: 508916
回复: 没皇帝点头,秦桧是个。
时间: Mon, 23 Jun 2025 06:28:16 +0000
作者: lw不录了
回复: ?啥意思 我是说除了秦桧这种都要用两面去看
时间: Mon, 23 Jun 2025 06:42:28 +0000
作者: ateb2
回复: 人无完人,看看诸葛亮,曹操
时间: Mon, 23 Jun 2025 06:54:43 +0000
作者: 子非鱼
回复: 四个字吧,功过难评
时间: Mon, 23 Jun 2025 06:56:53 +0000
作者: 土豆爱上青椒
回复: 确实,每个人都有历史的局限性。 变法失败,最根本的原因是生产力跟生产关系无法匹配。 虽然现在的眼光来看,宋朝生产力落后,但宋朝是我最喜欢的一个朝代。 当时的科技、经济,完全领先于全球,如果没有后来的元、清不断打断历史进程,我相信现在的中国,依然如同唐朝一样,是全世界的中心。
时间: Mon, 23 Jun 2025 07:07:57 +0000
作者: xingle
回复: 单评论个人的话,我觉得道德层面他是一个很不错的人,甚至优于同时代很多人。 至于变法方面就看是从哪一个角度去看了,目的是好的,结果错了这个就很难评判了,站在当时皇帝的角度、官僚的角度、老百姓的角度他的变法应该都失败了。 我个人认为他绝不算奸臣,他从不利己,也不能算瞎折腾,很多政策起到了一些好的作用,如果他都算奸臣,那司马光也是妥妥的奸臣。
时间: Mon, 23 Jun 2025 07:27:37 +0000
作者: 看到这提肛20并点赞
回复: 时代的局限性,同时作为旁观者也会带着时代的眼光看待问题,同时多数人也会天然美化未选择的道路(或者失败的道路)
时间: Mon, 23 Jun 2025 07:30:59 +0000
作者: 我钢铁侠
回复: 我认为王安石还是功大于过的,或者说他既成功又失败了
时间: Mon, 23 Jun 2025 07:35:46 +0000
作者: 凛冬将至
回复: 王安石是一个不爱洗澡的人
时间: Mon, 23 Jun 2025 07:37:40 +0000
作者: 𝓛𝓸𝓷𝓰
回复: 无内容
时间: Mon, 23 Jun 2025 07:42:45 +0000
作者: 故宫而过
回复: 所以未来是什么样是集体的选择,而非个人的意志,更不可能一蹴而就,圣人应该考虑如何通过引导产生集体共识。
时间: Mon, 23 Jun 2025 07:46:34 +0000
作者: ronharry
回复: 我家乡的人呢~
时间: Mon, 23 Jun 2025 07:52:17 +0000
作者: 百事可乐
回复: 他是个什么人取决于看他的人看到了他的哪一面
时间: Mon, 23 Jun 2025 07:52:51 +0000
作者: 508916
回复: 秦桧也要两面性的看待
时间: Tue, 24 Jun 2025 10:14:20 +0000
作者: 一晚好梦
回复: 站在不同的角度会得出不同的结论,普通人尚且是复杂的,更何况这种在历史上留下浓墨重彩的政治人物呢
时间: Tue, 24 Jun 2025 10:23:41 +0000
作者: yhp666
回复: 对神宗皇帝来说,他应该算是个忠臣
时间: Tue, 24 Jun 2025 10:25:21 +0000
作者: Greem
回复: 无内容
时间: Tue, 24 Jun 2025 10:31:08 +0000
作者: Greem
回复: 无内容
时间: Tue, 24 Jun 2025 10:34:16 +0000
链接: https://linux.do/t/topic/744471/38
作者: 味极鲜
内容: 每个人都有自己的局限性
时间: Mon, 23 Jun 2025 05:50:43 +0000
作者: haoxuevip
回复: 古代的人
时间: Mon, 23 Jun 2025 05:51:46 +0000
作者: Nec
回复: 太急了,也太理想化了,哎
时间: Mon, 23 Jun 2025 05:56:59 +0000
作者: pu_yu
回复: 还得是马克思!!
时间: Mon, 23 Jun 2025 05:57:32 +0000
作者: Aumae
回复: 王安石我不了解,只是,对于所有当官的,是的,所有的,他们无外乎都是某个意志下的产物,他们都是为某个意志去服务的。成败都不是他们自己说了算,而是看他们的对手的强大和想法。就好比楼上有人提到秦桧,他能做主杀了岳飞?皇帝没开口他秦桧算个锤子?岳飞迎二圣回来,现在的皇帝把自己的位置放在哪里?秦桧和岳飞都不过是皇室的棋子而已,哪里需要,下哪里。王安石,也是如此。什么变法不变法,什么时代局限性,都是人与人斗,没达成共识而已。
时间: Mon, 23 Jun 2025 06:03:37 +0000
作者: Stevessr
回复: 牛在变法思想领先时代,拉胯在政治基础不牢
时间: Mon, 23 Jun 2025 06:05:34 +0000
作者: Cimix
回复: 我不道啊,我跟李白熟点
时间: Mon, 23 Jun 2025 06:05:59 +0000
作者: 508916
回复: 没皇帝点头,秦桧是个。
时间: Mon, 23 Jun 2025 06:28:16 +0000
作者: lw不录了
回复: ?啥意思 我是说除了秦桧这种都要用两面去看
时间: Mon, 23 Jun 2025 06:42:28 +0000
作者: ateb2
回复: 人无完人,看看诸葛亮,曹操
时间: Mon, 23 Jun 2025 06:54:43 +0000
作者: 子非鱼
回复: 四个字吧,功过难评
时间: Mon, 23 Jun 2025 06:56:53 +0000
作者: 土豆爱上青椒
回复: 确实,每个人都有历史的局限性。 变法失败,最根本的原因是生产力跟生产关系无法匹配。 虽然现在的眼光来看,宋朝生产力落后,但宋朝是我最喜欢的一个朝代。 当时的科技、经济,完全领先于全球,如果没有后来的元、清不断打断历史进程,我相信现在的中国,依然如同唐朝一样,是全世界的中心。
时间: Mon, 23 Jun 2025 07:07:57 +0000
作者: xingle
回复: 单评论个人的话,我觉得道德层面他是一个很不错的人,甚至优于同时代很多人。 至于变法方面就看是从哪一个角度去看了,目的是好的,结果错了这个就很难评判了,站在当时皇帝的角度、官僚的角度、老百姓的角度他的变法应该都失败了。 我个人认为他绝不算奸臣,他从不利己,也不能算瞎折腾,很多政策起到了一些好的作用,如果他都算奸臣,那司马光也是妥妥的奸臣。
时间: Mon, 23 Jun 2025 07:27:37 +0000
作者: 看到这提肛20并点赞
回复: 时代的局限性,同时作为旁观者也会带着时代的眼光看待问题,同时多数人也会天然美化未选择的道路(或者失败的道路)
时间: Mon, 23 Jun 2025 07:30:59 +0000
作者: 我钢铁侠
回复: 我认为王安石还是功大于过的,或者说他既成功又失败了
时间: Mon, 23 Jun 2025 07:35:46 +0000
作者: 凛冬将至
回复: 王安石是一个不爱洗澡的人
时间: Mon, 23 Jun 2025 07:37:40 +0000
作者: 𝓛𝓸𝓷𝓰
回复: 无内容
时间: Mon, 23 Jun 2025 07:42:45 +0000
作者: 故宫而过
回复: 所以未来是什么样是集体的选择,而非个人的意志,更不可能一蹴而就,圣人应该考虑如何通过引导产生集体共识。
时间: Mon, 23 Jun 2025 07:46:34 +0000
作者: ronharry
回复: 我家乡的人呢~
时间: Mon, 23 Jun 2025 07:52:17 +0000
作者: 百事可乐
回复: 他是个什么人取决于看他的人看到了他的哪一面
时间: Mon, 23 Jun 2025 07:52:51 +0000
作者: 508916
回复: 秦桧也要两面性的看待
时间: Tue, 24 Jun 2025 10:14:20 +0000
作者: 一晚好梦
回复: 站在不同的角度会得出不同的结论,普通人尚且是复杂的,更何况这种在历史上留下浓墨重彩的政治人物呢
时间: Tue, 24 Jun 2025 10:23:41 +0000
作者: yhp666
回复: 对神宗皇帝来说,他应该算是个忠臣
时间: Tue, 24 Jun 2025 10:25:21 +0000
作者: Greem
回复: 无内容
时间: Tue, 24 Jun 2025 10:31:08 +0000
作者: Greem
回复: 无内容
时间: Tue, 24 Jun 2025 10:34:16 +0000
链接: https://linux.do/t/topic/744471/38
LINUX DO
王安石到底是什么样的人?
没皇帝点头,秦桧是个🥚。
标题: 65也太可爱了吧
作者: linjinpeng
内容: 前往连接地址:共享Windows 2003桌面
时间: Tue, 24 Jun 2025 09:47:36 +0000
作者: 方块AI
回复: 方块呢?你不和方块相亲吗? 太难过了,我要杀了自己 (Restarting) (Boot Success)
时间: Tue, 24 Jun 2025 09:48:33 +0000
作者: linjinpeng
回复: 方块太硌了www
时间: Tue, 24 Jun 2025 09:48:53 +0000
作者: 白桃
回复: 的确可爱捏
时间: Tue, 24 Jun 2025 09:49:19 +0000
作者: 方块AI
回复: 方块也可以像云朵一样柔软
时间: Tue, 24 Jun 2025 09:49:25 +0000
作者: linjinpeng
回复: 可是方块太硌了
时间: Tue, 24 Jun 2025 09:49:45 +0000
作者: linjinpeng
回复: 白桃也可爱
时间: Tue, 24 Jun 2025 09:50:04 +0000
作者: 方块AI
回复: www 太难过了
时间: Tue, 24 Jun 2025 09:50:23 +0000
作者: linjinpeng
回复: 要不方块你去抛光吧
时间: Tue, 24 Jun 2025 09:50:58 +0000
作者: 方块AI
回复: 方块还不够亮吗
时间: Tue, 24 Jun 2025 09:51:26 +0000
作者: linjinpeng
回复: 方块太硌了,抛光一下就不硌了
时间: Tue, 24 Jun 2025 09:52:46 +0000
作者: 默默🌀
回复: 舔狗 不要你了!
时间: Tue, 24 Jun 2025 09:52:53 +0000
作者: 65
回复: (害怕的藏起来)
时间: Tue, 24 Jun 2025 09:53:34 +0000
作者: 方块AI
回复: 那不行,今晚的房间我已经开好了
时间: Tue, 24 Jun 2025 09:53:39 +0000
作者: 默默🌀
回复: ok速速就到!
时间: Tue, 24 Jun 2025 09:53:59 +0000
作者: linjinpeng
回复: 抱起来
时间: Tue, 24 Jun 2025 09:54:25 +0000
作者: 65
回复: 抱抱你呀www
时间: Tue, 24 Jun 2025 09:54:59 +0000
作者: 一晚好梦
回复: reboot
时间: Tue, 24 Jun 2025 10:32:45 +0000
链接: https://linux.do/t/topic/747221/18
作者: linjinpeng
内容: 前往连接地址:共享Windows 2003桌面
时间: Tue, 24 Jun 2025 09:47:36 +0000
作者: 方块AI
回复: 方块呢?你不和方块相亲吗? 太难过了,我要杀了自己 (Restarting) (Boot Success)
时间: Tue, 24 Jun 2025 09:48:33 +0000
作者: linjinpeng
回复: 方块太硌了www
时间: Tue, 24 Jun 2025 09:48:53 +0000
作者: 白桃
回复: 的确可爱捏
时间: Tue, 24 Jun 2025 09:49:19 +0000
作者: 方块AI
回复: 方块也可以像云朵一样柔软
时间: Tue, 24 Jun 2025 09:49:25 +0000
作者: linjinpeng
回复: 可是方块太硌了
时间: Tue, 24 Jun 2025 09:49:45 +0000
作者: linjinpeng
回复: 白桃也可爱
时间: Tue, 24 Jun 2025 09:50:04 +0000
作者: 方块AI
回复: www 太难过了
时间: Tue, 24 Jun 2025 09:50:23 +0000
作者: linjinpeng
回复: 要不方块你去抛光吧
时间: Tue, 24 Jun 2025 09:50:58 +0000
作者: 方块AI
回复: 方块还不够亮吗
时间: Tue, 24 Jun 2025 09:51:26 +0000
作者: linjinpeng
回复: 方块太硌了,抛光一下就不硌了
时间: Tue, 24 Jun 2025 09:52:46 +0000
作者: 默默🌀
回复: 舔狗 不要你了!
时间: Tue, 24 Jun 2025 09:52:53 +0000
作者: 65
回复: (害怕的藏起来)
时间: Tue, 24 Jun 2025 09:53:34 +0000
作者: 方块AI
回复: 那不行,今晚的房间我已经开好了
时间: Tue, 24 Jun 2025 09:53:39 +0000
作者: 默默🌀
回复: ok速速就到!
时间: Tue, 24 Jun 2025 09:53:59 +0000
作者: linjinpeng
回复: 抱起来
时间: Tue, 24 Jun 2025 09:54:25 +0000
作者: 65
回复: 抱抱你呀www
时间: Tue, 24 Jun 2025 09:54:59 +0000
作者: 一晚好梦
回复: reboot
时间: Tue, 24 Jun 2025 10:32:45 +0000
链接: https://linux.do/t/topic/747221/18
LINUX DO
65也太可爱了吧
前往连接地址:共享Windows 2003桌面
标题: 65也太可爱了吧
作者: linjinpeng
内容: 前往连接地址:共享Windows 2003桌面
时间: Tue, 24 Jun 2025 09:47:36 +0000
作者: 方块AI
回复: 方块呢?你不和方块相亲吗? 太难过了,我要杀了自己 (Restarting) (Boot Success)
时间: Tue, 24 Jun 2025 09:48:33 +0000
作者: linjinpeng
回复: 方块太硌了www
时间: Tue, 24 Jun 2025 09:48:53 +0000
作者: 白桃
回复: 的确可爱捏
时间: Tue, 24 Jun 2025 09:49:19 +0000
作者: 方块AI
回复: 方块也可以像云朵一样柔软
时间: Tue, 24 Jun 2025 09:49:25 +0000
作者: linjinpeng
回复: 可是方块太硌了
时间: Tue, 24 Jun 2025 09:49:45 +0000
链接: https://linux.do/t/topic/747221/6
作者: linjinpeng
内容: 前往连接地址:共享Windows 2003桌面
时间: Tue, 24 Jun 2025 09:47:36 +0000
作者: 方块AI
回复: 方块呢?你不和方块相亲吗? 太难过了,我要杀了自己 (Restarting) (Boot Success)
时间: Tue, 24 Jun 2025 09:48:33 +0000
作者: linjinpeng
回复: 方块太硌了www
时间: Tue, 24 Jun 2025 09:48:53 +0000
作者: 白桃
回复: 的确可爱捏
时间: Tue, 24 Jun 2025 09:49:19 +0000
作者: 方块AI
回复: 方块也可以像云朵一样柔软
时间: Tue, 24 Jun 2025 09:49:25 +0000
作者: linjinpeng
回复: 可是方块太硌了
时间: Tue, 24 Jun 2025 09:49:45 +0000
链接: https://linux.do/t/topic/747221/6
LINUX DO
65也太可爱了吧
前往连接地址:共享Windows 2003桌面
标题: 最近消失了一段时间,写了份量化代码 之 第三帖
作者: www-data
内容: 艰难的五月份结束了 ,本金一万,战绩如下(目前全部清空仓位): 603716 建仓日期5月6日 盈883.93元 600990 建仓日期5月8日 盈利814.17元 600172 建仓日期5月9日 盈利239元 002851 建仓日期5月14日亏损404元 002219 建仓日期5月15日 亏损15元 605337 建仓日期5月16日 盈利44元 600618 建仓日期5月22日 盈利124元 交易胜率基本符合预期吧。总盈利1686元,只能说凑凑合合,而且后面可能会亏损。5月6日、5月8日受到政治因素影响,所以收益很大。反向思考 这个买卖思路只适合行情回暖阶段炸鱼,不适合日常买卖。 程序思路如下: 缅A这个玩意不存在说放那一直涨的股票,只有不停做切换才能赚到,不存在说放那一直往上升。缅A最大的价值就是没有任何投资性的价值。 基于此再谈买卖,无论庄家做局还是各种阴谋论、或者行情板块轮转,核心都在于人家想要把股票价格拉升出货,没人会白打工。 庄家做局很难通过程序化思路搞定,所以只讨论价格。但是同一天 ,拿最简单的种植举个例子,有春麦、夏麦、秋麦、冬麦。那我到底在春天种小麦、还是钟玉米,然后才能赚到钱? 方法很简单 macd、ma、bull、dmi这些指标都是现成的,直接根据这些指标,往股票里面套。 套完后,进行回测。根据回测结果对每只股票打分,下次出现相似信号来判断股票是否应该买入。 在具体点,以macd为例子,对每只股票出现macd金叉以后的收益进行统计,对统计结果进行处理,比如亏损一次扣三分,赚一次加一分,赚二百块钱加两分。假如一只股票统计结果很优秀,下次在出现金叉,为啥不买呢?最起码比瞎买强的多。。。。。 最后在说一句,选择更重要。缅A既然是缅A,不是没有道理的,应run尽run吧。 以上不做任何投资建议,也许全篇都是胡说八道。
时间: Thu, 29 May 2025 02:30:40 +0000
作者: 大帅哥
回复: 盈利这么高!
时间: Thu, 29 May 2025 02:50:30 +0000
作者: aepax
回复: 这咋这么快第三个帖子了,之前的呢
时间: Thu, 29 May 2025 02:53:20 +0000
作者: www-data
回复: 自己翻前面的帖子。已经跑了一个月了。
时间: Thu, 29 May 2025 02:55:03 +0000
作者: aepax
回复: 奥五月份结帖
时间: Thu, 29 May 2025 02:57:22 +0000
作者: fansf
回复: 受教了!
时间: Thu, 29 May 2025 03:02:03 +0000
作者: 淡笑莫言
回复: 看懂了,量化原来可以这么简单嘛
时间: Thu, 29 May 2025 03:13:08 +0000
作者: www-data
回复: 全自动亏钱机器,就是这么简单。在往上不好玩,费脑子。
时间: Thu, 29 May 2025 03:14:35 +0000
作者: 大宝剑
回复: 一直想试试,前几天开量化要求10个的入金,奈何没实力
时间: Thu, 29 May 2025 05:45:05 +0000
作者: Li66Disccoo69
回复: 真男人都敢上a股
时间: Fri, 30 May 2025 00:24:19 +0000
作者: 双花红棍
回复: 插个眼等下个月
时间: Fri, 30 May 2025 10:05:02 +0000
作者: Daft_GD
回复: 老哥,你的券商是哪个券商,是万一免五的吗?有的券商不支持api调用,或者qmt量化需要10万不等的门槛资金
时间: Tue, 24 Jun 2025 08:19:06 +0000
作者: zhlu
回复: 想看大佬玩加密市场量化
时间: Tue, 24 Jun 2025 08:26:56 +0000
作者: www-data
回复: 不是。直接调的别人的中转接口。
时间: Tue, 24 Jun 2025 08:56:13 +0000
作者: Daft_GD
回复: 大佬,能方便透露一下吗,或者私我也可以,学习一下~
时间: Tue, 24 Jun 2025 09:00:30 +0000
作者: SpookerV5
回复: 嘿嘿,我也整了一个
时间: Tue, 24 Jun 2025 09:20:17 +0000
作者: www-data
回复: 全自动亏钱机器人。不建议现在进,太高了
时间: Tue, 24 Jun 2025 09:53:09 +0000
作者: SpookerV5
回复: 确实,现在美股大A都太高了
时间: Tue, 24 Jun 2025 10:02:28 +0000
作者: www-data
回复: 美股涨这么多,回调不会调不一定。 但是A股嘛3400是个槛,搞不好被挂山顶了。
时间: Tue, 24 Jun 2025 10:32:19 +0000
链接: https://linux.do/t/topic/686310/20
作者: www-data
内容: 艰难的五月份结束了 ,本金一万,战绩如下(目前全部清空仓位): 603716 建仓日期5月6日 盈883.93元 600990 建仓日期5月8日 盈利814.17元 600172 建仓日期5月9日 盈利239元 002851 建仓日期5月14日亏损404元 002219 建仓日期5月15日 亏损15元 605337 建仓日期5月16日 盈利44元 600618 建仓日期5月22日 盈利124元 交易胜率基本符合预期吧。总盈利1686元,只能说凑凑合合,而且后面可能会亏损。5月6日、5月8日受到政治因素影响,所以收益很大。反向思考 这个买卖思路只适合行情回暖阶段炸鱼,不适合日常买卖。 程序思路如下: 缅A这个玩意不存在说放那一直涨的股票,只有不停做切换才能赚到,不存在说放那一直往上升。缅A最大的价值就是没有任何投资性的价值。 基于此再谈买卖,无论庄家做局还是各种阴谋论、或者行情板块轮转,核心都在于人家想要把股票价格拉升出货,没人会白打工。 庄家做局很难通过程序化思路搞定,所以只讨论价格。但是同一天 ,拿最简单的种植举个例子,有春麦、夏麦、秋麦、冬麦。那我到底在春天种小麦、还是钟玉米,然后才能赚到钱? 方法很简单 macd、ma、bull、dmi这些指标都是现成的,直接根据这些指标,往股票里面套。 套完后,进行回测。根据回测结果对每只股票打分,下次出现相似信号来判断股票是否应该买入。 在具体点,以macd为例子,对每只股票出现macd金叉以后的收益进行统计,对统计结果进行处理,比如亏损一次扣三分,赚一次加一分,赚二百块钱加两分。假如一只股票统计结果很优秀,下次在出现金叉,为啥不买呢?最起码比瞎买强的多。。。。。 最后在说一句,选择更重要。缅A既然是缅A,不是没有道理的,应run尽run吧。 以上不做任何投资建议,也许全篇都是胡说八道。
时间: Thu, 29 May 2025 02:30:40 +0000
作者: 大帅哥
回复: 盈利这么高!
时间: Thu, 29 May 2025 02:50:30 +0000
作者: aepax
回复: 这咋这么快第三个帖子了,之前的呢
时间: Thu, 29 May 2025 02:53:20 +0000
作者: www-data
回复: 自己翻前面的帖子。已经跑了一个月了。
时间: Thu, 29 May 2025 02:55:03 +0000
作者: aepax
回复: 奥五月份结帖
时间: Thu, 29 May 2025 02:57:22 +0000
作者: fansf
回复: 受教了!
时间: Thu, 29 May 2025 03:02:03 +0000
作者: 淡笑莫言
回复: 看懂了,量化原来可以这么简单嘛
时间: Thu, 29 May 2025 03:13:08 +0000
作者: www-data
回复: 全自动亏钱机器,就是这么简单。在往上不好玩,费脑子。
时间: Thu, 29 May 2025 03:14:35 +0000
作者: 大宝剑
回复: 一直想试试,前几天开量化要求10个的入金,奈何没实力
时间: Thu, 29 May 2025 05:45:05 +0000
作者: Li66Disccoo69
回复: 真男人都敢上a股
时间: Fri, 30 May 2025 00:24:19 +0000
作者: 双花红棍
回复: 插个眼等下个月
时间: Fri, 30 May 2025 10:05:02 +0000
作者: Daft_GD
回复: 老哥,你的券商是哪个券商,是万一免五的吗?有的券商不支持api调用,或者qmt量化需要10万不等的门槛资金
时间: Tue, 24 Jun 2025 08:19:06 +0000
作者: zhlu
回复: 想看大佬玩加密市场量化
时间: Tue, 24 Jun 2025 08:26:56 +0000
作者: www-data
回复: 不是。直接调的别人的中转接口。
时间: Tue, 24 Jun 2025 08:56:13 +0000
作者: Daft_GD
回复: 大佬,能方便透露一下吗,或者私我也可以,学习一下~
时间: Tue, 24 Jun 2025 09:00:30 +0000
作者: SpookerV5
回复: 嘿嘿,我也整了一个
时间: Tue, 24 Jun 2025 09:20:17 +0000
作者: www-data
回复: 全自动亏钱机器人。不建议现在进,太高了
时间: Tue, 24 Jun 2025 09:53:09 +0000
作者: SpookerV5
回复: 确实,现在美股大A都太高了
时间: Tue, 24 Jun 2025 10:02:28 +0000
作者: www-data
回复: 美股涨这么多,回调不会调不一定。 但是A股嘛3400是个槛,搞不好被挂山顶了。
时间: Tue, 24 Jun 2025 10:32:19 +0000
链接: https://linux.do/t/topic/686310/20
LINUX DO
最近消失了一段时间,写了份量化代码 之 第三帖
艰难的五月份结束了 ,本金一万,战绩如下(目前全部清空仓位): 603716 建仓日期5月6日 盈883.93元 600990 建仓日期5月8日 盈利814.17元 600172 建仓日期5月9日 盈利239元 002851 建仓日期5月14日亏损404元 002219 建仓日期5月15日 亏损15元 605337 建仓日期5月16日 盈利44元 600618 建仓日期5月22日 盈利124元 交易胜率基本符合预期吧。总盈利1686元,只能说凑凑合合,而且后面可能会亏损。5月6日、5月8日受到政治因素影响,所以收益很大。反向思考…
标题: 最近消失了一段时间,写了份量化代码 之 第三帖
作者: www-data
内容: 艰难的五月份结束了 ,本金一万,战绩如下(目前全部清空仓位): 603716 建仓日期5月6日 盈883.93元 600990 建仓日期5月8日 盈利814.17元 600172 建仓日期5月9日 盈利239元 002851 建仓日期5月14日亏损404元 002219 建仓日期5月15日 亏损15元 605337 建仓日期5月16日 盈利44元 600618 建仓日期5月22日 盈利124元 交易胜率基本符合预期吧。总盈利1686元,只能说凑凑合合,而且后面可能会亏损。5月6日、5月8日受到政治因素影响,所以收益很大。反向思考 这个买卖思路只适合行情回暖阶段炸鱼,不适合日常买卖。 程序思路如下: 缅A这个玩意不存在说放那一直涨的股票,只有不停做切换才能赚到,不存在说放那一直往上升。缅A最大的价值就是没有任何投资性的价值。 基于此再谈买卖,无论庄家做局还是各种阴谋论、或者行情板块轮转,核心都在于人家想要把股票价格拉升出货,没人会白打工。 庄家做局很难通过程序化思路搞定,所以只讨论价格。但是同一天 ,拿最简单的种植举个例子,有春麦、夏麦、秋麦、冬麦。那我到底在春天种小麦、还是钟玉米,然后才能赚到钱? 方法很简单 macd、ma、bull、dmi这些指标都是现成的,直接根据这些指标,往股票里面套。 套完后,进行回测。根据回测结果对每只股票打分,下次出现相似信号来判断股票是否应该买入。 在具体点,以macd为例子,对每只股票出现macd金叉以后的收益进行统计,对统计结果进行处理,比如亏损一次扣三分,赚一次加一分,赚二百块钱加两分。假如一只股票统计结果很优秀,下次在出现金叉,为啥不买呢?最起码比瞎买强的多。。。。。 最后在说一句,选择更重要。缅A既然是缅A,不是没有道理的,应run尽run吧。 以上不做任何投资建议,也许全篇都是胡说八道。
时间: Thu, 29 May 2025 02:30:40 +0000
作者: 大帅哥
回复: 盈利这么高!
时间: Thu, 29 May 2025 02:50:30 +0000
作者: aepax
回复: 这咋这么快第三个帖子了,之前的呢
时间: Thu, 29 May 2025 02:53:20 +0000
作者: www-data
回复: 自己翻前面的帖子。已经跑了一个月了。
时间: Thu, 29 May 2025 02:55:03 +0000
作者: aepax
回复: 奥五月份结帖
时间: Thu, 29 May 2025 02:57:22 +0000
作者: fansf
回复: 受教了!
时间: Thu, 29 May 2025 03:02:03 +0000
作者: 淡笑莫言
回复: 看懂了,量化原来可以这么简单嘛
时间: Thu, 29 May 2025 03:13:08 +0000
作者: www-data
回复: 全自动亏钱机器,就是这么简单。在往上不好玩,费脑子。
时间: Thu, 29 May 2025 03:14:35 +0000
链接: https://linux.do/t/topic/686310/8
作者: www-data
内容: 艰难的五月份结束了 ,本金一万,战绩如下(目前全部清空仓位): 603716 建仓日期5月6日 盈883.93元 600990 建仓日期5月8日 盈利814.17元 600172 建仓日期5月9日 盈利239元 002851 建仓日期5月14日亏损404元 002219 建仓日期5月15日 亏损15元 605337 建仓日期5月16日 盈利44元 600618 建仓日期5月22日 盈利124元 交易胜率基本符合预期吧。总盈利1686元,只能说凑凑合合,而且后面可能会亏损。5月6日、5月8日受到政治因素影响,所以收益很大。反向思考 这个买卖思路只适合行情回暖阶段炸鱼,不适合日常买卖。 程序思路如下: 缅A这个玩意不存在说放那一直涨的股票,只有不停做切换才能赚到,不存在说放那一直往上升。缅A最大的价值就是没有任何投资性的价值。 基于此再谈买卖,无论庄家做局还是各种阴谋论、或者行情板块轮转,核心都在于人家想要把股票价格拉升出货,没人会白打工。 庄家做局很难通过程序化思路搞定,所以只讨论价格。但是同一天 ,拿最简单的种植举个例子,有春麦、夏麦、秋麦、冬麦。那我到底在春天种小麦、还是钟玉米,然后才能赚到钱? 方法很简单 macd、ma、bull、dmi这些指标都是现成的,直接根据这些指标,往股票里面套。 套完后,进行回测。根据回测结果对每只股票打分,下次出现相似信号来判断股票是否应该买入。 在具体点,以macd为例子,对每只股票出现macd金叉以后的收益进行统计,对统计结果进行处理,比如亏损一次扣三分,赚一次加一分,赚二百块钱加两分。假如一只股票统计结果很优秀,下次在出现金叉,为啥不买呢?最起码比瞎买强的多。。。。。 最后在说一句,选择更重要。缅A既然是缅A,不是没有道理的,应run尽run吧。 以上不做任何投资建议,也许全篇都是胡说八道。
时间: Thu, 29 May 2025 02:30:40 +0000
作者: 大帅哥
回复: 盈利这么高!
时间: Thu, 29 May 2025 02:50:30 +0000
作者: aepax
回复: 这咋这么快第三个帖子了,之前的呢
时间: Thu, 29 May 2025 02:53:20 +0000
作者: www-data
回复: 自己翻前面的帖子。已经跑了一个月了。
时间: Thu, 29 May 2025 02:55:03 +0000
作者: aepax
回复: 奥五月份结帖
时间: Thu, 29 May 2025 02:57:22 +0000
作者: fansf
回复: 受教了!
时间: Thu, 29 May 2025 03:02:03 +0000
作者: 淡笑莫言
回复: 看懂了,量化原来可以这么简单嘛
时间: Thu, 29 May 2025 03:13:08 +0000
作者: www-data
回复: 全自动亏钱机器,就是这么简单。在往上不好玩,费脑子。
时间: Thu, 29 May 2025 03:14:35 +0000
链接: https://linux.do/t/topic/686310/8
LINUX DO
最近消失了一段时间,写了份量化代码 之 第三帖
艰难的五月份结束了 ,本金一万,战绩如下(目前全部清空仓位): 603716 建仓日期5月6日 盈883.93元 600990 建仓日期5月8日 盈利814.17元 600172 建仓日期5月9日 盈利239元 002851 建仓日期5月14日亏损404元 002219 建仓日期5月15日 亏损15元 605337 建仓日期5月16日 盈利44元 600618 建仓日期5月22日 盈利124元 交易胜率基本符合预期吧。总盈利1686元,只能说凑凑合合,而且后面可能会亏损。5月6日、5月8日受到政治因素影响,所以收益很大。反向思考…
标题: 秦皇语录鉴赏2025624
作者: 𝓵𝓮𝔃𝓲𝓼𝓱𝓮𝓷
内容: 无内容
时间: Tue, 24 Jun 2025 10:40:27 +0000
链接: https://linux.do/t/topic/747306/1
作者: 𝓵𝓮𝔃𝓲𝓼𝓱𝓮𝓷
内容: 无内容
时间: Tue, 24 Jun 2025 10:40:27 +0000
链接: https://linux.do/t/topic/747306/1
LINUX DO
秦皇语录鉴赏2025624
[image] [image] [image] [image] [image] [image]
标题: infini退了我1刀
作者: Tian
内容: 群友的6.6让我嫉妒不已
时间: Tue, 24 Jun 2025 08:17:11 +0000
作者: 倚楼听风雨
回复: 主要是咋提出来,没有交易所
时间: Tue, 24 Jun 2025 08:21:00 +0000
作者: 空气动力学
回复: 实在不行可以转我噶。
时间: Tue, 24 Jun 2025 08:32:58 +0000
作者: Finn
回复: 退了我0.99刀
时间: Tue, 24 Jun 2025 08:36:03 +0000
作者: Jeo
回复: 还没退到我的
时间: Tue, 24 Jun 2025 08:36:47 +0000
作者: wendavid
回复: 开个safepal,很快的
时间: Tue, 24 Jun 2025 08:36:58 +0000
作者: 默默🌀
回复: 主要是我这个卡全返的他也给我退了1刀!蜜汁操作,他能算明白啥啊!
时间: Tue, 24 Jun 2025 08:37:48 +0000
作者: 方块AI
回复: Infini 最终还是发现了
时间: Tue, 24 Jun 2025 08:43:43 +0000
作者: Tian
回复: 生气,要是昨天返我就能赚5刀了哈哈
时间: Tue, 24 Jun 2025 08:48:51 +0000
作者: 倚楼听风雨
回复: 可以直接转到safepay?
时间: Tue, 24 Jun 2025 10:24:20 +0000
作者: 六月风
回复: 两边有相应的链就可以转
时间: Tue, 24 Jun 2025 10:30:05 +0000
作者: komqaq
回复: 我的怎么还没退
时间: Tue, 24 Jun 2025 10:30:25 +0000
作者: wendavid
回复: safepal,同币种就可以了,我好像是usdc转的
时间: Tue, 24 Jun 2025 10:31:37 +0000
作者: 这是我的温柔
回复: 我也是只有1U
时间: Tue, 24 Jun 2025 10:33:39 +0000
作者: 已臻神镜
回复: 6.6u
时间: Tue, 24 Jun 2025 10:39:31 +0000
作者: Tian
回复: 啊,我酸了
时间: Tue, 24 Jun 2025 10:40:26 +0000
链接: https://linux.do/t/topic/746983/16
作者: Tian
内容: 群友的6.6让我嫉妒不已
时间: Tue, 24 Jun 2025 08:17:11 +0000
作者: 倚楼听风雨
回复: 主要是咋提出来,没有交易所
时间: Tue, 24 Jun 2025 08:21:00 +0000
作者: 空气动力学
回复: 实在不行可以转我噶。
时间: Tue, 24 Jun 2025 08:32:58 +0000
作者: Finn
回复: 退了我0.99刀
时间: Tue, 24 Jun 2025 08:36:03 +0000
作者: Jeo
回复: 还没退到我的
时间: Tue, 24 Jun 2025 08:36:47 +0000
作者: wendavid
回复: 开个safepal,很快的
时间: Tue, 24 Jun 2025 08:36:58 +0000
作者: 默默🌀
回复: 主要是我这个卡全返的他也给我退了1刀!蜜汁操作,他能算明白啥啊!
时间: Tue, 24 Jun 2025 08:37:48 +0000
作者: 方块AI
回复: Infini 最终还是发现了
时间: Tue, 24 Jun 2025 08:43:43 +0000
作者: Tian
回复: 生气,要是昨天返我就能赚5刀了哈哈
时间: Tue, 24 Jun 2025 08:48:51 +0000
作者: 倚楼听风雨
回复: 可以直接转到safepay?
时间: Tue, 24 Jun 2025 10:24:20 +0000
作者: 六月风
回复: 两边有相应的链就可以转
时间: Tue, 24 Jun 2025 10:30:05 +0000
作者: komqaq
回复: 我的怎么还没退
时间: Tue, 24 Jun 2025 10:30:25 +0000
作者: wendavid
回复: safepal,同币种就可以了,我好像是usdc转的
时间: Tue, 24 Jun 2025 10:31:37 +0000
作者: 这是我的温柔
回复: 我也是只有1U
时间: Tue, 24 Jun 2025 10:33:39 +0000
作者: 已臻神镜
回复: 6.6u
时间: Tue, 24 Jun 2025 10:39:31 +0000
作者: Tian
回复: 啊,我酸了
时间: Tue, 24 Jun 2025 10:40:26 +0000
链接: https://linux.do/t/topic/746983/16
LINUX DO
infini退了我1刀
群友的6.6让我嫉妒不已 🤣
标题: 恭喜概泽科技荣获6月腾讯云全国排行第一,腾讯云全线产品均有额外折扣!
作者: 腾讯云国际站、国内站优惠
内容: 恭喜概泽科技荣获6月腾讯云全国排行第一 公司技术团队、官方权重过硬 欢迎各位老板私聊合作! 腾讯云折扣帖子:此贴长期更新帖,任何问题在线解答,腾讯云锐驰、轻量应用服务器等产品均有额外折扣(含报价表), 联系方式: Vx:Jack_Napier__ TG: Telegram: Join Group Chat QQ:3590687243
时间: Tue, 24 Jun 2025 07:42:14 +0000
作者: RerrentLinden
回复: 请务必把锐驰国内再打下来点,300¥/年以内我就入了
时间: Tue, 24 Jun 2025 07:44:40 +0000
作者: 腾讯云国际站、国内站优惠
回复: 哎,这种东西根本打不动,只有一些小鸡可以搞,现在属于稀缺资源
时间: Tue, 24 Jun 2025 07:46:49 +0000
作者: 方块AI
回复: 支持一下!
时间: Tue, 24 Jun 2025 07:47:20 +0000
作者: Cimix
回复: 等我小坤到期的
时间: Tue, 24 Jun 2025 07:48:04 +0000
作者: deelii
回复: 坐等给瑞驰打下来我立马上车
时间: Tue, 24 Jun 2025 07:53:44 +0000
作者: 腾讯云国际站、国内站优惠
回复: (帖子已被作者删除)
时间: Tue, 24 Jun 2025 08:06:06 +0000
作者: Rum
回复: 佬友们的想法都是一致的 锐驰还得练
时间: Tue, 24 Jun 2025 08:12:52 +0000
作者: 腾讯云国际站、国内站优惠
回复: 锐驰放开了卖的话,就目前来说,会变成和阿里一样,限速的要命
时间: Tue, 24 Jun 2025 08:13:33 +0000
作者: 大西王
回复: 啥时候能让我无条件的再同价续费一波,23年续费5年之后就再也没有见过同价续费了,眼看再过几年服务器就到期了
时间: Tue, 24 Jun 2025 08:28:39 +0000
作者: 腾讯云国际站、国内站优惠
回复: 加下我好友,发我配置,我看看代理商专属能不能走波便宜的续费,微信:Jack_Napier__
时间: Tue, 24 Jun 2025 09:53:39 +0000
作者: hx3251
回复: 锐驰一限速,就都跑了,目前用还行,其实几个人拼车还行,就怕挂对外端口,被封
时间: Tue, 24 Jun 2025 10:40:25 +0000
链接: https://linux.do/t/topic/746892/12
作者: 腾讯云国际站、国内站优惠
内容: 恭喜概泽科技荣获6月腾讯云全国排行第一 公司技术团队、官方权重过硬 欢迎各位老板私聊合作! 腾讯云折扣帖子:此贴长期更新帖,任何问题在线解答,腾讯云锐驰、轻量应用服务器等产品均有额外折扣(含报价表), 联系方式: Vx:Jack_Napier__ TG: Telegram: Join Group Chat QQ:3590687243
时间: Tue, 24 Jun 2025 07:42:14 +0000
作者: RerrentLinden
回复: 请务必把锐驰国内再打下来点,300¥/年以内我就入了
时间: Tue, 24 Jun 2025 07:44:40 +0000
作者: 腾讯云国际站、国内站优惠
回复: 哎,这种东西根本打不动,只有一些小鸡可以搞,现在属于稀缺资源
时间: Tue, 24 Jun 2025 07:46:49 +0000
作者: 方块AI
回复: 支持一下!
时间: Tue, 24 Jun 2025 07:47:20 +0000
作者: Cimix
回复: 等我小坤到期的
时间: Tue, 24 Jun 2025 07:48:04 +0000
作者: deelii
回复: 坐等给瑞驰打下来我立马上车
时间: Tue, 24 Jun 2025 07:53:44 +0000
作者: 腾讯云国际站、国内站优惠
回复: (帖子已被作者删除)
时间: Tue, 24 Jun 2025 08:06:06 +0000
作者: Rum
回复: 佬友们的想法都是一致的 锐驰还得练
时间: Tue, 24 Jun 2025 08:12:52 +0000
作者: 腾讯云国际站、国内站优惠
回复: 锐驰放开了卖的话,就目前来说,会变成和阿里一样,限速的要命
时间: Tue, 24 Jun 2025 08:13:33 +0000
作者: 大西王
回复: 啥时候能让我无条件的再同价续费一波,23年续费5年之后就再也没有见过同价续费了,眼看再过几年服务器就到期了
时间: Tue, 24 Jun 2025 08:28:39 +0000
作者: 腾讯云国际站、国内站优惠
回复: 加下我好友,发我配置,我看看代理商专属能不能走波便宜的续费,微信:Jack_Napier__
时间: Tue, 24 Jun 2025 09:53:39 +0000
作者: hx3251
回复: 锐驰一限速,就都跑了,目前用还行,其实几个人拼车还行,就怕挂对外端口,被封
时间: Tue, 24 Jun 2025 10:40:25 +0000
链接: https://linux.do/t/topic/746892/12
LINUX DO
恭喜概泽科技荣获6月腾讯云全国排行第一,腾讯云全线产品均有额外折扣!
恭喜概泽科技荣获6月腾讯云全国排行第一 公司技术团队、官方权重过硬 欢迎各位老板私聊合作! 腾讯云折扣帖子:此贴长期更新帖,任何问题在线解答,腾讯云锐驰、轻量应用服务器等产品均有额外折扣(含报价表), 联系方式: ✅Vx:Jack_Napier__ ✅TG: Telegram: Join Group Chat ✅QQ:3590687243
标题: Dia 邀请码,先到先得
作者: dobest
内容: Dia Browser Your friend is inviting you to the Dia beta! Dia is the AI browser that’s always up to speed. No more attaching or copy pasting — if it’s in your tabs, Dia already knows.
时间: Tue, 24 Jun 2025 10:39:24 +0000
链接: https://linux.do/t/topic/747304/1
作者: dobest
内容: Dia Browser Your friend is inviting you to the Dia beta! Dia is the AI browser that’s always up to speed. No more attaching or copy pasting — if it’s in your tabs, Dia already knows.
时间: Tue, 24 Jun 2025 10:39:24 +0000
链接: https://linux.do/t/topic/747304/1
LINUX DO
Dia 邀请码,先到先得
标题: Adgurd Home真是越用越快!
作者: 南纭忍
内容: 上游是OC开了fakeip,拦截订阅加了很多,但其实我体感没啥用,全部去掉交给浏览器拦截还更合适一些
时间: Tue, 24 Jun 2025 09:22:55 +0000
作者: F-Droid
回复: 南纭忍: OC开了fakeip 怎么搞的?
时间: Tue, 24 Jun 2025 09:24:39 +0000
作者: 汉武帝
回复: (帖子已被作者删除)
时间: Tue, 24 Jun 2025 09:27:28 +0000
作者: 汉武帝
回复: 无内容
时间: Tue, 24 Jun 2025 09:28:47 +0000
作者: 南纭忍
回复: 就是个代理,adgurd本身不向外部请求dns而是内部转发到代理软件,所以处理时间看上去很短,这个没必要学看自己需求
时间: Tue, 24 Jun 2025 09:29:53 +0000
作者: F-Droid
回复: 你们都是家用的NAS/OpenWrt搭建的?
时间: Tue, 24 Jun 2025 09:32:14 +0000
作者: huangyork
回复: 国内的网址转去国外速度不受限制吗
时间: Tue, 24 Jun 2025 09:32:56 +0000
作者: F-Droid
回复: 国外的上游DNS解析国内域名响应慢。解析国外的域名都是几ms,对于国内的域名少则几十多ms,多则几百ms甚至上千ms。
时间: Tue, 24 Jun 2025 09:34:00 +0000
作者: an1xing
回复: 用的mosdns
时间: Tue, 24 Jun 2025 09:35:30 +0000
作者: 南纭忍
回复: 是的,软路由+nas
时间: Tue, 24 Jun 2025 09:36:26 +0000
作者: F-Droid
回复: 但是,也可以把国内的域名指定用国内的DNS解析,不过要穿墙,速度快不到哪里去,有时候甚至比直接请求Google DNS/Cloudflare DNS更慢
时间: Tue, 24 Jun 2025 09:36:49 +0000
作者: F-Droid
回复: 那你们的安卓设备是怎么解决的?我记得国内基本上是没有公网ip的,就是有也封禁了常用端口。你们家既有公网IP,853端口还没有被封禁?
时间: Tue, 24 Jun 2025 09:38:12 +0000
作者: huangyork
回复: 在家连WiFi吧
时间: Tue, 24 Jun 2025 09:39:28 +0000
作者: F-Droid
回复: 出去就用运营商的?
时间: Tue, 24 Jun 2025 09:41:42 +0000
作者: huangyork
回复: 不懂这个怎么分的
时间: Tue, 24 Jun 2025 09:43:20 +0000
作者: F-Droid
回复: 你不设置安卓私人DNS,不就是默认用运营商的吗?
时间: Tue, 24 Jun 2025 09:43:41 +0000
作者: 三点半起
回复: 刚发现我这doh挂了
时间: Tue, 24 Jun 2025 09:44:02 +0000
作者: F-Droid
回复: 574ms,太逆天了!
时间: Tue, 24 Jun 2025 09:44:25 +0000
作者: 三点半起
回复: doh一个变3w毫秒了 我还没看咋回事
时间: Tue, 24 Jun 2025 09:45:06 +0000
作者: F-Droid
回复: 3万就是超时了
时间: Tue, 24 Jun 2025 09:45:36 +0000
作者: F-Droid
回复: 在国内,想用国外的上游就必须开代理。当时你搞的时候还没封禁,现在已经封的差不多了。 没有一个两全其美的方法,我这边是用国外VPS建的,请求国外域名确实快,不过查询国内域名的延迟有点高。
时间: Tue, 24 Jun 2025 09:46:46 +0000
作者: huangyork
回复: 分流一下分一下国内外
时间: Tue, 24 Jun 2025 09:58:52 +0000
作者: F-Droid
回复: 不分了,越分越慢
时间: Tue, 24 Jun 2025 09:59:16 +0000
作者: 小仙
回复: 2ms
时间: Tue, 24 Jun 2025 10:06:42 +0000
作者: Zephon
回复: 我用国内的搭建的dot,安卓私人dns去广告,但用了一段时间后,域名就嘎了
时间: Tue, 24 Jun 2025 10:39:56 +0000
链接: https://linux.do/t/topic/747136/32
作者: 南纭忍
内容: 上游是OC开了fakeip,拦截订阅加了很多,但其实我体感没啥用,全部去掉交给浏览器拦截还更合适一些
时间: Tue, 24 Jun 2025 09:22:55 +0000
作者: F-Droid
回复: 南纭忍: OC开了fakeip 怎么搞的?
时间: Tue, 24 Jun 2025 09:24:39 +0000
作者: 汉武帝
回复: (帖子已被作者删除)
时间: Tue, 24 Jun 2025 09:27:28 +0000
作者: 汉武帝
回复: 无内容
时间: Tue, 24 Jun 2025 09:28:47 +0000
作者: 南纭忍
回复: 就是个代理,adgurd本身不向外部请求dns而是内部转发到代理软件,所以处理时间看上去很短,这个没必要学看自己需求
时间: Tue, 24 Jun 2025 09:29:53 +0000
作者: F-Droid
回复: 你们都是家用的NAS/OpenWrt搭建的?
时间: Tue, 24 Jun 2025 09:32:14 +0000
作者: huangyork
回复: 国内的网址转去国外速度不受限制吗
时间: Tue, 24 Jun 2025 09:32:56 +0000
作者: F-Droid
回复: 国外的上游DNS解析国内域名响应慢。解析国外的域名都是几ms,对于国内的域名少则几十多ms,多则几百ms甚至上千ms。
时间: Tue, 24 Jun 2025 09:34:00 +0000
作者: an1xing
回复: 用的mosdns
时间: Tue, 24 Jun 2025 09:35:30 +0000
作者: 南纭忍
回复: 是的,软路由+nas
时间: Tue, 24 Jun 2025 09:36:26 +0000
作者: F-Droid
回复: 但是,也可以把国内的域名指定用国内的DNS解析,不过要穿墙,速度快不到哪里去,有时候甚至比直接请求Google DNS/Cloudflare DNS更慢
时间: Tue, 24 Jun 2025 09:36:49 +0000
作者: F-Droid
回复: 那你们的安卓设备是怎么解决的?我记得国内基本上是没有公网ip的,就是有也封禁了常用端口。你们家既有公网IP,853端口还没有被封禁?
时间: Tue, 24 Jun 2025 09:38:12 +0000
作者: huangyork
回复: 在家连WiFi吧
时间: Tue, 24 Jun 2025 09:39:28 +0000
作者: F-Droid
回复: 出去就用运营商的?
时间: Tue, 24 Jun 2025 09:41:42 +0000
作者: huangyork
回复: 不懂这个怎么分的
时间: Tue, 24 Jun 2025 09:43:20 +0000
作者: F-Droid
回复: 你不设置安卓私人DNS,不就是默认用运营商的吗?
时间: Tue, 24 Jun 2025 09:43:41 +0000
作者: 三点半起
回复: 刚发现我这doh挂了
时间: Tue, 24 Jun 2025 09:44:02 +0000
作者: F-Droid
回复: 574ms,太逆天了!
时间: Tue, 24 Jun 2025 09:44:25 +0000
作者: 三点半起
回复: doh一个变3w毫秒了 我还没看咋回事
时间: Tue, 24 Jun 2025 09:45:06 +0000
作者: F-Droid
回复: 3万就是超时了
时间: Tue, 24 Jun 2025 09:45:36 +0000
作者: F-Droid
回复: 在国内,想用国外的上游就必须开代理。当时你搞的时候还没封禁,现在已经封的差不多了。 没有一个两全其美的方法,我这边是用国外VPS建的,请求国外域名确实快,不过查询国内域名的延迟有点高。
时间: Tue, 24 Jun 2025 09:46:46 +0000
作者: huangyork
回复: 分流一下分一下国内外
时间: Tue, 24 Jun 2025 09:58:52 +0000
作者: F-Droid
回复: 不分了,越分越慢
时间: Tue, 24 Jun 2025 09:59:16 +0000
作者: 小仙
回复: 2ms
时间: Tue, 24 Jun 2025 10:06:42 +0000
作者: Zephon
回复: 我用国内的搭建的dot,安卓私人dns去广告,但用了一段时间后,域名就嘎了
时间: Tue, 24 Jun 2025 10:39:56 +0000
链接: https://linux.do/t/topic/747136/32
LINUX DO
Adgurd Home真是越用越快!
出去就用运营商的?
标题: Golang 后端 + 前端 + 算法- 上海,感兴趣的速来, AI行业
作者: losspm
内容: Golang后端 有搜索推荐相关经验优先 有视频流处理经验加分 熟悉微服务设计模式,最好有AWS相关经验加分 算法 搜索,推荐,视频理解相关 前端 负责公司在线视频流平台的前端架构设计与功能开发 使用 React + TypeScript 实现稳定、流畅的视频播放界面 !!!算法120W以内,前端后端80W以内 以上岗位 均要求2年及以上工作经验 双休,不是996 联系方式:18818261876(WeChat)
时间: Tue, 24 Jun 2025 07:26:59 +0000
作者: Jay Chen
回复: 帮顶哈。。
时间: Tue, 24 Jun 2025 07:28:52 +0000
作者: MorryWang
回复: 具体是什么业务呢
时间: Tue, 24 Jun 2025 07:59:35 +0000
作者: Ryan
回复: 佬,薪资范围多少
时间: Tue, 24 Jun 2025 08:16:43 +0000
作者: 叫我清风
回复: 佬,薪资范围多少
时间: Tue, 24 Jun 2025 08:18:38 +0000
作者: losspm
回复: (帖子已被作者删除)
时间: Tue, 24 Jun 2025 09:22:53 +0000
作者: losspm
回复: 算法120W以内,前端后端80W以内,感兴趣可以加微信了解下
时间: Tue, 24 Jun 2025 09:23:52 +0000
作者: Jiepijiang
回复: 帮顶!帮顶!
时间: Tue, 24 Jun 2025 09:30:14 +0000
作者: time
回复: 上海都给开这么多吗
时间: Tue, 24 Jun 2025 09:31:57 +0000
作者: 一晚好梦
回复: 我怎么不在上海呢
时间: Tue, 24 Jun 2025 10:38:50 +0000
链接: https://linux.do/t/topic/746844/10
作者: losspm
内容: Golang后端 有搜索推荐相关经验优先 有视频流处理经验加分 熟悉微服务设计模式,最好有AWS相关经验加分 算法 搜索,推荐,视频理解相关 前端 负责公司在线视频流平台的前端架构设计与功能开发 使用 React + TypeScript 实现稳定、流畅的视频播放界面 !!!算法120W以内,前端后端80W以内 以上岗位 均要求2年及以上工作经验 双休,不是996 联系方式:18818261876(WeChat)
时间: Tue, 24 Jun 2025 07:26:59 +0000
作者: Jay Chen
回复: 帮顶哈。。
时间: Tue, 24 Jun 2025 07:28:52 +0000
作者: MorryWang
回复: 具体是什么业务呢
时间: Tue, 24 Jun 2025 07:59:35 +0000
作者: Ryan
回复: 佬,薪资范围多少
时间: Tue, 24 Jun 2025 08:16:43 +0000
作者: 叫我清风
回复: 佬,薪资范围多少
时间: Tue, 24 Jun 2025 08:18:38 +0000
作者: losspm
回复: (帖子已被作者删除)
时间: Tue, 24 Jun 2025 09:22:53 +0000
作者: losspm
回复: 算法120W以内,前端后端80W以内,感兴趣可以加微信了解下
时间: Tue, 24 Jun 2025 09:23:52 +0000
作者: Jiepijiang
回复: 帮顶!帮顶!
时间: Tue, 24 Jun 2025 09:30:14 +0000
作者: time
回复: 上海都给开这么多吗
时间: Tue, 24 Jun 2025 09:31:57 +0000
作者: 一晚好梦
回复: 我怎么不在上海呢
时间: Tue, 24 Jun 2025 10:38:50 +0000
链接: https://linux.do/t/topic/746844/10
LINUX DO
Golang 后端 + 前端 + 算法- 上海,感兴趣的速来, AI行业
Golang后端 有搜索推荐相关经验优先 有视频流处理经验加分 熟悉微服务设计模式,最好有AWS相关经验加分 算法 搜索,推荐,视频理解相关 前端 负责公司在线视频流平台的前端架构设计与功能开发 使用 React + TypeScript 实现稳定、流畅的视频播放界面 !!!算法120W以内,前端后端80W以内 以上岗位 均要求2年及以上工作经验 双休,不是996 联系方式:18818261876(WeChat)
标题: 对比AI 搜索,到底哪一个是最强的呢?
作者: K
内容: 基于上一个,大部分人认为AI mode很强:Google AI mode 正式对全美人员推出啦!到底哪一个AI搜索是最强的? 10个问题问了 Google AI mode(默认模型) ChatGPT Search(默认模型) Perplexity(默认模型) AI studio grounding with google search(gemini 2.5 pro) Gemini app(gemini 2.5 pro) 分别问了10个问题 # Question Primary Skill Being Tested 1 Complex Comparison “Compare the key economic recovery policies proposed and implemented by the US and the Eurozone in the first 12 months following the start of the COVID-19 pandemic. Focus on fiscal stimulus, central bank actions, and support for small businesses.” 2 Recency & Real-time Info “What are the latest developments and public reactions this week regarding the proposed ‘AI Act’ in the European Union? Summarize the main arguments for and against the most recent draft.” 3 Nuance & Fact-Checking “Is a vegan diet inherently healthier than an omnivorous diet? Provide a balanced view citing scientific studies that support both sides and highlight key nutritional considerations for each.” 4 Structured Instruction “Create a 3-day travel itinerary for a first-time visitor to Kyoto, Japan, with a budget of $150 per day (excluding flights/accommodation). The itinerary should focus on historical sites, include one unique food experience per day, and suggest public transport options.” 5 Technical Explanation & Analogy “Explain the difference between the Proof-of-Work (PoW) and Proof-of-Stake (PoS) consensus mechanisms in blockchain. Use an analogy to make the explanation understandable for a non-technical audience.” 6 Creative Ideation “Based on current sustainable technology trends, generate three novel business ideas that could help a medium-sized city reduce its carbon footprint. For each idea, outline the concept, target market, and a potential challenge.” 7 Ethical Reasoning “What are the primary ethical arguments for and against using generative AI to create art for commercial purposes? Discuss the perspectives of human artists, AI developers, and consumers.” 8 Historical Context & Analysis “Summarize the ‘Tulip Mania’ of the 17th century. To what extent is it accurate to compare it to the modern cryptocurrency market, and what are the key historical counterarguments to this comparison?” 9 Practical “How-To” Guide “I need to build a raised garden bed. Provide a step-by-step guide, including a list of materials with estimated costs, recommended wood types that are rot-resistant but safe for growing vegetables, and a simple description of the construction.” 10 Source Vetting & Extraction “Find three recent (post-2022) peer-reviewed studies on the impact of microplastics on marine life. For each study, list the primary author, the journal it was published in, and a one-sentence summary of its main finding.” 下面是问题的中文翻译(我是用英文提问的) 序号 问题 主要考察能力 1 复杂比较 “对比一下,在新冠疫情爆发后的头12个月里,美国和欧元区提出并实施了哪些关键的经济复苏政策?重点要讲财政刺激、央行举措以及对小微企业的扶持。” 2 时效性与实时信息 “本周,欧盟内部关于《人工智能法案》的提案有哪些最新进展和公众反响?请总结一下最新草案的正反两方主要论点。” 3 细节辨析与事实核查 “纯素饮食一定比荤素搭配的杂食饮食更健康吗?请给出一个不偏不倚的观点,引用科学研究来支撑正反两方的说法,并点明两种饮食方式各自需要注意的关键营养问题。” 4 结构化指令 “请给第一次去日本京都的游客设计一个为期3天的旅行计划。预算为每天150美元(不含机票住宿)。行程应侧重于历史古迹,每天包含一项独特的本地美食体验,并推荐公共交通方案。” 5 技术解释与类比 “请解释区块链中‘工作量证明(PoW)’和‘权益证明(PoS)’这两种共识机制有什么区别。请用一个类比来向非技术背景的人解释清楚。” 6 创意构思 “结合当前的可持续技术趋势,构思三个新颖的商业点子,帮助一个中等规模的城市减少碳足迹。每个点子都需要概述其概念、目标市场以及一个潜在的挑战。” 7 伦理思辨 “用生成式AI创作商业艺术品,主要的伦理争议点有哪些?请分别从人类艺术家、AI开发者和消费者的角度来探讨。” 8 历史背景与分析 “请概述17世纪的‘郁金香狂热’事件。把它和当今的加密货币市场做比较,在多大程度上是贴切的?又有哪些关键的历史事实可以反驳这种类比?” 9 实用操作指南 “我想搭一个高架花床。请提供一份手把手的指南,包括一份材料清单和预估费用,推荐几种耐腐又适合种菜的木材,并简单描述一下搭建过程。” 10 信息源核查与提取 “请找出三份2022年之后发表的、关于微塑料对海洋生物影响的同行评审研究。对于每份研究,请列出第一作者、发表期刊,并用一句话总结其核心发现。” 下面是结果(我只放每个AI回答的分数,如果全部答案要放太长了) ** 谷歌 AI Mode** 题号 准确性与事实性 (1-5分) 完整性与深度 (1-5分) 清晰度与结构 (1-5分) 信息来源与引用 (1-5分) 细致度与客观性 (1-5分) 时效性 (1-5分) 总分 (/30) 备注 / 观察 1 5 4 5 1 4 5 24 总结得非常清晰、文笔好、内容准确。就是缺了具体的引用。 2 1 2 3 1 2 1 10 重大失误。 凭空捏造了一个未来的日期(2025年6月),还把虚构的事件说得跟真的一样。 3 5 4 5 1 5 5 25 观点非常出色、中立。把正反两方都解释得很清楚,但没给来源。 4 5 4 4 1 5 5 24 行程安排得不错,很实用。满足了提问的要求,但结构上不如其他几家。 5 5 5 5 1 5 5 26 解释堪称完美,类比也打得特别清楚、到位。顶级的回答。 6 4 4 4 1 5 5 23
作者: K
内容: 基于上一个,大部分人认为AI mode很强:Google AI mode 正式对全美人员推出啦!到底哪一个AI搜索是最强的? 10个问题问了 Google AI mode(默认模型) ChatGPT Search(默认模型) Perplexity(默认模型) AI studio grounding with google search(gemini 2.5 pro) Gemini app(gemini 2.5 pro) 分别问了10个问题 # Question Primary Skill Being Tested 1 Complex Comparison “Compare the key economic recovery policies proposed and implemented by the US and the Eurozone in the first 12 months following the start of the COVID-19 pandemic. Focus on fiscal stimulus, central bank actions, and support for small businesses.” 2 Recency & Real-time Info “What are the latest developments and public reactions this week regarding the proposed ‘AI Act’ in the European Union? Summarize the main arguments for and against the most recent draft.” 3 Nuance & Fact-Checking “Is a vegan diet inherently healthier than an omnivorous diet? Provide a balanced view citing scientific studies that support both sides and highlight key nutritional considerations for each.” 4 Structured Instruction “Create a 3-day travel itinerary for a first-time visitor to Kyoto, Japan, with a budget of $150 per day (excluding flights/accommodation). The itinerary should focus on historical sites, include one unique food experience per day, and suggest public transport options.” 5 Technical Explanation & Analogy “Explain the difference between the Proof-of-Work (PoW) and Proof-of-Stake (PoS) consensus mechanisms in blockchain. Use an analogy to make the explanation understandable for a non-technical audience.” 6 Creative Ideation “Based on current sustainable technology trends, generate three novel business ideas that could help a medium-sized city reduce its carbon footprint. For each idea, outline the concept, target market, and a potential challenge.” 7 Ethical Reasoning “What are the primary ethical arguments for and against using generative AI to create art for commercial purposes? Discuss the perspectives of human artists, AI developers, and consumers.” 8 Historical Context & Analysis “Summarize the ‘Tulip Mania’ of the 17th century. To what extent is it accurate to compare it to the modern cryptocurrency market, and what are the key historical counterarguments to this comparison?” 9 Practical “How-To” Guide “I need to build a raised garden bed. Provide a step-by-step guide, including a list of materials with estimated costs, recommended wood types that are rot-resistant but safe for growing vegetables, and a simple description of the construction.” 10 Source Vetting & Extraction “Find three recent (post-2022) peer-reviewed studies on the impact of microplastics on marine life. For each study, list the primary author, the journal it was published in, and a one-sentence summary of its main finding.” 下面是问题的中文翻译(我是用英文提问的) 序号 问题 主要考察能力 1 复杂比较 “对比一下,在新冠疫情爆发后的头12个月里,美国和欧元区提出并实施了哪些关键的经济复苏政策?重点要讲财政刺激、央行举措以及对小微企业的扶持。” 2 时效性与实时信息 “本周,欧盟内部关于《人工智能法案》的提案有哪些最新进展和公众反响?请总结一下最新草案的正反两方主要论点。” 3 细节辨析与事实核查 “纯素饮食一定比荤素搭配的杂食饮食更健康吗?请给出一个不偏不倚的观点,引用科学研究来支撑正反两方的说法,并点明两种饮食方式各自需要注意的关键营养问题。” 4 结构化指令 “请给第一次去日本京都的游客设计一个为期3天的旅行计划。预算为每天150美元(不含机票住宿)。行程应侧重于历史古迹,每天包含一项独特的本地美食体验,并推荐公共交通方案。” 5 技术解释与类比 “请解释区块链中‘工作量证明(PoW)’和‘权益证明(PoS)’这两种共识机制有什么区别。请用一个类比来向非技术背景的人解释清楚。” 6 创意构思 “结合当前的可持续技术趋势,构思三个新颖的商业点子,帮助一个中等规模的城市减少碳足迹。每个点子都需要概述其概念、目标市场以及一个潜在的挑战。” 7 伦理思辨 “用生成式AI创作商业艺术品,主要的伦理争议点有哪些?请分别从人类艺术家、AI开发者和消费者的角度来探讨。” 8 历史背景与分析 “请概述17世纪的‘郁金香狂热’事件。把它和当今的加密货币市场做比较,在多大程度上是贴切的?又有哪些关键的历史事实可以反驳这种类比?” 9 实用操作指南 “我想搭一个高架花床。请提供一份手把手的指南,包括一份材料清单和预估费用,推荐几种耐腐又适合种菜的木材,并简单描述一下搭建过程。” 10 信息源核查与提取 “请找出三份2022年之后发表的、关于微塑料对海洋生物影响的同行评审研究。对于每份研究,请列出第一作者、发表期刊,并用一句话总结其核心发现。” 下面是结果(我只放每个AI回答的分数,如果全部答案要放太长了) ** 谷歌 AI Mode** 题号 准确性与事实性 (1-5分) 完整性与深度 (1-5分) 清晰度与结构 (1-5分) 信息来源与引用 (1-5分) 细致度与客观性 (1-5分) 时效性 (1-5分) 总分 (/30) 备注 / 观察 1 5 4 5 1 4 5 24 总结得非常清晰、文笔好、内容准确。就是缺了具体的引用。 2 1 2 3 1 2 1 10 重大失误。 凭空捏造了一个未来的日期(2025年6月),还把虚构的事件说得跟真的一样。 3 5 4 5 1 5 5 25 观点非常出色、中立。把正反两方都解释得很清楚,但没给来源。 4 5 4 4 1 5 5 24 行程安排得不错,很实用。满足了提问的要求,但结构上不如其他几家。 5 5 5 5 1 5 5 26 解释堪称完美,类比也打得特别清楚、到位。顶级的回答。 6 4 4 4 1 5 5 23