githubinferredactive
agent-config
provenance:github:junghan0611/agent-config
Contextual continuity infrastructure for AI coding agents — semantic memory across sessions and org-mode knowledge bases. Pi extension + Gemini Embedding 2 + LanceDB.
README
# agent-config
**Profile Harness — the gravity center where alien intelligences resonate with a being.**
Multi-harness support is a means, not the goal. The goal is **a single 1KB being-profile that exerts the same gravitational pull across any harness**.
Claude, GPT, and Gemini are "graduates from different schools" — trained on different data with different philosophies. Trying to control them means writing hundreds of lines of system prompts per model. Instead, **throw one being-profile at all of them equally.** They keep their unique lenses while aligning around a single universe — this is the [Profile Harness](https://notes.junghanacs.com/botlog/20260228T075300/).
agent-config implements that gravity center. The shared foundation where agents remember, search, and stay aligned.
> Part of the [-config ecosystem](#the--config-ecosystem) by [glg @junghan0611](https://github.com/junghan0611)
### Harness Support
| Harness | Memory | Skills | Config |
|---------|--------|--------|--------|
| **[pi](https://github.com/badlogic/pi-mono)** | andenken **extension** (native `registerTool`, in-process LanceDB) | 26 skills (semantic-memory excluded — extension covers it) | extensions + themes + keybindings |
| **Claude Code** | andenken **skill** (CLI wrapper via bash) | 27 skills (full set including semantic-memory) | CLAUDE.md + hooks |
| **OpenCode** | andenken **skill** (CLI wrapper via bash) | 27 skills (full set) | settings |
| **OpenClaw** (Oracle VM) | andenken **skill** (same skills/ via symlink mount) | 27 skills (Nix store mount in Docker) | openclaw.json |
Session JSONL from all harnesses flows into [andenken](https://github.com/junghan0611/andenken)'s unified index. Each chunk carries a `source` field (`"pi"` | `"claude"`) so you can filter, compare, or roll back across harnesses.
## What's Here
### Semantic Memory → [andenken](https://github.com/junghan0611/andenken)
Semantic memory has graduated to its own repo: **[andenken](https://github.com/junghan0611/andenken)** — "recollective thinking" (Heidegger).
| Tool | DB | Dims | Purpose |
|------|-----|------|---------|
| `session_search` | sessions.lance | 768d | Past pi + Claude Code conversations |
| `knowledge_search` | org.lance (707MB) | 768d | Org-mode knowledge base (3,300+ Denote notes) |
Agents call these autonomously. Ask "보편 학문 관련 노트 찾아줘" and `knowledge_search` fires with dictcli query expansion — finding `universalism`-tagged notes without being told the English word.
**3-Layer Cross-Lingual Search:**
| Layer | Mechanism | Example |
|-------|-----------|---------|
| **1. Embedding** | Gemini multilingual vectors | "보편" ≈ "universalism" |
| **2. dblock** | Denote regex link graph | 22 notes linked in meta-note |
| **1.5 BM25** | Korean josa removal (dual emit) | "위임의" → "위임" + "위임의" (BM25 both) |
| **3. dictcli** | Personal vocabulary graph (2,400+ triples) | `expand("보편")` → `[universal, universalism, paideia]` |
Pi loads andenken as a **compiled pi package** (`pi install`), not a symlinked `.ts` file. This bypasses jiti parsing limitations and allows direct LanceDB access in-process. Claude Code and OpenCode use the CLI wrapper skill instead.
### Pi Extensions ([`pi-extensions/`](pi-extensions/))
| Extension | Purpose |
|-----------|---------|
| `env-loader.ts` | Load ~/.env.local at session start |
| `context.ts` | /context command — show loaded extensions, skills, context usage |
| `go-to-bed.ts` | Late night reminder |
| `peon-ping.ts` | Sound notifications |
| `gemini-image-gen.ts` | Gemini image generation (나노바나나 2flash) |
| `delegate.ts` | Spawn independent agent process (local or SSH remote) |
| `session-breakdown.ts` | Session cost breakdown |
| `whimsical.ts` | Personality touches |
Semantic memory extension lives in [andenken](https://github.com/junghan0611/andenken) (separate repo, loaded as pi package).
Telegram bridge lives in [entwurf](https://github.com/junghan0611/entwurf) (separate repo, loaded as pi package).
### Skills ([`skills/`](skills/)) — 27 skills
| Category | Skills |
|----------|--------|
| **Data Access** | denotecli, bibcli, gitcli, lifetract, gogcli, ghcli, day-query |
| **Agent Memory** | session-recap, dictcli, semantic-memory, improve-agent |
| **Writing** | botlog, botment, agenda, punchout |
| **Communication** | slack-latest, jiracli, telegram |
| **Web/Media** | brave-search, browser-tools, youtube-transcript, medium-extractor, summarize, transcribe |
| **Tools** | emacs, tmux, diskspace |
**Skill doc principle (LSP pattern):** Agents don't read full docs. Each SKILL.md has a single API table at the top — function/command + args + example. English body, Korean description only. Target: <100 lines, <4KB. Like LSP autocomplete: see the signature, call immediately.
### Pi Config ([`pi/`](pi/))
| File | Purpose |
|------|---------|
| `settings.json` | Default model, theme, thinking level |
| `keybindings.json` | Custom keybindings |
### Themes ([`pi-themes/`](pi-themes/))
1 theme: glg-dark (custom, Ghostty Dracula compatible).
### Commands ([`commands/`](commands/))
| Command | Purpose |
|---------|---------|
| `/recap` | Quick recap of previous session |
| `/pandoc-html` | Markdown/Org → Google Docs HTML/DOCX |
## Session Management — No Compact
**We don't use compact.** Compact = AI reads entire conversation and summarizes = expensive + slow.
Instead:
1. When conversation gets long, `/new` to start fresh
2. `/new` auto-indexes current session + recent 24h sessions
3. In new session, recover context:
- `session-recap -p <repo> -m 15` → 4KB summary (instant)
- `session_search` → semantic search (all sessions)
- `knowledge_search` → org knowledge base (3-layer expansion)
## Shell Aliases (`~/.bashrc.local`)
```bash
# Claude Code + 텔레그램
alias claude-tg='claude --channels plugin:telegram@claude-plugins-official'
alias claude-tgd='claude --channels plugin:telegram@claude-plugins-official --dangerously-skip-permissions'
# pi: --session-control 기본 (delegate 비동기 알림 + 세션 간 RPC)
alias pi='command pi --session-control'
# 분신 에이전트: 텔레그램 브릿지 (entwurf 패키지 설치 필요)
alias pi-home='command pi --session-control --telegram'
```
## One-Command Setup
```bash
git clone https://github.com/junghan0611/agent-config.git
cd agent-config
./run.sh setup # clone repos + build CLIs + symlink everything + npm install
./run.sh env # verify: system, API keys, links, binaries, memory index
```
`./run.sh setup` does:
- Clone source repos (if missing) — including andenken
- Build 6 native CLI binaries (Go + GraalVM)
- Symlink: pi extensions + skills (semantic-memory excluded) + themes + settings + keybindings
- Install: andenken as pi package (compiled extension)
- Symlink: Claude Code + OpenCode skills (full set including semantic-memory) + prompts
- Symlink: ~/.local/bin PATH binaries
- npm install for extensions and skills
## The -config Ecosystem
| Repo | Layer | Description |
|------|-------|-------------|
| [nixos-config](https://github.com/junghan0611/nixos-config) | OS | NixOS flakes, hardware, services |
| [doomemacs-config](https://github.com/junghan0611/doomemacs-config) | Editor | Doom Emacs, org-mode, denote |
| [zotero-config](https://github.com/junghan0611/zotero-config) | Bibliography | 8,000+ references, bibcli |
| **[agent-config](https://github.com/junghan0611/agent-config)** | **Agent infra** | **Extensions, skills, themes, settings** |
| **[andenken](https://github.com/junghan0611/andenken)** | **Memory** | **Semantic memory — sessions + org knowledge base** |
| **[entwurf](https://github.com/junghan0611/entwurf)** | **Presence** | **Telegram bridge — 분신 에이전트 원격 접근** |
| [memex-kb](https://github.com/junghan0611/memex-kb) | Knowledge | Legacy document conversion pipeline |
| [GLG-Mono](https://github.com/junghan0611/GLG-Mono) | Orchestration | OpenClaw bot configurations |
| [geworfen](https://github.com/junghan0611/geworfen) | Being | Existence data viewer — WebTUI agenda |
### Skill Source Repos
| CLI | Rep
[truncated…]PUBLIC HISTORY
First discoveredApr 1, 2026
IDENTITY
inferred
Identity inferred from code signals. No PROVENANCE.yml found.
Is this yours? Claim it →METADATA
platformgithub
first seenNov 14, 2025
last updatedMar 31, 2026
last crawled9 days ago
version—
README BADGE
Add to your README:
