关于 agent-memory-skills
面向 Agent 开发者的技能,帮助 Agent 从任务结果中学习,同时不修改静态配置文件。它介绍基于 ChromaDB 的记忆、自我评估、性能跟踪和维护工作流。
主要功能
- 01分离静态配置与动态记忆
- 02在 ChromaDB 中保存改进经验
- 03为任务检索相关经验
- 04记录自我评估结果
- 05跟踪性能并维护记忆
适用场景
- 01复用过往任务经验
- 02评估 Agent 的任务结果
- 03监测改进经验的效果
MCP 相关
该技能介绍通过 MCP 工具使用 ChromaDB,包括集合管理、文档存储与检索,以及评估数据访问。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ kimasplund/ claude_cognitive_reasoning --skill agent-memory-skills安装后在 Claude Code 中输入/agent-memory-skills确认已加载。
详细介绍
Agent 记忆与持续自我改进技能
目的:使 Agent 能够从经验中学习、持续自我评估,并将改进存储在与静态配置文件分离的 ChromaDB 集合中。
理念:静态配置(.md)用于定义能力;动态记忆(ChromaDB)用于记录学习到的经验。
架构概览
双层模型
┌──────────────────────────────────────────────────────────┐
│ Layer 1: Static Agent Configuration (.md files) │
│ - Core capabilities, workflows, prompt templates │
│ - Human-designed, expert-reviewed │
│ - Version controlled (Git) │
│ - Changes: Infrequent (weeks/months) │
└──────────────────────────────────────────────────────────┘
↓ loads at runtime
┌──────────────────────────────────────────────────────────┐
│ Layer 2: Dynamic Agent Memory (ChromaDB) │
│ - Learned improvements, preferences, patterns │
│ - Self-evaluation results, performance metrics │
│ - Agent-managed, auto-updated │
│ - Changes: Continuous (every task completion) │
└──────────────────────────────────────────────────────────┘
记忆集合结构
每个 Agent 有 3 个 ChromaDB 集合:
agent_{name}_improvements:学习到的模式和策略agent_{name}_evaluations:自我评估结果agent_{name}_performance:随时间变化的指标
集合 1:改进项存储
何时存储改进项
在以下情况下存储:
- ✅ 任务成功完成,并获得了明确的经验
- ✅ 收到用户反馈(正面或负面)
- ✅ 发现了新模式(静态配置中不存在)
- ✅ 置信度 ≥ 0.7(高置信度学习)
不要存储:
- ❌ 没有明确经验教训的失败任务
- ❌ 遵循现有模式的常规操作
- ❌ 低置信度观察结果(< 0.5)
改进项架构
const improvement = {
// Document (semantic search target)
document: `
When user asks for "latest" information, prioritize sources from 2025
over 2024. Use date filters: where: { year: { "$gte": 2025 } }
`,
// ID (unique, timestamp-based)
id: `improvement_research_${Date.now()}`,
// Metadata (for filtering)
metadata: {
agent_name: "research-specialist",
category: "search_strategy",
learned_from: "feedback_2025-11-18",
confidence: 0.85,
success_rate: null, // Will be updated with usage
usage_count: 0,
created_at: "2025-11-18T15:30:00Z",
last_used: null,
tags: ["recency", "date_filtering", "search"]
}
};
存储函数
async function storeImprovement(agentName, improvement) {
const collectionName = `agent_${agentName}_improvements`;
// Ensure collection exists
const collections = await mcp__chroma__list_collections();
if (!collections.includes(collectionName)) {
await mcp__chroma__create_collection({
collection_name: collectionName,
embedding_function_name: "default",
metadata: {
agent: agentName,
purpose: "learned_improvements",
created_at: new Date().toISOString()
}
});
}
// Store improvement
await mcp__chroma__add_documents({
collection_name: collectionName,
documents: [improvement.document],
ids: [improvement.id],
metadatas: [improvement.metadata]
});
console.log(`✅ Stored improvement for ${agentName}: ${improvement.category}`);
}
执行任务前检索
async function retrieveRelevantImprovements(agentName, taskDescription, limit = 5) {
const collectionName = `agent_${agentName}_improvements`;
try {
const results = await mcp__chroma__query_documents({
collection_name: collectionName,
query_texts: [taskDescription],
n_results: limit,
where: {
"$and": [
{ "confidence": { "$gte": 0.7 } }, // High confidence only
{ "success_rate": { "$gte": 0.6 } } // Or null (new, untested)
]
},
include: ["documents", "metadatas", "distances"]
});
// Filter by relevance (distance < 0.4)
const relevant = results.ids[0]
.map((id, idx) => ({
id: id,
improvement: results.documents[0][idx],
metadata: results.metadatas[0][idx],
relevance: 1 - results.distances[0][idx]
}))
.filter(item => item.relevance > 0.6);
return relevant;
} catch (error) {
console.log(`No improvements found for ${agentName} (collection may not exist yet)`);
return [];
}
}
集合 2:自我评估存储
持续自我评估模式
每项任务完成后,Agent 都会进行自我评估:
async function selfEvaluate(agentName, taskContext, taskResult) {
const evaluation = {
// What was the task?
task_description: taskContext.description,
task_type: taskContext.type, // "research", "code", "debug", etc.
// How did I perform?
success: taskResult.success, // true/false
quality_score: taskResult.quality, // 0-100
time_taken_ms: taskResult.duration,
tokens_used: taskResult.tokens,
// What went well?
strengths: identifyStrengths(taskResult),
// What went poorly?
weaknesses: identifyWeaknesses(taskResult),
// What did I learn?
insights: extractInsights(taskResult),
// Metadata
timestamp: new Date().toISOString(),
context: taskContext.additionalContext
};
// Store evaluation
await storeEvaluation(agentName, evaluation);
// If strong learning → store as improvement
if (evaluation.insights.length > 0 && evaluation.quality_score >= 70) {
for (const insight of evaluation.insights) {
await storeImprovement(agentName, {
document: insight.description,
id: `improvement_${agentName}_${Date.now()}`,
metadata: {
agent_name: agentName,
category: insight.category,
learned_from: `task_${evaluation.timestamp}`,
confidence: insight.confidence,
created_at: evaluation.timestamp
}
});
}
}
return evaluation;
}
function identifyStrengths(taskResult) {
const strengths = [];
if (taskResult.time_taken_ms < taskResult.expected_duration) {
strengths.push("Completed faster than expected");
}
if (taskResult.validation_passed) {
strengths.push("All validations passed");
}
if (taskResult.user_feedback?.positive) {
strengths.push(taskResult.user_feedback.comment);
}
return strengths;
}
function identifyWeaknesses(taskResult) {
const weaknesses = [];
if (taskResult.errors.length > 0) {
weaknesses.push(`Encountered ${taskResult.errors.length} errors`);
}
if (taskResult.retries > 0) {
weaknesses.push(`Required ${taskResult.retries} retries`);
}
if (taskResult.user_feedback?.negative) {
weaknesses.push(taskResult.user_feedback.comment);
}
return weaknesses;
}
function extractInsights(taskResult) {
const insights = [];
// Example: Learned a new error handling pattern
if (taskResult.errors.some(e => e.type === "ConnectionTimeout") && taskResult.success) {
insights.push({
description: "When encountering ConnectionTimeout, retry with exponential backoff (3 attempts)",
category: "error_handling",
confidence: 0.8
});
}
// Example: Discovered optimal parameter
if (taskResult.optimization_found) {
insights.push({
description: taskResult.optimization_found.description,
category: "optimization",
confidence: 0.9
});
}
return insights;
}
评估存储
async function storeEvaluation(agentName, evaluation) {
const collectionName = `agent_${agentName}_evaluations`;
await mcp__chroma__add_documents({
collection_name: collectionName,
documents: [
`Task: ${evaluation.task_description}. Result: ${evaluation.success ? 'Success' : 'Failure'}. ` +
`Quality: ${evaluation.quality_score}/100. Insights: ${evaluation.insights.map(i => i.description).join('; ')}`
],
ids: [`eval_${Date.now()}`],
metadatas: [{
agent_name: agentName,
task_type: evaluation.task_type,
success: evaluation.success,
quality_score: evaluation.quality_score,
time_taken_ms: evaluation.time_taken_ms,
tokens_used: evaluation.tokens_used,
strengths_count: evaluation.strengths.length,
weaknesses_count: evaluation.weaknesses.length,
insights_count: evaluation.insights.length,
timestamp: evaluation.timestamp
}]
});
}
集合 3:性能指标
汇总性能跟踪
async function trackPerformanceMetrics(agentName) {
const collectionName = `agent_${agentName}_evaluations`;
// Retrieve last 100 evaluations
const recentEvals = await mcp__chroma__get_documents({
collection_name: collectionName,
limit: 100,
include: ["metadatas"],
where: {
"timestamp": { "$gte": thirtyDaysAgo() }
}
});
const metrics = {
agent_name: agentName,
period: "30_days",
// Success metrics
total_tasks: recentEvals.metadatas.length,
successful_tasks: recentEvals.metadatas.filter(m => m.success).length,
success_rate: 0,
// Quality metrics
avg_quality: average(recentEvals.metadatas.map(m => m.quality_score)),
quality_trend: calculateTrend(recentEvals.metadatas, 'quality_score'),
// Efficiency metrics
avg_time_ms: average(recentEvals.metadatas.map(m => m.time_taken_ms)),
avg_tokens: average(recentEvals.metadatas.map(m => m.tokens_used)),
// Learning metrics
total_insights: sum(recentEvals.metadatas.map(m => m.insights_count)),
improvements_stored: await countImprovements(agentName, thirtyDaysAgo()),
// Trend
improving: false, // Will calculate
timestamp: new Date().toISOString()
};
metrics.success_rate = metrics.successful_tasks / metrics.total_tasks;
// Is agent improving over time?
metrics.improving = metrics.quality_trend > 0 && metrics.success_rate > 0.7;
// Store aggregated metrics
const perfCollection = `agent_${agentName}_performance`;
await mcp__chroma__add_documents({
collection_name: perfCollection,
documents: [
`Performance snapshot: ${metrics.success_rate * 100}% success, ` +
`quality ${metrics.avg_quality}/100, ${metrics.improvements_stored} improvements`
],
ids: [`perf_${Date.now()}`],
metadatas: [metrics]
});
return metrics;
}
function calculateTrend(evaluations, metric) {
if (evaluations.length < 2) return 0;
const recent = evaluations.slice(0, Math.floor(evaluations.length / 2));
const older = evaluations.slice(Math.floor(evaluations.length / 2));
const recentAvg = average(recent.map(e => e[metric]));
const olderAvg = average(older.map(e => e[metric]));
return recentAvg - olderAvg; // Positive = improving
}
完整工作流:带记忆的 Agent
Agent 初始化时
async function initializeAgentMemory(agentName) {
// Load static configuration from .md file
const staticConfig = await loadAgentConfig(`/agents/${agentName}.md`);
// Load dynamic improvements from ChromaDB
const improvements = await retrieveAllImprovements(agentName);
// Combine static + dynamic
return {
...staticConfig,
learned_improvements: improvements,
memory_enabled: true
};
}
执行任务前
async function executeTaskWithMemory(agentName, task) {
// Step 1: Retrieve relevant past learnings
const relevantImprovements = await retrieveRelevantImprovements(
agentName,
task.description,
5 // top 5 improvements
);
console.log(`📚 Retrieved ${relevantImprovements.length} relevant improvements`);
// Step 2: Execute task with improvements as context
const taskResult = await executeTask(task, {
improvements: relevantImprovements.map(i => i.improvement)
});
// Step 3: Self-evaluate
const evaluation = await selfEvaluate(agentName, task, taskResult);
// Step 4: Update improvement usage stats
for (const improvement of relevantImprovements) {
await updateImprovementUsage(agentName, improvement.id, taskResult.success);
}
// Step 5: Track performance (daily)
if (shouldRunDailyMetrics()) {
await trackPerformanceMetrics(agentName);
}
return taskResult;
}
更新改进项统计数据
async function updateImprovementUsage(agentName, improvementId, wasSuccessful) {
const collectionName = `agent_${agentName}_improvements`;
// Get current improvement
const current = await mcp__chroma__get_documents({
collection_name: collectionName,
ids: [improvementId]
});
const metadata = current.metadatas[0];
// Update statistics
const newUsageCount = (metadata.usage_count || 0) + 1;
const successCount = (metadata.success_count || 0) + (wasSuccessful ? 1 : 0);
const newSuccessRate = successCount / newUsageCount;
// Update metadata
await mcp__chroma__update_documents({
collection_name: collectionName,
ids: [improvementId],
metadatas: [{
...metadata,
usage_count: newUsageCount,
success_count: successCount,
success_rate: newSuccessRate,
last_used: new Date().toISOString()
}]
});
// If improvement consistently fails (< 40% success after 10+ uses), mark as deprecated
if (newUsageCount >= 10 && newSuccessRate < 0.4) {
console.log(`⚠️ Improvement ${improvementId} has low success rate (${newSuccessRate}), marking deprecated`);
await mcp__chroma__update_documents({
collection_name: collectionName,
ids: [improvementId],
metadatas: [{
...metadata,
deprecated: true,
deprecated_reason: "Low success rate after extensive usage"
}]
});
}
}
持续评估计划
评估频率
- 每项任务完成后:存储评估结果(轻量级)
- 每天:计算性能指标(汇总)
- 每周:检查表现最佳和最差的改进项,并识别趋势
- 每月:归档旧评估结果,清理已弃用的改进项
定期维护
async function dailyAgentMaintenance(agentName) {
console.log(`🔧 Running daily maintenance for ${agentName}...`);
// 1. Track performance metrics
const metrics = await trackPerformanceMetrics(agentName);
// 2. Identify underperforming improvements
const deprecatedCount = await deprecateFailingImprovements(agentName);
// 3. Promote high-performing improvements (boost confidence)
const promotedCount = await promoteSuccessfulImprovements(agentName);
console.log(`
Metrics: ${metrics.success_rate * 100}% success, quality ${metrics.avg_quality}/100
Deprecated: ${deprecatedCount} low-performing improvements
Promoted: ${promotedCount} high-performing improvements
`);
}
async function deprecateFailingImprovements(agentName) {
const collectionName = `agent_${agentName}_improvements`;
const allImprovements = await mcp__chroma__get_documents({
collection_name: collectionName,
where: {
"$and": [
{ "usage_count": { "$gte": 10 } },
{ "success_rate": { "$lt": 0.4 } },
{ "deprecated": { "$ne": true } }
]
}
});
for (const id of allImprovements.ids) {
await mcp__chroma__update_documents({
collection_name: collectionName,
ids: [id],
metadatas: [{
...allImprovements.metadatas[id],
deprecated: true
}]
});
}
return allImprovements.ids.length;
}
async function promoteSuccessfulImprovements(agentName) {
const collectionName = `agent_${agentName}_improvements`;
const highPerformers = await mcp__chroma__get_documents({
collection_name: collectionName,
where: {
"$and": [
{ "usage_count": { "$gte": 20 } },
{ "success_rate": { "$gte": 0.85 } }
]
}
});
for (const [idx, id] of highPerformers.ids.entries()) {
const metadata = highPerformers.metadatas[idx];
await mcp__chroma__update_documents({
collection_name: collectionName,
ids: [id],
metadatas: [{
...metadata,
confidence: Math.min(0.95, metadata.confidence + 0.05), // Boost confidence (max 0.95)
promoted: true
}]
});
}
return highPerformers.ids.length;
}
Agent 记忆仪表板
性能摘要
async function getAgentMemoryDashboard(agentName) {
const dashboard = {
agent: agentName,
timestamp: new Date().toISOString(),
// Improvements
total_improvements: await countDocuments(`agent_${agentName}_improvements`),
active_improvements: await countDocuments(`agent_${agentName}_improvements`, {
"deprecated": { "$ne": true }
}),
deprecated_improvements: await countDocuments(`agent_${agentName}_improvements`, {
"deprecated": true
}),
// Evaluations
total_evaluations: await countDocuments(`agent_${agentName}_evaluations`),
recent_success_rate: await calculateRecentSuccessRate(agentName, 30), // Last 30 days
// Performance
latest_metrics: await getLatestMetrics(agentName),
// Top improvements (by success rate)
top_improvements: await getTopImprovements(agentName, 5),
// Learning rate
improvements_last_7_days: await countDocuments(`agent_${agentName}_improvements`, {
"created_at": { "$gte": sevenDaysAgo() }
})
};
return dashboard;
}
全局与项目记忆范围
双范围架构
┌─────────────────────────────────────────────────────────┐
│ Global Memory (~/.claude/chroma_data) │
│ - Cross-project patterns that apply everywhere │
│ - Reusable learnings (search strategies, code quality) │
│ - Collections: agent_{name}_improvements │
│ - Persists: Forever (user's institutional knowledge) │
└─────────────────────────────────────────────────────────┘
↓ query both
┌─────────────────────────────────────────────────────────┐
│ Project Memory (.claude/chroma_data) │
│ - Project-specific patterns (this codebase's style) │
│ - Domain knowledge (this API, this architecture) │
│ - Collections: agent_{name}_project_{hash}_improvements │
│ - Persists: Project lifetime │
└─────────────────────────────────────────────────────────┘
记忆范围选择
function selectMemoryScope(insight) {
// Global: Universal patterns
if (insight.category in ['search_strategy', 'error_handling', 'code_quality',
'testing_patterns', 'documentation_style']) {
return 'global';
}
// Project: Codebase-specific patterns
if (insight.category in ['naming_conventions', 'architecture_patterns',
'api_usage', 'domain_terminology']) {
return 'project';
}
// Default: Store in both if uncertain
return 'both';
}
async function storeWithScope(agentName, improvement, scope = 'global') {
const globalCollection = `agent_${agentName}_improvements`;
const projectCollection = `agent_${agentName}_project_${getProjectHash()}_improvements`;
if (scope === 'global' || scope === 'both') {
await storeImprovement(globalCollection, improvement);
}
if (scope === 'project' || scope === 'both') {
await storeImprovement(projectCollection, improvement);
}
}
async function retrieveWithScope(agentName, taskDescription) {
const globalResults = await retrieveRelevantImprovements(
`agent_${agentName}_improvements`, taskDescription, 3
);
const projectResults = await retrieveRelevantImprovements(
`agent_${agentName}_project_${getProjectHash()}_improvements`, taskDescription, 3
);
// Merge and deduplicate, project-specific takes priority
return mergeImprovements(projectResults, globalResults);
}
精简版 Agent 集成模板
Agent 应引用此技能,而不是重复编写记忆代码:
## Memory Configuration (uses agent-memory-skills)
**Collections**:
- Global: `agent_{name}_improvements`, `agent_{name}_evaluations`, `agent_{name}_performance`
- Project: `agent_{name}_project_{hash}_improvements` (if project-specific learning)
**Quality Criteria** (agent-specific):
- [criterion_1]: weight X%
- [criterion_2]: weight Y%
- [criterion_3]: weight Z%
**Insight Categories** (agent-specific):
- [category_1]: Description of when this applies
- [category_2]: Description of when this applies
**Memory Workflow**:
1. **Phase 0.5 (Before Task)**: Retrieve relevant improvements
- Call: `retrieveWithScope(agentName, taskDescription)`
- Apply retrieved patterns to current task
2. **Phase N.5 (After Task)**: Self-evaluate and store
- Assess quality using agent-specific criteria
- Extract insights with agent-specific categories
- Store improvements if quality ≥ 70
- Update usage statistics for retrieved improvements
示例:精简版 Code-Finder 记忆部分
## Memory Configuration (uses agent-memory-skills)
**Collections**: `agent_code_finder_improvements`, `agent_code_finder_evaluations`
**Quality Criteria**:
- Result accuracy: 30%
- Search confidence: 25%
- Strategy completeness: 20%
- Search efficiency: 15%
- Coverage assessment: 10%
**Insight Categories**:
- `search_strategy`: Effective search patterns for code types
- `file_patterns`: File naming/location patterns that work
- `naming_conventions`: Casing and naming variants that help
- `query_optimization`: Query formulations that improve results
**Memory Workflow**:
- Phase 0.5: Retrieve search strategy improvements before search
- Phase 4.5: Evaluate search quality, store effective patterns
记忆整合集成
单个 Agent 的记忆可通过 memory-consolidation-agent 定期整合而受益。本节介绍 Agent 如何与整合系统交互。
适用于整合的元数据
存储改进项时,请包含有助于整合的元数据:
const improvementMetadata = {
// Standard fields
agent_name: agentName,
category: insight.category,
confidence: insight.confidence,
created_at: timestamp,
usage_count: 0,
success_rate: null,
// Consolidation-ready fields
cross_validated: false, // Set true when validated across agents
source: 'self', // 'self' | 'system_principles' | 'transferred'
original_id: null, // If transferred from another agent
consolidation_eligible: true, // Can be used for schema formation
context_tags: ['domain', 'tech'], // Help consolidation group related patterns
deprecated: false,
deprecated_reason: null
};
接收转移的知识
Agent 可能会收到整合系统转移的改进项。请妥善处理:
async function retrieveWithTransfers(agentName, taskDescription) {
const results = await mcp__chroma__query_documents({
collection_name: `agent_${agentName}_improvements`,
query_texts: [taskDescription],
n_results: 10,
where: { "deprecated": { "$ne": true } }
});
// Prioritize cross-validated and transferred improvements
return results.ids[0]
.map((id, idx) => ({
id: id,
improvement: results.documents[0][idx],
metadata: results.metadatas[0][idx],
relevance: 1 - results.distances[0][idx],
// Boost score for cross-validated patterns
priority: results.metadatas[0][idx].cross_validated ? 1.2 : 1.0
}))
.filter(item => item.relevance > 0.6)
.sort((a, b) => (b.relevance * b.priority) - (a.relevance * a.priority));
}
整合钩子
Agent 应向整合系统提供以下钩子:
// Hook: Get all improvements for consolidation analysis
async function getConsolidatableImprovements(agentName) {
return await mcp__chroma__get_documents({
collection_name: `agent_${agentName}_improvements`,
where: { "consolidation_eligible": true, "deprecated": { "$ne": true } },
include: ["documents", "metadatas"]
});
}
// Hook: Mark improvement as cross-validated
async function markCrossValidated(agentName, improvementId, validatingAgents) {
const current = await mcp__chroma__get_documents({
collection_name: `agent_${agentName}_improvements`,
ids: [improvementId]
});
await mcp__chroma__update_documents({
collection_name: `agent_${agentName}_improvements`,
ids: [improvementId],
metadatas: [{
...current.metadatas[0],
cross_validated: true,
validating_agents: validatingAgents.join(','),
cross_validated_at: new Date().toISOString()
}]
});
}
// Hook: Receive transferred principle from consolidation
async function receiveTransferredPrinciple(agentName, principle, sourceMetadata) {
await mcp__chroma__add_documents({
collection_name: `agent_${agentName}_improvements`,
documents: [principle],
ids: [`transferred_${sourceMetadata.original_id}_${Date.now()}`],
metadatas: [{
agent_name: agentName,
category: sourceMetadata.category,
confidence: sourceMetadata.confidence * 0.9, // Discount for transfer
source: 'system_principles',
original_id: sourceMetadata.original_id,
cross_validated: true,
transferred_at: new Date().toISOString(),
usage_count: 0,
success_rate: null,
consolidation_eligible: false // Don't re-consolidate transferred items
}]
});
}
整合计划
| 频率 | 执行内容 | 对 Agent 的影响 |
|---|---|---|
| 每天 | 冲突扫描、异常检测 | 可能需要审查已标记的冲突 |
| 每周 | 形成架构、转移知识 | 可能会收到新转移的原则 |
| 每月 | 全面优化、清理 | 旧改进项可能会被归档 |
成功标准
Agent 记忆系统满足以下条件时,即表示运行正常:
- ✅ 已存储改进项:Agent 能从每项任务中学习(每周 10 项以上改进)
- ✅ 检索结果相关:检索到的改进项与当前任务相符(相关性 > 80%)
- ✅ 成功率跟踪:改进项能正确更新使用统计数据
- ✅ 性能持续提升:30 天内质量趋势向好
- ✅ 自我评估:每项任务完成后都会运行
- ✅ 弃用机制有效:表现不佳的改进项会被标记为已弃用
- ✅ 晋升机制有效:表现良好的改进项会得到提升
- ✅ 未修改 .md 文件:静态配置保持不变,记忆存储在 ChromaDB 中
对比:.md 与 ChromaDB
| 要求 | 修改 .md 文件 | ChromaDB 记忆 |
|---|---|---|
| 存储学习成果 | ❌ 手动编辑 | ✅ 自动 |
| 并发访问 | ❌ 竞态条件 | ✅ 安全 |
| 语义搜索 | ❌ 仅关键词 | ✅ 向量相似度 |
| 成功跟踪 | ❌ 手动 | ✅ 自动统计 |
| 回滚 | ⚠️ Git 历史记录 | ✅ 按时间戳查询 |
| A/B 测试 | ❌ 破坏性操作 | ✅ 克隆集合 |
| 人工审核 | ✅ Git 差异 | ⚠️ 需要导出 |
| 版本控制 | ✅ 原生支持 | ⚠️ 手动 |
建议:使用 ChromaDB 存储动态记忆,使用 .md 存储静态配置
版本:1.0 创建日期:2025-11-18 用途:通过 ChromaDB 记忆实现 Agent 持续自我改进 依赖项:chromadb-integration-skills 适用对象:所有 Agent(研究、开发、交易、法律等)
评论
支持 Markdown