Body
**GitHub:** https://github.com/kajaha06251020/Engram-AI
**PyPI:** https://pypi.org/project/engram-forge/
什么它做
Engram-AI 给 AI 代理记忆,捕捉到 原因性,而不仅仅是事实。
# 替代的形式
Experience(
action = "Used list comprehension for 10k-row CSV transform",
context = "Data processing pipeline",
outcome = "Fast and readable — user approved",
valence = 0.9,
)
# 从积累的经验中形成模式:
forge.crystallize()
# → Skill("Prefer list comprehensions for data transforms", confidence=0.87)
然后将这些模式 崛起 到可复用的技能:
# 反映到代理配置文件(例如 CLAUDE.md 和 AGENTS.md)
forge.evolve("./CLAUDE.md")
# 生成一个 <span style="background-color: #ffff00;"> !-- engram-forge:start --></span> 块
安装
pip install engram-forge # 核心,不需要API密钥
pip install "engram-forge[claude]" # + Anthropic LLM
pip install "engram-forge[mcp]" # + MCP服务器为Claude代码
pip install "engram-forge[full]" #everything
快速示例
from engram_ai import Forge
forge = Forge(storage_path="./agent-memory")
# 记录经验
forge.record(
action="Used f-strings for formatting",
context="Writing Python utility script",
outcome="Reviewer approved — clean and readable",
valence=0.9,
)
forge.record(
action="Used % formatting",
context="Writing Python utility script",
outcome="Reviewer asked to rewrite with f-strings",
valence=-0.6,
)
# 查询,返回分区结果
result = forge.query("string formatting in Python")
print(result["best"] # → 正面经验
print(result["avoid"] # → 负面经验
# 直接教导一个规则(无需经验)
forge.teach(
rule="Always use parameterized queries for SQL",
context_pattern="database operations",
skill_type="anti",
confidence=1.0,
)
# 对于一个风险行为发出警告
warnings = forge.warn("Run DELETE query", "database maintenance")
# 形成模式,产生可复用的技能
skills = forge.crystallize(min_experiences=3, min_confidence=0.7)
# 写入代理配置文件
forge.evolve("./CLAUDE.md")
多项目支持
from engram_ai import ProjectManager
from pathlib import Path
pm = ProjectManager(base_path=Path("~/.engram-ai/data"))
frontend = pm.get_forge("myapp/frontend")
backend = pm.get_forge("myapp/backend")
扩展点
from engram_ai.llm.base import BaseLLM
from engram_ai.storage import BaseStorage
class MyLLM(BaseLLM):
def generate(self, prompt: str) -> str:
return my_model.complete(prompt)
forge = Forge(llm=MyLLM())
技术: Python 3.10+,ChromaDB,Pydantic v2,Click,pytest,ruff
许可: Apache 2.0
我正在寻找对 API 设计的反馈,特别是对 crystallize()/evolve() 的拆分以及关于 valence 模型是否适合不同的用例的反馈。
Flair
Intermediate Showcase
评论 (0)