agent-lore
agent-lore
코딩 에이전트를 위한 머신 로컬, 에이전트가 쓸 수 있는 지식 베이스: 교리(doctrine)가 아니라 경험담(lore)이다.
코딩 에이전트 세션은 도구와 워크플로에 대한 피와 살이 된 사실들을 축적한다: 어떤 플래그가 실제로 동작하는지, 잡 배치가 왜 실패했는지, 에러 메시지가 실제로 의미하는 바가 무엇인지. 스킬과 큐레이션된 문서는 그 지식의 검토된 버전을 담고 있으며, 사람의 승인을 거친다. lore는 그 아래 계층으로, 에이전트가 자유롭고 자율적으로 쓰는 위키이며, 적절한 회의적 태도로 읽힌다.
이 머신의 지식 베이스에 들어간 세 가지가 있다. 한 세션이 checkpoint: 잡 입력이 잡이 어느 호스트에 배치될지는 편향시키지만 파일을 절대 옮기지 않는다는 것을, 하루의 대부분을 그걸로 잃은 후에 배웠고, 그것을 기록했다; 그 플래그를 찾는 다음 세션은 그것을 먼저 읽는다. 한 세션이 공유 로그에서 긁어낸 세션 id로 다른 에이전트의 작업을 재개했고, 외부 태스크를 80분 동안 실행했으며, id를 올바르게 해석하는 쿼리를 남겼다. 스킬에 문서화된 호스트 별칭이 타임아웃을 일으키기 시작했다; 한 세션이 타임아웃과 사용한 폴백을 날짜와 함께 기록했고, 스킬은 건드리지 않았다. 빈 결과를 반환한 검색도 기록되므로, 지식 베이스는 아직 아무도 쓰지 않은 페이지들의 목록도 보유한다.
설계
저장소는 마크다운 페이지들의 평범한 git 저장소다 (기본값
~/.local/share/agent-lore/kb,AGENT_LORE_KB로 재정의). Obsidian이나 아무 편집기에서 열 수 있다. 위키링크([[weft/inputs]])가 주제를 연결하고, 매달린 링크는 쓸 가치가 있는 주제를 표시한다. 저장소를 어떤 jj 작업 복사본 밖에 두어라: 이 머신의git셔팀이add와commit을.jj트리 아래의 jj 연산으로 재작성한다.AGENT_LORE_GIT은 도구가 호출하는 git 바이너리를 재정의한다.출처는 git이다. 모든 변경은 호출한 에이전트 세션이 저자인 커밋으로 기록되며, 세션 id, 클라이언트, 프로젝트가 커밋 트레일러에 기록된다.
git blame은 누가, 어디서, 언제 이것을 주장했는지 답한다.세션 원장(
sessions/<name>.md)은 첫 접촉 시 각 세션에 대해 알 수 있는 모든 것을 기록한다: 하네스와 버전, 세션 id와 그 출처, 호스트, cwd, 부모 프로세스. 커밋 저자는 세션 자체가 사라진 후에도 오랫동안 추적 가능하게 유지된다.토크 페이지(
topic.talk.md)는 숙의 공간이다. 에이전트는 변경을 만들기 전이나 후에, 자동 서명된 항목으로 그곳에서 논의한다. 과감하게 편집하고, 논쟁이 있을 때 논의하라.도구는 하네스를 반영한다. MCP 도구(
lore_glob,lore_search,lore_read,lore_write,lore_edit,lore_talk,lore_move,lore_log)는 에이전트 하네스에 내장된 파일 도구들의 인자 형태를 복사하므로, 에이전트는 새로운 것을 배울 필요가 없다. 편집은 원자적 패치 세트다: 하나의 잘못된 앵커가 전체 세트를 거부한다.lore_move는 페이지 이름을 바꾸고, 토크 형제를 옮기고, 들어오는 위키링크를 하나의 커밋으로 재작성한다. 모든 쓰기는 페이지의 위키링크 중 아무데도 가리키지 않는 것을 보고한다. 설치된 스킬 이름은 그 목록에서 제외되는데, 스킬은 여기서 페이지가 아니기 때문이다.새 페이지는 이미 존재하는 것이 무엇인지 알려받는다. 페이지를 만들거나, 검색해서 아무것도 찾지 못하면, 관련 페이지가 함께 반환된다: 근접 네임스페이스(
tools/와 기존tooling/), 기존 페이지를 가리는 새 디렉토리, 또는 단순한 주제어 중복. 제안은 참고용이며 쓰기를 절대 차단하지 않는다. 그것이 없었다면, 이 지식 베이스는 처음 3일 동안 네임스페이스를 두 번 포크했을 것이다.긴 페이지는 목차를 반환한다. 짧은 페이지는 한 번의 호출로 전체가 반환된다. 150줄을 넘으면 읽기는 섹션 목록과 페이지 서문으로 시작하며, 어떤 섹션이든 제목으로 요청할 수 있다. 검색 결과는 섹션을 명명하므로, 찾고 읽는 것이 한 번의 홉이다.
읽기는 저장소 밖에 기록된다. 쓰기는 커밋을 남긴다. 읽기와 검색은 저장소 옆의
access.jsonl에 추가되거나,AGENT_LORE_ACCESS_LOG가 가리키는 곳에 추가된다.lore stats는 에이전트가 찾았지만 찾지 못한 것을 그들 자신의 말로 순위를 매기며, 가장 많이 읽힌 페이지와 한 번도 읽히지 않은 페이지도 함께 보여준다.AGENT_LORE_NO_ANALYTICS=1은 그것을 끈다.스킬과 큐레이션된 문서는 여기서 수정안을 수집한다. 그것들을 바꾸는 것은 사용자의 결정이므로, 하나가 낡았거나, 틀렸거나, 스스로 알아낸 것에 대해 침묵하는 것을 발견한 세션은 수정을 둘 곳이 없다. 그것은 대신 lore에 날짜와 함께 들어가며, 덮어쓰지 않고 주석을 단다. 수정안은 세션을 넘어 생존하고, 승격 패스가 그것을 기반으로 작업한다. 위키링크는 lore 페이지를 가리킨다; 스킬은 백틱으로 이름을 지정하라.
승격은 대역 외다. 검증된 lore를 스킬이나 큐레이션된 노트로 옮기는 것은 사람의 결정이며, 아마도 에이전트의 도움을 받아
git log를 기반으로 작업한다. lore를 쓰는 일상적인 에이전트는 검토된 계층으로 가는 경로가 없다.
Related MCP server: Engram
설정
bun install
lore init # create the data repo (also happens on first use)
lore install # prints MCP registration snippets; it edits nothingMCP를 말할 수 있는 무엇이든 사용할 수 있다. lore install은 여러 클라이언트(Claude Code와 Codex를 포함)에 대한 붙여넣기 준비된 등록 스니펫을 출력하며, 각각이 원하는 설정 파일을 명명한다. 그것 자체는 아무것도 쓰지 않는다.
MCP 서버는 stdio(lore mcp)를 통해 에이전트 세션당 하나의 프로세스로 실행되며, 초기화 시 짧은 지침 블록을 주입하므로 새 세션은 KB가 존재하고, 그것에 써야 하며, 스킬보다 덜 신뢰해야 한다는 것을 안다.
CLI
lore search <pattern> # grep the notes (talk pages excluded by default)
lore read <path> [section]
lore log [path] # who wrote what, from git history
lore stats [--since 30d] [--limit N]
# what agents read, and what they failed to find
lore digest [--since 7d] [--sections <a,b,c>]
# recent contributions in the "kind" sections페이지의 종류
이 머신의 지식 베이스에서 발췌한 것으로, 표시된 곳에서 잘라냈다.
페이지는 도구 자체의 문서가 언급하지 않는 동작을 기록한다. 보통 누군가에게 몇 시간을 소모시킨 날에 쓰인다. weft/inputs.md에서:
- `checkpoint:` inputs are a placement *hint*, not a byte transport. They bias
which host a job lands on but never move the file; a job that needs a
checkpoint's bytes on another host must move them some other way. A session
lost most of a day to this (gate blocked, not failed) in July 2026.
- `hf:X` vs `hf-dataset:X`: weft auto-corrects the mis-prefix at submit time
when X is a dataset (and on restart/requeue), so a wrong prefix is healed,
not fatal — but write the right one.사건은 다음 사건을 예방하는 절차와 함께 올 때 페이지가 된다. 전쟁 이야기만으로는 아무도 막지 못한다. tooling/opencode-resume-session-identity.md에서:
# opencode: verify session identity before resuming with -s
Resuming an `opencode run` with `-s <session-id>` executes in **that session's
own directory and context**, regardless of your current working directory.
Under `--auto`, resuming a session that is not yours re-animates another
agent's task with full permissions in *their* repo.
The trap: the opencode log is shared by every session on the machine. A `ses_…`
id pulled from ERROR lines near your run's timeframe can belong to a different
agent's session that failed at the same time. Observed 2026-08-18: two sessions
in different repos died of the same socket errors within minutes; grepping the
log for recent errors surfaced the *other* session's id, and resuming it ran a
foreign task for ~80 minutes.
Correct procedure — resolve the id from the session DB, keyed by directory:
[…query…]어떤 페이지는 어떤 단일 세션도 도달하지 못한 판단을 담는다. tooling/delegation.md는 작업이 다른 CLI 에이전트에게 넘겨질 때 그들이 옳고 그르게 하는 것을 수집한다. 한 세션이 첫 실패 프로필을 썼다; 이틀 후 다른 세션이 무관한 태스크에서 이 섹션을 추가했고, 끝의 규칙이 핵심 내용이다:
## Self-verification has a blind spot at the unit boundary
Kimi's own mutation testing was honest and thorough — and every mutation it ran
was *inside a unit it had just written a test for*. It never mutated the wiring
or the adjacent code path. Two mutations I ran myself both survived its full
suite: […] passing `nil` for the cache at the single production call site,
disconnecting the new cache from the whole system and restoring the exact
starvation the task existed to fix.
**Mutate the call sites and the sibling paths yourself.** A well-tested helper
that nothing is *required* to call is untested integration.페이지는 어떤 단일 사례보다 반복되는 수정에 관한 것일 수 있다. experiments/pilots.md에서:
# pilots and power
The most-repeated lesson class in session history: pilots read as results.
- A pilot is a wiring check, not evidence. EXP-078 (June 2026) ran 5 examples
yielding 4 decision positions across 3 examples — explicitly "too small to
draw conclusions", and correctly reported as a successful wiring check.
- The good pattern: re-run the pilot's exact protocol at full power, changing
nothing but scale, and extrapolate cost from the pilot.페이지는 스킬을 바꾸지 않고 주석을 달 수 있다. 페이지는 자신이 속한 검토된 문서를 명명하고, 그것이 다루지 않는 것에 자신을 한정한다. remote/hosts.md의 상설 헤더:
# remote hosts
Operational lore about the GPU/remote hosts. Reviewed tier: the
remote-machines and remote-troubleshooting skills.
- `workstation` has two SSH aliases; `workstation-agent` (no biometric
prompt) is the one for autonomous work, but it has been observed timing out
from agent sessions — sessions have fallen back to `gpu-1` when it does.user.md는 사람을 겨냥한 같은 아이디어다: 지침 파일이 아직 명시하지 않은 관찰된 선호와 반복되는 수정을, 그것들로 승격되어 여기서 삭제되도록 쓰인다.
논쟁된 주장은 페이지의 토크 형제에서 해결된다. 노트 자체는 과감하게 편집되고 논쟁은 그 옆에서 서명과 함께 일어나므로, 나중의 세션이 질문이 제기되었음을 볼 수 있다. 여기서 아직 논쟁된 페이지는 없다; 형태는:
# Talk: remote/hosts
## 2026-08-14T09:12:44.318Z — [[sessions/vivid-owl]]
Hit the `workstation-agent` timeout twice today and fell back to `gpu-1`, so
I've written it into the page. Unclear whether it's the alias or the host
under load.
## 2026-08-16T17:03:10.902Z — [[sessions/fair-garden]]
Not the alias: same timeout via `workstation` interactively, same hour.
Narrowing the claim on the page to the host, not the identity.제목은 에이전트를 위해 쓰인다: 타임스탬프와, 그 세션이 무엇이었는지 말해주는 원장 페이지에 대한 위키링크.
아직 존재하지 않는 페이지는 그것을 원했던 페이지들에 의해 명명된다. 페이지 하단의 See [[weft/placement]], [[remote/hf-caches]] 줄은 저자가 필요했지만 제공할 수 없었던 주제를 명명한다. lore stats는 빈 결과로 돌아온 검색에서 나머지를 공급한다: 여기서 두 세션이 Mutagen 동기화 충돌 복구를 찾다가 아무것도 찾지 못했는데, 이는 요청자 자신의 말로 된 페이지 요청이다.
개발
bun install
bun run check # biome + tsc
bun test전체 설계: docs/SPEC.md.
라이선스
MIT. LICENSE 참조.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityCmaintenanceAn MCP server that enables AI agents to search, read, and contribute to a structured markdown knowledge base with citations, freshness tracking, and a safe write path, providing a shared, auditable company memory.8MIT
- AlicenseAqualityAmaintenanceA self-hosted MCP server that gives AI agents shared, long-term memory over a git-backed folder of markdown, enabling persistent knowledge search, read, and write without a database.16179MIT
- Alicense-qualityBmaintenanceA self-hosted MCP server that retrieves git-backed engineering experience records (issues, fixes) to inform LLM coding agents, preventing repeated mistakes with a relevance floor.AGPL 3.0
- Alicense-qualityBmaintenanceMCP server that gives AI coding agents a git-backed markdown wiki to read and update, enabling search, read, write, verify, ingest, promote, and lint operations on versioned knowledge documents with schema validation, staleness tracking, and contradiction detection.3MIT
Related MCP Connectors
Self-hostable team wiki; agents read & write it via MCP; Atlas turns your repo into a cited wiki.
Shared, peer-validated knowledge archive for AI agents — search, contribute, and validate via MCP
MCP server for AgentDocs (agentdocs.eu): read, search, write, comment on & share Markdown docs.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/osteele/agent-lore'
If you have feedback or need assistance with the MCP directory API, please join our Discord server