Bundle
yanshifu-plugin-cn
yanshifu:机器人开发增强插件,挂三个技能——`yanshifu` 陪学员把这一季 SO-101 做出来(先确认项目目录、读项目产物判断进度、给出下一步),`ask` 只答四份资料里的问题,`update` 把资料更新到最新一集。
- Source
- Yanshi-Robotics
- License
- MIT
- Updated
- Updated 7 days ago
Readme
# yanshifu
[](#快速开始)
[](package.json)
[](LICENSE)
> **English** — This repository is the Chinese edition, written for Chinese-speaking users; the plugin answers in Chinese. The English edition is `Yanshi-Robotics/yanshifu-plugin`. It is coming soon and is not open yet.
一个 DeepSeek Harness 插件,装上多**三个技能**:`/yanshifu` 是陪你把这季 SO-101 做出来的开发搭子,`/yanshifu ask`(或 `/ask`)只查资料,`/yanshifu update`(或 `/update`)把资料更新到最新一集。
## 这是什么
跟着《一起手搓机器人》第一季做 SO-101,卡点很少是「不知道那句话怎么念」,多半是「我这台机器现在这一步过不去」。所以这个插件分三块:
**`yanshifu` · 机器人开发增强。** 加载后先做三件事:问清你的课程仓 clone 在哪个目录(确认过的路径记在 `~/.yanshifu/project.json`,下次直接拿出来问你是不是还在那儿);用只读探针扫一遍你的项目,看环境、校准、遥操日志、相机配置、数据集、训练产物,判断你做到哪一步;然后报一句「你现在到 EP<N>,下一步是这个,要不要现在做」。之后它按你实际卡住的地方干活:读你的代码与日志、跑不碰硬件的离线程序(仓里的 `tests/`、`ACT-1-Pick/offline_eval.py` 这类)、把要跑的命令写清楚交给你。碰真实硬件的命令(开相机、占串口、给电机上电)它只写不跑,那是你的手。
**`ask` · 资料速查。** 只从四份资料里找答案:BOM 与参考价、三种舵机后缀怎么分、电脑够不够跑某个模型、装配接线、切片设置、模型选型、更新到第几集。这一块不看你的项目,就是查得快、答得准、编不出来就说没有。
**`update` · 资料更新。** 查最新一集是第几集、你手上这份到第几集:一样就说已经是最新,落后就把正文装上,查不到就说查不到。
```text
/yanshifu 看你做到哪一步,下一步做什么
/yanshifu ask BOM 是什么 查四份资料(等价于 /ask BOM 是什么)
/yanshifu update 把资料更新到最新一集(等价于 /update)
```
它手边有三个来源:**你的项目**、**偃师傅的公开仓**(课程仓 `Lets-Build-Robots-S1-SO101`、`lerobot-doctor`、`lerobot-remote-inference`)、以及**四份速查资料**。资料是手边的参考书,不是边界。
答案用中文,因为资料和读者都是中文的。插件本身不含宿主代码,只挂技能目录。
## Quick Install Prompt · 安装用的提示词
把下面这段发给 DeepSeek Harness 里的助手,剩下的它做:
```text
安装 yanshifu 插件,插件位于 github: Yanshi-Robotics/yanshifu-plugin-cn 中,参照要求直接安装。
如果 github 拉不动,改装 release tarball:
https://github.com/Yanshi-Robotics/yanshifu-plugin-cn/releases/latest/download/yanshifu-plugin-cn.tgz
装完确认技能列表里出现 yanshifu、ask、update 三个技能,然后发一句 /yanshifu:
它应该先问你课程仓在哪个目录,报出你做到第几步,再问下一步要不要现在做。
```
最后那句别删。这套流程真正会翻车的地方,是插件报「装好了」但技能列表里根本没有它;最后那句就是让助手先证明技能答得出来,再说装完了。
它背后就一条命令 `dsh plugin --profile web add <来源>`:装包、同时把这个包选成 bundle,不用手工改任何配置文件,这个插件也不需要重启。想自己动手就看下面的「快速开始」。
## 在别的宿主上用
同一套技能文件(`skills/` 下那三个目录)在三个宿主上都能装,不需要改内容:
| 宿主 | 装法 | 叫起来 |
|---|---|---|
| **DSH** | `dsh plugin --profile web add github:Yanshi-Robotics/yanshifu-plugin-cn`,或本节的提示词 | `/yanshifu`、`/ask`、`/update` |
| **Codex** | 让它用自带的 skill-installer 从这个仓装:`scripts/install-skill-from-github.py --repo Yanshi-Robotics/yanshifu-plugin-cn --path skills/yanshifu skills/ask skills/update`;或克隆本仓后跑 `python3 scripts/install.py --host codex` | `$yanshifu`、`$ask`、`$update` |
| **Kimi** | 克隆本仓后跑 `python3 scripts/install.py --host kimi`(或 `--host agents`,那个根 DSH 与 Kimi 都读) | `/skill:yanshifu`、`/skill:ask`、`/skill:update` |
两个宿主的额外条件,装之前先知道:
- **Codex 的 skills 是实验特性,默认关着**。要在 `~/.codex/config.toml` 的 `[features]` 下加 `skills = true` 再重启;`install.py --host codex --enable-codex-skills` 可以替你改(改前备份 `config.toml`)。它还**跳过符号链接**,所以给它装的时候一律是复制,不是软链。
- **Codex 只读 `~/.codex/skills/`**,不读 `~/.agents/skills/`;**Kimi 与 DSH 两个根都读**,所以 `--host agents` 一次能顶两个。
`install.py` 的别开关:`--list-targets` 看准备装到哪、`--dry-run` 演练、`--force` 覆盖已存在的(旧的先备份成 `.bak-<时间戳>`)、`--link` 用软链(Codex 会退回复制)。
> ⚠️ 精度说明:这里只有 DSH 这条路是作者实测过的(本机 DSH 跑通);Codex 与 Kimi 的装法与叫法照各自的官方文档写,作者还没在真机上验过。谁先验了谁改这一行。
## 快速开始
自己装:Web 侧栏 **Plugins** 页里 **Add plugin**,把仓库填进去,装完启用;或者命令行:
```bash
dsh plugin --profile web add github:Yanshi-Robotics/yanshifu-plugin-cn
```
机器上要有 `git`,包是直接从仓库拉的。让助手代劳也行,但管插件的工具默认只在 Creator 预设里打开,普通会话里它就是替你跑上面这条命令。
**GitHub 慢或者连不上的话**,改装 release 里的 tarball:69 kB,不用克隆整个仓库,而且是从 GitHub 自己的 release 托管上取的:
```bash
dsh plugin --profile web add https://github.com/Yanshi-Robotics/yanshifu-plugin-cn/releases/latest/download/yanshifu-plugin-cn.tgz
```
优先用这条,别用第三方的 GitHub 加速站:加速站夹在你和 GitHub 中间,能给你换成别的内容;上面这个包直接从 GitHub 取,校验和随 release 一起公布。
**仓名带语言。** 这个仓以 `-cn` 结尾,专门给中文用户;英文版是 `yanshifu-plugin`,还没开放。各装各的,不用装两个。
然后直接用,带不带斜杠都行:
```text
/yanshifu 看项目、报进度、给下一步
/yanshifu ask BOM 是什么 查四份资料
/ask 我这台电脑够不够跑 π₀.₅ 同上,直接进资料速查
```
技能也会自己触发:直接问「偃师傅,我这步过不去」,不用点名也会加载,因为触发条件写在技能说明里。写 `@yanshifu` 也能用:`@` 在输入框里是引文件用的,不会补全出这个技能,但消息里有这个名字,助手就会去加载它。
## 它能干什么
**`yanshifu`(开发增强)**
- **你现在该做什么**:扫你的项目产物说清你到哪一步、下一步是什么,这是它默认开场。
- **报错怎么查**:先读你仓里最新的日志和报错原文、看现场(设备、版本),再下结论,不猜。
- **数据集与训练产物体检**:读 `datasets/<名字>/meta/info.json`、数回合与帧、看 `outputs/train/*/checkpoints/`,把事实列出来。
- **训练完上真机之前**:先跑 `ACT-1-Pick/offline_eval.py` 离线评估(不碰硬件),再谈真机测试。
- **要跑的命令**:写清哪个程序、哪个模式、在哪个目录、先激活环境、预期看到什么。
- **相机那一集**:怎么列相机、稳定路径怎么看、取景与旋转怎么定,这部分来自公开的课程代码仓 `Cameras/`。
- **环境与显卡**:指 `lerobot-doctor` 一键体检;显卡不够要上云指 `lerobot-remote-inference`。
**`ask`(资料速查)**
- **物料清单**:SO-101 全套 BOM,2026 年 10 月的参考价,三种舵机后缀各装哪条臂;手上已经有几样时先买什么。
- **电脑够不够**:读本机配置(CPU、内存、硬盘空余、显卡与显存),对上资料里的四档,说清能跑哪几个模型、训练放本地还是云端、哪几集在你这台机器上要跳过。
- **装配、打印与软件步骤**:装配顺序、接线、电机配置、校准、遥操、笛卡尔控制、手柄控制、切片设置。
- **模型选型**:ACT、SmolVLA、π₀、π₀.₅ 的权重、推理显存与训练显存。
- **节目更新到第几集**:包里资料到第几集,并提醒视频平台可能已经更新。
- **把资料更新到最新**(`update`):比对本地与最新已发布版本,落后就把正文装上;只动技能自己的目录,不碰你的项目。
**两半都守的规矩**:资料里没写的,去公开的课程代码仓 `Yanshi-Robotics/Lets-Build-Robots-S1-SO101` 找(每集的程序按目录分:`Cameras/`、`Teleop/`、`Bringup/`、`Cartesian/` 等),答案里标明这条来自代码仓、不是资料。碰真实硬件的命令只写出来交给你跑,自己不代跑。
范围之外的它会直说:成本与利润、供应商与采购、橱窗运营、Season 2 及以后、别的机器人、通用编程问题,都不在范围内,它不会硬答。
## 项目进度怎么读的
`skills/yanshifu/scripts/project-scan.py` 只看文件状态——不开设备、不碰串口与相机、不执行你仓里的程序。它认这些产物(含义见课程仓 README):
| 产物 | 说明你做到了 |
|---|---|
| `.venv/` | EP3:环境装好了 |
| `calibration/follower` 与 `calibration/leader` | EP6:两条臂校准过 |
| `Teleop/logs/` 里有日志 | EP7:跑过遥操与诊断 |
| `models/so101/` | 笛卡尔控制要用的臂模型下好了 |
| `Cartesian/gamepad_map.json` | EP9:手柄配过 |
| `cameras.json` | EP11:两台相机配好、方向定过 |
| `datasets/`(或 Hugging Face 缓存里的数据集) | EP12:录过数据 |
| `outputs/train/*/checkpoints/` | EP13:训练跑过 |
| `ACT-1-Pick/` | 第 12–15 课那个任务的工装 |
数据集只按 `meta/info.json` 认。LeRobot 缓存里还有 `calibration`、`videos` 这些它自己的目录,拿「有子目录」当数据集会把没录过数据的人判成已经录完了。
## 里面是什么
```text
skills/
├── yanshifu/ 机器人开发增强(/yanshifu)
│ ├── SKILL.md 开工三步、能做什么、来源与边界、进度判据
│ └── scripts/
│ └── project-scan.py 找项目目录 / 扫进度 / 记住路径(只读文件,不碰硬件)
├── ask/ 资料速查(/yanshifu ask、/ask)
│ ├── SKILL.md 人设、知识边界、章节路由、BOM 与橱窗、口吻
│ ├── knowledge/ 四份资料正文,加一份生成的索引
│ │ ├── INDEX.md
│ │ ├── SOURCES.md 头部三个可机读字段:随包版本 / 同步时间 / 最新一集
│ │ └── so101-guide.md · pc-checkup.md · github-signup.md · dsh-install.md
│ └── references/
│ └── hardware-check.md 三个系统的只读探测命令 + 四档判据
└── update/ 资料更新(/yanshifu update、/update)
├── SKILL.md 查最新一集 → 比对本地 → 落后就装
└── scripts/
└── update.py 三源探测 + 逐文件原子替换(只动本技能自己的目录)
```
资料与硬件判据归 `ask`(它才是查资料那一半),探针归 `yanshifu`,更新归 `update`;`yanshifu` 要引用资料里的数字时直接读 `../ask/knowledge/`,要整段问答就把 `ask` 技能加载起来。
`cordis.patch.yml` 挂的是 `@deepseek-ai/dsh-skill-filesystem`,把 `bundledSkillDir` 指向包内的 `skills/`,三个技能一起注册,整个插件没有宿主逻辑。
## 资料怎么更新
包里的四份正文是**快照**。`SOURCES.md` 头部记着三个可机读的值:随包版本、同步时间、资料更新到第几集。
学员侧只有一个动作:
```text
/yanshifu update
```
它会先查最新发布到第几集、再看你手上这份到第几集:一样就说「已经是最新」,落后就把内容装上,查不到就直说查不到。装的时候是逐文件替换(写临时文件再改名),不会动你机器上别的东西。
比它新的那份从哪来:`skills/update/scripts/update.py` 依次试 release 包、`SOURCES.md`、GitHub API,全是同一个公开仓里的东西。装的时候先试 release 包,包取不到就从仓里逐文件取那几份正文;两条都不通会明说「查到有新版但取不到」,不会假装装好了。取数据先走 Python 标准库、失败自动退回系统 `curl`(国内网络下 curl 明显更稳)。
出新的正文由上一条线负责,不在这个仓里:正文正本、出版工装、同步与发版都在发布者侧的私有资料库仓,`/publish` 技能管那一段。这个仓里只有学员要用的东西。
## 已知限制
- 知识是快照,出新一集要重新发一版。这是有意的:助手会说自己这份资料到第几集,不装作是实时的。
- 不打包图片和 PDF。答案要配图时会说明,并指向资料里对应的那一节。
- 只答中文。
- ⚠️ 后两个技能的名字就叫 `ask` 与 `update`,短是短,但别家插件也可能起同名:真撞上了(技能列表里出现两个同名的),用 `/yanshifu ask`、`/yanshifu update` 一定进的是这两个。
- **默认只读**:不改你仓里的文件,要改先问;⛔ 不代跑碰真实硬件的命令(开相机、占串口、上电),只把命令写清楚。
- 进度判断靠 `project-scan.py`,它要机器上有 `python3`(3.10 以上);扫的是产物,不是结论,报出来会先问你「对不对」。
- 确认过的项目路径记在 `~/.yanshifu/project.json`,只存路径和确认时间;不想要就 `project-scan.py forget`。
- 以这四份资料与偃师傅的公开仓为准;两处都没有的直说没有,不编。
- 不是通用机器人助手,也不会假装是。
## 许可证
MIT,见 [LICENSE](LICENSE)。
Install
dsh plugin --profile web add github:Yanshi-Robotics/yanshifu-plugin-cn
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install yanshifu-plugin-cn from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.