跳到主要内容

技术研究:Memfit AI 长期记忆系统与 C.O.R.E.P.A.C.T. 评估模型

· 阅读需 13 分钟
Yak ProjectYak Project

在上一篇文章中Memfit AI 专业记忆:Agent 动手之前,先翻了一遍你的知识库, 我们解决了 Agent 的“见识”问题。通过内置的知识库系统,Agent在执行攻击前,能够像资深专家一样先翻阅企业的私有测试和规范文件,确保自己的行动不脱离合规基线。

但作为一名真正的生产级 Agent,仅仅“有见识”是不够的。

知识库是别人给的经验,而记忆是自己实践的成果。

在长达数小时的连续渗透中,Agent 会遇到无数教科书和规范里没有写的“暗坑”:比如某个特定业务系统的异常报错、某个只有在特定内核版本下才会触发的 Payload 偏移、或者是某次成功提权后的环境特征。

如果这些实战经验随看随忘,那么下一次遇到同样的阻碍,Agent 还要重新走一遍 RAG 检索、重新分析、重新试错。这种低效的重复,是阻碍 AI 迈向“专家级”的最后一道坎。

我们需要 Agent 不仅能“翻书”,还能在实战中“吃一堑,长一智”。

本篇文章,我们将深入探讨 Memfit AI 的长期记忆(Long-term Memory)系统。你会看到,Agent 如何在执行任务的过程中,自主地对攻击路径进行复盘,并通过一套严苛的 **C.O.R.E.P.A.C.T.**评估模型,将零散的执行日志炼化为结构化的“肌肉记忆”。

当 Agent 再次站在类似的战场前,它不再需要去知识库里大海捞针,而是能直接凭借这种“长期记忆”,避开坑点。

C.O.R.E.P.A.C.T. 模型

开发者最头疼的就是“上下文爆炸”。若将每一句对话和回显都存入 RAG,知识库很快会变成噪音堆。Memfit AI 引入了 C.O.R.E. P.A.C.T. 审计算法,在记忆沉淀前进行价值审计。

记忆评估的七个维度

维度定义实战逻辑
Connectivity关联度该信息能否钩住资产拓扑?(如:IP 与子网、业务系统的关联性)
Origin确定性信息的来源可靠吗?(whoami的回显 O=1.0;视觉猜测的后台 O 值较低)
Relevance相关性未来复用的概率多大?(Session ID 相关性低,Struts2 绕过 Payload 相关性极高)
Emotion敏感度交互的优先级。连续失败的“挫败感”或成功的“转折点”会被加权记录。
Preference偏好约束是否符合“静默渗透”等甲方约束?不合规的动作记忆将被压低权重。
Actionability可操作性是废话还是指令?包含完整 sqlmap 或 curl 参数的记录 A 值会很高。
Temporality时效性经验的保质期。资产 IP 会变,但漏洞补丁逻辑变动慢,动态清理过期记忆。

案例:SQL注入记忆

这是一个我对vulinbox靶场的SQL检测产生的记忆案例图。

以针对 http://127.0.0.1:8787 的 SQL 注入检测为例。通用 AI 只会复现 ORDER BY 的标准动作,但 Memfit AI 沉淀了如下记忆:

记忆摘要: 在联合查询探测失败(列数不匹配)时,应优先使用 ORDER BY 子句从 1 开始递增探测以确定正确的列数,而非直接尝试构造 Union Select Payload

除了这个记忆以外 还有一些更具体的记忆。

记忆摘要: 针对靶场目标,memfit已经探测过是 9 列数据库

维度过滤逻辑(雷达图分析)

通过 Memfit 独有的评估模型,我们可以看到这条记忆为何被视为“黄金经验”:

  • **O(来源可靠性)-0.9:**该策略源于 Agent 在实战中遭遇的“探测失败”。失败的回显是真实的数据反馈,可靠性极高。
  • A(经验价值)-0.8:这不是废话,它给出了明确的替代动作**(从1开始递增探测)。这类具有“可操作性”的记忆是 Agent 进化的燃料。
  • R(重要性)-0.8:确定列数是 SQL 注入的基石。记住这个策略,意味着 Agent 在未来的所有同类任务中,都能规避“盲目构造 Payload”的时间浪费。
  • C(关联度)-0.8:它被贴上了sql-injectiontesting-methodology 的标签,能精准钩住后续所有涉及数据库探测的资产。

问题索引:索引记忆

还有一个值得一提的设计在于记忆底部的 Potential Questions(潜在问题)。Memfit AI 在存储记忆时,会自动预判未来自己可能会问的问题:

1.“当联合查询探测失败时,如何确定数据库返回的列数?”

2.“SQL 注入中 ORDER BY 探测的具体执行步骤是什么?”

这意味着什么?

当下一次 Agent 在新任务中遇到“联合查询报错”时,它脑中会产生类似的疑问。系统会瞬间匹配到这些“潜在问题”,将这条的记忆加入当上下文中,帮助AI回忆起之前的经验。

Agent 不再是在搜数据库,而是在“回想”自己的成功经验。

记忆的唤起与使用

有了合理的记忆设计,还有一道门槛如何在某一个时间在合理的位置到找合适的记忆。

Memfit AI 的 AIMemoryTriage(记忆分选器)通过一套严密的加权重排算法,将静态的 C.O.R.E. P.A.C.T. 理论转化为了生产环境中的实时决策流

基本要求:粗筛有意义的记忆

我们为记忆设定了七个维度的权重。先从海量的记忆中排除各种过于极端偏激,或者无意义的经验指导,初步完成记忆寻找。

weights := map[string]float64{
"R": 0.25, // Relevance - 核心相关性,决定了搜索的基调
"C": 0.20, // Connectivity - 关联度
"T": 0.15, // Temporality - 时效性,确保经验不过期
"A": 0.15, // Actionability - 可操作性,拒绝无意义的废话
"P": 0.10, "O": 0.10, "E": 0.05, // 辅助维度
}

动态加成:上下文相关强加成

静态分数保证了记忆的质量,而(关键词加成)则赋予了记忆**灵活性**。

即使一条记忆的原始评分很高,如果它与当前 Query(查询词)不匹配,它依然会被降权。我们中设计了五级加成机制:

contentBonus := 0.0
// 1. 内容关键词匹配分数 (权重: 0.1)
contentMatchScore := t.keywordMatcher.MatchScore(query, memory.Content)
contentBonus += contentMatchScore * 0.1
// 2. 标签关键词匹配 (权重: 0.08)
tagContent := strings.Join(memory.Tags, " ")
tagMatchScore := t.keywordMatcher.MatchScore(query, tagContent)
contentBonus += tagMatchScore * 0.08
// 3. 问题关键词匹配 (权重: 0.05)
questionContent := strings.Join(memory.PotentialQuestions, " ")
questionMatchScore := t.keywordMatcher.MatchScore(query, questionContent)
contentBonus += questionMatchScore * 0.05
// 4. 直接关键词包含检查 (权重: 0.05)
if t.keywordMatcher.ContainsKeyword(query, memory.Content) {
contentBonus += 0.05
}
// 5. 所有关键词都包含的奖励 (权重: 0.03)
if t.keywordMatcher.MatchAllKeywords(query, memory.Content) {
contentBonus += 0.03
}
// 限制加成不超过0.3
if contentBonus > 0.3 {
contentBonus = 0.3
}

1.标签匹配(0.08): 命中#sql-injection #rce 等专家标签。

**2.内容匹配(0.10):扫描 Payload 或回显中的关键字符串。3.反思匹配(0.05):**匹配 Agent 此前自发生成的 PotentialQuestions

**4.全关键词奖励(0.03):**确保精准匹配的记忆能够“置顶”。

所以最后的排序评分公式为:

$$FinalScore = \text{BaseScore} + \sum \text{KeywordBonus} (\text{Max } 0.3)$$

分块注入:意图路由

[ must_aware ]
- 关键偏好/约束:对目标URL http://127.0.0.1:8787/user/name?name=admin 执行SQL联合注入测试,验证注入点存在性、确定列数与回显位、提取数据库信息(版本/当前库/当前用户)、枚举表名列名、提取敏感数据;使用do_http_request工具构造HTTP请求完成测试 (u=0.88, P=0.80, R=0.90, age=1m55s)

[ action_tips ]
- 经验/可执行提示:SQL 联合注入测试目标 URL 为 http://127.0.0.1:8787/user/name?name=admin,该端点存在未参数化 SQL 查询:query = f"SELECT * FROM users WHERE username = '{name}'",属于典型注入漏洞点;测试需覆盖字段数判断、回显位置定位、数据库信息获取、表名/列名枚举、敏感数据提取等步骤。 (u=0.86, A=0.90, R=0.90, T=0.90, age=4m59s)
- 经验/可执行提示:对URL http://127.0.0.1:8787/user/name?name=admin 执行字符型SQL联合注入测试,测试流程包含:1)注入点确认;2)确定列数;3)确定回显位;4)提取数据库信息(版本/当前库/当前用户);5)枚举表名和列名;6)提取敏感数据。 (u=0.83, A=0.80, R=0.90, T=0.80, age=28m8s)
- 经验/可执行提示:用户指令明确要求对指定URL执行SQL联合注入测试,该请求已通过意图识别流程确认为安全测试任务,目标是探测目标服务是否存在SQL联合注入漏洞。 (u=0.83, A=0.90, R=0.90, T=0.80, age=11m35s)
- 经验/可执行提示:对目标URL http://127.0.0.1:8787/user/name?name=admin 执行SQL联合注入测试,需验证注入点存在性、确定列数与回显位、提取数据库版本/当前库/当前用户、枚举表名列名、提取敏感数据;已知目标支持布尔盲注和时间盲注,需手动构造HTTP请求完成测试。 (u=0.83, A=0.90, R=0.90, T=0.80, age=8m25s)

在检索到了记忆的实体之后,memfit在将其注入到最终prompt中还有一步重要的操作**:意图路由其核心观点是:不同任务下,记忆的优先级应当完全不同。**

记忆路由分配

通常来说记忆的检索会将所有的所有文本视作平等的“背景资料”,而我们尝试通过上面的评分的机制通过多维特征识别,将原始记忆分配到不同的路由中:

  • MustAware(关键约束):识别为用户硬性偏好或禁忌的信息。它们被赋予最高权重,防止模型违背核心指令。

  • ActionTips(经验提示):提取自过去成功操作的建议。这能让模型在面对类似任务时,直接继承之前的经验。

  • ReliabilityWarning(风险预警):专门针对相关度高但置信度低的信息。通过打上“待确认”标签,提示模型在处理时触发核验流程。

  • EmotionalContext(情绪线索):捕捉对话中的情感基调,确保 AI 的回复不仅逻辑正确,且能考虑用户偏好与情绪

结构化排序

如果说路由分配是“分类”,那么结构化排序就是“调度”。模型处理 Prompt 的能力是有限的,“先看到什么”直接决定了模型的推理路径。 系统会根据当前的**任务意图(Memory Intent)**动态调整路由的展现顺序:

  • **建议意图(Advice):**优先排布ActionTips。模型进入“执行者”模式,首先关注“怎么做”。

  • **核验意图(FactCheck):**优先排布ReliabilityWarning。模型进入“审计者”模式,首先关注“哪些信息可能存疑”。

...

Prompt 渲染策略:格式化渲染

在memfit的工程中,经过意图路由分类排序的记忆,再最终进入prompt时候还有最终的处理策略

1.语义标签化

系统会根据路由角色自动添加前缀,引导模型思考:

  • 如果是 ActionTips,前缀是**“经验/可执行提示:”**
  • 如果是 MustAware,前缀是**“关键偏好/约束:”**
2.透明的元数据(Metadata)

每一条记忆后面都跟着一串精准的权值:(u=0.85, sim=0.92, A=0.80, R=0.90)

  • u (Utility): 效用分,告诉模型这条记忆在当前上下文中的含金量。
  • age: 记忆的“年龄”,让模型感知信息的是时效性。

总结

如果说知识库是企业为 Agent 准备的“入职培训手册”,那么长期记忆系统就是 Agent 在炮火中磨砺出来的“实战笔记”。

在复杂的生产级渗透任务中,我们并不需要一个只会机械执行指令的程序,而是一个能够自我复盘、精准避坑、持续进化的数字伙伴。通过C.O.R.E. P.A.C.T. 模型的分门别类,Memfit AI 成功将那些碎片化的回显日志转化为结构化的“肌肉记忆”,让 Agent 在下一次面对同样的暗坑时,能凭借直觉般的经验迅速做出最优决策。

记忆的意义,不在于记住了多少过去,而在于如何高效地重塑未来。

当 Agent 拥有了独立思考与总结经验的能力,它便不再只是一个执行工具,而是真正迈向了“专家级”的门槛**。END更新记录**

Yakit v1.4.6-0403

  1. WebFuzzer/MITM/热加载管理页面支持快捷键保存,可在快捷键管理页面更改快捷键设置

  2. MITM页面热加载显示当前所选模板名称

  3. MITM规则支持配置文件后缀白名单

  4. MITM规则组支持动态格式化输入

  5. 流量分析器热加载合并到热加载管理

  6. 右键菜单中复制url移到一级菜单

  7. 可搜索可下拉的组件进行优化,可展示搜索结果和全部内容

Memfit AI v1.0.1-0403

  1. 会话支持设置全局命令和手动介入

  2. Mcp协议增加streamable http

  3. 技能支持批量导出

  4. 初始页面布局优化

  5. AI模型侧边展示优化,优先展示模型名称

Yaklang 1.4.6-beta6

  1. 优化 AI 回调链路、计划执行流程与阶段性摘要生成

  2. 增强 AI 工具直调、缓存复用与目录探索能力

  3. 完善 AI memory 检索、观测分析与用户干预同步处理

  4. 增强 AI Forge 与 Yak Script 的导入导出、过滤和更新机制

  5. 接入并优化 Dashboard 中的 Qwen Web Search 能力

  6. 修复 AI 输出总结、文件路径提示与部分交互细节问题

  7. 提升 Java / SSA / SSA2LLVM 的编译性能、作用域绑定与复杂调用支持

  8. 增强 Go 规则集覆盖,并升级部分 Go 依赖版本

  9. 完善插件加载、AI 驱动插件调用与部分泄漏场景修复

  10. MCP Server / Client 支持 Streamable http 协议

  11. 优化 AI Agent 页面查询性能

  12. 修复 fuzz 库 Host 构建异常的 bug

  13. 全局配置支持关闭 Http Flow 查询过慢的提示

  14. 修复 MITM 插件误判为交互式插件的 bug

  15. 优化 MITM 规则匹配功能,默认跳过对二进制类型响应包的匹配


本文首发于 Yak Project 公众号,阅读原文