ClareCourseWare / PUSH_TO_HF.md
claudqunwang's picture
Add teacher agent, docs, and project updates; ClareVoiceV1 remains untracked (nested repo)
fbe1c8a
# 推送到 Hugging Face Space(claudqunwang/ClareVoice)
## 之前「整库 force 推送」和「只换 UI」的区别
| | 之前的做法(整库 force 推送) | 只换 UI(推荐) |
|---|---|---|
| **操作** | `git push huggingface main --force`,把本地整份项目推上去 | 先 clone HF 上现有 Space,只**新增** web 前端 + 后端 api,改 Dockerfile,再普通 push |
| **结果** | HF 上所有内容被本地项目**完全覆盖**,你在 HF 上改过的 app.py、config、Dockerfile、README 等都会变成本地版本 | HF 上现有文件**全部保留**,只多出 `web/``api/` 和一个新的 Dockerfile,运行时改用 React UI |
| **你的改动** | 会丢失 | 会保留(原有文件仍在仓库里) |
所以:**不想覆盖在 HF 上的改动、只想换成 React UI 时**,不要用 force 推送整库,而是按下面「只换 UI」的步骤做。
---
## 做法一:只换 UI(保留你在 HF 上的所有改动)
**本机**执行(需已安装 git、node、python):
```bash
# 1. 克隆 HF 上当前的 Space(保留你的历史与改动)
git clone https://huggingface.co/spaces/claudqunwang/ClareVoice
cd ClareVoice
# 2. 从本地 Clare 项目复制「仅 UI 相关」内容(不覆盖你已有的文件)
# 把下面的 /path/to/AI_Agent_Clare-main 改成你本机项目路径
PROJECT=/Users/qunwang/AI_Agent_Clare-main
cp -r "$PROJECT/web" .
cp -r "$PROJECT/api" .
# 3. 用「产品版」Dockerfile 替换当前的(改为构建 web + 跑 FastAPI 提供 React UI)
cp "$PROJECT/Dockerfile" .
# 4. 为 FastAPI 增加依赖(Space 原 requirements 可能没有)
echo "fastapi>=0.111.0" >> requirements.txt
echo "uvicorn[standard]>=0.30.0" >> requirements.txt
echo "python-multipart>=0.0.9" >> requirements.txt
# 5. 提交并推送(普通 push,不 force)
git add web/ api/ Dockerfile requirements.txt
git status # 确认只多了 web、api 和 Dockerfile
git commit -m "Switch to React product UI (web + api), keep existing files"
git push
```
这样 HF 上会多出 `web/``api/` 和新的 `Dockerfile`**原有 app.py、config.py、clare_core.py 等都不会被覆盖**;之后 Space 会用新 Dockerfile 构建并显示 React UI。
**注意**:新 Dockerfile 的启动命令是 `uvicorn api.server:app`,即运行时用的是 **api/** 里的后端(api/config.py、api/clare_core.py 等)。若你之前在 HF 上只改了**根目录**的 config、clare_core,那些修改不会自动出现在新 UI 的后端里;若需要沿用,可以把根目录的配置或逻辑同步到 api/ 下,或再改 Dockerfile 的 working directory 让 api 使用根目录模块(需自行改 import 路径)。
---
## 做法二:整库覆盖(不保留 HF 上的改动)
仅当你确定要**用本地项目完全替换** Space 内容时再用:
```bash
cd /Users/qunwang/AI_Agent_Clare-main
git push -u huggingface main --force
```
这会用本地整份项目(含 GENAI COURSES、当前 README、.gitignore 等)覆盖 HF 上的 ClareVoice,你在 HF 上做过的任何修改都会丢失。