新功能 / What's New
用户画像 + Skill 推荐引擎
--name <工号> 稳定身份:跨设备/重连同 name 关联同一画像,server 可配置 allow_anonymous_user: false 强制实名
- 多兴趣用户画像:trajectory atom 摘要聚类(≤5 中心,纯 numpy k-means),
ClientInterest / ClientUser 持久化
- 80/20 质量+相关性混合推荐:
SkillRecommendEngine.get_skill_for_client —— 质量位(ux 评分)+ 相关性位(画像向量 KNN),质量不足相关性回填
- staging 优先达量灰度:修复
pick_side 在小团队基数下 staging 饿死 —— staging 未达量优先推 staging,达量后推 main,双侧达量交确定性分流
/sync 画像刷新:sync 前自动刷新用户画像(atom 变化时重算,指纹缓存跳过未变)
Skill 特征
Skill.vec = description 向量(唯一主特征,不融合)
Skill.atom_feat = 最近 5 个 atom 摘要均值(独立辅助属性,不并入 vec)
rebuild_skill_index 改为 desc-only embeddings + 独立 atom_feats(schema_version=2)
三方 SkillHub
SkillHub(CS 模式选配):扫描 ~/.xskill/skillhub_skills/ 三方 skill,按 description 向量化纳入推荐检索池
- 三方 skill ux 打分 + 查询:
AtomCanary 回退 skillhub_dir 写 .ux_scores.jsonl,版本号 = sha256(SKILL.md)[:16]
UX 得分 RESTful 查询
GET /api/v1/dashboard/skill/{name}/ux —— 按版本(commit_sha)聚合 count + avg
GET /api/v1/dashboard/skill/{name}/ux/atoms —— ux 分关联 atom 内容(summary/intent/tags)
GET /api/v1/dashboard/skillhub/{name}/ux + .../ux/atoms —— 三方 skill 同上
ux_avg 修为按当前版本 sha 过滤,不再跨版本混算
Windows 后台常驻
xskill connect 默认注册为 Windows 计划任务(开机自启 + 崩溃自愈),不再阻塞终端
xskill start / xskill stop / xskill status 管理后台常驻
--foreground 前台阻塞运行(Linux/macOS 默认走此路径)
其他
- 文件系统路径用 user_name 明文(
clients/m00947023/sessions/),canary/git 分支仍用 hash client_id
find_by_user_name() 反查 + team_clients.db.user_name 列持久化
- 北向接口文档
docs/northbound-api.md
_SqliteStore 基类消除 ProfileStore/RecoStore 样板重复
安装 / Install
pip install xskill==0.6.2
依赖
- Python ≥ 3.9
- 不引入 sklearn/scipy(聚类用 numpy 自实现 k-means)
测试
- 133 单测绿,pylint 10/10
- Docker 双容器真实 LLM(DashScope deepseek-v4-flash + text-embedding-v4)E2E 跑通