CODEX KNOWLEDGE

自动记忆

2026/04/24 2 min read CODEX KNOWLEDGE 自动记忆

好,这一步我们直接把你的 Codex 升级成**“不会再忘服务器/部署/配置”的自动记忆系统(可跑版)**。不给你空话,给你结构 + 脚本 + 接入点。


🧠 总体结构(最小可用版)

C:\Users\ASUS-KL\.codex\
├─ AGENTS.md              # 静态规则(你已经有)
├─ MEMORY.md              # 动态记忆(会自动更新)
├─ memory-db.jsonl        # 结构化记忆库(机器读)
├─ industrial-control\
│   └─ scripts\
│       ├─ memory-write.ps1   # 写入记忆
│       ├─ memory-read.ps1    # 读取记忆(检索)
│       └─ memory-summarize.ps1 # 压缩/去重
└─ gateway.ps1            # 注入记忆(关键接入点)

🥇 1)记忆写入(自动沉淀)

memory-write.ps1 —— 每次任务结束,把关键信息写进去(服务器/路径/端口/服务名等)

param(
  [string]$Text,
  [string]$Type = "note"  # server | deploy | config | note
)
 
$path = "C:\Users\ASUS-KL\.codex\memory-db.jsonl"
New-Item -ItemType File -Force $path | Out-Null
 
$rec = [ordered]@{
  time = (Get-Date).ToString("yyyy-MM-dd HH:mm:ss")
  type = $Type
  text = $Text
}
 
$line = ($rec | ConvertTo-Json -Compress)
Add-Content $path $line

👉 用法示例(在任务后调用):

powershell -ExecutionPolicy Bypass -File `
  "C:\Users\ASUS-KL\.codex\industrial-control\scripts\memory-write.ps1" `
  -Type "server" `
  -Text "server-1: 170.106.179.226, path=/srv/aiclient-2-api-mock, systemd service=aiclient-2-api-mock"

🥈 2)记忆读取(每次执行前检索)

memory-read.ps1 —— 从 jsonl 里抽取“最相关的几条”

param(
  [string]$Query,
  [int]$Top = 8
)
 
$path = "C:\Users\ASUS-KL\.codex\memory-db.jsonl"
if (-not (Test-Path $path)) { exit 0 }
 
$lines = Get-Content $path
 
# 极简相关性:包含关键词优先(够用)
$scored = @()
 
foreach ($l in $lines) {
  $obj = $l | ConvertFrom-Json
  $score = 0
  if ($Query) {
    foreach ($w in $Query.Split(" ")) {
      if ($obj.text -match [regex]::Escape($w)) { $score += 1 }
    }
  }
  $scored += [pscustomobject]@{ score=$score; text=$obj.text }
}
 
$top = $scored | Sort-Object score -Descending | Select-Object -First $Top
$top.text -join "`n"

🥉 3)记忆压缩(防止越长越乱)

memory-summarize.ps1 —— 定期把“碎片”合并到 MEMORY.md

$src = "C:\Users\ASUS-KL\.codex\memory-db.jsonl"
$dst = "C:\Users\ASUS-KL\.codex\MEMORY.md"
 
if (-not (Test-Path $src)) { exit }
 
$lines = Get-Content $src | Select-Object -Last 50  # 最近 50 条
 
$summary = @"
# 🧠 当前关键记忆(自动生成)
 
$(($lines | ForEach-Object {
  ($_ | ConvertFrom-Json).text
}) -join "`n- ")
 
"@
 
Set-Content $dst $summary -Encoding UTF8

👉 可以每天/每次启动跑一次


🔥 4)在 gateway 注入记忆(最关键一步)

gateway.ps1 任务分支前加:

# === 读取记忆 ===
$memoryText = powershell -ExecutionPolicy Bypass -File `
  "C:\Users\ASUS-KL\.codex\industrial-control\scripts\memory-read.ps1" `
  -Query $taskSummary
 
# === 拼到任务前(作为上下文)===
if ($memoryText) {
    $taskSummary = @"
[MEMORY CONTEXT]
$memoryText
 
[TASK]
$taskSummary
"@
}

👉 这一步的效果:

Codex 每次执行前,都“自动回忆相关服务器/部署信息”

🧪 使用效果(你会看到的变化)

以前:

codex "重启服务"

👉 它会问:在哪台服务器?什么服务?


现在:

codex "重启服务"

👉 它直接说:

在 server-1 (170.106.179.226) 上,路径 /srv/aiclient-2-api-mock,
使用 systemctl restart aiclient-2-api-mock

🧠 关键原则(你必须理解)

❗不是“让 AI 记住”,
👉 是“每次执行前把记忆塞回去”


🧱 进阶(你后面可以做)

1️⃣ 自动提取记忆(不用手写)

  • 从 SSH 命令里提取 server IP

  • 从部署日志提取路径

2️⃣ 多机器共享(云端 memory)

  • 一个 API 存储 memory-db

  • 多个 Codex 实例共用

3️⃣ 记忆分级

server / deploy / secret / temp

🎯 最终一句话总结

你现在已经把 Codex 从“失忆助手”,变成了
👉 带长期记忆的执行系统


如果你下一步想直接拉到更狠的版本(我建议):

👉 自动从操作日志提取服务器信息(不用你写)
👉 记忆冲突检测(避免错连服务器)
👉 MCP 共享记忆(多 agent 同步)

你可以直接说:

👉 “做自动提取记忆 + 云同步”