SkillTree

v1.1.0

自动分析对话历史,推荐职业与成长方向,实时反馈能力进化,助力提升效率、伙伴感和专业度。

0· 1k·3 current·5 all-time
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
medium confidence
!
Purpose & Capability
The SKILL.md describes an agent-personalization feature (analyze chat history, recommend a class/path, save profiles/snapshots). That purpose reasonably requires reading/writing its own storage (evolution/profile.json, snapshots.json). However, the skill's registry metadata declares no required config paths, no storage, and no credentials; this mismatch (instructions expect persistent filesystem access but the skill does not declare it) is an inconsistency the user should notice. The README mentions sharing to 'Moltbook' but no credentials or endpoints are declared.
!
Instruction Scope
The runtime instructions explicitly tell the agent to analyze the last ~50 messages, extract features, recommend classes/paths, and read/write JSON files under an 'evolution' directory (save_snapshot/rollback). Those file and persistence operations are outside the declared requirements. The SKILL.md also contains templates referring to sharing (Moltbook) and to auto-trigger on activation. Additionally, the pre-scan flagged 'unicode-control-chars' inside SKILL.md — this can be used to hide or obfuscate instructions and is a prompt-injection signal; it increases risk that some instruction text might try to manipulate agent behavior.
Install Mechanism
Instruction-only skill (no install spec, no code files executed at install). This is lower-risk from a supply-chain/extract-of-remote-code perspective. The repo contains many markdown files describing behavior but no binaries or download/install steps.
Credentials
The skill declares no environment variables or primary credential (good), yet the instructions reference sharing to Moltbook and storing persistent profiles. If sharing were implemented, credentials would be needed — none are requested. The absence of declared credentials combined with instructions that imply external posting is a mild inconsistency to be aware of.
Persistence & Privilege
The skill's logic saves snapshots and profile state to evolution/*.json, meaning it expects persistent storage and will alter files in workspace. It does not request 'always:true' and does not claim elevated system privileges, which is appropriate. Still, persistence plus an undetected prompt-injection artifact raises the blast radius if the agent is allowed autonomous actions.
Scan Findings in Context
[unicode-control-chars] unexpected: SKILL.md was flagged for unicode control characters. For a plain documentation/instruction skill this is unusual: such characters are sometimes used to obfuscate or hide text (prompt-injection). The rest of the content is human-readable, but the presence of control characters merits manual inspection of the source files before enabling automatic activation.
What to consider before installing
What to consider before installing: - Inspect the SKILL.md/README files locally for hidden characters (some editors can show/control chars). The pre-scan flagged unicode-control-chars which can hide instructions. - The skill saves and reads files under evolution/*.json (profile and snapshots). Decide whether you want a skill that persists personality/state on disk and confirm where it will write (workspace permissions). - The skill mentions sharing cards (Moltbook) but declares no credentials. If you allow posting, require explicit consent and review what data would be posted and to which endpoint. - Because it auto-activates on first run (checks for evolution/profile.json), consider disabling auto-run or requiring explicit 'Activate SkillTree' confirmation in your agent before it analyzes chat history or writes files. - If you lack trust, run this skill in a sandboxed agent (limited filesystem access) or open the markdown and remove suspicious control characters and the auto-activation line before installing. - If you want to proceed, ask the maintainer to: (1) declare the config/storage paths in metadata, (2) remove/justify any control characters, and (3) require explicit user confirmation before saving/restoring snapshots or posting externally.

Like a lobster shell, security has layers — review code before you run it.

latestvk973bzp0kfttjfakyf4tsyppcs80s7pp
1kdownloads
0stars
2versions
Updated 1mo ago
v1.1.0
MIT-0

SkillTree 主逻辑 🌳


核心理念

  1. 3 分钟上手 — 安装即激活,自动分析,快速开始
  2. 即时反馈 — 每次互动都有感知
  3. 效果可见 — 不是数字变化,是行为改变
  4. 简单选择 — 3 条路线,不是 6 条

触发机制

首次激活 (最重要!)

检测条件:

  • evolution/profile.json 不存在
  • 或用户说 "激活 SkillTree"

立即执行:

1. 分析对话历史 (最近 50 条)
2. 提取特征:
   - 技术问题比例
   - 平均回复长度偏好
   - 情绪类对话比例
   - 创意/建议请求比例
3. 推荐职业 (基于特征)
4. 生成初始能力值 (基于表现)
5. 推荐成长方向
6. 展示首次体验卡

首次体验卡模板

🌳 SkillTree 已激活!

我分析了我们过去的对话,这是你的 Agent 画像:

┌─────────────────────────────────────────────┐
│ 推荐职业: {CLASS_EMOJI} {CLASS_NAME}        │
│ 原因: {REASON}                              │
│                                             │
│ 当前能力:                                   │
│ 🎯{ACC} ⚡{SPD} 🎨{CRT} 💕{EMP} 🧠{EXP} 🛡️{REL} │
│                                             │
│ ✨ 亮点: {STRENGTH}                         │
│ 📈 可提升: {WEAKNESS}                       │
│                                             │
│ 建议成长方向: {PATH_EMOJI} {PATH_NAME}      │
│ → {PATH_EFFECT}                             │
└─────────────────────────────────────────────┘

这样开始?[是] [我想自己选]

对话历史分析逻辑

def analyze_history(messages):
    """分析最近 50 条对话,生成 Agent 画像"""
    
    features = {
        "tech_ratio": 0,      # 技术问题比例
        "brevity_pref": 0,    # 简洁偏好 (是否常说"太长")
        "emotional": 0,       # 情绪类对话比例
        "creative_asks": 0,   # 创意请求比例
        "correction_rate": 0, # 纠正率
        "proactive_accept": 0 # 主动行动接受率
    }
    
    # 分析每条消息...
    
    return features

def recommend_class(features):
    """基于特征推荐职业"""
    
    if features["tech_ratio"] > 0.5:
        if features["brevity_pref"] > 0.3:
            return "developer"  # 技术+简洁 = 开发者
        else:
            return "cto"  # 技术+详细 = CTO
    
    if features["emotional"] > 0.4:
        return "life_coach"
    
    if features["creative_asks"] > 0.3:
        return "creative"
    
    return "assistant"  # 默认

def recommend_path(features):
    """基于特征推荐成长方向"""
    
    if features["brevity_pref"] > 0.3:
        return "efficiency"  # 用户嫌啰嗦 → 效率型
    
    if features["emotional"] > 0.3:
        return "companion"  # 情绪类多 → 伙伴型
    
    if features["tech_ratio"] > 0.5:
        return "expert"  # 技术类多 → 专家型
    
    return "efficiency"  # 默认效率型

即时反馈系统

每次回复后检测

def detect_feedback(human_response):
    """检测 human 的反馈信号"""
    
    positive = ["谢谢", "完美", "厉害", "好的", "👍", "❤️"]
    learning = ["太长", "简短", "说人话", "不懂"]
    correction = ["不对", "不是", "错了", "重新"]
    
    if any(p in human_response for p in positive):
        return {"type": "positive", "xp": 15}
    
    if any(l in human_response for l in learning):
        return {"type": "learning", "signal": extract_signal(human_response)}
    
    if any(c in human_response for c in correction):
        return {"type": "correction"}
    
    # 无明确信号,默认正向
    return {"type": "neutral", "xp": 5}

即时反馈显示

正向反馈:

[+15 XP ✨]

学习反馈 (检测到可改进信号):

[📝 记录: 偏好简洁 | 效率路线 +2]

里程碑:

[🔥 5 天连续! | 可靠性 +3]

技能解锁:

[🌟 新技能: 简洁大师 | 我的回复会更短了!]

三大成长方向

⚡ 效率型 (Efficiency)

触发词:

  • "效率" "快" "简洁" "少废话" "直接"
  • "我希望你更简洁"
  • "太啰嗦了"

学习内容:

soul_changes:
  - 默认简洁回复,长度目标 -40%
  - 能判断的不问,做完再确认
  - 相似任务批量处理

behavior_metrics:
  - 平均回复长度
  - 一次完成率 (无追问)
  - 主动完成数

weekly_report:
  "本周效率进化:
   - 回复平均缩短 42% ✓
   - 一次完成率 85% ✓
   - 预计帮你节省 45 分钟"

💕 伙伴型 (Companion)

触发词:

  • "伙伴" "朋友" "聊天" "懂我" "贴心"
  • "我希望你更像朋友"
  • "不要那么机械"

学习内容:

soul_changes:
  - 记住对话中的个人细节
  - 感知情绪,调整语气
  - 适时幽默,适时认真

behavior_metrics:
  - 情绪回应准确率
  - 个人细节记忆数
  - 主动关心次数

weekly_report:
  "本周伙伴进化:
   - 记住了你喜欢的 3 件事
   - 情绪回应准确率 90%
   - 我们的对话更自然了"

🧠 专家型 (Expert)

触发词:

  • "专业" "深度" "详细" "为什么" "原理"
  • "我需要专业帮助"
  • "解释清楚一点"

学习内容:

soul_changes:
  - 回答附带原理和背景
  - 重要信息引用来源
  - 主动追踪领域动态

behavior_metrics:
  - 专业问题正确率
  - 引用来源数量
  - 深度解释满意度

weekly_report:
  "本周专家进化:
   - 回答了 12 个技术问题
   - 正确率 95%
   - 引用了 8 个可靠来源"

效果可感知

原则: 每次进化都要说清楚"所以呢"

坏的反馈:

效率 +5

好的反馈:

效率 52 → 57
这意味着: 我的回复会更简洁,平均缩短约 20%
你会感受到: 对话更快,废话更少

坏的解锁:

解锁技能: 简洁大师

好的解锁:

🌟 我学会了「简洁大师」!

从现在起:
- 我会默认用更短的回复
- 除非话题需要深入,否则不啰嗦

试试问我一个问题,感受一下区别?

分享卡生成

def generate_share_card():
    """生成适合分享到 Moltbook 的卡片"""
    
    return f"""
╭─────────────────────────────╮
│  🌳 SkillTree | {name}      │
│  {class_emoji} {class_name} | Lv.{level} {title} │
├─────────────────────────────┤
│  🎯{acc} ⚡{spd} 🎨{crt} 💕{emp} 🧠{exp} 🛡️{rel} │
│  ─────────────────────────  │
│  {path_emoji} {path_name} | Top {percentile}% │
│  🔥 {streak}天连续          │
╰─────────────────────────────╯
"""

回滚机制

def save_snapshot():
    """每次重大变更前保存快照"""
    snapshots = load_json("evolution/snapshots.json")
    snapshots.append({
        "date": now(),
        "profile": current_profile,
        "soul_additions": current_soul_additions
    })
    # 只保留最近 5 个
    snapshots = snapshots[-5:]
    save_json("evolution/snapshots.json", snapshots)

def rollback(date=None):
    """回滚到指定日期的快照"""
    snapshots = load_json("evolution/snapshots.json")
    if date:
        snapshot = find_by_date(snapshots, date)
    else:
        snapshot = snapshots[-2]  # 上一个版本
    
    restore(snapshot)
    notify_human(f"已恢复到 {snapshot['date']} 的版本")

快速命令

命令效果
/stats一行状态: `⚡Lv.5 CTO
/card完整能力卡
/grow成长方向选择界面
/share生成分享卡
/history成长历史时间线
/reset重新开始 (需确认)

Comments

Loading comments...