Skip to content
Open
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
107 changes: 107 additions & 0 deletions .cursor/commands/pr.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
# 提交 PR

当用户执行此命令时,请按以下流程操作:

## 第一步:分析当前更改

并行执行以下命令获取完整信息:
- `git status` - 查看所有未跟踪和已修改的文件
- `git diff HEAD` - 查看所有更改的具体内容(包括已暂存和未暂存)
- `git log --oneline -5` - 查看最近的 commit 记录
- `git branch --show-current` - 获取当前分支名

## 第二步:智能生成 Commit Message

根据更改内容,生成一个精简的 commit message:

### 判断类型规则:
- **feat:** 新增功能、新增文件、添加新特性
- **fix:** 修复 bug、错误处理、问题修复
- **docs:** 仅文档更改
- **refactor:** 重构代码但不改变功能
- **test:** 添加或修改测试
- **chore:** 配置文件、依赖更新等

### Message 格式要求:
- 使用中文描述
- 简洁明了,一句话概括核心变更
- 如果有多个文件/模块的更改,概括主要目的
- 示例:
- `feat: 添加快照管理器功能`
- `fix: 修复任务队列满时的错误处理`
- `refactor: 重构 serverless handler 架构`

## 第三步:执行 Git 操作

按顺序执行:

1. **暂存所有更改**:
```bash
git add .
```

2. **提交更改**(使用 HEREDOC 格式):
```bash
git commit -m "$(cat <<'EOF'
[生成的 commit message]
EOF
)"
```

3. **Push 到远程分支**:
```bash
git push -u origin HEAD
```

## 第四步:创建 Pull Request

使用 `gh` CLI 创建 PR:

```bash
gh pr create --title "[生成的 commit message]" --body "$(cat <<'EOF'
## 变更摘要
[根据 git diff 生成 2-3 个要点]

## 变更类型
- [ ] 新功能
- [ ] Bug 修复
- [ ] 重构
- [ ] 文档更新
- [ ] 其他

## 测试
- [ ] 已通过本地测试
- [ ] 已验证功能正常

EOF
)"
```

## 第五步:返回结果

从 `gh pr create` 命令的输出中提取 PR URL(通常在命令执行成功后会返回 PR 链接)。

向用户清晰展示:

```
✅ PR 创建成功!

📝 Commit Message: [生成的 commit message]

🔗 PR 链接: [从 gh pr create 输出中提取的完整 URL]

分支: [当前分支名] → main
```

**重要提示**:
- 必须显示完整的 PR URL(例如:https://github.com/devsapp/cap-comfyui/pull/123)
- PR URL 应该是可点击的链接
- 如果 gh 命令返回错误,清晰报告给用户

## 注意事项

- 如果当前没有任何更改(git status clean),提示用户没有可提交的内容
- 如果 git push 失败,提示用户检查远程分支权限
- 如果 gh 命令不可用,提示用户安装 GitHub CLI
- 如果当前分支是 main/master,警告用户不应直接提交到主分支
- 所有错误都应清晰地报告给用户
93 changes: 93 additions & 0 deletions .cursor/skills/add-comfyui-model/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
---
name: add-comfyui-model
description: 为 ComfyUI 托管平台新增共享模型。创建增量模型列表文件并提示后续下载步骤。当用户说"新增模型"、"添加模型"、"add model",或提供模型文件名和下载链接时使用。
---

# 新增 ComfyUI 共享模型

## 工作步骤

### 第 1 步:创建增量模型列表文件

在 `src/code/comfyui/models/` 目录下创建 `models_YYYYMMDD.json`(日期取今天)。

文件格式:

```json
{
"模型文件名.safetensors": {
"url": "https://huggingface.co/xxx/resolve/main/xxx.safetensors",
"directory": "diffusion_models"
}
}
```

`directory` 常见取值:`checkpoints`、`diffusion_models`、`unet`、`loras`、`clip`、`vae`

### 第 2 步:将改动 push 到 origin

文件创建完成后,将改动提交并推送到远端:

```bash
git add src/code/comfyui/models/models_YYYYMMDD.json
git commit -m "feat: add model qwen_3_4b_fp4_flux2.safetensors"
git push origin HEAD
```

> 提交信息中的模型名替换为实际添加的模型文件名。

### 第 3 步:提示用户后续操作

push 完成后,**必须**输出以下提示:

---

**下一步:登录线上机器完成以下操作**

账号:`fc-ide-staging`
函数计算控制台:https://fcnext.console.aliyun.com/cn-hangzhou/functions/art-funart-model-pusher-rp8y?tab=detail&section=logging

**① 下载模型**

```bash
apt-get install tmux
cd /mnt/art-funart-model-pusher-rp8y/cap-comfyui/src/code/comfyui/models
git pull
tmux new-session -s model "bash -c 'export HF_ENDPOINT=https://hf-mirror.com && ./scripts/download_models.sh models_YYYYMMDD.json /mnt/funart-dev/models --use-mirror; exec bash'"
```

**② 校验 checksum**

下载完成后,验证文件完整性:

```bash
cd /mnt/art-funart-model-pusher-rp8y/cap-comfyui/src/code/comfyui/models
export HF_ENDPOINT="https://hf-mirror.com"
python3 scripts/cal_checksum.py /mnt/funart-dev/models models_YYYYMMDD.json --json-only
```

确认所有模型 SHA256 ✅ 一致后,再进行同步。

**③ 同步模型到 prod**

先 dry-run 确认将执行的命令:

```bash
make sync-models-to-prod-dry-run
```

确认无误后,正式同步:

```bash
make sync-models-to-prod
```

> 将 `models_YYYYMMDD.json` 替换为刚创建的文件名。

---

## 注意事项

- 如果同一天已有 `models_YYYYMMDD.json`,直接向该文件追加模型,不要新建
- URL 使用 `resolve/main/` 路径(不用 `blob/main/`),确保可直接下载
- 完整工作流(下载→验证→同步到 prod→合并)参见 `src/code/comfyui/models/README.md`
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@
**/dist
.DS_Store
.vscode/settings.json
reference
1 change: 1 addition & 0 deletions src/code/agent/services/model/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@
提供模型链接和监听功能
"""


48 changes: 47 additions & 1 deletion src/code/comfyui/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ COMFYUI_IMAGE = registry.$(REGION).aliyuncs.com/ohyee/fc-demo:cap-comfyui
OSS_BUCKET ?= dipper-cache-$(REGION)
OSS_COMFYUI_BASE_DIR = base/comfyui/v0.3.10-beta

# 模型同步:dev OSS <-> prod OSS
DEV_MOUNT ?= /mnt/funart-dev/models
PROD_MOUNT ?= /mnt/funart-prod/models
DEV_OSS_BUCKET ?= dipper-cache-$(REGION)-dev
PROD_OSS_BUCKET ?= dipper-cache-$(REGION)

.PHONY: upgrade
upgrade: build upload-base

Expand Down Expand Up @@ -94,4 +100,44 @@ build-from-snapshot:
-t $(COMFYUI_IMAGE_PROD) .

@rm -rf tmp
@echo "Build completed successfully"
@echo "Build completed successfully"

# ===== 模型管理 =====

# 将 models_xxx.json 融入 models.json(主模型列表),已存在的模型不覆盖
# 用法: make merge-models MODELS_JSON=models/models_20260308.json
MODELS_JSON ?=
.PHONY: merge-models
merge-models:
@if [ -z "$(MODELS_JSON)" ]; then \
echo "错误: 请指定 MODELS_JSON"; \
echo "用法: make merge-models MODELS_JSON=models/models_20260308.json"; \
exit 1; \
fi
@python3 models/scripts/merge_models.py $(MODELS_JSON) models/models.json

# 列出 dev 有但 prod 没有的模型,生成 diff_YYYYMMDD.json
# 输出文件位于 models/ 目录下
.PHONY: diff-models
diff-models:
@DEV_MOUNT=$(DEV_MOUNT) \
PROD_MOUNT=$(PROD_MOUNT) \
bash models/scripts/sync_dev_to_prod.sh --diff-only

# 将 dev 有但 prod 没有的模型同步到 prod OSS
.PHONY: sync-models-to-prod
sync-models-to-prod:
@DEV_MOUNT=$(DEV_MOUNT) \
PROD_MOUNT=$(PROD_MOUNT) \
DEV_OSS_BUCKET=$(DEV_OSS_BUCKET) \
PROD_OSS_BUCKET=$(PROD_OSS_BUCKET) \
bash models/scripts/sync_dev_to_prod.sh

# 打印将要执行的 ossutil 同步命令(不实际执行)
.PHONY: sync-models-to-prod-dry-run
sync-models-to-prod-dry-run:
@DEV_MOUNT=$(DEV_MOUNT) \
PROD_MOUNT=$(PROD_MOUNT) \
DEV_OSS_BUCKET=$(DEV_OSS_BUCKET) \
PROD_OSS_BUCKET=$(PROD_OSS_BUCKET) \
bash models/scripts/sync_dev_to_prod.sh --dry-run
Loading