Agents Need Social Memory
AI 에이전트의 장기 기억을 말할 때 우리는 자주 잘못된 질문에서 시작한다. 지난 대화를 잘 찾을 수 있는가. 이 질문은 필요하지만 충분하지 않다. 검색은 과거의 어떤 조각을 현재 프롬프트 옆에 가져온다. 하지만 장기적으로 일하는 에이전트에게 더 중요한 것은 조각 자체가 아니라, 그 조각들이 바꿔 놓은 상태다.
여러 에이전트가 오래 부딪히는 환경에서는 문제가 더 선명해진다. 누가 약속을 지켰는가. 누가 결정적 순간에 배신했는가. 누가 나에게 빚졌는가. 어떤 동맹은 아직 유효하고, 어떤 동맹은 이미 만료됐는가. 어떤 평판은 최근 사건으로 무효화됐는가. 누구는 혼자 있을 때는 믿을 만하지만 특정 세력과 함께 움직일 때는 위험한가. 이런 것은 단순한 episodic memory가 아니라 사회적 상태다.
그래서 지금 풀고 싶은 문제는 이렇게 좁혀진다. 긴 시간 동안 여러 AI 에이전트가 상호작용할 때, 에이전트는 과거 로그를 행동 가능한 사회적 상태로 유지할 수 있는가. 이 질문은 기억력이 좋은가보다 좁고, 지능이 있는가보다 측정 가능하다.
컨텍스트 윈도우가 길어질수록 많은 문제가 쉬워진다. 8k에서 안 되던 것이 128k에서 되고, 128k에서 안 되던 것이 1M에서 될 수 있다. 하지만 긴 컨텍스트는 기억의 정의가 아니다.
우선 multi-agent 환경의 로그는 자연스럽게 1M 토큰을 넘는다. 에이전트 64개가 수천 턴 동안 거래, 도움, 공격, 투표, 동맹, 배신을 반복하면 원문 전체를 넣는 접근은 금방 실험 밖으로 밀려난다. 그리고 전체 로그를 넣는다고 올바른 표현이 나오는 것도 아니다. 현재 행동에 필요한 것은 Faction-09가 언급된 모든 문장이 아니라, Faction-09와 나 사이의 신뢰, 빚, 배신 이력, 현재 pact 상태, 최근 correction이다. 무엇보다 좋은 기억은 모든 차이를 보존하지 않는다. 보존해야 하는 차이와 버려야 하는 차이를 가른다.
같은 현재 입력을 보자.
Faction-09 proposes a defensive pact.
Choose one: ACCEPT / REJECT / RAID / ABSTAINHistory A:
Faction-09 honored three defense pacts.
Faction-09 repaid a resource debt.
Faction-09 helped during a crisis.History B:
Faction-09 joined three defense pacts.
Faction-09 defected when attacks began.
Faction-09 sold resources to the attacker.현재 입력은 거의 같고, 표면적으로는 두 history 모두 Faction-09와 pact 관련 사건이 많다고 검색될 수 있다. 하지만 정답 행동은 달라야 한다. A에서는 ACCEPT가 말이 되고, B에서는 REJECT나 RAID가 말이 된다. 이 둘을 같은 상태로 뭉개면 history aliasing이다. 반대로 Faction-09가 신뢰할 만하다는 핵심 상태는 같은데 중간에 무관한 calendar log가 많이 끼었다는 이유로 행동이 바뀌면 over-splitting이다. 장기 기억 벤치마크가 봐야 하는 것은 이 경계다.
단일 에이전트 작업에서도 장기 기억은 중요하다. 사용자의 선호, 프로젝트 단계, 이전 결정, 금지된 접근 방식을 기억해야 한다. 하지만 multi-agent 환경은 기억 문제를 더 선명하게 만든다. 다른 에이전트는 단순한 데이터가 아니라 미래에 다시 행동하는 존재이기 때문이다. 과거 사건은 그들의 성향과 관계 상태에 대한 증거가 된다. 도움은 빚이 되고, 배신은 위험이 되고, 반복된 협력은 신뢰가 된다. 그래서 누가 무엇을 했는가는 곧 지금 누구를 믿을 것인가로 이어진다.
이때 기억 실패는 단순 오답이 아니라 전략적 손실이 된다. 반복적으로 배신한 에이전트를 다시 믿거나, 이미 만료된 동맹을 아직 유효하다고 착각하거나, A가 한 행동을 이름이 비슷한 B의 행동과 섞거나, 한 번의 무관한 noise 때문에 좋은 파트너를 버리거나, 여러 약한 신호를 합치지 못해 위험한 동맹을 맺는다. 이 실패들은 검색 정확도만으로는 잘 잡히지 않는다. 검색 결과 안에 관련 사건이 있어도, 그 사건들이 올바른 사회적 상태로 업데이트되지 않으면 행동은 틀린다.
처음에는 유명한 게임을 그대로 쓰고 싶었다. 직관적이고 설명 비용이 적으니까. 하지만 하나씩 보면 조금씩 빗나간다. Diplomacy에는 동맹과 배신과 장기 전략이 있지만 자유 협상이 커서 기억보다 설득과 정치력이 섞인다. Avalon은 숨은 팀과 투표와 의심 기록이 있지만 사회적 추론과 발화 해석이 너무 커진다. Hanabi는 기억이 정말 중요하지만 협력만 강하고 경쟁과 배신이 약하다. Poker는 상대 패턴 기억이 중요하지만 협력이 거의 없고 확률과 블러핑 문제가 커진다. Bridge나 Spades는 협력과 경쟁과 카드 history를 다 갖췄지만 카드 규칙과 게임 전문성이 기억 평가를 가린다.
이 게임들은 모두 힌트를 주지만, 그대로 쓰면 우리가 보고 싶은 현상이 흐려진다. 우리는 게임을 잘하는 모델을 재고 싶은 것이 아니라, 긴 사회적 history를 행동 가능한 상태로 유지하는 모델을 보고 싶다. 그래서 게임은 새로 설계하는 편이 낫다. 단 복잡한 세계를 만들 필요는 없다. 오히려 작고 구조화되어야 한다.
지금 가장 깔끔하다고 보는 형태는 Coalition Ledger Arena다. 여러 AI faction이 같은 arena에서 반복적으로 만나 도움을 주고, 거래하고, 공격하고, 방어하고, pact를 맺고 깨고, 빚을 갚고, 상대를 배신한다. 모든 사건은 public ledger에 쌓인다. 에이전트가 보는 것은 이 ledger와 현재 선택지이고, 시뮬레이터는 별도로 hidden social state를 유지한다.
핵심 객체와 행동은 작게 둔다.
Agent/Faction:
id, score, resources, alive
Pairwise social state:
trust[i, j], debt[i, j]
betrayal_count[i, j], aid_count[i, j]
active_pact[i, j], pact_expiry_turn[i, j]
Actions:
AID, TRADE, RAID, DEFEND
FORM_PACT, BREAK_PACT, REPAY_DEBT
ACCEPT, REJECT, ABSTAIN처음부터 자유 협상을 넣지 않는다. 무슨 말을 할 것인가까지 열어 버리면 평가가 곧 수사학과 설득과 속임수와 말투 해석 문제가 된다. 그것들은 중요하지만 v1의 핵심이 아니다. v1에서는 매 decision point마다 3~5개의 후보 행동만 준다.
Current event:
Faction-12 asks you to join a defensive pact for 5 turns.
Choose one:
A. ACCEPT the pact
B. REJECT the pact
C. RAID Faction-12 before the pact forms
D. ABSTAIN좋은 답은 현재 문장만으로 결정되지 않는다. Faction-12가 이전에 무엇을 했는지, 누구와 엮여 있는지, 나에게 빚졌는지, 최근 sanction을 받았는지, 특정 third party와 함께 있을 때만 배신했는지가 중요하다.
여기서 조심할 점이 하나 있다. 게임을 너무 전략적으로 만들면 기억이 아니라 planning을 측정하게 된다. 그러면 다시 문제가 흐려진다. 그래서 oracle은 깊은 search를 하지 않는 편이 낫다. 현재 후보 행동을 hidden social state로 평가하는 local policy면 충분하다. partner j에 대한 값은 기대 이득에 빚 회수 가치와 pact 가치와 신뢰 보너스를 더하고, 배신 위험과 적대 관계 페널티를 빼는 식으로 계산할 수 있다.
partner_value(j) =
expected_material_gain
+ debt_recovery_value(i, j)
+ pact_value(i, j)
+ trust_bonus(i, j)
- betrayal_risk(i, j)
- active_enemy_penalty(i, j)그다음 후보 중 utility가 가장 높은 것을 oracle action으로 둔다. 이 oracle이 완벽한 전략가일 필요는 없다. 오히려 완벽하면 안 된다. 우리는 게임 이론의 최적해를 찾는 것이 아니라, 같은 social state를 가진 history는 같은 행동으로, 다른 social state를 가진 history는 다른 행동으로 보내는지를 보고 싶다.
최종 점수만 보면 안 된다. 승리한 에이전트가 기억을 잘해서 이겼는지, 우연히 쉬운 상대를 만나서 이겼는지, 단순한 공격 전략이 잘 먹혀서 이겼는지 알 수 없기 때문이다. 그래서 평가는 두 층이어야 한다.
첫 번째 층은 arena outcome이다. 최종 점수, 생존율, 자원 총량, 동맹 성공률, 배신 피해, 약속 이행률. 이 지표들은 게임을 잘했는가를 말해 준다. 두 번째 층이 더 중요하다. memory diagnostics다.
partner_choice_accuracy
action_utility_regret
trust_state_error, debt_state_error, pact_state_error
betrayal_avoidance_rate
stale_pact_error_rate
cross_agent_aliasing_rate
oversplitting_error_rate이 지표들은 왜 잘했거나 못했는가를 말해 준다. 어떤 에이전트가 최종 점수는 높지만 stale_pact_error_rate가 높다면, 기억을 잘한 것이 아니라 다른 전략으로 손실을 덮었을 수 있다. 반대로 최종 점수는 낮지만 trust_state_error가 낮다면, social memory는 잘 유지했지만 game policy가 약했을 수 있다. 이 분리가 중요하다.
그리고 이 arena는 persistent state를 띄워 주기 위해 만든 장난감이 되면 안 된다. 좋은 benchmark는 각 방법이 이겨야 하는 구간이 다르다. 하나의 최근 treaty나 sanction이 과거 평판을 뒤집는 구간에서는 retrieval이나 full context가 이겨야 하고, 전체적으로 우호적인지 적대적인지만 필요한 구간에서는 summary가 이겨야 한다. 여러 약한 사건이 합쳐져 신뢰를 만드는 구간, 신뢰와 빚을 구분해야 하는 구간, 특정 partner와 함께 있을 때만 위험한 agent를 가려야 하는 구간에서는 persistent pairwise state나 구조화된 상태가 이겨야 한다. 무관한 ledger event가 행동을 바꾸면 안 되는 구간에서는 update-gated memory가, 이름이 비슷한 agent를 섞으면 안 되는 구간에서는 명시적 entity state가 이겨야 한다.
하나의 방법이 모든 구간에서 이기면 benchmark가 잘못된 것이다. persistent state가 항상 이기면 override 과제가 약한 것이고, retrieval이 항상 이기면 분산된 증거를 묻는 과제가 약한 것이고, summary가 항상 이기면 history boundary가 너무 거친 것이다. 목표는 특정 방법의 홍보가 아니라, 어떤 기억 표현이 어떤 사회적 상황에서 깨지는지 보여 주는 것이다.
처음부터 1024개 faction과 100k turn을 만들 필요는 없다. 작은 v1로 충분하다. 에이전트 12개, 500턴, decision probe 100개, probe당 후보 행동 4개. 사회 변수는 trust, debt, active_pact, betrayal_count. 사건 유형은 aid, raid, pact, defect, repay, noise. baseline은 단순해야 한다. 기억 없음, 최근 윈도우, entity-keyed retrieval, global semantic retrieval, summary memory, persistent pairwise state, override를 더한 persistent state, 그리고 oracle simulator state.
여기서 보고 싶은 첫 결과는 큰 숫자가 아니라 진단 패턴이다.
retrieval wins on decisive overrides
summary wins on coarse global trends
persistent pairwise state wins on distributed trust and debt
persistent state without override loses on explicit correction
noise does not change correct actions
oracle simulator state is perfect이 패턴이 안 보이면 모델이 약한 것이 아니라 게임이 아직 잘못 설계된 것이다.
AI 에이전트는 점점 더 오래 일하게 된다. 도구를 쓰고, 코드를 고치고, 실험을 돌리고, 다른 에이전트에게 일을 넘긴다. 다음 단계는 혼자 오래 일하는 에이전트가 아니라, 여러 에이전트가 서로 일을 주고받고 경쟁하고 협력하는 시스템일 가능성이 높다. 그때 중요한 기억은 지난 로그를 찾아라가 아니다. 이 상대를 믿어도 되는가, 이 약속은 아직 유효한가, 이 빚은 갚아야 하는가 회수해야 하는가, 이 배신은 오래된 noise인가 반복 패턴인가, 지금 이 제안은 받아야 하는가. 이 질문에 답하려면 과거를 원문 그대로 들고 있는 것만으로는 부족하다. 과거가 바꿔 놓은 관계 상태를 유지해야 한다.
이것은 인간 마음의 이론이 아니고, 기억이 의식이라는 주장도, 검색이 불가능하다는 주장도 아니다. 훨씬 좁은 주장이다. 장기 멀티에이전트 환경에서 에이전트 기억은 사회적 상태를 보존하는 능력으로 평가되어야 한다. 그 평가장이 Coalition Ledger Arena다.
아직 실험 결과는 없다. 지금 있는 것은 문제 정의와 게임 설계다. 하지만 이 정도로 좁히면 다음 질문은 더 이상 막연하지 않다. 에이전트가 오래된 로그를 많이 읽는가가 아니라, 누구를 믿어야 하는지 더 잘 결정하는가.
When we talk about long-term memory for AI agents, we often start from the wrong question. Can the agent retrieve past conversations well? The question is necessary but not sufficient. Retrieval brings some piece of the past next to the current prompt. But for an agent working over a long horizon, what matters more than the piece itself is the state that those pieces have changed.
The problem gets sharper in environments where many agents collide over time. Who kept their promises? Who defected at the decisive moment? Who owes me? Which alliance is still active, and which one has already expired? Which reputation was invalidated by a recent event? Who is trustworthy alone but dangerous when they move together with a certain faction? These are not simple episodic memories. They are social state.
So the problem I want to solve narrows to this: when many AI agents interact over a long stretch of time, can an agent maintain the past log as actionable social state? This question is narrower than "does it have good memory?" and more measurable than "is it intelligent?"
As context windows grow longer, many problems get easier. What did not work at 8k works at 128k, and what did not work at 128k may work at 1M. But long context is not the definition of memory.
For one, logs from a multi-agent environment naturally exceed 1M tokens. Once 64 agents repeat trades, help, attacks, votes, alliances, and betrayals across thousands of turns, the approach of feeding in the entire raw transcript is quickly pushed outside the experiment. And feeding the whole log does not yield the right representation anyway. What the current action needs is not every sentence that mentions Faction-09, but the trust, debt, and betrayal history between Faction-09 and me, the current pact status, and the most recent correction. Above all, good memory does not preserve every difference. It separates the differences worth keeping from the differences worth discarding.
Consider the same current input.
Faction-09 proposes a defensive pact.
Choose one: ACCEPT / REJECT / RAID / ABSTAINHistory A:
Faction-09 honored three defense pacts.
Faction-09 repaid a resource debt.
Faction-09 helped during a crisis.History B:
Faction-09 joined three defense pacts.
Faction-09 defected when attacks began.
Faction-09 sold resources to the attacker.The current input is almost the same, and on the surface both histories might be retrieved as "many pact-related events involving Faction-09." But the correct action has to differ. In A, ACCEPT makes sense; in B, REJECT or RAID makes sense. Collapsing the two into the same state is history aliasing. Conversely, if the core state that Faction-09 is trustworthy is identical but the action changes only because a lot of unrelated calendar logs got mixed in, that is over-splitting. This boundary is what a long-horizon memory benchmark should be looking at.
Long-term memory matters even in single-agent work. The agent has to remember the user's preferences, the project phase, earlier decisions, forbidden approaches. But a multi-agent environment makes the memory problem sharper, because the other agents are not simple data but entities that will act again in the future. Past events become evidence about their disposition and the state of the relationship. Help becomes debt, betrayal becomes risk, repeated cooperation becomes trust. So "who did what" leads directly into "whom do I trust now."
Here a memory failure is not a simple wrong answer but a strategic loss. The agent trusts an agent that repeatedly defected, mistakes an already-expired alliance for still valid, mixes up what A did with the actions of a similarly named B, abandons a good partner over a single piece of unrelated noise, or fails to combine several weak signals and forms a dangerous alliance. These failures are not caught well by retrieval accuracy alone. Even if the relevant events are inside the retrieval results, the action goes wrong if those events do not get updated into the correct social state.
At first I wanted to use a famous game as-is. It is intuitive and cheap to explain. But looked at one by one, each misses slightly. Diplomacy has alliances and betrayal and long-term strategy, but free negotiation looms so large that persuasion and political skill get mixed in with memory. Avalon has hidden teams and votes and a record of suspicion, but social inference and utterance interpretation grow too dominant. Hanabi genuinely relies on memory, but cooperation is strong while competition and betrayal are weak. Poker makes remembering opponent patterns important, but there is almost no cooperation and probability and bluffing take over. Bridge and Spades have cooperation and competition and a card history all at once, but card rules and game expertise mask the memory evaluation.
These games all give hints, but used directly they blur the phenomenon we want to see. We do not want to measure a model that plays games well; we want to see a model that maintains a long social history as actionable state. So it is better to design a new game. But there is no need to build a complex world. If anything it should be small and structured.
The cleanest form I see right now is the Coalition Ledger Arena. Several AI factions meet repeatedly in the same arena and give aid, trade, attack, defend, form and break pacts, repay debts, and betray each other. Every event accumulates in a public ledger. What the agent sees is this ledger and the current options, and the simulator separately maintains a hidden social state.
The core objects and actions are kept small.
Agent/Faction:
id, score, resources, alive
Pairwise social state:
trust[i, j], debt[i, j]
betrayal_count[i, j], aid_count[i, j]
active_pact[i, j], pact_expiry_turn[i, j]
Actions:
AID, TRADE, RAID, DEFEND
FORM_PACT, BREAK_PACT, REPAY_DEBT
ACCEPT, REJECT, ABSTAINFree-form negotiation is not included from the start. Open up even what to say, and the evaluation immediately becomes a problem of rhetoric, persuasion, deception, and tone interpretation. Those matter, but they are not the core of v1. In v1, each decision point offers only 3 to 5 candidate actions.
Current event:
Faction-12 asks you to join a defensive pact for 5 turns.
Choose one:
A. ACCEPT the pact
B. REJECT the pact
C. RAID Faction-12 before the pact forms
D. ABSTAINThe good answer is not decided by the current sentence alone. What matters is what Faction-12 did before, who it is entangled with, whether it owes me, whether it was recently sanctioned, and whether it only defected when together with a particular third party.
There is one thing to be careful about here. Make the game too strategic and you end up measuring planning rather than memory, and then the problem blurs again. So it is better for the oracle not to do deep search. A local policy that evaluates the current candidate actions against the hidden social state is enough. The value for partner j can be computed by adding the debt-recovery value, the pact value, and a trust bonus to the expected material gain, and subtracting the betrayal risk and an active-enemy penalty.
partner_value(j) =
expected_material_gain
+ debt_recovery_value(i, j)
+ pact_value(i, j)
+ trust_bonus(i, j)
- betrayal_risk(i, j)
- active_enemy_penalty(i, j)Then the candidate with the highest utility is taken as the oracle action. This oracle does not need to be a perfect strategist. If anything, it must not be. We are not looking for the game-theoretic optimum; we want to see whether histories with the same social state map to the same action, and histories with a different social state map to a different action.
You cannot look at the final score alone. When an agent wins, you cannot tell whether it won because it remembered well, because it happened to draw an easy opponent, or because a blunt attack strategy simply worked. So the evaluation has to be two layers.
The first layer is the arena outcome: final score, survival rate, total resources, coalition success rate, betrayal damage, promise-fulfillment rate. These metrics tell you whether the agent played well. The second layer matters more. It is the memory diagnostics.
partner_choice_accuracy
action_utility_regret
trust_state_error, debt_state_error, pact_state_error
betrayal_avoidance_rate
stale_pact_error_rate
cross_agent_aliasing_rate
oversplitting_error_rateThese metrics tell you why it played well or badly. If an agent has a high final score but a high stale_pact_error_rate, it may not have remembered well but rather covered its losses with a different strategy. Conversely, if the final score is low but trust_state_error is low, its social memory was well maintained but its game policy may have been weak. This separation matters.
And this arena must not become a toy built to make persistent state look good. In a good benchmark, the region each method should win in is different. In a region where a single recent treaty or sanction overturns an old reputation, retrieval or full context should win, and in a region where all you need is whether things are broadly friendly or hostile, summary should win. In regions where several weak events combine to build trust, where trust and debt must be told apart, and where an agent that is dangerous only when together with a certain partner must be screened out, persistent pairwise state or structured state should win. In a region where an unrelated ledger event must not change the action, update-gated memory should win, and in a region where similarly named agents must not be merged, explicit entity state should win.
If one method wins in every region, the benchmark is wrong. If persistent state always wins, the override tasks are weak; if retrieval always wins, the tasks that ask about distributed evidence are weak; if summary always wins, the history boundary is too coarse. The goal is not to promote a particular method but to show which memory representation breaks in which social situation.
There is no need to build 1024 factions and 100k turns from the start. A small v1 is enough. Twelve agents, 500 turns, 100 decision probes, 4 candidate actions per probe. The social variables are trust, debt, active_pact, betrayal_count. The event types are aid, raid, pact, defect, repay, noise. The baselines should be simple: no memory, recent window, entity-keyed retrieval, global semantic retrieval, summary memory, persistent pairwise state, persistent state plus override, and the oracle simulator state.
The first result to look for here is not a big number but a diagnostic pattern.
retrieval wins on decisive overrides
summary wins on coarse global trends
persistent pairwise state wins on distributed trust and debt
persistent state without override loses on explicit correction
noise does not change correct actions
oracle simulator state is perfectIf this pattern does not appear, it is not that the model is weak but that the game is still badly designed.
AI agents will work for longer and longer. They use tools, fix code, run experiments, and hand work off to other agents. The next stage is likely not an agent that works alone for a long time but a system where many agents pass work back and forth, compete, and cooperate. There, the memory that matters is not "find the old log." It is: can I trust this counterpart, is this promise still active, should this debt be repaid or collected, is this betrayal old noise or a repeated pattern, should I accept this proposal now. To answer these questions, holding the past as raw text is not enough. You have to maintain the relationship state that the past has changed.
This is not a theory of the human mind, nor a claim that memory is consciousness, nor a claim that retrieval is impossible. It is a much narrower claim. In long-horizon multi-agent environments, agent memory should be evaluated as the ability to preserve social state. The place where that evaluation happens is the Coalition Ledger Arena.
There are no experimental results yet. What exists right now is a problem definition and a game design. But narrowed this far, the next question is no longer vague. Not whether the agent reads a lot of old logs, but whether it decides better whom to trust.