mcpField
S
self-learning

self-learning

github.com/pixel-process-ugAgent 工作流383 次安装33 周前更新
代码仓库

关于 self-learning

供 Agent 使用的结构化技能,通过扫描代码库并保存项目背景、编码惯例和用户偏好,让信息延续到后续会话。它规定了发现、记忆更新、纠错处理和记忆验证流程。

主要功能

  1. 01发现项目结构与代码模式
  2. 02检查 Git 历史
  3. 03持久化项目记忆文件
  4. 04根据纠错更新记忆
  5. 05会话开始时验证记忆

适用场景

  1. 01让 Agent 熟悉陌生代码库
  2. 02在不同会话间保留项目惯例
  3. 03用户纠正假设后更新记录

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pixel-process-ug/superkit-agents --skill self-learning

安装后在 Claude Code 中输入/self-learning确认已加载。

详细介绍

概述

自学习技能会自动发现、理解并跨会话保存项目上下文。它通过扫描实际项目资料,构建关于代码库、技术栈、惯例和团队偏好的心智模型。没有自学习,每次会话都从零开始;借助自学习,Agent 会积累组织知识,随着时间推移提高准确性并减少错误。

开始时宣布:“我正在使用自学习技能来了解这个项目。”


阶段 1:触发条件识别

确定是哪个触发条件激活了此技能:

触发条件上下文操作
新项目不存在记忆文件全面发现(阶段 2-5)
不熟悉的区域正在处理代码库中未知的部分定向发现(针对该区域执行阶段 2-3)
用户纠正用户表示“这不对”或纠正某个假设纠正流程(阶段 6)
显式执行 /learn用户调用该命令全面发现(阶段 2-5)
会话开始记忆文件存在,但可能已过时加载并验证记忆(阶段 7)

停止:继续之前先识别触发条件。不同的触发条件需要执行不同的阶段。


阶段 2:项目结构扫描

使用 Explore Agent 按优先级检查以下文件:

文件/目录可揭示的信息优先级
package.json / pyproject.toml / go.mod / Cargo.toml / composer.json技术栈、依赖项、脚本关键
README.md / CLAUDE.md / AGENTS.md项目用途、惯例、规则关键
目录结构(前 2 层)架构模式(monorepo、MVC、六边形等)关键
tsconfig.json / eslint.config.* / .prettierrc / phpstan.neon编码标准、严格程度高
.gitignore排除内容、部署提示高
docker-compose.yml / Dockerfile基础设施、服务中
.github/workflows/ / .gitlab-ci.ymlCI/CD 设置、必需检查中
.env.example环境变量、外部服务中
specs/ / docs/现有规范和文档中

操作: 对找到的每个文件提取关键信息。不要读取每个文件,应有策略地扫描。

停止:完成结构扫描后,再分析代码模式。


阶段 3:代码模式分析

检查 3-5 个有代表性的文件,识别代码模式:

模式类别观察内容示例指标
命名惯例变量、函数和文件的命名camelCase、snake_case、kebab-case、PascalCase
导入/导出模块组织方式Barrel 导出、相对路径与绝对路径、路径别名
错误处理如何管理故障try/catch、Result 类型、错误边界、自定义异常
测试模式测试框架和风格文件命名(*.test.ts 与 *.spec.ts)、结构(describe/it 与 test)
状态管理数据流动方式Redux、Zustand、Context、Vuex、Pinia、Livewire
API 模式通信方式REST、GraphQL、tRPC、RPC、WebSocket
数据库访问数据层方案ORM(Prisma、Eloquent、TypeORM)、原始 SQL、查询构建器
组件模式UI 结构原子设计、功能文件夹、样式共置

操作: 从代码库的不同区域打开 3-5 个文件。记录观察到的模式,并提供具体示例。


阶段 4:Git 历史分析

git log --oneline -20          # Recent commits — development velocity, commit style
git shortlog -sn -20           # Active contributors
git branch -a                  # Branching strategy
git log --diff-filter=A --name-only --pretty=format: -10 | head -30  # Recently added files

提取: 开发速度、提交消息惯例、分支策略、活跃区域。

停止:完成所有发现阶段后,再保存到记忆。


阶段 5:保存到记忆

更新以下记忆文件(如果不存在则创建,如果已存在则追加):

memory/project-context.md
# Project Context



## Purpose
[What this project does, who it is for]

## Tech Stack
- Language: [e.g., TypeScript 5.x]
- Framework: [e.g., Next.js 15]
- Database: [e.g., PostgreSQL via Prisma]
- Testing: [e.g., Vitest + Playwright]
- CI/CD: [e.g., GitHub Actions]

## Architecture
[e.g., Monorepo with apps/ and packages/]
[Key directories and their purposes]

## Key Dependencies
[Critical libraries and their roles]
memory/learned-patterns.md
# Learned Patterns



## Naming Conventions
[What was observed with specific examples]

## Code Organization
[Import patterns, file structure, module boundaries]

## Error Handling
[How errors are handled in this project with examples]

## Testing Approach
[Framework, patterns, naming, coverage expectations]
memory/user-preferences.md
# User Preferences



## Communication Style
[Terse? Detailed? Prefers code over explanation?]

## Workflow Preferences
[PR workflow? Branch naming? Commit style?]

## Review Preferences
[What they focus on in reviews?]
memory/decisions-log.md
# Decisions Log


## YYYY-MM-DD: [Decision Title]
**Decision:** [What was decided]
**Context:** [Why this came up]
**Rationale:** [Why this was chosen over alternatives]
**Alternatives considered:** [What else was considered]

阶段 6:更正协议

当用户纠正某项假设时:

  1. 立即确认这项更正——不要为错误的假设辩解
  2. 确定需要更新哪个记忆文件
  3. 更新记忆文件,写入更正内容、日期和上下文
  4. 立即应用这项更正,调整当前工作
  5. 传播——检查这项更正是否会使记忆中的其他假设失效
更正类型要更新的记忆文件示例
命名约定错误learned-patterns.md“我们使用 snake_case,而不是 camelCase”
技术栈错误project-context.md“我们使用 Vitest,而不是 Jest”
工作流偏好user-preferences.md“始终创建 PR,不要推送到 main”
架构理解有误project-context.md“那是微服务,不是单体应用”
决策背景decisions-log.md“我们选择 X 是因为 Y,而不是 Z”

不要跳过记忆更新。未持久化的更正会被重复犯错。


阶段 7:会话开始——记忆验证

当记忆文件已存在时:

  1. 加载 memory/ 目录中的所有记忆文件
  2. 检查 Last updated 日期——标记所有超过 30 天的条目
  3. 抽查 2-3 项事实,并与当前代码库核对(例如,package.json 是否仍列有相同的框架?)
  4. 如果发现不一致,针对发生变化的部分进行重新扫描
  5. 用当前信息更新过时条目

决策表:探索深度

情况探索深度时间预算
全新项目,没有记忆文件完整(所有阶段)3-5 分钟
已知项目中的新区域定向(仅针对该区域执行阶段 2-3)1-2 分钟
用户更正仅执行更正协议(阶段 6)30 秒
会话开始时已有记忆仅验证(阶段 7)1 分钟
检测到重大重构(许多文件已更改)完整重新扫描3-5 分钟

反模式/常见错误

不要做什么失败原因应该怎么做
阅读项目中的每个文件浪费上下文窗口,速度慢有策略地扫描:先看配置文件,再看 3-5 个有代表性的代码文件
根据一个文件推断约定单个文件可能是例外持久化之前,先在 2 个或更多文件中验证这些模式
完全覆盖记忆文件丢失历史背景和用户更正追加内容或更新特定章节,保留历史记录
跳过 git 历史错过开发速度和团队模式始终检查近期提交和贡献者
将猜测作为事实持久化以错误背景污染未来会话仅持久化有证据支持的观察结果
忽视用户更正重复犯同样的错误更正应立即覆盖观察结果
深入研究实现细节只见树木,不见森林关注模式和约定,而不是具体逻辑
会话开始时跳过记忆验证使用过时的上下文始终将记忆与当前代码库进行抽查核对

防止自我合理化

想法事实
“我已经了解这个框架”你并不了解这个项目的约定。去扫描。
“这些记忆文件还够新”仍要抽查。代码变化很快。
“这项更正无关紧要”小更正可以避免大错误。要持久化。
“不写下来我也会记得”你不会记得。各个会话彼此独立。要将其持久化到记忆中。
“扫描会花太长时间”不扫描会导致错误假设,之后修正起来更费时。

不要跳过记忆持久化。发现了什么,就写下来。


集成点

技能关系
using-toolkit在会话开始时触发自我学习
brainstorming在生成想法前加载项目上下文
planning利用已学习的模式提出一致的方案
code-review根据已学习的约定检查代码
auto-improvement记录发现效果指标
resilient-execution失败模式会影响后续方案的选择

具体示例

发现命令序列
# Step 1: Identify tech stack
cat package.json | head -50
# or
cat composer.json | head -50
# or
cat pyproject.toml

# Step 2: Check project structure
ls -la
ls -la src/ || ls -la app/ || ls -la lib/

# Step 3: Examine coding standards
cat tsconfig.json 2>/dev/null || cat phpstan.neon 2>/dev/null
cat .eslintrc* 2>/dev/null || cat .prettierrc* 2>/dev/null

# Step 4: Git activity
git log --oneline -20
git shortlog -sn -20
更正后的记忆更新
## 2026-03-15: Naming Convention Correction
**Previous assumption:** Project uses camelCase for database columns
**Correction:** Project uses snake_case for database columns (user corrected)
**Evidence:** Checked `migrations/` directory — all columns use snake_case
**Updated:** learned-patterns.md, Naming Conventions section

核心原则

  • 观察,不要假设——基于代码库中的证据进行学习
  • 增量更新——追加到记忆文件,不要覆盖
  • 持久化前先验证——用至少 2 个示例再次核实观察结果
  • 尊重更正——用户的更正会立即覆盖观察结果
  • 保持最新——发生重大变化时重新扫描

技能类型

严格型——必须按顺序完成发现阶段。必须持久化记忆。必须立即记录更正。不要跳过阶段,也不要找理由回避扫描。

评论

支持 Markdown