好,这一步我们直接把你的 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 同步)
你可以直接说:
👉 “做自动提取记忆 + 云同步”