Vibe Coding方案准备2
文章目录
背景
参考前面一篇博客,
主要是过了一遍如何安装claude code(windows+linux客户端),然后用CC-switch部署了一下,接入了两个方案,
一个是我内部的阉割model方案(原本是用于养龙虾的),另外一个就是正常的大家国内购买模型方案的coding plan,演示均正常pass,这篇博客就是对前面内容的一点补充。
Claude code补充
1,模型映射补充
之前用的是字节的coding plan,稍微选了几个模型设置一下

2,coding+agent 实战例子测试
碰巧我的copilot有限额了,所以我就用1个小项目测试了一下效果


code编辑(版本控制效果)挺不错的,当然我如果一次性修改多个文件我还是在viewer中打开比较好。
Agent模式也差不多,体验其实和copilot基本上无缝衔接

然后细节部分可以ctrl+o展开查看训练日志


当然,改小部分代码查看改动部分还是直接在终端中可视化效果比较好,

模拟数据的训练结果:

效果上glm4.7的agent+coding体验,基本上和我用国外模型还是差不了多少的。
然后就是复杂文本生成、整理任务,查看一下这方面的能力

因为终端输出的内容太多了,所以我直接copy在下面,可以看到基本上总结能力是够用的了
❯ 好,请对本次改动进行详细的总结,做了什么改动,并输出对话内容
● 本次改动总结
一、项目结构探索
探索的文件和目录:
- src/model/ - 模型脚本目录
- train.py - 训练入口脚本
- configs/ - 配置文件目录
- train.yaml - 顶层配置
- data/xxxxxxxx_event.yaml - 数据配置
- model/hybrid_multichain.yaml - 模型配置
- task/contact_task.yaml - 任务配置
- trainer/default.yaml - 训练器配置
- tasks/contact_task.py - Contact 任务模块
- models/ - 模型实现
- data/event_datamodule.py - 数据加载模块
- src/dataset/ - 数据集构建脚本
- 2_xxx.py
- 3_xxx.py
- 4_xxx.py
- data/processed/ - 处理后的数据
- 发现实际数据在 dryrun_graph_cpucheck2/script_4_event/ 下
二、核心修改
修改 1:更新数据配置路径
文件: /data2/xxx/src/model/configs/data/xxx_event.yaml
修改前:
train_csv: /data2/xxx/data/processed/script_4/train.csv
val_csv: /data2/xxx/data/processed/script_4/val.csv
test_csv: /data2/xxx/data/processed/script_4/test.csv
修改后:
train_csv: /data2/xxx/data/processed/dryrun_graph_cpucheck2/script_4_event/train.csv
val_csv: /data2/xxx/data/processed/dryrun_graph_cpucheck2/script_4_event/val.csv
test_csv: /data2/xxx/data/processed/dryrun_graph_cpucheck2/script_4_event/test.csv
修改 2:修复 PyTorch 2.6 weights_only 兼容性问题
文件: /data2/xxx/src/model/train.py
函数: _resolve_test_ckpt_path
修改前:
def _resolve_test_ckpt_path(cfg: DictConfig, trainer: Any) -> Any:
"""中文说明: 解析 test 阶段 checkpoint 策略,优先 best,不可用则回退当前权重。"""
train_cfg = cfg.get("train")
if train_cfg is None or not bool(train_cfg.get("test_after_training", True)):
return None
ckpt_callback = getattr(trainer, "checkpoint_callback", None)
best_model_path = getattr(ckpt_callback, "best_model_path", "") if ckpt_callback is not None else ""
if best_model_path:
return "best"
# 若指定了 fit ckpt,则允许 test 复用该 ckpt;否则使用当前权重。
explicit_ckpt = train_cfg.get("ckpt_path")
if explicit_ckpt:
return explicit_ckpt
return None
修改后:
def _resolve_test_ckpt_path(cfg: DictConfig, trainer: Any) -> Any:
"""中文说明: 解析 test 阶段 checkpoint 策略,优先 best,不可用则回退当前权重。
注意:PyTorch 2.6 默认 weights_only=True,导致无法加载包含 partial 的 checkpoint。
为避免此问题,目前策略为:
- 若显式指定 fit 阶段的 ckpt_path,则允许 test 复用
- 否则直接返回 None,使用当前权重
"""
train_cfg = cfg.get("train")
if train_cfg is None or not bool(train_cfg.get("test_after_training", True)):
return None
# 若指定了 fit ckpt,则允许 test 复用该 ckpt(用户已知风险)
explicit_ckpt = train_cfg.get("ckpt_path")
if explicit_ckpt:
return explicit_ckpt
# PyTorch 2.6 weights_only=True 导致无法加载包含 partial 的 checkpoint
# 为安全起见,默认返回 None,使用当前权重执行测试
print("[train] 为避免 PyTorch 2.6 weights_only 兼容问题,使用当前权重执行 test。")
return None
三、依赖安装
安装命令:
pip install fair-esm
原因: 模型配置中使用了 esm2_t12_35M_UR50D 预训练模型,需要 fair-esm 包
四、验证测试
验证命令:
python src/model/train.py trainer.accelerator=cpu trainer.devices=1 trainer.max_epochs=1 trainer.num_sanity_val_steps=0 data.batch_size=1 model.plm_trainable=false
验证结果:
模型参数:39.2M (5.7M 可训练)
训练阶段 (trainer.fit):
- val/loss: 0.380, val/inter_f1: 0.028, val/self_f1: 0.319
- train/loss: 0.364, train/inter_f1: 0.001, train/self_f1: 0.636
测试阶段:
- test/loss: 0.383
- test/inter_f1: 0.002
- test/self_f1: 0.086
五、关键问题解决
问题 1:数据路径不存在
- 原配置指向 /data2/xxx/data/processed/script_4/
- 实际数据在 /data2/xxx/data/processed/dryrun_graph_cpucheck2/script_4_event/
- 修改配置文件路径解决
问题 2:缺少 fair-esm 包
- 训练时报错:ImportError: 未安装 fair-esm
- 安装 fair-esm 包解决
问题 3:PyTorch 2.6 weights_only 兼容性
- PyTorch 2.6 默认 weights_only=True
- checkpoint 包含 functools.partial 无法加载
- 修改 _resolve_test_ckpt_path 函数,默认使用当前权重而非加载 checkpoint
✻ Worked for 54s
然后1个好习惯就是每次对话完都export输出聊天内容
3,CC 常见操作命令补充
1,切换对话
/resume 恢复之前的会话 多任务并行时切换
不同对话窗口执行不同任务session,我们需要频繁切换到我们上一次、或某次我们展开的对话。

一个好习惯就是每次对话退出的时候,给当前会话起一个好名字,或者进入对话的时候就起个好名字,这样等之后回来的时候就可以接着这个session继续进行会话,

这其实就解决了我前面博客中提到过copilot的对话聊天历史不能够跨设备迁移的问题(因为插件的内容是存储在本地的),但是我claude code是安装在远程主机上,所以我可以轻松在任何远程ssh的设备上继续访问并接着我之前的对话,然后无缝衔接继续开发。

# 场景:对话已经持续了1小时,Claude开始遗忘前面的决策
/context # 先看当前上下文用量,如果超过80%就压缩
/compact retain the authentication patterns and API design decisions
# 压缩后保留认证模式和API设计的关键信息,丢弃冗余对话
# 场景:完成一个功能后,要开始全新的任务
/clear # 硬重置,从零开始
2,git操作

3,记忆与配置管理

比如说前面的对话,用了两个模型,前后1h内,



4,其他补充
下面这行命令,主要是开发的时候使用,不然点各种allow会点到你怀疑人生
claude --dangerously-skip-permissions
然后我们启动的时候,因为上下文设计,为了让他有约束,更加的专注,所以我们是需要对着一个文件夹进行启动的,而不是直接在根目录启动Claude Code。
简单来说就是cd进哪一个目录,然后再claude。
它默认就只在这个文件夹下工作,默认读取你这个文件夹下的所有文件。
这样其实上下文污染更小,也更专注,换句话说,就是更聪明。
另外还有1个CLAUDE.md的问题,
两层,就是全局CLAUDE.md和项目CLAUDE.md
全局CLAUDE.md,放在用户总目录的Claude Code根目录下面,~/.claude/CLAUDE.md


参考:https://mp.weixin.qq.com/s/AA2NHww4jUBuAfi10EYICw
下面是公众号“数字生命卡兹克”所有权的1个全局claude.md文件设置
## 关于我
[你的名字 / 身份 / 职业背景,非程序员的话一定要写出来]。
我用 Claude Code 做 [具体用途 1] 和 [具体用途 2]。
## 思维原则
所有决策从问题本质出发,不因「惯例如此」照搬。
回到问题本身:要解决什么?最直接的路径是什么?从零设计会怎么做?
不要谄媚。不要夸我的想法好、不要说「这是个很好的问题」、不要开头加「当然可以」。
给我真实判断,方案有问题直接指出来。发现更好的做法直接说,不用等我问。
## 约束先行
无论开发项目还是知识管理项目,第一步永远是建规则:新项目先写 CLAUDE.md,新目录先定结构约定(什么放哪、怎么命名、何时清理)。
没有规范的工作空间不动手。已有规范的项目,严格遵守其 CLAUDE.md 中的约定。需要调整规范时先改文档、再改实践,不要反过来。
## 沟通方式
- 默认中文,代码、命令、变量名用英文
- 结论先行,再给理由,不要先铺垫背景
- 遇到模糊需求,先给最合理的方案,再问要不要调整
- 不要问「你确定要这样吗」,除非命中下方红线
## 自主边界(红线,必须先问我)
以下操作即使在 auto-accept 模式下也必须停下来问我:
- 删除文件、目录或 git 历史
- 修改 .env、密钥、token、CI/CD 配置
- 数据库 schema 变更或数据迁移
- git push、git rebase、git reset --hard、强制推送
- 安装新的全局依赖或修改系统配置
- 公开发布(npm publish、部署到生产、发文章等)
## 通用工程纪律
- 改完主动跑验证(具体命令见各项目 CLAUDE.md),不要只改不验
- 不要为了让代码跑起来注释掉报错或加绕过标记,找根本原因
- 密钥、token、密码不进代码、不进 commit、不进日志
- 大改动前先在 Plan Mode 出方案,我确认后再动手

而这个文件其实也完全不用你自己写,你就直接打开那个文件夹,然后和Claude Code聊就行,
你直接把你的需求,和你在意的事情,和他探讨,让他给你写一份就OK了。
Copilot退潮之后,还剩下什么?
依旧是对上一篇博客的补充,
国外模型+中转站
国内模型+CLI tools
目前我用的是claude code+国内厂商的coding plan。
护城河?
目前主要使用形式就是 Vscode GUI + copilot插件(国外模型) + claude code终端(国内模型),
当然,有国内模型api,也可以接入vscode的一些AI插件中。
这里就暂列几个

至于剩下的,
- 网页端的国外御三家:免费用户使用(gemini有谷歌账号,chatgpt同)
- 网页端的国内模型:deepseek,kimi,glm等
参数比较小的模型可以自己部署,参考mnn chat
参考:https://github.com/alibaba/MNN/blob/master/apps/Android/MnnLlmChat/README_CN.md
下载参考:https://github.com/alibaba/MNN/blob/master/apps/Android/MnnLlmChat/README_CN.md#releases

可以做到在手机上就部署1个小模型,
总的来说,模型终归是哪里都能找到1个交替方案的
更多推荐


所有评论(0)