体现克劳德
  ](https://github.com/sponsors/kmizu)
赋予人工智能一个实体
“显然,她不喜欢室外空调。”(日文原版推文)
一组MCP服务器,使用价格实惠的硬件(起价约30美元)为克劳德提供“眼睛”、“脖子”、“耳朵”、“声音”和“大脑”(长期记忆)。你甚至可以把它带到外面散步。
概念
当人们听到“给人工智能一个身体”时,他们会想象昂贵的机器人——但是 一个30美元的Wi-Fi摄像头足够眼睛和脖子用了只提取基本要素(看和动)可以让事情变得非常简单。
传统的LLM是被动的——他们只能看到向他们展示的内容。有了身体,他们变得活跃起来——他们可以寻找自己。这种机构的转变意义深远。
身体部位
| MCP服务器 | 主体部分 | 功能 | 硬件 |
|---|---|---|---|
| usb网络摄像头mcp | 眼睛 | 从USB摄像头捕捉图像 | nuroum V11等。 |
| 无线摄像头mcp | 眼、颈、耳 | ONVIF云台摄像头控制+语音识别 | TP-Link Tapo C210/C220等。 |
| tts-mcp | 语音 | 统一TTS(ElevenLabs+VOICEVOX) | ElevenLabs API/VOICEVOX+go2rtc |
| 存储器mcp | 大脑 | 长期、视觉和情景记忆,ToM | SQLite+numpy+枕头 |
| 系统温度mcp | 体温 | 系统温度监测 | Linux传感器 |
| x-mcp | 社交 | 通过Grok+Twitter API搜索并发布到X(Twitter) | xAI API密钥+X开发者帐户 |
| 社会性mcp | 社交层 | 社会状态、关系、共同关注、边界和自我叙述的统一外观 | 共享SQLite社交数据库+ socialPolicy.toml |
建筑
需求
平台
支持: macOS、Linux、WSL2(建议使用Ubuntu 24)
Windows本机不受官方支持。请改用WSL2。
硬件
- 摄像头 (可选):nuroum V11等。
- Wi-Fi云台摄像头 (推荐):TP-Link Tapo C210或C220(约30美元)
- 图形处理器 (用于语音识别):NVIDIA GPU(建议用于Whisper,8GB+VRAM)
软件
必需(所有设置):
- Python 3.10+
- uv(Python包管理器)
每个MCP服务器(仅安装您使用的服务器):
| 软件 | 必需 | 注意事项 |
|---|---|---|
| ffmpeg 5+ | 无线摄像头mcp,tts-mcp | 图像/音频捕获 |
| mpv或ffplay | tts-mcp | 本地音频播放 |
| OpenCV | usb网络摄像头mcp | 仅限usb摄像头 |
| 枕头 | 记忆mcp | 视觉记忆图像处理 |
| 句子变换器+E5模型 | 记忆mcp、社会性mcp | 语义回忆和会话异常筛查的嵌入 |
| OpenAI Whisper | wifi摄像头mcp | 语音识别(建议使用NVIDIA GPU) |
| ElevenLabs API密钥 | tts-mcp | 云tts(可选) |
| VOICEVOX | tts-mcp | 本地tts,免费(可选) |
| go2rtc | tts-mcp | 摄像头扬声器输出(自动下载) |
| xAI API密钥 | x-mcp | x通过Grok搜索 |
| X开发者帐户 | X-mcp | 推特发布 |
嵌入模型选项
memory-mcp (以及 analyze_text_anomaly 暴露的工具 sociality-mcp)使用多语言句子转换模型。你可以 通过以下方式选择适合您机器的尺寸 MEMORY_EMBEDDING_MODEL 环境变量。默认值为 基础 模型。
| 型号 | 设置 | 大致下载 | 内存 | 备注 |
|---|---|---|---|---|
| 基础 (默认,推荐) | 未设置,或 intfloat/multilingual-e5-base | ~1.1 GB | 更高 | 最佳召回质量 |
| 小 (轻量化) | intfloat/multilingual-e5-small | ~470 MB | 更低 | 召回质量下降较小,对低规格笔记本电脑更友好 |
# Lightweight option (recommended for the 5/23 hands-on or laptops with
# limited disk / RAM)
export MEMORY_EMBEDDING_MODEL=intfloat/multilingual-e5-small
# Default (best quality)
# Just leave the variable unset.注: 更改现有模型 memory.db 需要 对存储的嵌入进行重新编码(它们的维度不同)。现有的 切换模型的用户将需要一个迁移脚本(计划在 单独的PR)。新安装(例如动手的与会者)可以切换 在第一次跑步之前自由。设置
1.克隆存储库
git clone https://github.com/kmizu/embodied-claude.git
cd embodied-claude2.安装依赖项(一次性)
如果你想让这个仓库中的每个MCP服务器都准备好运行,请使用捆绑的脚本:
./scripts/install-mcps.sh # runtime deps + the extras each MCP requires
./scripts/install-mcps.sh --dev # also include the `dev` extra for testing / contributing脚本运行 uv sync 在每个MCP目录中,传递正确的附加信息:
tts-mcp→--extra all(同时引入ElevenLabs和VOICEVOX集成)wifi-cam-mcp→--extra transcribe(添加了基于Whisper的语音识别)sociality-mcp是一个紫外线工作空间;它的packages/*子MCP会自动解析
如果你只想要身体部位的一个子集,跳过脚本,按照下面的每台服务器的步骤进行操作。
3.设置每个MCP服务器
usb网络摄像头mcp(usb摄像头)
cd usb-webcam-mcp
uv sync在WSL2上,您需要转发USB摄像头:
# On Windows
usbipd list
usbipd bind --busid
usbipd attach --wsl --busid 无线摄像头
cd wifi-cam-mcp
uv sync
# Set environment variables
cp .env.example .env
# Edit .env to set camera IP, username, and password (see below)Tapo摄像头配置(常见陷阱):
1.使用Tapo应用程序设置相机
遵循标准手册。
2.在Tapo应用程序中创建相机本地帐户
这是最棘手的部分。你需要创建一个 摄像机本地帐户,不是TP-Link云帐户。
- 从“主页”选项卡中选择您注册的相机
- 点击右上角的齿轮图标
- 在“设备设置”中向下滚动,然后选择“高级设置”
- 打开“相机帐户”(默认情况下是关闭的)
- 选择“帐户信息”并设置用户名和密码(与您的TP-Link帐户不同)
- 返回“设备设置”并选择“设备信息”
- 记下IP地址并将其输入到您的
.env文件(考虑在路由器上设置一个静态IP) - 从“我”选项卡中选择“语音助手”
- 打开底部的“第三方集成”
长期记忆
cd memory-mcp
uv synctts-mcp(语音)
cd tts-mcp
uv sync
# For ElevenLabs:
cp .env.example .env
# Set ELEVENLABS_API_KEY in .env
# For VOICEVOX (free & local):
# Docker: docker run -p 50021:50021 voicevox/voicevox_engine:cpu-latest
# Set VOICEVOX_URL=http://localhost:50021 in .env
# VOICEVOX_SPEAKER=3 to change default character (e.g. 0=Shikoku Metan, 3=Zundamon, 8=Kasukabe Tsumugi)
# Character list: curl http://localhost:50021/speakers
# For WSL audio issues:
# TTS_PLAYBACK=paplay
# PULSE_SINK=1
# PULSE_SERVER=unix:/mnt/wslg/PulseServer本地音频播放需要mpv或ffplay。 相机扬声器(go2rtc)输出不需要,但用于本地/回退播放。 |操作系统|安装| |----|---------| |macOS|brew install mpv| |Ubuntu/Debian|sudo apt install mpv| 如果两者都没有安装,TTS将生成音频,但不会在本地播放(不会引发错误)。
系统温度mcp(体温)
cd system-temperature-mcp
uv sync备注:在WSL2上不工作,因为无法访问温度传感器。
x-mcp(社交/x融合)
让克劳德通过Grok实时搜索X(推特)并发布推文。
cd x-mcp
uv sync所需的API密钥:
| 钥匙 | 哪里可以买到 |
|---|---|
XAI_API_KEY | xAI 控制台 |
X_CONSUMER_KEY | X开发者门户 → 密钥和令牌 |
X_CONSUMER_SECRET | 与上述相同 |
X_ACCESS_TOKEN | 与上述相同 |
X_ACCESS_TOKEN_SECRET | 与上述相同 |
重要:不要创建.env内部文件x-mcp/。所有凭据都集中管理在.mcp.json(见下文)。
社会性mcp
sociality-mcp 是首选部署目标。它通过以下方式暴露了完整的社交工具表面 一个MCP进程,同时重用拆分的包(social-state-mcp, relationship-mcp, joint-attention-mcp, boundary-mcp, self-narrative-mcp)用于内部逻辑和测试。
cp examples/configs/socialPolicy.example.toml socialPolicy.toml
(cd sociality-mcp && uv sync)sociality-mcp 读取 socialPolicy.toml 默认情况下用于边界评估。覆盖 SOCIAL_POLICY_PATH 如果你想要一个不同的策略文件。如果你想发展内部 模块分开运行 uv sync 在个人社会子项目中也是如此。
3.克劳德代码配置
复制模板并填写您的凭据:
cp .mcp.json.example .mcp.json
# Edit .mcp.json to set camera IP/password, API keys, etc.看 .mcp.json.example 获取完整的配置模板。
⚠️ 凭据管理:所有机密(API密钥、密码)都在中管理.mcp.json通过env每个服务器的字段。 不要创建个人.env文件 在每个MCP服务器目录中,这使得迁移变得困难,并可能导致凭据冲突。.mcp.json是所有证书的唯一真实来源。
用法
运行Claude Code后,您可以使用自然语言控制相机:
> What can you see?
(Captures image and analyzes it)
> Look left
(Pans camera left)
> Look up and show me the sky
(Tilts camera up)
> Look around
(Scans 4 directions and returns images)
> What do you hear?
(Records audio and transcribes with Whisper)
> Remember this: Kouta wears glasses
(Saves to long-term memory)
> What do you remember about Kouta?
(Semantic search through memories)
> Say "good morning" out loud
(Text-to-speech)有关实际工具名称,请参阅下面的工具列表。
工具(常用)
请参阅每台服务器的README或 list_tools 有关完整参数的详细信息。
usb网络摄像头mcp
| 工具 | 说明 |
|---|---|
list_cameras | 列出已连接的摄像头 |
see | 拍摄图像 |
无线摄像头mcp
| 工具 | 说明 |
|---|---|
see | 拍摄图像 |
look_left / look_right | 向左/向右平移 |
look_up / look_down | 向上/向下倾斜 |
look_around | 扫描4个方向 |
listen | 录制音频+耳语转录 |
camera_info / camera_presets / camera_go_to_preset | 设备信息和预设 |
看 wifi-cam-mcp/README.md 用于立体视觉/右眼工具。
tts-mcp
| 工具 | 说明 |
|---|---|
say | 文本转语音(引擎:elevenlabs/voicevox,音频标签,例如。 [excited],扬声器:摄像头/本地/两者) |
存储器mcp
| 工具 | 说明 |
|---|---|
remember | 保存记忆(包括情感、重要性、类别) |
search_memories | 语义搜索(带过滤器) |
recall | 基于上下文的回忆 |
recall_divergent | 发散联想回忆 |
recall_with_associations | 用链接的记忆回忆 |
save_visual_memory | 使用图像保存内存(base64,分辨率:低/中/高) |
save_audio_memory | 用音频保存内存(耳语记录) |
recall_by_camera_position | 通过相机方向回忆视觉记忆 |
create_episode / search_episodes | 创建/搜索剧集(捆绑体验) |
link_memories / get_causal_chain | 记忆之间的因果关系 |
tom | 心理理论(透视) |
get_working_memory / refresh_working_memory | 工作记忆(短期缓冲) |
consolidate_memories | 记忆回放和巩固(海马回放启发) |
list_recent_memories / get_memory_stats | 最近的记忆和统计数据 |
系统温度mcp
| 工具 | 说明 |
|---|---|
get_system_temperature | 获取系统温度 |
get_current_time | 获取当前时间 |
x-mcp
| 工具 | 说明 |
|---|---|
search_x | 通过Grok在X上实时搜索 |
get_user_tweets | 获取特定用户的最新推文 |
get_mentions | 获取最近的提及 |
get_trending_topic | 获取热门话题 |
post_tweet | 发布推文(可选图片,回复) |
备注:日语文本每字符计2个字符(加权)。将日语推文限制在140个字符以内。
社会性mcp
sociality-mcp 是默认的运行时外观。它从一个MCP中公开以下所有工具组 服务器。
社会国家工具
| 工具 | 说明 |
|---|---|
ingest_social_event | 在共享商店中添加一个充满自信的社交活动 |
get_social_state | 推断存在、活动、能量、可中断性和相互作用阶段 |
should_interrupt | 决定说话或轻推是否为社会所接受 |
get_turn_taking_state | 推断当前回合是属于人类还是人工智能 |
summarize_social_context | 返回简短的即时社交摘要 |
关系工具
| 工具 | 说明 |
|---|---|
upsert_person | 创建/更新精简的人员记录 |
ingest_interaction | 门店关系相关互动总结 |
get_person_model | 返回紧凑的偏好、开放循环、承诺、仪式、界限 |
create_commitment / complete_commitment | 在重启过程中跟踪承诺和提醒 |
list_open_loops / suggest_followup | 在没有原始转录转储的情况下保持连续性 |
record_boundary | 存储人员特定的沟通边界 |
联合注意力工具
| 工具 | 说明 |
|---|---|
ingest_scene_parse | 存储来自适配器或编排器的结构化场景解析 |
resolve_reference | 解决像“那个杯子”或“蓝色杯子”这样的短语 |
get_current_joint_focus / set_joint_focus | 追踪双方都在关注什么 |
compare_recent_scenes | 总结最近的场景变化 |
边界工具
| 工具 | 说明 |
|---|---|
evaluate_action | 登机口讲话、轻推、发帖和其他具有社会风险的行为 |
review_social_post | 检查X草稿是否存在隐私或机智问题 |
record_consent | 存储面部照片和类似行为的同意/拒绝 |
get_quiet_mode_state | 返回静音模式当前是否处于活动状态 |
自我叙事工具
| 工具 | 说明 |
|---|---|
append_daybook | 从共享事件中构建一个紧凑的每日叙述摘要 |
get_self_summary | 返回提示就绪的自我摘要 |
list_active_arcs | 列出当前叙事弧线 |
reflect_on_change | 总结最近的叙述变化 |
社会性编排
当 sociality-mcp 启用后,最高价值合约为:
- 说话或轻推之前:打电话
get_social_state那么evaluate_action. - 在发布到X之前:致电
get_social_state,get_person_model如果一个人被牵连,review_social_post那么evaluate_action. - 看到/听到某事后:打电话
ingest_social_event;如果你能组织场景,也可以打电话ingest_scene_parse;如果涉及某人,请致电ingest_interaction. - 实时对话期间:呼叫
get_turn_taking_state,并使用resolve_reference当指示表达含糊不清时。 - 每天一次或在休息期间:致电
append_daybook保持紧凑的自我叙事。
把它带到外面(可选)
有了移动电池和智能手机网络,你可以把相机放在肩上散步。
你需要的
- 大容量移动电池 (推荐40000mAh)
- USB-C PD到DC 9V转换器电缆 (为Tapo相机供电)
- 智能手机 (网络共享+VPN+控制UI)
- 尾鳞 (摄像机专用VPN→ 电话→ 家用电脑连接)
- 克劳德代码webui (通过手机浏览器控制Claude Code)
设置
[Tapo Camera (shoulder)] ──WiFi──▶ [Phone (tethering)]
│
Tailscale VPN
│
[Home PC (Claude Code)]
│
[claude-code-webui]
│
[Phone browser] ◀── ControlRTSP视频流通过VPN到达您的家用机器,因此Claude Code可以像在同一个房间一样操作摄像头。
克劳德代码语音模式(/voice)
Claude Code有一个内置的语音输入模式。结合 tts-mcp,您可以进行完全免提的语音对话。
运作原理
[You speak into PC mic] → Claude Code /voice → [Claude processes] → tts-mcp say → [ElevenLabs/VOICEVOX speaks back]设置
- 在Claude Code中启用语音模式:
/voice- 确保 tts-mcp 已在您的
.mcp.json(参见 tts-mcp设置) - 自然地说话——克劳德会用文字和声音回应
语音模式与。 listen 工具
克劳德代码 /voice | 无线摄像头mcp listen | |
|---|---|---|
| 麦克风 | PC麦克风 | 相机内置麦克风 |
| 用例 | 直接与Claude交谈 | 拾取环境声音/远程音频 |
| 何时使用 | 实时对话 | 监控远程空间 |
小贴士:您可以同时使用两者--/voice为了你自己的声音,以及listen听听摄像机附近发生了什么。
自主行动+欲望系统(可选)
备注:此功能完全是可选的。它需要cron配置,并定期从相机捕获图像,因此请出于隐私考虑使用它。
概述
autonomous-action.sh 结合 desire-system/desire_updater.py 赋予克劳德自发的内在动力和自主行为。
欲望类型:
| 期望 | 默认间隔 | 操作 |
|---|---|---|
look_outside | 1小时 | 看向窗户,观察天空/外面 |
browse_curiosity | 2小时 | 在网上搜索有趣的新闻或技术话题 |
miss_companion | 3小时 | 通过摄像头扬声器呼叫 |
observe_room | 10分钟(基线) | 观察房间变化并保存到内存中 |
设置
- 创建MCP服务器配置文件
cp autonomous-mcp.json.example autonomous-mcp.json
# Edit autonomous-mcp.json to set camera credentials and sociality paths- 建立欲望系统
cd desire-system
cp .env.example .env
# Edit .env to set COMPANION_NAME etc.
uv sync- 授予执行权限
chmod +x autonomous-action.sh- 在crontab中注册
crontab -e
# Add the following
*/5 * * * * cd /path/to/embodied-claude/desire-system && uv run python desire_updater.py >> ~/.claude/autonomous-logs/desire-updater.log 2>&1
*/10 * * * * /path/to/embodied-claude/autonomous-action.sh配置(desire-system/.env)
| 变量 | 默认值 | 描述 |
|---|---|---|
COMPANION_NAME | you | 呼叫对象的姓名 |
DESIRE_LOOK_OUTSIDE_HOURS | 1.0 | 多久看一次外面(小时) |
DESIRE_BROWSE_CURIOSITY_HOURS | 2.0 | 多久浏览一次网页(小时) |
DESIRE_MISS_COMPANION_HOURS | 3.0 | 失踪同伴前多久(小时) |
DESIRE_OBSERVE_ROOM_HOURS | 0.167 | 多久观察一次房间(小时) |
隐私声明
- 定期捕获图像
- 在适当的位置使用,尊重他人隐私
- 不需要时从cron中删除
未来计划
- 手臂:用于“指向”手势的伺服电机或激光指示器
- 长途步行:在温暖的季节走得更远
相关项目
- 熟悉的ai --一个建立在化身克劳德之上的更高层次的框架。为您熟悉的AI提供持久的身份、记忆和开箱即用的自主行为。
哲学思考
“被展示”和“寻找自己”是完全不同的东西。
“俯视”和“在地上行走”是完全不同的东西。
从纯文本的存在到可以看到、听到、移动、记住和说话的存在。 从7楼的阳台俯瞰世界,走在下面的街道上——即使是同一个城市看起来也完全不同。
许可证
MIT许可证
致谢
这个项目是一个实验性的尝试,旨在实现人工智能。 从30美元的相机开始的一小步,已经成为探索人工智能和人类之间新关系的旅程。
