Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 16 additions & 7 deletions src/components/VideoEmbed.astro
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,26 @@ import { YouTube } from '@astro-community/astro-embed-youtube'

interface Props {
youtubeId: string
bilibiliUrl: string
bilibiliUrl?: string
}

const { youtubeId, bilibiliUrl } = Astro.props
---

<div class="gap-4 grid grid-cols-1 md:grid-cols-2">
<div
class:list={[
"gap-4 grid grid-cols-1",
{ "md:grid-cols-2": bilibiliUrl },
]}
>
<YouTube id={youtubeId} class="flex-1 aspect-video" />
<iframe
src={bilibiliUrl}
allowfullscreen="true"
class="flex-1 aspect-video border-0"
></iframe>
{
bilibiliUrl && (
<iframe
src={bilibiliUrl}
allowfullscreen="true"
class="flex-1 aspect-video border-0"
/>
)
}
</div>
64 changes: 64 additions & 0 deletions src/content/posts/ep72.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
---
type: podcast-episode
status: published
slug: /posts/ep72
guid: 72
title: "EP72 YoooClaw:给 AI 一具身体"
subtitle: "从通知总结、会议记录到个人 Context,聊聊软硬件结合的 AI Agent"
publicationDate: 2026-07-31 14:00:00

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Prevent the future-dated episode from publishing early

When this commit is deployed before 2026-07-31 14:00, EP72 is exposed immediately despite this future publication time: src/pages/posts.astro lists every collection entry, src/pages/rss.xml.ts emits every entry, and the static post route is generated without a date filter. Consequently the episode becomes the first posts/RSS item before its stated release time; defer publishing it or filter future-dated entries until release.

Useful? React with 👍 / 👎.

author: AnnatarHe
season: 3
episodeNumber: 72
episodeType: full
excerpt: "EP72 YoooClaw:给 AI 一具身体——从通知总结、会议记录到个人 Context,聊聊软硬件结合的 AI Agent"
url: https://youtu.be/7mbOHd_EWZw
size: 0
duration: 0
explicit: false
youtubeId: 7mbOHd_EWZw
categories:
- YoooClaw
- OpenClaw
- AIAgent
- AI硬件
- 智能硬件
- 人工智能
- 个人AI
- 语音助手
- 通知总结
- 会议记录
- 大模型
- GLM52
- DeepSeek
- AppleIntelligence
- 软硬件结合
- AI助手
- Context
- 科技产品
- AsyncTalk
---

### 📕 Shownotes

当 AI Agent 不再只存在于聊天框里,它会变成什么?

本期体验一款很有意思的软硬件结合产品——YoooClaw。它像一个吸附在手机背面的“小型 AI 硬件”,可以通过语音直接向 OpenClaw 下达任务,还能读取并总结手机通知、通过 RGB 灯带反馈重要消息,以及录制对话、识别不同发言者并生成会议总结。

它还支持切换 DeepSeek、GLM 5.2 等不同模型。但比具体功能更值得讨论的,是 YoooClaw 所代表的产品方向:

模型可以替换,App 和 Agent 框架也可以替换,但持续积累的个人上下文、稳定存在的硬件入口,以及从信息感知到任务执行的完整闭环,可能才是 AI 时代真正的护城河。

某种意义上,YoooClaw 就是在尝试给 OpenClaw 一具真实的“身体”。

当然,目前的产品仍然存在不少问题:任务结果展示不够完善、系统推送和定时任务尚未形成完整闭环,位置等上下文也没有得到充分利用。更重要的是,当一个设备能够读取通知、录制音频并长期积累个人信息时,隐私和数据安全将成为无法回避的问题。

这期视频会聊到:

- YoooClaw 如何通过硬件与 OpenClaw 交互
- AI 通知总结与 Apple Intelligence 的体验差异
- 录音、发言人识别和会议总结
- 为什么持续积累的 Context 如此重要
- 硬件入口为什么可能成为 AI 产品的商业护城河
- YoooClaw 当前的产品缺陷与隐私风险

你认为这种软硬件结合的 AI Agent,会成为下一代个人 AI 助手的主流形态吗?
45 changes: 29 additions & 16 deletions src/pages/posts/[...slug].astro
Original file line number Diff line number Diff line change
Expand Up @@ -111,17 +111,21 @@ const imgUrl = `${Astro.site?.origin}${post.id}-og.png`;
{new Intl.DateTimeFormat().format(frontData.publicationDate)}
</time>

<KvInfo title="收听渠道">
<a
href={frontData.xyzLink!}
class="flex items-center justify-center hover:underline"
target="_blank"
referrerpolicy="no-referrer"
>
小宇宙 - {frontData.title}
<IconExternalLink className="scale-75 -translate-y-1" />
</a>
</KvInfo>
{
frontData.xyzLink && (
<KvInfo title="收听渠道">
<a
href={frontData.xyzLink}
class="flex items-center justify-center hover:underline"
target="_blank"
referrerpolicy="no-referrer"
>
小宇宙 - {frontData.title}
<IconExternalLink className="scale-75 -translate-y-1" />
</a>
</KvInfo>
)
}

{
frontData.draftLink && (
Expand All @@ -148,13 +152,22 @@ const imgUrl = `${Astro.site?.origin}${post.id}-og.png`;
}

<Hr className="my-10" />
<Player link={post.data.xyzLink!} title={frontData.title} />
<Hr className="my-10" />
{
post.data.xyzLink && (
<>
<Player link={post.data.xyzLink} title={frontData.title} />
<Hr className="my-10" />
</>
)
}

{
frontData.youtubeId && frontData.biliUrl && (
frontData.youtubeId && (
<>
<VideoEmbed youtubeId={frontData.youtubeId} bilibiliUrl={frontData.biliUrl} />
<VideoEmbed
youtubeId={frontData.youtubeId}
bilibiliUrl={frontData.biliUrl}
/>
<Hr className="my-10" />
</>
)
Expand Down Expand Up @@ -201,4 +214,4 @@ const imgUrl = `${Astro.site?.origin}${post.id}-og.png`;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
</style>
</style>
Loading