Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/7xuanlu/wenlannpx agentmods add skills/7xuanlu/wenlan/run-wenlanWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/7xuanlu/wenlan/run-wenlan)<a href="https://agentmods.dev/skills/7xuanlu/wenlan/run-wenlan"><img src="https://agentmods.dev/badge/skills/7xuanlu/wenlan/run-wenlan/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/7xuanlu/wenlan/run-wenlan"><img src="https://agentmods.dev/badge/skills/7xuanlu/wenlan/run-wenlan.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00053 | $0.02700 |
| Opus 5.5 | $0.00021 | $0.01080 |
| Sonnet 5.5 | $0.00011 | $0.00540 |
| Haiku 4.5 | $0.00005 | $0.00270 |
Grade C, and why
run-wenlan scanned grade C with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Recursive force deletehighDestructive command
rm -rf with a variable or a broad path is one typo away from removing the wrong tree.
# its own `rm -rf`; the daemon is handed the native spelling. `cygpath -m` Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
# ready: curl -sf --max-time 2 http://127.0.0.1:17878/api/health (poll up to ~120s) How it starts
The opening of the file, as written. The whole thing — 196 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Run wenlan-server (dev)
Build: cargo build -p wenlan-server -p wenlan (add -p wenlan-mcp for the MCP bridge).
Ports — one allocation, no guessing
Three ports exist and they are not interchangeable. Stopping "the isolated daemon" on the wrong one leaves a live daemon behind and reports success.
| Port | Owner | Notes |
|---|---|---|
| 7878 | the user's real daemon | never kill casually, never verify against |
| 17878 | manual isolated instance (this skill) | the recipes below |
| 17881 | scripts/smoke-cli.sh |
PORT= overrides |
| 17882 | scripts/smoke-mcp.sh |
PORT= overrides; runs alongside the CLI smoke |
The smokes own their own ports so both can run at once. Do not repoint them at 17878 — a manual daemon and a smoke would then fight over one listener, and the smoke's ownership assertion would fail on a daemon it did not start.
Isolated instance (default for verification)
Never verify against the shared prod daemon on :7878 — dev and prod share the
platform data dir by default. Isolating the port and WENLAN_DATA_DIR is not
enough: the default pages folder is .wenlan/pages under the OS user-home, NOT
under WENLAN_DATA_DIR, so a capture will write into the user's real notes
unless knowledge_path is set explicitly. Write the scratch config.json
BEFORE the daemon starts, then read the live value back from
/api/knowledge/path — the daemon reloads config per request, so a value
written afterwards proves nothing about what was already ingested.
WENLAN_NO_AUTOSTART=1 belongs on every harness command: without it a failed
connect starts the user's registered background service.
DATA_DIR="$(mktemp -d "${TMPDIR:-/tmp}/run.XXXXXX")"
mkdir -p "$DATA_DIR/pages"
printf '{"knowledge_path":"%s"}' "$DATA_DIR/pages" >"$DATA_DIR/config.json.tmp"
mv "$DATA_DIR/config.json.tmp" "$DATA_DIR/config.json" # atomic, before spawn
WENLAN_NO_AUTOSTART=1 WENLAN_PORT=17878 WENLAN_DATA_DIR="$DATA_DIR" \
./target/debug/wenlan-server &
# ready: curl -sf --max-time 2 http://127.0.0.1:17878/api/health (poll up to ~120s)
# check: curl -sf http://127.0.0.1:17878/api/knowledge/path → must be $DATA_DIR/pages
# stop: lsof -ti :17878 | xargs kill -9
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago Changed · +139 lines scan A → C 14b8fc9b0bc2
- 1mo ago First seen · 57 lines · 53 tokens per session scan A 937c3f7078fb
run-wenlan is a skill published in the GitHub repository 7xuanlu/wenlan (79 stars, last pushed 14d ago), licensed Apache-2.0. It adds 53 tokens to every session and 2,700 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it C with 2 findings (recursive force delete, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
run-wenlan-app
Build, launch, screenshot, and drive the wenlan-app Tauri desktop app in dev mode on macOS (WKWebView) or Windows (WebView2). Use when asked to run or start the app, verify a UI change in the real running app (not just tests), or take a screenshot of it.
wenlan-handoff
End a work session. Stores durable captures, writes a narrative session log, and automatically applies typed item-level deltas to the current Space Brief. Invoked as /wenlan-handoff.
curate
Power-user audit of Wenlan's pending surfaces: accept or dismiss pending revisions (conflicts/merges), or audit pending captures (not yet confirmed). Most users want /brief for revisions; that handles the daily flow. Use /wenlan curate only for explicit deep-walk audits after bulk imports, or to walk the full queue…
wenlan
A single command entry point for Wenlan, a tool that checks its setup and connection and turns stored memories into notes. It can also open or list notes and report its current status.
wenlan-capture
Save a memory to Wenlan in flow, or save something from this conversation as one note when the user asks for a note. Use proactively when the user states a preference, makes a decision, corrects you, or shares a durable fact. Invoked as /wenlan-capture .
wenlan-recall
Search Wenlan's local memory by query. Targeted lookup, not orientation. Invoked as /wenlan-recall . Use when the user asks "do you remember", "what do you know about", "look up".