包含关键字 typecho 的文章

继去年开源一年 GitHub - oiov/wr.do: 一站式域名服务平台,集成短链生成、无限域名邮箱、文件存储和子域名管理,带有管理员面板,支持自部署 后,也是在佬友们的支持下攒了 2k 的,网站流量也还行,日常刷爆 vercel 额度。

但是有个很现实的问题,那就是短域名续费太贵辣,为了能持久的维护下去,不得不改变一下策略:

  • wr [.] do 继续开源维护,仅提供 demo 站点 likedo.vercel.app
  • like.do 作为官方运营站点,在功能上更加完善,新增 AI Agent 助手,支持通过 AI 助手直接管理站内的资源,比如通过自然语言去创建短链、笔记并分享公开,像这样;另外提供日常免费积分额度,不够用的话也有多个渠道获取积分,比如:

LikeDo 所有资源都支持 API 调用,包括短链、临时邮箱、笔记,每个接口都提供了 playground 测试调用,可以在开放 API 文档查看详情。

另外,没忍住又剁手了一个 kfc.sh 域名,放到 LikeDo 里面当短链了,免费!!

另外另外,如果你在 wr.do 开源版创建过资源,比如短链和邮箱,可以在 Login | LikeDo - Link what you like 免费迁移过来。

最后,官网:


📌 转载信息
原作者:
yesmore
转载时间:
2026/1/5 12:42:50

昨天用到,就让反重力糊了一个。想着可能有佬友说不定也许可能用得到,就把这个脚本发一下。


试用场景:

  1. docker 跑项目且把证书目录映射出宿主主机
  2. nginx 配置 ssl (也可以别的方式)

包含了首次申请证书、定时更新证书、更新证书重启项目,可按需删。
域名、路径等相关的自己调调。
scripts.zip


📌 转载信息
原作者:
vaaagle
转载时间:
2026/1/5 12:29:07

来源文章:

快速阅读:


📌 转载信息
原作者:
okokxw
转载时间:
2026/1/5 12:21:43

平台地址:https://beta.spiritlhl.net/

平台搭建使用的开源项目:GitHub - oneclickvirt/oneclickvirt: Universal Virtualization Management Platform 可扩展的通用虚拟化管理平台,支持 LXD / Incus / Docker / Proxmox VE

欢迎仓库点一个 star 免费支持

平台使用有任何问题这里反馈,测试平台的 incus 类型的虚拟机和容器中

不要直接点首页的注册,直接点登录进入使用第三方登录注册,默认公开注册已关闭


📌 转载信息
原作者:
ECS
转载时间:
2026/1/5 12:20:41

最近折腾了一下 kiro2api,用的站内佬的开源项目 `kiroGate`

发现问题还挺多的,折腾了老半天,我自己修复了一些问题

1. 增加了思考模式的支持,支持 Claude 的扩展思考模式
2. 增加了图片的支持
3. 管理页面添加kiro账户详情功能
4. 其他等等

不过感觉还是有点问题,比如上下文不会中断 压缩也有问题等

改不动了…. 继续用公益佬们的 cc 了,哈哈哈

还有一些账号额度,不想用了….

所以分享出来给佬们用用,佬们 尝尝咸淡

{ "alwaysThinkingEnabled": true, "env": { "ANTHROPIC_AUTH_TOKEN": , "ANTHROPIC_BASE_URL": "https://awei.mail-account.biz", "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1", "DISABLE_TELEMETRY": "1" }, "skipWebFetchPreflight": true, } 

话说有没有优秀稳定一点的 kiro2api 的项目可以抄一抄的??


📌 转载信息
原作者:
cao_Jacker
转载时间:
2026/1/5 12:20:35

为什么你的反向代理需要 WAF?

如果你正利用科技 lion 脚本添加域名反向代理,那么本文将教你如何为服务加固:通过集成全球领先的 OWASP ModSecurity+OWASP CRS 组合,构建强大的 WAF(Web 应用防火墙)。
相比独立防护,这种嵌入 Nginx 运行的方案效率更高、识别更精准且完全开源。只需简单几步,即可有效阻断各类恶意攻击、非法爬虫与渗透尝试,为你的所有反代站点筑起一道坚实的安全屏障。

全文复制过来格式就乱了 发文章地址吧!


📌 转载信息
原作者:
kejilion
转载时间:
2026/1/5 12:15:13

之前用过 @shekohex 的 opencode-google-antigravity-auth@NoeFabris 的 opencode-antigravity-auth
两边的功能都想要,所以把它们合了。

主要功能:

  • google_search 工具集成(来自 @shekohex
  • CLI / Anti quota 支持,通过 opencode auth login 使用(来自 @NoeFabris
  • Google Antigravity OAuth 认证,支持自动刷新 token
  • 支持 gemini-3-pro-high、claude-opus-4-5-thinking 等模型
  • 以及两个插件原有的其他优秀功能

安装方式:

{ "plugin": ["opencode-antigravity-auth-remix@1.0.7"] } 

仓库地址:GitHub - Darkstarrd-dev/opencode-antigravity-auth

现在可以在 opencode 里爽用双重额度,真的是踩不完,完全踩不完

antigravity 反人类,回到 opencode 舒服太多


📌 转载信息
转载时间:
2026/1/5 12:14:55

发现站里有许多佬注册 aws 和完成任务得 200 刀乐的文章,但是这些刀乐怎么订阅 kiro pro + 没有一篇完整的教程。早上自己摸索了一下也算猜了一些坑,写一点自己的流程和踩过的坑与佬们分享

注册 aws 账号的过程请参考别的佬的文章,此处不赘述

首先注册完账号之后在控制台搜索 kiro,然后选择用户组



然后点击 add user,会发现咱们没有用户(我已经注册过了,假如第一次来是没有用户的),这时候点击页面里的链接转到 IAM



然后添加一个用户


在设置密码这里记得用默认的选项(就是用电子邮件设置用户密码的)
然后亚马逊就会给你发邮件,让你设置密码这一串的
最后回到 kiro 的控制台,add user,就能发现能搜出来咱们之前创建的账户了


最后就是下载 kiro 的 ide,然后选择最后一个选项登录(Sign in with AWS IAMldentity Center)
会出现一个让你填 start URL 的地方,复制 kiro 控制台此处的 URL 即可

(新人第一次写帖子,希望佬们多多包涵,如有错误希望佬们能指出)


📌 转载信息
原作者:
73556088
转载时间:
2026/1/5 12:11:45

项目官网:

  1. 原生安卓,相比较 Flutter 等框架,性能很强。

  2. 笔记私有,任务也是根据笔记获取的,可以使用 Webdav 等同步,我也搞了官方同步,后续用于文章分享等。


  3. 【完善中】OCR 功能,我选择了 Paddle OCR 本地,AI 可用于后续生成待办和文章。

  4. 【正在做】语音功能,可能会使用 whisper。

  5. 【正在做】绘图功能,使用 ExcalidrawXournal++

项目:


📌 转载信息
原作者:
HansJack
转载时间:
2026/1/5 12:11:17

首先放上佬 的项目地址,有需要的可以给佬点下小星星

期间参考了佬 @user554 的部署教程,大部分都是一样的,

下面开始教程:
1. 注册 [TiDB Cloud] 创建免费的 mysql 数据库,点击 connet, 需要先设置好密码,然后把数据库连接参数保留好,后续忘记密码可以点击重置密码。

免费版本:5G 存储空间,完全够用了。






2. 打开 octopus 项目,fork 到自己的仓库。

3. 登录 Render,选择 Github 方式,创建 Web 服务,选择仓库里面的 octopus 项目,选择免费计划,注意免费计划需要绑定信用卡,预扣款 1 美元进行校验(我查了下 1 美元过一段时间会退款,即使不退款影响也不大)



4. 这里不要直接点击创建,要改一下默认参数,如果已经创建了可以重新编辑参数后在部署
Build Command 改为:

d web && npm install && npm run build && cp -r out/. ../static/out/ && cd .. && go build -tags netgo -ldflags '-s -w' -o app

Start Command 改为:

./app start

下面修改 docker 环境变量



特别需要注意的就是数据库配置,采用第一步注册的 TiDB 数据相关参数,格式为

用户名:密码@tcp(ip:端口)/数据库?tls=true&parseTime=true 

然后部署或者重新启动就行,等到启动后,点击页面上的地址进行访问,默认的账号密码都是 admin


5. 目前已经能正常使用了,后续上游仓库更新后,只需要进入自己的 fork 仓库进行同步,Render 会检查到后会自动同步更新重部署。

6. 注意事项:
6.1. 后续不要点击这里进行升级,采用 github 同步代码或者提交自己的代码,你们部署出来可能版本号不一致请不要在意 ,版本号目前有处理方式,但是要多几步配置,懒得写了,不影响使用。


6.2.Render 使用的免费服务,如果超过 15 分钟后不使用,服务会休眠,当再次使用或者访问的时候需要等待一分钟左右,等服务激活,如果不想服务休眠,可以 uptimerobot 免费注册这个完整,设置 10 分钟自动检查一下服务状态,这样服务就不会进入休眠,



6.3. 后续如果数据库免费的 5G 空间满了,请清理日志表:relay_logs,正常使用估计能用一年。

感谢论坛里面的各个大佬的公益站,以及佬 @ByteBender 的公益站(本次部署全程使用):
https://linux.do/t/topic/1175087

提醒:如用本方式聚合公益站,请自己使用,不要二次分发!不要二次分发!不要二次分发!

划水这么久,第一次写教程贴,写得不好请见谅


📌 转载信息
转载时间:
2026/1/4 18:40:48

(\ _ /)
( ・-・)
/ っ   依然是节气海报,因为就这个最没约束。唯一约束是要符合百货商场。

& 因为离赤道较近上头不准海报用雪元素。。

第①步¦随便想想,然后随手掏来桌面的废纸和笔随意划个大概。

第②步¦把 线稿 + Prompt 丢 AI 随缘炼金 原图保真参数用 low 效果更佳。

虽说 MJ 审美也许更高但给 gpt 写 Prompt 省脑细胞。

第③步¦也把选中的图喂给 AI 要文案

最后套上常规文字 LOGO 模板等即可。

(\ _ /)
( ・-・)
/ っ 然后放在一旁不要发送,该吃吃该摸摸,不要比还在传统素材网找素材的不会科学上网的同事更快交稿 / 等快到截稿期再交稿、但要预留上级想 DIY 文案的时间、但不要预留足够推翻整张图重新设计的时间。


📌 转载信息
原作者:
Qiner
转载时间:
2026/1/4 18:38:14

Firefly / 流萤,一款清新美观的高性能静态博客模板

2026/01/04 全新优化

重新优化的网格模式,以及部分细节的调整,将比之前更加清新美观
支持至多三列显示,多种布局多种配置等等
将很快推送更新,欢迎各位 star

双侧栏 - 网格
双侧栏 - 列表

单侧栏 - 列表
单侧栏 - 网格 2 列
单侧栏 - 网格 3 列

单双侧栏 - 网格瀑布

开源地址:

演示站: Firefly - Demo site
我的博客: 夏叶博客
使用文档: Firefly 博客模板文档
GitHub 地址: GitHub - CuteLeaf/Firefly: 流萤,这是一款清新美观的 Astro 博客主题模板 | a fresh and visually appealing Astro blog theme template, Secondary development based on Fuwari.


📌 转载信息
原作者:
xiaye
转载时间:
2026/1/4 18:36:20

因为看了平行眼的视频,发现立体效果很好,我就想着能不能把 NSFW 也平行眼看,那岂不是很爽。所以简单糊了一个 worker.js 放在 cloudflare 上面部署即可。

/**
 * 双屏同步视频播放器 - Cloudflare Workers
 *
 * 部署步骤:
 * 1. 登录 Cloudflare Dashboard -> Workers & Pages
 * 2. 创建新 Worker
 * 3. 将此文件内容粘贴到编辑器
 * 4. 点击 Deploy
 */

// 内嵌的HTML页面
const HTML_CONTENT = `<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>双屏同步视频播放器</title>
  <style>
    * { box-sizing: border-box; margin: 0; padding: 0; }
    body {
      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
      background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
      min-height: 100vh;
      color: #fff;
    }

    /* 上传页面 */
    .upload-container {
      min-height: 100vh;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      padding: 20px;
      gap: 24px;
    }
    .title { font-size: 28px; text-align: center; }
    .subtitle { color: #888; text-align: center; }

    .drop-zone {
      width: 100%;
      max-width: 500px;
      padding: 60px 40px;
      border: 2px dashed #444;
      border-radius: 16px;
      background: rgba(255,255,255,0.02);
      cursor: pointer;
      text-align: center;
      transition: all 0.3s;
    }
    .drop-zone:hover, .drop-zone.dragging {
      border-color: #2563eb;
      background: rgba(37,99,235,0.1);
    }
    .drop-zone input { display: none; }
    .drop-icon { font-size: 48px; margin-bottom: 16px; }
    .drop-text { color: #aaa; line-height: 1.8; }

    .divider {
      display: flex;
      align-items: center;
      width: 100%;
      max-width: 500px;
      gap: 16px;
      color: #666;
    }
    .divider::before, .divider::after {
      content: "";
      flex: 1;
      height: 1px;
      background: #333;
    }

    .url-form {
      display: flex;
      width: 100%;
      max-width: 500px;
      gap: 12px;
    }
    .url-input {
      flex: 1;
      padding: 14px 16px;
      border: 1px solid #333;
      border-radius: 8px;
      background: rgba(255,255,255,0.05);
      color: #fff;
      font-size: 14px;
      outline: none;
    }
    .url-input:focus { border-color: #2563eb; }
    .url-input::placeholder { color: #666; }

    .btn {
      padding: 14px 24px;
      background: #2563eb;
      color: #fff;
      border: none;
      border-radius: 8px;
      font-weight: 600;
      cursor: pointer;
      transition: background 0.2s;
    }
    .btn:hover { background: #1d4ed8; }

    .error { color: #ef4444; text-align: center; }
    .tips { text-align: center; color: #666; font-size: 14px; }
    .tips h3 { color: #888; margin-bottom: 8px; }

    /* 播放器页面 */
    .player-container {
      display: none;
      flex-direction: column;
      height: 100vh;
    }
    .player-container.active { display: flex; }
    .upload-container.hidden { display: none; }

    .player-header {
      display: flex;
      align-items: center;
      gap: 16px;
      padding: 12px 16px;
      background: #0f0f1a;
      border-bottom: 1px solid #222;
    }
    .back-btn {
      padding: 8px 16px;
      background: transparent;
      color: #fff;
      border: 1px solid #444;
      border-radius: 6px;
      cursor: pointer;
    }
    .back-btn:hover { background: rgba(255,255,255,0.1); }
    .source-name {
      flex: 1;
      color: #888;
      font-size: 13px;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }

    .dual-wrapper {
      flex: 1;
      display: flex;
      background: #000;
    }
    .dual-wrapper video {
      flex: 1;
      width: 50%;
      height: 100%;
      object-fit: contain;
      background: #000;
    }
    .video-left { border-right: 1px solid #333; }
    .video-right { pointer-events: none; }
    .video-right::-webkit-media-controls { display: none !important; }

    .sync-hint {
      text-align: center;
      padding: 8px;
      background: #1a1a2e;
      color: #888;
      font-size: 12px;
    }
  </style>
</head>
<body>
  <!-- 上传页面 -->
  <div class="upload-container" id="uploadPage">
    <h1 class="title">双屏同步视频播放器</h1>
    <p class="subtitle">上传本地视频或输入视频URL,两个播放器同步播放</p>

    <div class="drop-zone" id="dropZone">
      <input type="file" id="fileInput" accept="video/*">
      <div class="drop-icon">📁</div>
      <p class="drop-text">拖放视频文件到此处<br>或点击选择文件</p>
    </div>

    <div class="divider"><span>或</span></div>

    <form class="url-form" id="urlForm">
      <input type="text" class="url-input" id="urlInput" placeholder="输入视频URL地址">
      <button type="submit" class="btn">加载视频</button>
    </form>

    <div class="error" id="error"></div>

    <div class="tips">
      <h3>支持的格式</h3>
      <p>MP4, WebM, OGV 等浏览器原生支持的视频格式</p>
    </div>
  </div>

  <!-- 播放器页面 -->
  <div class="player-container" id="playerPage">
    <div class="player-header">
      <button class="back-btn" id="backBtn">← 返回</button>
      <span class="source-name" id="sourceName"></span>
    </div>
    <div class="dual-wrapper">
      <video id="videoLeft" class="video-left" controls playsinline></video>
      <video id="videoRight" class="video-right" playsinline></video>
    </div>
    <div class="sync-hint">左侧播放器控制两个窗口同步播放</div>
  </div>

  <script>
    const uploadPage = document.getElementById('uploadPage');
    const playerPage = document.getElementById('playerPage');
    const dropZone = document.getElementById('dropZone');
    const fileInput = document.getElementById('fileInput');
    const urlForm = document.getElementById('urlForm');
    const urlInput = document.getElementById('urlInput');
    const errorDiv = document.getElementById('error');
    const backBtn = document.getElementById('backBtn');
    const sourceName = document.getElementById('sourceName');
    const videoLeft = document.getElementById('videoLeft');
    const videoRight = document.getElementById('videoRight');

    let objectUrl = null;

    // 拖放处理
    dropZone.addEventListener('click', () => fileInput.click());
    dropZone.addEventListener('dragover', e => {
      e.preventDefault();
      dropZone.classList.add('dragging');
    });
    dropZone.addEventListener('dragleave', () => dropZone.classList.remove('dragging'));
    dropZone.addEventListener('drop', e => {
      e.preventDefault();
      dropZone.classList.remove('dragging');
      const file = e.dataTransfer.files[0];
      if (file) handleFile(file);
    });

    fileInput.addEventListener('change', e => {
      const file = e.target.files[0];
      if (file) handleFile(file);
    });

    function handleFile(file) {
      if (!file.type.startsWith('video/')) {
        showError('请选择视频文件');
        return;
      }
      cleanup();
      objectUrl = URL.createObjectURL(file);
      playVideo(objectUrl, file.name);
    }

    urlForm.addEventListener('submit', e => {
      e.preventDefault();
      const url = urlInput.value.trim();
      if (!url) {
        showError('请输入视频URL');
        return;
      }
      try {
        new URL(url);
      } catch {
        showError('请输入有效的URL地址');
        return;
      }
      cleanup();
      playVideo(url, url);
    });

    function playVideo(src, name) {
      errorDiv.textContent = '';
      videoLeft.src = src;
      videoRight.src = src;
      sourceName.textContent = name;
      uploadPage.classList.add('hidden');
      playerPage.classList.add('active');

      // 同步逻辑
      videoLeft.muted = true;
      videoRight.muted = true;

      videoLeft.addEventListener('play', () => videoRight.play());
      videoLeft.addEventListener('pause', () => videoRight.pause());
      videoLeft.addEventListener('seeking', () => videoRight.currentTime = videoLeft.currentTime);
      videoLeft.addEventListener('ratechange', () => videoRight.playbackRate = videoLeft.playbackRate);
      videoLeft.addEventListener('volumechange', () => {
        videoRight.volume = videoLeft.volume;
        videoRight.muted = videoLeft.muted;
      });

      // 时间同步
      function syncTime() {
        if (Math.abs(videoLeft.currentTime - videoRight.currentTime) > 0.05) {
          videoRight.currentTime = videoLeft.currentTime;
        }
        requestAnimationFrame(syncTime);
      }
      syncTime();

      videoLeft.addEventListener('canplay', () => videoLeft.play(), { once: true });
    }

    backBtn.addEventListener('click', () => {
      cleanup();
      videoLeft.src = '';
      videoRight.src = '';
      urlInput.value = '';
      uploadPage.classList.remove('hidden');
      playerPage.classList.remove('active');
    });

    function cleanup() {
      if (objectUrl) {
        URL.revokeObjectURL(objectUrl);
        objectUrl = null;
      }
    }

    function showError(msg) {
      errorDiv.textContent = msg;
    }
  </script>
</body>
</html>`;

export default {
  async fetch(request) {
    return new Response(HTML_CONTENT, {
      headers: {
        'Content-Type': 'text/html;charset=UTF-8',
        'Cache-Control': 'public, max-age=3600',
      },
    });
  },
};

  • 效果图如下


📌 转载信息
原作者:
tadayima
转载时间:
2026/1/4 18:35:44

12 月 14-18 日,计算机图形学顶会 Siggraph Asia 2025 在香港召开。火山引擎多媒体实验室有多项工作入选,包括了拓扑变换的自适应建模、动态人体重建、人体重打光的三项成果进行汇报和展出。

TAOGS:突破传统模板依赖的限制进行自由建模!拥有拓扑变换的自适应能力

多媒体实验室研究人员与来自德国马克思普朗克研究所、上海科技大学的团队进行深入合作,提出了应对体积视频中拓扑变换的自适应解决方案 TAOGS,针对视频制作过程中频繁出现的拓扑变化问题进行了长时序跟踪与自适应建模,在极具调整性的场景下也能进行高保真的渲染。

为了解决这个问题,研究人员提出了一种双层的动态高斯表示方法,利用运动高斯去自适应地处理新观测的出现与过时观测的消失,以及利用外观高斯来进行复杂纹理的表征。其核心思想是利用稀疏的拓扑感知高斯来表示底层场景运动,并在时空跟踪器与光度线索的引导下捕捉新出现的观测,融合这些观测,并持续更新局部形变图。在其生命周期内,每个运动高斯可以派生并激活多个高斯,以建模细粒度的视觉细节。该方法在保持训练高效与压缩友好的同时,支持稳健的跟踪与拓扑自适应。

图片

该方案生成的拓扑感知的高斯表示,可以自然适配基于标准视频编解码的体积视频格式,支持在移动端进行快速的传输和推理,进行自由视点的高清渲染,呈现与真实世界相融合的沉浸式体验。

EvolvingGS:告别基于关键帧的 GoP 切分,能够应对任意复杂动作的可进化 4D 高斯表征

动态 3D 重建技术正面临一个核心矛盾:序列越长、动作越复杂,重建质量越难保持。现有方法要么因误差累积而失真,要么因关键帧切换而产生画面闪烁。

火山引擎多媒体实验室最新提出的 《EvolvingGS: Stable Volumetric Video via High-Fidelity Evolving 3D Guassian Reconstruction》,通过一种“先对齐,后生长修复”的两阶段协同范式,首次实现了在单个连续时间段内,对任意时长与复杂运动的鲁棒 4D 高斯重建,无需关键帧切换,彻底避免闪烁。

方法核心:让模型学会“动态生长”

图片

形变场粗对齐

引入光流一致性损失指导形变场学习,确保高斯模型的运动趋势与实际场景严格一致,即使应对快速运动也保持稳定。

修复阶段

在形变对齐的基础上,允许模型在拟合不足的区域智能增减少量高斯点:

  • 保留的“参考高斯点”维持外观不变,保障时序连贯性;

  • 新增的“拓展高斯点”自由优化,赋予模型强大的细节拟合能力;

  • 提出基于贡献度的删点策略,解耦删点策略对不透明度下降的依赖,防止模型无限膨胀。

这一设计使模型能自适应物体的出现/消失、服装剧烈飘动、拓扑结构变化等极端情况。

图片

w/o v.s. w/ 修复阶段 (应对拓扑变化)

图片

w/o v.s. w/ 修复阶段 (应对局部细节拟合)

EvolvingGS 不只是一个技术方案,更是一种建模理念的进化:我们让模型具备结构性对齐能力(形变阶段)与局部生长能力(修复阶段),使其像生命系统一样,在保持整体一致的前提下,灵活适应局部变化。这意味着,无论是复杂舞蹈、服装飘动、还是场景中物体的突然出现或消失,EvolvingGS 都能应对自如,为动态 3D 重建打开了“无限时长”的大门。

Disentangled3DGS:画质与几何质量的双重飞跃,基于解耦 3D 高斯表征的可打光体积视频

在 3D 高斯场建模中,几何与外观的深度纠缠,长久以来是一个被默认却充满代价的设定。当颜色与形状被迫共享同一套不透明度分布时,其结果往往是渲染质量与几何精度互相妥协,真实感重光照更是难以企及。

图片

传统方法内生地将模型的外观和几何紧密捆绑

图片

解耦外观和几何

图片

引入耦合系数

火山引擎多媒体实验室的最新研究 《Disentangled Gaussian Splatting:High-Fidelity Relightable Volumetric Video through Geometry-Appearance Decoupling》 ,提出一种几何-外观解耦式高斯表征。它如同为 3D 重建赋予了“双重身份”:让几何结构精准独立,让外观细节自由表达,最终在渲染质量与几何精度上同时实现显著提升,为高保真、可重光照的容积视频开辟了新路径。

图片

核心思路:为每个高斯点赋予“双重松耦合的不透明度”

传统 3DGS 将颜色与几何属性捆绑优化,如同用同一把刻刀同时雕刻形状与上色。我们的方法进行了根本性革新:

  • 双分支独立渲染:我们为每个高斯基元同时引入几何不透明度场与外观不透明度场。在渲染时,两者通过可学习的解耦因子β进行加权融合,实现像素级的精准对齐与独立控制;

  • 协同优化与独立规制:几何分支专注于法向量、深度与可见性的重建;外观分支则负责建模视点相关的色彩与光照。两个分支通过 β 因子动态协作,既能互相促进优化,又允许我们对各自施加针对性的约束(如法向平滑、深度一致),最小化相互干扰;

  • 智能生长策略:基于两个分支的梯度信息独立判断局部区域的欠拟合情况。当一处需要“生长”更多高斯点来细化几何时,另一分支会以最小化干扰的方式协同初始化,确保模型紧凑高效;

  • 可以轻松与 EvolvingGS 结合,将其优点拓展到 4D 重建领域

全息通信方案

12 月 18-19 日,在火山引擎 FORCE 原动力大会上,多媒体实验室也展示了全息通信的商业化技术。该项技术由实验室研发的实时 4D GS 重建及压缩技术驱动,能够在消费级带宽(<10mbps)下高清高保真实现全息通信,支持远程面对面互动。与行业内全息通信(e.g.,Google Starline/Beam)方案相比,该技术不仅支持普通摄像头实时生成 6DoF 视频,更将设备成本与带宽需求降低了一个数量级,降低了全息通信的门槛,将促进该技术的规模化应用。

图片

该项技术通过创新性地采用前馈神经网络架构,仅使用少量相机采集画面,极大的降低了采集成本,同时在保证画质的前提下将计算量降低 70%,在 A10 显卡上以超过 30 FPS 的帧率实现实时的 3D 高斯泼溅重建。在传输层面,实验室展示了全链路能力:通过基于渲染重要性的低损耗压缩策略,LiveGS 将 3D 高斯数据的传输带宽从行业普遍的 60Mbps 压缩至 10Mbps 以下,并保持画质损失(PSNR)小于 3dB——这意味着全息通信可以无缝复用现有的视频传输链路。在渲染层面,结合混合渲染技术,在 iPhone 15 等设备上实现了 30FPS 流畅的视角旋转、缩放等交互操作,同时支持在 PC、VR 等多终端实现流畅分发。

图片

随着硬件成本实现量级下降,火山引擎计划在 2026 年全面推进全息直播场景的落地。全方位重塑社交、互动直播及办公协同体验。在全息通信的赋能下,多个行业正迎来体验革命:远程医疗可实现更真实的微表情反馈,金融与奢侈品服务能通过线下面谈般的临场感建立信任,而企业协作中的全息沙盘则让异地专家实时标注三维模型成为现实。火山引擎通过区域化高斯裁剪与高效编码技术,解决了移动端算力瓶颈与传输难题,使空间视频在手机、PC、VR 等多终端实现流畅分发。随着空间视频落地节点的到来,全息通信将不再是科幻场景,而是提升用户留存与互动深度的商业利器。

总结

火山引擎多媒体实验室将“拓扑自适应+动态演进+解耦表征”的创新思路应用于动态 3D 重建与 6DoF 视频任务中,在处理复杂拓扑变换、长序列稳定性以及高保真可重光照渲染等核心挑战上取得了突破性表现。

通过 TAOGS 的拓扑感知高斯优化、EvolvingGS 的“先对齐后生长”演进范式以及 Disentangled3DGS 的几何-外观解耦架构,该系列研究有效解决了传统动态重建中对模板依赖高、长时序闪烁及几何外观纠缠等痛点,显著提升了复杂动态场景下的渲染精度与建模鲁棒性。

更重要的是,这些前沿技术促进了全息通信的商业化方案形成,通过创新的实时 4D GS 重建与超低带宽压缩技术,在消费级带宽(<10Mbps)和移动端设备上实现了高清、流畅的 6DoF 沉浸式交互,将全息通信的设备成本与传输门槛降低了一个数量级。从学术顶会的算法突破到 2026 年全息直播的规模化落地蓝图,火山引擎正在通过技术迭代重塑社交、办公与远程协作的视听体验,为下一代空间计算与全息媒体产业的发展奠定了坚实的技术基石。

团队介绍

多媒体实验室是字节跳动旗下的研究团队,致力于探索多媒体领域的前沿技术,参与国际标准化工作,其众多创新算法及软硬件解决方案已经广泛应用在抖音、西瓜视频等产品的多媒体业务,并向火山引擎的企业级客户提供技术服务。实验室成立以来,多篇论文入选国际顶会和旗舰期刊,并获得数项国际级技术赛事冠军、行业创新奖及最佳论文奖。

IT 之家 1 月 4 日消息,半导体与 AI 行业研究分析公司 SemiAnalysis 北京时间昨日表示,AI 企业 Anthropic 将直接从博通采购近 100 万颗 TPU v7p “Ironwood” AI 芯片,本地部署在其控制的数据中心中。

换句话说,博通将直接向 Anthropic 供应基于 TPU v7p 的机架级 AI 系统,“绕过” TPU 芯片的另一开发参与方谷歌。不过谷歌预计仍可从 Anthropic 同博通的交易中取得 IP 授权收入。


博通 CEO 陈福阳此前在 2025 年 12 月确认,Anthropic 已累计向博通下达了价值 210 亿美元的 AI 系统订单。

在 Anthropic 的自有 TPU 算力系统中,TeraWulf 等三家企业供应基础设施,Fluidstack 则将负责现场部署服务。


📌 转载信息
原作者:
BunnHack
转载时间:
2026/1/4 18:32:29

先上插件吧
ace-sidebar-0.1.0.zip
安装步骤

  1. 解压获得 vsix 文件

  2. ctrl+shift+p>install extension from vsix 选择插件安装

  3. 点击侧边栏上的整了一个 VSCode 插件 Ace-Sidebar, 最后薅一下 Augment 的 ACE 和提示词增强,Augment 太贵了,已充 cursor 年费1

  4. 首次使用需要配置 augment 的 api 地址 例如:


    以及 token 可通过 atm 获得

    站里好像有佬提供的有转发 我还没试过不晓得能不能用
  5. 还有 mcp 端口提供给其他工具的 sse mcp (只在当前打开窗口有效 多开窗口会出现冲突)

然后就可以使用了

当前项目的提示词增强的上下文只支持以下

  1. 当前打开文件
  2. 当前选中的代码块
  3. 原始提示词

mcp 的话启动插件之后 可以在编辑器配置 sse 的 mcp 工具这个就不细讲了

整了一个 VSCode 插件 Ace-Sidebar, 最后薅一下 Augment 的 ACE 和提示词增强,Augment 太贵了,已充 cursor 年费7

代码自动索引,启动插件索引一次 保存代码也自动索引 添加了防抖机制

贴下 github 感兴趣的佬可以 fork 继续扩展

当前项目部分代码参考 ace-tool
https://linux.do/t/topic/1344562

感谢佬友 MistRipple 的无私分享


📌 转载信息
转载时间:
2026/1/4 18:32:00

一、

最近,我写了好几篇 AI 教程,就收到留言,要我谈谈我自己的 AI 编程。

今天就来分享我的 AI 编程,也就是大家说的"氛围编程"(vibe coding)。

声明一下,我只是 AI 初级用户,不是高手。除了不想藏私,更多是为了抛砖引玉,跟大家交流。

二、

平时,我很少用 AI 生成新项目。因为每次看 AI 产出的代码,我总觉得那是别人的代码,不是我的。

如果整个项目都用 AI 生成,潜意识里,我感觉不到那是自己的项目。我的习惯是,更愿意自己写新项目的主体代码。

我主要把 AI 用在别人的项目和历史遗留代码,这可以避免读懂他人代码的巨大时间成本。

就拿历史遗留代码为例,(1)很多时候没有足够的文档,也没有作者的说明,(2)技术栈和工具库都过时了,读懂代码还要翻找以前的标准,(3)最极端的情况下,只有构建产物,没有源代码,根本无法着手。

AI 简直就是这类代码的救星,再古老的代码,它都能读懂和修改,甚至还能对构建产物进行逆向工程。

下面就是我怎么用 AI 处理历史遗留代码,平时我基本就是这样来 AI 编程。

三、

我的 AI 编程工具是 Claude Code。因为命令行对我更方便,也容易跟其他工具集成。

我使用的 AI 模型,大部分时间是国产的 MiniMax M2。我测过它的功能,相当不错,能够满足需要,它的排名也很靠前。

另外,它有包月价(29元人民币),属于最便宜的编程模型之一,可以放心大量使用,反复试错。要是改用大家都趋之若鹜的 Claude 系列模型,20美元的 Pro 套餐不够用,200美元的 Max 套餐又太贵。

MiniMax 接入 Claude Code 的方法,参考我的这篇教程

四、

就在我写这篇文章的时候,MiniMax 本周进行了一次大升级,M2 模型升级到了 M2.1

因为跟自己相关,我特别关注这次升级。

根据官方的发布声明,这次升级特别加强了"多语言编程能力",对于常用编程语言(Rust、Java、Golang、C++、Kotlin、Objective-C、TypeScript、JavaScript 等)有专门强化。

它的 WebDev 与 AppDev 开发能力因此有大幅提升,可以用来开发复杂的 Web 应用和 Android/iOS 的原生 App。

"在软件工程相关场景的核心榜单上,MiniMax M2.1 相比于 M2 有了显著的提升,尤其是在多语言场景上,超过 Claude Sonnet 4.5 和 Gemini 3 Pro,并接近 Claude Opus 4.5。"

根据上面这段介绍,它的编程能力,超出或接近了国外旗舰模型。

这个模型已经上线了,现在就能用。那么,这篇文章正好测一下,官方的介绍是否准确,它的 Web 开发能力到底有没有变强。

至于价格,跟原来一样。但是,官方表示"响应速度显著提升,Token 消耗明显下降",也算变相降价了。

M2.1 接入 Claude Code,我的参数如下。

五、

我这次选择的历史遗留项目是 wechat-format,一个 Web 应用,将 Markdown 文本转为微信公众号的样式。

上图左侧的文本框输入 Markdown 文本,右侧立刻显示自动渲染的结果,可以直接复制到微信公众号的编辑器。

它非常好用,大家可以去试试看。我的公众号现在就用它做排版,效果不错(下图)。

问题是,原作者六年前就放弃了,这个项目不再更新了。我看过源码,它用的是老版本的 Vue.js 和 CodeMirror 编辑器,没有任何文档和说明,还经过了编译工具的处理,注释都删掉了。

如果不熟悉它的技术栈,想要修改这些代码是很困难的,可能要投入大量时间。

那么废话少说,直接让 AI 上场,把这些代码交给 MiniMax M2.1 模型。

六、

接手老项目的第一步,是对项目进行一个总体的了解。

我首先会让 AI 生成项目概述。大家可以跟着一起做,跟我的结果相对照。


# 克隆代码库
$ git clone [email protected]:ruanyf/wechat-format.git

# 进入项目目录
$ cd wechat-format

# 启动 Claude Code
$ claude-minimax

上面的claude-minimax是我的自定义命令,用来在 Claude Code 里面调用 MiniMax 模型(参见教程)。

输入"生成这个仓库的概述"。

AI 很快就给出了详细说明,包括项目的总体介绍、核心功能、技术栈和文件结构(下图)。

有了总体了解以后,我会让 AI 解释主要脚本文件的代码。

【提示词】解释 index.html 文件的代码

它会给出代码结构和页面布局(上图),然后是 JS 脚本加载顺序和 Vue 应用逻辑,甚至包括了流程图(下图),这可是我没想到的。

做完这一步,代码库的大致情况应该就相当了解了,而 AI 花费的时间不到一分钟。

七、

既然这个模型号称有"多语言编程能力",我就让它把项目语言从 JavaScript 改成 TypeScript。

对于很多老项目来说,这也是常见需求,难度不低。

它先制定了迁移计划,然后生成了 tsconfig.json 和 types.d.ts,并逐个将 JS 文件转为对应的 TS 文件(下图)。

修改完成后,它试着运行这个应用,发现有报错(下图),于是又逐个解决错误。

最终,迁移完成,它给出了任务总结(下图)。

我在浏览器运行这个应用,遇到了两个报错:CodeMirror 和 FuriganaMD 未定义。

我把报错信息提交给模型,它很快修改了代码,这次就顺利在浏览器跑起来了。

至此,这个多年前的 JavaScript 应用就成功改成了 TypeScript 应用,并且所有内部对象都有了完整的类型定义。

你还可以接着添加单元测试,这里就省略了。

八、

简单的测试就到此为止,我目前的 AI 编程大概就到这个程度,用 AI 来解释和修改代码。我也建议大家,以后遇到历史遗留代码,一律先交给 AI。

虽然这个测试比较简单,不足以考验 MiniMax M2.1 的能力上限,但如果人工来做上面这些事情,可能一个工作日还搞不定,但是它只需要十几分钟。

总体上,我对它的表现比较满意。大家都看到了,我的提示词很简单,就是一句话,但是它正确理解了意图,如果一次没有成功,最多再修改一两次就正确了。

而且,就像发布说明说的一样,它运行速度很快,思考过程和生成过程最多也就两三分钟,不像有的模型要等很久。

另外,不管什么操作,它都会给出详细的讲解和代码注释。

总之,就我测试的情况来看,这个模型的 Web 开发能力确实很不错,可以用于实际工作。

最后,说一点题外话。著名开发者 Simon Willison 最近说,评测大模型越来越困难,"我识别不出两个模型之间的实质性差异",因为主流的新模型都已经足够强大,足以解决常见任务,只有不断升级评测的难度,才能测出它们的强弱。

这意味着,对于普通程序员的常见编程任务,不同模型不会构成重大差异,没必要迷信国外的旗舰模型,国产模型就很好用。

(完)

据台媒《经济日报》及供应链消息透露,OpenAI 正在加速推进其首款个人 AI 硬件设备的研发进程。该项目在公司内部被称为 “Project Gumdrop”,标志着 OpenAI 正正式从纯软件服务向硬件领域跨界。

目前,该设备仍处于设计阶段,其具体形态尚未最终敲定,但大概率将以 “智能笔” 或 “便携式音频设备” 的形式呈现。

功能方面,该设备预计将配备麦克风与摄像头,核心卖点是能够让用户直接将手写笔记内容传输至 ChatGPT 进行处理。为了确保全球供应链的稳定性并避开特定地区的制造风险,OpenAI 已决定将代工订单从立讯精密转交给富士康,生产线预计将落地越南或美国。该专案最初计画由立讯代工,现已转向鸿海,主要考量制造地点,OpenAI 不希望新的 AI 装置在中国制造。

不过此前有报道指出,Project Gumdrop 曾面临软件漏洞、隐私合规以及云端基础设施不完善等技术挑战。

目前 OpenAI 的目标是在 2026 年或 2027 年正式发布该产品。届时,富士康不仅将负责终端设备的生产,还可能接手 OpenAI 相关的云端基础设施订单,双方的合作将覆盖从算力底座到消费电子的全产业链。而 Foxconn 将负责处理从云端基础设施到终端设备的全面生产。


📌 转载信息
原作者:
BunnHack
转载时间:
2026/1/4 18:29:29

Google 负责 Gemini API 的首席工程师 Jaana Dogan 在社交平台 X 上公开盛赞 Anthropic 推出的新工具 Claude Code。她透露,自己曾向该工具描述了一个困扰团队一年的复杂难题 —— 分布式代理编排系统,结果 Claude Code 仅用 1 小时就生成了可运行的系统框架。

尽管 Google 团队此前曾尝试过多种方案,但始终未能达成共识。令人意外的是,Dogan 提供给 Claude Code 的提示词仅有短短三段话。虽然她坦言生成的代码并非完美,仍需后续打磨,但其完成度已足以与团队耗时一年打磨出的成果相媲美。

Dogan 回顾道,2022 年的 AI 只能补全单行代码,而到了 2025 年,AI 已经能够重构甚至从零创建整个代码库。这种超越预期的进化速度,让原本认为 “自动化编程还需五年才能普及” 的专家们纷纷改变了看法。

目前,出于安全考虑,Google 内部仅允许在开源项目中使用 Claude Code。

𝕏 x.com
I'm not joking and this isn't funny. We have been trying to build distributed agent orchestrators at Google since last year. There are various options, not everyone is aligned... I gave Claude Code a description of the problem, it generated what we built last year in an hour.
11:57 PM - 2 Jan 2026 21K🔁 2.1K

📌 转载信息
原作者:
BunnHack
转载时间:
2026/1/4 18:26:56

每次使用 kelivo 后想要复制黏贴出来的效果都不太理想,需要打开 snip 转格式太麻烦了,所以自己用 claude 大模型弄了一个油猴脚本。


可以改样式

期待各位佬友能够一起优化一下。
Markdown 转 Word 工具 - Linux.do 专用(高级版)-3.0.txt


📌 转载信息
原作者:
910417099
转载时间:
2026/1/4 18:26:25