Files
personal-wiki/README.md
T

96 lines
4.9 KiB
Markdown

# Personal LLM Wiki — Activation & Usage Guide
Repo: `https://gitea.maukit.com/hermes/personal-wiki`
Local clone: `/opt/data/wiki`
Isolated agent profile: `/opt/data/profiles/wiki/`
Profile `.env`: `/opt/data/profiles/wiki/.env` (`WIKI_PATH=/opt/data/wiki`)
## Activating the Write Agent (Wiki Profile)
The only agent allowed to write to `/opt/data/wiki` is the isolated `wiki` Hermes profile.
### Direct CLI activation
```bash
# Run the wiki agent interactively (isolated session, isolated memory/skills/state)
/opt/hermes/bin/hermes --profile wiki
# One-shot ingestion: provide source, agent writes updates and pushes
/opt/hermes/bin/hermes --profile wiki chat -q \
"Ingest /path/to/article.md into wiki. Update index, log, SCHEMA-consistent pages, and push."
# One-shot lint / check
/opt/hermes/bin/hermes --profile wiki chat -q \
"Run full lint (SCHEMA.md §3): orphan pages, broken wikilinks, contradictions, stale content, source drift, tag audit. Push results to queries/ or log.md."
# Worktree mode (prevents git conflicts if another agent has the repo open)
/opt/hermes/bin/hermes --profile wiki -w chat -q "Ingest new source and push commit."
```
### Programmatic (from any host/agent)
```bash
# Other agents / hosts can READ via git clone (public repo):
git clone https://gitea.maukit.com/hermes/personal-wiki.git
# Only the wiki profile writes. Other agents should never edit /opt/data/wiki directly.
# If another agent needs to ingest, delegate to the profile:
/opt/hermes/bin/hermes --profile wiki chat -q "Ingest: [description + source path/URL]"
```
### What the agent does on activation (per `SCHEMA.md`)
On every session it must:
1. Read `SCHEMA.md` (domain, conventions, taxonomy, thresholds)
2. Read `index.md` (existing pages, navigation)
3. Read last 30 lines of `log.md` (recent actions, rotation check)
4. Only after orientation: ingest / query / lint / create / archive / push
### Running checks (lint pattern from `SCHEMA.md` §3)
The profile agent supports these lint checks:
- Orphan pages (zero inbound `[[wikilinks]]`)
- Broken wikilinks (links to non-existent files)
- Index completeness (every `.md` page in `index.md`)
- Frontmatter validation (`title`, `created`, `updated`, `type`, `tags`, `sources`)
- Tag audit (tags must exist in taxonomy)
- Stale content (`updated` >90 days before newest source for same entity)
- Contradictions (`contested: true` / `contradictions:` tracking)
- Source drift (`sha256:` on `raw/` files — recompute, flag mismatch)
- Page size (>200 lines → split candidate)
- Log rotation (>500 entries → rotate to `log-YYYY.md`)
To trigger from CLI:
```bash
/opt/hermes/bin/hermes --profile wiki chat -q "Run lint (§3 SCHEMA.md) and append findings to log.md with file paths and severity grouping."
```
### Ingestion workflow (SCHEMA.md §1)
When ingesting a source (file / URL / pasted text):
1. Capture raw source → `raw/articles/`, `raw/papers/`, `raw/transcripts/`, or `raw/assets/`
2. Add raw frontmatter (`source_url`, `ingested`, `sha256` of body after frontmatter)
3. Check existing pages via `search_files` / `read_file` (orient first)
4. Create/update wiki pages (only if meeting Page Thresholds: 2+ mentions or central to 1 source)
5. Add cross-references (`[[wikilinks]]` — min 2 outbound per page)
6. Use only tags from taxonomy; add new tags to `SCHEMA.md` first
7. Set `confidence:` (`high` for multi-source; `medium` / `low` for single / opinion-heavy)
8. Note contradictions (`contested: true`, `contradictions:` list) instead of overwriting
9. Update `index.md` (alphabetically, count, last-updated)
10. Append to `log.md` (date, action, files created/updated)
11. Push: `git add -A && git commit -m "..." && git push origin main`
### Key files (verified in repo, commit `f83351c`)
- `/opt/data/wiki/SCHEMA.md` — conventions, taxonomy, thresholds, update policy
- `/opt/data/wiki/index.md` — navigation, sectioned catalog
- `/opt/data/wiki/log.md` — chronological actions (initialized 2026-09-18)
- `/opt/data/wiki/SETUP.md` — profile + repo info (not in `SCHEMA.md`; added after init)
- `/opt/data/profiles/wiki/.env` — `WIKI_PATH=/opt/data/wiki`
- Skill reference: `/opt/data/skills/research/llm-wiki/SKILL.md` (patched for `/opt/data/wiki` root)
### Security / isolation notes
- Only `wiki` profile writes; other profiles / hosts must not edit `/opt/data/wiki` directly.
- The repo (`gitea.maukit.com/hermes/personal-wiki`) is public; `floof` has push access (verified via Gitea API: user id 3).
- Token (`/opt/data/.secrets/gitea_hermes_token`) is for `gitea.maukit.com` auth; `mcp__gitea__*` requires manual `GITEA_ACCESS_TOKEN` injection (current session requires `WIKI_PATH` only).
- Second Telegram bot: deferred per session notes (`SETUP.md`, `log.md`, session context).
### Related references
- `SCHEMA.md` (§1 Ingest, §2 Query, §3 Lint, §4 Architecture, §5 Pitfalls)
- Skill file: `/opt/data/skills/research/llm-wiki/SKILL.md`
- Repo URL: `https://gitea.maukit.com/hermes/personal-wiki`