WWW.YOUINFO.SITE
标签聚合 仅用

/tag/仅用

LinuxDo 最新话题 · 2026-06-10 10:52:15+08:00 · tech

今早在 X 上看到不少案例:有人仅用几十到数百美元,就复现出了大型游戏公司级别的 3D 游戏效果。 我刚刚也亲自体验了一下,确实感觉相当惊艳,甚至已经足以替代绝大多数人的部分工作…… 从个人角度看,Fable 5 的使用成本可能并不低;但对公司而言,这个成本其实比较划算吧?高经验员工 + AI,然后裁掉实习生,CS 之后是否会步土木的后尘???佬友怎么看? 2 个帖子 - 2 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-05-27 20:19:22+08:00 · tech

<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>MIMO API Key Extractor</title> <style> :root { --system-blue: #007AFF; --system-blue-hover: #0062cc; --system-gray: #8E8E93; --system-gray-6: #F2F2F7; --system-background: #F5F5F7; --card-background: rgba(255, 255, 255, 0.85); --glass-border: rgba(255, 255, 255, 0.6); --shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.04); --shadow-md: 0 12px 24px rgba(0, 0, 0, 0.08); --radius-lg: 20px; --radius-md: 12px; --font-primary: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif; --font-mono: "SF Mono", "Menlo", "Monaco", "Courier New", monospace; } * { margin: 0; padding: 0; box-sizing: border-box; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } body { font-family: var(--font-primary); background-color: var(--system-background); background-image: radial-gradient(at 80% 0%, hsla(189,100%,56%,0.1) 0px, transparent 50%), radial-gradient(at 0% 50%, hsla(355,100%,93%,0.3) 0px, transparent 50%), radial-gradient(at 80% 50%, hsla(240,100%,70%,0.05) 0px, transparent 50%); color: #1d1d1f; min-height: 100vh; display: flex; justify-content: center; align-items: center; padding: 40px 20px; } .main-container { width: 100%; max-width: 860px; background: var(--card-background); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border: 1px solid var(--glass-border); border-radius: var(--radius-lg); box-shadow: var(--shadow-md); overflow: hidden; animation: fadeIn 0.6s cubic-bezier(0.16, 1, 0.3, 1); } /* 头部区域 */ .header { padding: 40px 40px 20px; text-align: center; } .header h1 { font-size: 32px; font-weight: 700; letter-spacing: -0.5px; margin-bottom: 8px; background: linear-gradient(135deg, #1d1d1f 0%, #434344 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; } .header p { color: var(--system-gray); font-size: 15px; font-weight: 400; } /* 内容区域 */ .content { padding: 20px 40px 40px; } /* 输入框区域 */ .input-wrapper { position: relative; margin-bottom: 24px; } textarea { width: 100%; min-height: 180px; padding: 20px; border: none; border-radius: var(--radius-md); background: var(--system-gray-6); font-family: var(--font-mono); font-size: 13px; line-height: 1.6; color: #1d1d1f; resize: vertical; transition: all 0.3s cubic-bezier(0.25, 0.1, 0.25, 1); box-shadow: inset 0 1px 4px rgba(0,0,0,0.02); } textarea::placeholder { color: #aeaeb2; font-family: var(--font-primary); } textarea:focus { outline: none; background: #fff; box-shadow: 0 0 0 4px rgba(0, 122, 255, 0.15); } /* 按钮组 */ .action-bar { display: flex; gap: 16px; margin-bottom: 32px; } button { border: none; padding: 14px 28px; border-radius: 980px; /* Pill shape */ font-size: 15px; font-weight: 600; cursor: pointer; transition: all 0.2s cubic-bezier(0.25, 0.1, 0.25, 1); display: flex; align-items: center; justify-content: center; gap: 8px; } button:active { transform: scale(0.96); } .btn-primary { background: var(--system-blue); color: white; flex: 2; box-shadow: 0 4px 12px rgba(0, 122, 255, 0.3); } .btn-primary:hover { background: var(--system-blue-hover); box-shadow: 0 6px 16px rgba(0, 122, 255, 0.4); } .btn-secondary { background: rgba(0, 0, 0, 0.05); color: #1d1d1f; flex: 1; } .btn-secondary:hover { background: rgba(0, 0, 0, 0.1); } /* 结果区域 */ .result-panel { border-top: 1px solid rgba(0,0,0,0.06); padding-top: 30px; display: none; /* 默认隐藏 */ animation: slideDown 0.4s cubic-bezier(0.16, 1, 0.3, 1); } .result-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; } .result-title { font-size: 17px; font-weight: 600; color: #1d1d1f; } .badges { display: flex; gap: 8px; } .badge { padding: 4px 10px; border-radius: 6px; font-size: 12px; font-weight: 500; letter-spacing: 0.3px; } .badge-count { background: rgba(0, 122, 255, 0.1); color: var(--system-blue); } .badge-check { background: rgba(52, 199, 89, 0.1); color: #34C759; } .key-list { max-height: 360px; overflow-y: auto; background: #fff; border-radius: var(--radius-md); border: 1px solid rgba(0,0,0,0.04); box-shadow: 0 4px 12px rgba(0,0,0,0.02); } /* 自定义滚动条 */ .key-list::-webkit-scrollbar { width: 8px; } .key-list::-webkit-scrollbar-track { background: transparent; } .key-list::-webkit-scrollbar-thumb { background-color: rgba(0,0,0,0.1); border-radius: 4px; } .key-item { display: flex; justify-content: space-between; align-items: center; padding: 16px 20px; border-bottom: 1px solid rgba(0,0,0,0.04); transition: background 0.2s; } .key-item:last-child { border-bottom: none; } .key-item:hover { background: #f9f9fa; } .key-text { font-family: var(--font-mono); font-size: 13px; color: #333; word-break: break-all; margin-right: 16px; } .btn-copy-small { padding: 6px 12px; font-size: 12px; border-radius: 6px; background: transparent; color: var(--system-blue); border: 1px solid rgba(0, 122, 255, 0.2); flex-shrink: 0; } .btn-copy-small:hover { background: rgba(0, 122, 255, 0.05); } .btn-copy-small.copied { background: #34C759; border-color: transparent; color: white; } /* 底部批量操作 */ .export-actions { margin-top: 24px; display: grid; grid-template-columns: 1fr 1fr; gap: 16px; } .btn-export { background: white; border: 1px solid rgba(0,0,0,0.08); color: #1d1d1f; box-shadow: 0 2px 6px rgba(0,0,0,0.02); } .btn-export:hover { border-color: rgba(0,0,0,0.15); transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0,0,0,0.05); } /* 动画定义 */ @keyframes fadeIn { from { opacity: 0; transform: scale(0.98); } to { opacity: 1; transform: scale(1); } } @keyframes slideDown { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } /* 响应式 */ @media (max-width: 600px) { body { padding: 20px 10px; } .header { padding: 30px 20px 10px; } .content { padding: 20px; } .action-bar { flex-direction: column; } .export-actions { grid-template-columns: 1fr; } } </style> </head> <body> <div class="main-container"> <div class="header"> <h1>API Key Extraction</h1> <p>Professional MIMO Code Key Processor</p> </div> <div class="content"> <div class="input-wrapper"> <textarea id="inputText" placeholder="请在此粘贴包含 MIMO API 密钥的文本内容..."></textarea> </div> <div class="action-bar"> <button class="btn-primary" onclick="extractKeys()"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line></svg> 智能提取 </button> <button class="btn-secondary" onclick="clearAll()"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="3 6 5 6 21 6"></polyline><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path></svg> 清空 </button> </div> <div id="resultSection" class="result-panel"> <div class="result-header"> <span class="result-title">提取结果</span> <div class="badges"> <span class="badge badge-count" id="countBadge">0 items</span> <span class="badge badge-check">Length: 51 chars</span> </div> </div> <div class="key-list" id="resultList"> <!-- Javascript will populate this --> </div> <div class="export-actions"> <button class="btn-export" onclick="copyAllKeys('newline')"> 📋 复制全部 (换行分隔) </button> <button class="btn-export" onclick="copyAllKeys('comma')"> 📑 复制全部 (逗号分隔) </button> </div> </div> </div> </div> <script> let extractedKeys = []; function extractKeys() { const inputText = document.getElementById('inputText').value; // 交互反馈:如果没有输入,输入框抖动一下 if (!inputText.trim()) { const textarea = document.getElementById('inputText'); textarea.style.transform = 'translateX(4px)'; setTimeout(() => textarea.style.transform = 'translateX(-4px)', 50); setTimeout(() => textarea.style.transform = 'translateX(0)', 100); return; } // 核心正则逻辑:tp- 开头 + 恰好48位字母数字(大小写混合) const regex = /tp-[a-zA-Z0-9]{48}\b/g; const keys = inputText.match(regex); if (keys && keys.length > 0) { // 去重 extractedKeys = [...new Set(keys)]; // 严格校验长度:tp-(3) + 48 = 51 extractedKeys = extractedKeys.filter(key => key.length === 51); if (extractedKeys.length > 0) { displayResults(); } else { showToast('未找到符合标准长度(51字符)的密钥', 'error'); document.getElementById('resultSection').style.display = 'none'; } } else { showToast('未检测到有效的 tp- 格式密钥', 'error'); document.getElementById('resultSection').style.display = 'none'; } } function displayResults() { const resultSection = document.getElementById('resultSection'); const resultList = document.getElementById('resultList'); const countBadge = document.getElementById('countBadge'); // 显现动画 resultSection.style.display = 'block'; countBadge.textContent = `${extractedKeys.length} 个密钥`; resultList.innerHTML = ''; extractedKeys.forEach((key, index) => { const keyItem = document.createElement('div'); keyItem.className = 'key-item'; // 延迟动画让列表逐个出现 keyItem.style.animation = `fadeIn 0.3s ease backwards ${index * 0.05}s`; keyItem.innerHTML = ` <span class="key-text">${key}</span> <button class="btn-copy-small" onclick="copyKey('${key}', this)">复制</button> `; resultList.appendChild(keyItem); }); // 滚动到结果区 resultSection.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); } function copyKey(key, btnElement) { navigator.clipboard.writeText(key).then(() => { const originalText = btnElement.textContent; btnElement.textContent = '已复制'; btnElement.classList.add('copied'); setTimeout(() => { btnElement.textContent = originalText; btnElement.classList.remove('copied'); }, 1500); }).catch(err => { showToast('复制失败', 'error'); }); } function copyAllKeys(format) { if (extractedKeys.length === 0) return; let content = ''; if (format === 'newline') { content = extractedKeys.join('\n'); } else if (format === 'comma') { content = extractedKeys.join(','); } navigator.clipboard.writeText(content).then(() => { const eventBtn = event.currentTarget; // 获取点击的按钮 const originalText = eventBtn.innerText; eventBtn.innerText = '✅ 复制成功'; eventBtn.style.color = '#34C759'; eventBtn.style.borderColor = '#34C759'; setTimeout(() => { eventBtn.innerText = originalText; eventBtn.style.color = ''; eventBtn.style.borderColor = ''; }, 2000); }).catch(err => { showToast('批量复制失败', 'error'); }); } function clearAll() { const textarea = document.getElementById('inputText'); const resultSection = document.getElementById('resultSection'); // 简单的淡出效果 textarea.value = ''; textarea.focus(); if (resultSection.style.display === 'block') { resultSection.style.opacity = '0'; setTimeout(() => { resultSection.style.display = 'none'; resultSection.style.opacity = '1'; extractedKeys = []; }, 300); } else { extractedKeys = []; } } function showToast(message, type) { alert(message); } </script> </body> </html> [!提示] 巧用L站搜索框 11 个帖子 - 9 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-05-27 14:40:02+08:00 · tech

Kimi Code Plan 近日因封号事件在中文开发者社区引发抗议。风波始于开源开发者 Leechael 针对终端 Agent 工具 Pi Coding Agent 开发了 Kimi 适配器 pi-provider-kimi-code 。由于 Pi 官方最初未支持 Kimi , Leechael 编写了适配代码方便付费用户在终端复用自身额度 。然而,适配器上线后, Kimi 官方对 Leechael 的账号实施了封禁。 与此同时,海外开发者 Noemi 也声称在 Docker 容器中将 Kimi Code 接入 Pi 运行两天后遭遇封号,并贴出 403 权限被拒的截图质问月之暗面官方。 面对开发者群体的集体声讨,封号事件在 5 月 26 日下午迎来了戏剧性解决。 Kimi Code 团队成员 Young 在 X 上仅回复海外开发者 Noemi 表示 「We immediately adjusted our strategy and restored normal access to the affected accounts. ?」 ,紧急解封了受影响的付费账户。 然而,风波并未停息,反而迅速演变成第二波舆论危机。官方的致歉与解封声明仅用英文发布,且只在 X 上选择性回复了国外开发者,对国内开发者在中文渠道发起的抗议与退款请求完全不予正面回应。双重态度彻底引爆了国内付费用户的不满。 Leechael 公开晒出 pi-provider-kimi-code 插件 README 停更声明的截图,直言 「解封了。申请退款。只给老外用户公开道歉,中文用户不值得一个解释。??」 。 停更声明以英文直白列出三条弃用原因:首先是官方错误封禁,其次是解封后无任何解释与道歉,最后是平台对中文用户存在 「差别对待(Discriminatory treatment of Chinese users)」 的系统性倾向,包括更严苛的规则执行、不透明的风控以及缺乏申诉渠道。声明指出,在一个 「先封号且事后拒绝解释」 的厂商底座上开发没有任何长期价值,适配器自此无限期停更,不接受任何合并请求与新版本发布。 8 个帖子 - 7 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-05-26 08:35:29+08:00 · tech

第一张图 这个是deepseek 官网 api 的,思考仅用时2.4秒 第二张图 这个是opencode go的 思考用时 71秒 我试了很多次都这样 是啥原因呢各位佬 上面图片测试思考模式都是模型默认 即使我将思考模式都设置成一样的 opencode go的最快也需要21秒 而官网的只需要1.9秒 除非我关闭思考 反正速度上今天go比官网速度快 很奇怪 有大佬能答疑解惑吗 或者如何让opencode go 的flash 的思考不那么久 8 个帖子 - 5 位参与者 阅读完整话题

IT之家 · 2026-05-25 07:44:33+08:00 · tech

IT之家 5 月 25 日消息, Cloud Imperium Games 旗下游戏《星际公民》现已成功众筹 10 亿美元(IT之家注:现汇率约合 68.12 亿元人民币)。 据报道,本作曾在去年 12 月筹资 9 亿美元(现汇率约合 61.31 亿元人民币), 而最后 1 亿美元(现汇率约合 6.81 亿元人民币)仅用 6 个月便筹集成功 。 截至IT之家发稿, 《星际公民》已成功筹集 10.03 亿美元(现汇率约合 68.33 亿元人民币) ,目前还在持续增长。 作为参考,《星际公民》游戏最早公布于 2012 年,开发周期已超过 10 年。提供单人战役、RPG 模式等玩法。 经历多年跳票后,《星际公民》单人战役模式预计将在今年发售,提供约 30 至 40 小时的剧情流程,多名好莱坞演员将参与游戏制作。 而《星际公民》的 RPG 部分则是一直处于 Alpha 测试状态,向众筹支持者开放。该模式提供徒步与飞船玩法,并包含大量和平与战斗性质的职业和任务。 相关阅读: 《 众筹逼近 10 亿美元:〈星际公民〉游戏上线 Alpha 4.7,首发制造系统、重制库存界面 》

LinuxDo 最新话题 · 2026-05-20 10:41:08+08:00 · tech

你是一名精通图形学算法与 Web 交互的前端专家。请仅用一个 HTML 文件,基于 Three.js (ES Modules) 实现一个物理级高保真、支持自然手势的 3x3 魔方。 一、 交付规范 单文件架构:HTML/CSS/JS 必须合并在一个文件中。 依赖管理:必须通过 importmap 从 unpkg 或 cdn.skypack 引入 Three.js 及其 OrbitControls、Tween.js。 零素材依赖:禁止加载任何外部图片/贴图,所有材质纹理必须使用 HTML5 Canvas API 程序化动态生成。 二、 视觉与物理标准 模型构建: 场景需包含 27 个独立的小方块(Cubies)。 物理间隙:小方块之间必须保留微小的物理间距(Spacing),不可紧贴。 倒角质感:通过 Canvas 绘制带有圆角矩形(Rounded Rect)的贴纸纹理,模拟真实魔方的塑料黑边与贴纸高光效果。 光影环境: 必须开启 ShadowMap。 配置环境光(Ambient)与平行光(Directional),确保魔方有清晰的立体感和阴影投射。 三、 核心逻辑考点(数据结构与变换) 禁止维护复杂的 3D 状态数组,请使用基于"空间位置"的动态计算方案: 动态层级筛选: 不要写死索引。当需要旋转某一层时,遍历所有方块,根据其在世界坐标系(World Position)下的 x, y, z 值与阈值(Epsilon)来判断它是否属于当前旋转层。 Pivot 变换机制(关键考点): 实现旋转时,必须创建一个临时的 Pivot(轴心对象)。 核心API:使用 pivot.attach(object) 将选中的方块挂载到轴心,旋转轴心,动画结束后使用 scene.attach(object) 将方块放回场景。 作用:利用 attach 自动计算世界矩阵变换,避免手动处理复杂的四元数乘法。 坐标清洗: 每次旋转结束后,必须对所有方块的位置(Position)和旋转(Rotation)进行 Math.round() 取整处理,消除浮点数累积误差,防止魔方"散架"。 四、 交互系统考点(算法重难点) 这是区分初级与高级开发者的核心点,请实现类似原生 App 的自然手势体验: 操作分离: 左键拖拽:旋转魔方的某一层。 右键拖拽:旋转视角(OrbitControls)。 基于投影向量的手势识别算法: 射线检测:点击时获取被点击方块的"表面法线(Face Normal)“。 意图判断: 根据法线,锁定潜在的两个旋转轴(例如点击前面,潜在轴为 X 或 Y)。 将这两个 3D 轴的向量**投影(Project)**到 2D 屏幕空间。 计算用户鼠标滑动的 2D 向量与这两个投影向量的点积(Dot Product),选择匹配度最高的轴作为旋转轴。 方向修正与实时跟随: 实现1:1 实时跟手:鼠标移动多少像素,魔方层转动对应角度。 符号修正:通过叉乘(Cross Product)或投影符号判断,确保无论从魔方正面、背面还是顶面操作,鼠标向右划动始终对应"向右转"的视觉逻辑(解决方向反转 bug)。 磁吸效果: 松开鼠标后,自动计算最近的 90 度倍数,使用 Tween.js 播放回弹动画并对齐网格。 五、 代码质量 代码需包含清晰的注释,解释"手势投影算法"和"Pivot 挂载逻辑”。 具备 Scramble(打乱)和 Reset(重置)功能按钮。 以上是提示词,glm5.1也能做出来,但是有点小瑕疵,我用gemini3.5flash尝试着做了一下 一点问题没有,完成度特别高,旋转时的ui,逻辑都没问题,这个看完了之后真是瘫坐在椅子上了 3 个帖子 - 2 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-05-08 12:18:07+08:00 · tech

各位佬友,今天早上起床心态崩了,用了 3 个月的 PRO 20X 账号突然被封。 基本情况: 订阅方式: 正规 Google Play 订阅(已稳定续费 3 个月)。 使用习惯: 基本不登 Web 端,只通过 sub2api 反代Codex 使用。 网络环境: 固定使用两个落地家宽的 IP,未频繁切换。 按理说 Google Play 订阅+稳定 IP 已经很稳了,难道是 Codex 的调用频率或者特定的第三方客户端容易被封?还是最近 OpenAI 又有针对特定网段的大清洗? 求各位佬友指教比较稳的防封策略是什么? 11 个帖子 - 9 位参与者 阅读完整话题

www.ithome.com · 2026-04-20 16:56:35+08:00 · tech

IT之家 4 月 20 日消息,荷兰广播公司 Omroep Gelderland 发布报道,披露自家记者 Just Vervaart 花费 5 欧元(IT之家注:现汇率约合 40.1 元人民币)成本购买卡片式防丢器,将其嵌入至有声明信片(带有电池,可发出声效的明信片)中,成功“打入”海军防空护卫舰 HNLMS Evertsen 号,绘制了船舶动向地图。 ▲ HNLMS Evertsen 号 不过 Omroep Gelderland 披露称,这名记者自称“要给家人寄信”,获得了荷兰国防部的公开许可,才成功将自己的明信片寄到了船上,只是荷兰当局并未发现相应明信片中暗藏了追踪器。 在明信片登船后,跟踪器成功追踪了船舶大约 24 小时的动向,显示其从克里特岛的伊拉克利翁出发,沿着该岛的海岸线向西行驶,然后向东转向塞浦路斯。第二天,当船在塞浦路斯附近时,船舶上的工作人员发现这封明信片中带有追踪器,进而“禁用了追踪器”。 对此,Omroep Gelderland 称,如今军事信息泄露很有可能并不依赖于高成本人力追踪,仅需要几欧元的廉价成本就能够将“国之重器”暴露在外界人士面前,强调有关部门应当仔细核验此类追踪器产品,避免其混上舰艇。

linux.do · 2026-04-20 16:17:11+08:00 · tech

刚刚我突发奇想:能否 仅用 10000 元 启动资金开一个一人公司(OPC)? 于是,我询问 Kimi,10000 元能买什么工作站,Kimi 给了我三个配置方案,我选了其中第二个。 接下来,我问 Kimi,靠这个工作站运行 OpenClaw ,部署 本地模型 ,能不能像 传统的小型公司 一样搞开发,Kimi 告诉我,当然能,但 存在许多挑战 。 最后,我让 Kimi 给我的这个一人公司方案打分,Kimi 给出了 72/100 。 这个方案有一定可行性,但 不一定 适合所有人。 那么,这里留给大家两个问题: 你们还有成本相近的一人公司方案? 你认为 Kimi 给出的方案和评价如何? 10 个帖子 - 9 位参与者 阅读完整话题

plink.anyfeeder.com · 2026-04-20 12:35:48+08:00 · tech

欧盟年龄验证应用程序因网络安全专家发现多处漏洞而引发争议。 这款宣称"技术已完备"且符合"最高隐私标准"的系统,在不到两分钟内即被攻破。安全顾问保罗·穆尔率先指出其薄弱环节,他在研究该应用程序的开源代码后,通过视频演示了绕过防护的具体操作流程。 关键漏洞在于加密的PIN码仅存储于设备本地,且未与身份识别存储区进行可靠绑定。攻击者只需删除几个系统服务文件,即可重置旧PIN码、设置新密码,进而完全访问先前已验证过的身份数据。此外,配置文件中被发现存在允许关闭生物识别认证(将参数值从"true"修改为"false")以及重置PIN码输入尝试次数的设置项。穆尔指出,这些操作无需复杂工具,数分钟内即可完成。 真正令人震惊的是,该应用在用户设备上以未加密形式存储了"原始"生物识别数据及自拍照片。与欧盟委员会关于过程保密与匿名的声明相悖,这些文件从未被系统自动删除。随后证实,上述问题并非出现在测试样本中,而是存在于可供下载的最终版软件中。 欧盟委员会在评论该情况时承认存在缺陷,但驳斥了关于无能的指责。官方代表表示,该应用尚处于完善阶段,当前版本并非用于实际部署。他们承诺所有发现的漏洞将在近期内修复,最终产品版本将在稍后发布。 查看评论

www.ithome.com · 2026-04-16 14:59:38+08:00 · tech

IT之家 4 月 16 日消息,今天蚂蚁灵波正式开源流式三维重建模型 LingBot-Map,官方称无需复杂硬件,仅靠一颗普通 RGB 摄像头,就能让机器在视频采集过程中,实时完成相机位姿估计与场景三维结构重建,填补实时空间感知领域的关键技术空白,为机器人、自动驾驶等场景提供更可靠的空间理解能力。 IT之家附官方详细介绍如下: 在流式三维重建领域,几何精度、时序一致性与运行效率的平衡,一直是行业公认的核心难点。 不同于传统三维重建“先采集、后处理”的模式,流式重建要求系统“边看边理解”,一边接收新画面,一边持续完成定位与建图,同时还要严格控制计算与存储开销,这对模型的设计提出了极高要求。 针对这一痛点,我们打造了 LingBot-Map,以纯自回归式建模为核心,基于几何上下文 Transformer,在不依赖未来帧信息的前提下,逐帧处理当前及历史画面,持续输出精准的相机位姿和深度信息,实时还原场景三维结构,真正实现“所见即所建”。 我们引入了几何上下文注意力机制(GCA),能够高效组织与利用跨帧几何信息,在保留关键历史数据的同时,大幅减少冗余计算,兼顾重建质量与运行效率。 这一设计借鉴了经典 SLAM 系统对空间信息分层管理的思路,但突破了传统方法依赖手工设计和复杂优化的局限,将核心逻辑交由模型统一学习完成,在长序列场景下也能保持稳定表现。 性能全面领跑:20FPS 实时推理稳定支撑机器人作业 多个权威基准完成严苛测试: 在 Oxford Spires 数据集(大尺度、复杂光照、高标准)上: 绝对轨迹误差(ATE)仅为 6.42 米 轨迹精度较此前最优流式方法提升约 2.8 倍 显著优于离线方法 DA3(12.87 米)和 VIPE(10.52 米) 在大场景重建中展现出更强的稳定性。 在 ETH3D、7-Scenes、Tanks and Temples 等多个主流基准上,LingBot-Map 在位姿估计和三维重建质量两个维度全面领先现有流式方法。 其中 ETH3D 基准:重建 F1 分数达到 85.70,较第二名提升超过 8%,场景还原精度大幅提升。 除精度外,LingBot-Map 还兼顾实时性与长时稳定运行能力: 推理速度可实现约 20 FPS 支持 10,000+ 帧长视频连续推理 长序列运行精度几乎无衰减 这意味着,在机器人导航、避障、操作、交互等需要连续在线处理的真实场景中,它能稳定输出可靠的空间感知结果,为上层应用提供坚实支撑。 持续开源多款模型:补齐实时三维建图关键拼图 自今年 1 月以来,我们相继开源: 高精度空间感知模型 LingBot-Depth 具身大模型 LingBot-VLA 世界模型 LingBot-World 具身世界模型 LingBot-VA 围绕空间感知、具身决策、世界模拟等关键环节,持续夯实具身智能“智能基座”的技术布局。此次 LingBot-Map 的开源,进一步补齐了实时空间理解与在线三维建图的关键能力拼图。 目前,LingBot-Map 的模型和代码已正式在 Hugging Face 和 Model Scope 开源。我们期待更多开发者、研究团队加入进来,一起探索流式三维重建的更多可能,推动技术落地,让机器人更稳定、更高效地理解和适应真实物理世界,赋能更多行业创新。 开源地址: 魔搭社区 ModelScope: https://www.modelscope.cn/models/Robbyant/lingbot-map HuggingFace: https://huggingface.co/robbyant/lingbot-map GitHub: https://github.com/Robbyant/lingbot-map Paper: https://arxiv.org/abs/2604.14141 Homepage: https://technology.robbyant.com/lingbot-map