mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-03 17:27:37 +08:00
Broad drift audit against origin/main (b52b63396).
Reference pages (most user-visible drift):
- slash-commands: add /busy, /curator, /footer, /indicator, /redraw, /steer
that were missing; drop non-existent /terminal-setup; fix /q footnote
(resolves to /queue, not /quit); extend CLI-only list with all 24
CLI-only commands in the registry
- cli-commands: add dedicated sections for hermes curator / fallback /
hooks (new subcommands not previously documented); remove stale
hermes honcho standalone section (the plugin registers dynamically
via hermes memory); list curator/fallback/hooks in top-level table;
fix completion to include fish
- toolsets-reference: document the real 52-toolset count; split browser
vs browser-cdp; add discord / discord_admin / spotify / yuanbao;
correct hermes-cli tool count from 36 to 38; fix misleading claim
that hermes-homeassistant adds tools (it's identical to hermes-cli)
- tools-reference: bump tool count 55 -> 68; add 7 Spotify, 5 Yuanbao,
2 Discord toolsets; move browser_cdp/browser_dialog to their own
browser-cdp toolset section
- environment-variables: add 40+ user-facing HERMES_* vars that were
undocumented (--yolo, --accept-hooks, --ignore-*, inference model
override, agent/stream/checkpoint timeouts, OAuth trace, per-platform
batch tuning for Telegram/Discord/Matrix/Feishu/WeCom, cron knobs,
gateway restart/connect timeouts); dedupe the Cron Scheduler section;
replace stale QQ_SANDBOX with QQ_PORTAL_HOST
User-guide (top level):
- cli.md: compression preserves last 20 turns, not 4 (protect_last_n: 20)
- configuration.md: display.platforms is the canonical per-platform
override key; tool_progress_overrides is deprecated and auto-migrated
- profiles.md: model.default is the config key, not model.model
- sessions.md: CLI/TUI session IDs use 6-char hex, gateway uses 8
- checkpoints-and-rollback.md: destructive-command list now matches
_DESTRUCTIVE_PATTERNS (adds rmdir, cp, install, dd)
- docker.md: the container runs as non-root hermes (UID 10000) via
gosu; fix install command (uv pip); add missing --insecure on the
dashboard compose example (required for non-loopback bind)
- security.md: systemctl danger pattern also matches 'restart'
- index.md: built-in tool count 47 -> 68
- integrations/index.md: 6 STT providers, 8 memory providers
- integrations/providers.md: drop fictional dashscope/qwen aliases
Features:
- overview.md: 9 image models (not 8), 9 TTS providers (not 5),
8 memory providers (Supermemory was missing)
- tool-gateway.md: 9 image models
- tools.md: extend common-toolsets list with search / messaging /
spotify / discord / debugging / safe
- fallback-providers.md: add 6 real providers from PROVIDER_REGISTRY
(lmstudio, kimi-coding-cn, stepfun, alibaba-coding-plan,
tencent-tokenhub, azure-foundry)
- plugins.md: Available Hooks table now includes on_session_finalize,
on_session_reset, subagent_stop
- built-in-plugins.md: add the 7 bundled plugins the page didn't
mention (spotify, google_meet, three image_gen providers, two
dashboard examples)
- web-dashboard.md: add --insecure and --tui flags
- cron.md: hermes cron create takes positional schedule/prompt, not
flags
Messaging:
- telegram.md: TELEGRAM_WEBHOOK_SECRET is now REQUIRED when
TELEGRAM_WEBHOOK_URL is set (gateway refuses to start without it
per GHSA-3vpc-7q5r-276h). Biggest user-visible drift in the batch.
- discord.md: HERMES_DISCORD_TEXT_BATCH_SPLIT_DELAY_SECONDS default
is 2.0, not 0.1
- dingtalk.md: document DINGTALK_REQUIRE_MENTION /
FREE_RESPONSE_CHATS / MENTION_PATTERNS / HOME_CHANNEL /
ALLOW_ALL_USERS that the adapter supports
- bluebubbles.md: drop fictional BLUEBUBBLES_SEND_READ_RECEIPTS env
var; the setting lives in platforms.bluebubbles.extra only
- qqbot.md: drop dead QQ_SANDBOX; add real QQ_PORTAL_HOST and
QQ_GROUP_ALLOWED_USERS
- wecom-callback.md: replace 'hermes gateway start' (service-only)
with 'hermes gateway' for first-time setup
Developer-guide:
- architecture.md: refresh tool/toolset counts (61/52), terminal
backend count (7), line counts for run_agent.py (~13.7k), cli.py
(~11.5k), main.py (~10.4k), setup.py (~3.5k), gateway/run.py
(~12.2k), mcp_tool.py (~3.1k); add yuanbao adapter, bump platform
adapter count 18 -> 20
- agent-loop.md: run_agent.py line count 10.7k -> 13.7k
- tools-runtime.md: add vercel_sandbox backend
- adding-tools.md: remove stale 'Discovery import added to
model_tools.py' checklist item (registry auto-discovery)
- adding-platform-adapters.md: mark send_typing / get_chat_info as
concrete base methods; only connect/disconnect/send are abstract
- acp-internals.md: ACP sessions now persist to SessionDB
(~/.hermes/state.db); acp.run_agent call uses
use_unstable_protocol=True
- cron-internals.md: gateway runs scheduler in a dedicated background
thread via _start_cron_ticker, not on a maintenance cycle; locking
is cross-process via fcntl.flock (Unix) / msvcrt.locking (Windows)
- gateway-internals.md: gateway/run.py ~12k lines
- provider-runtime.md: cron DOES support fallback (run_job reads
fallback_providers from config)
- session-storage.md: SCHEMA_VERSION = 11 (not 9); add migrations
10 and 11 (trigram FTS, inline-mode FTS5 re-index); add
api_call_count column to Sessions DDL; document messages_fts_trigram
and state_meta in the architecture tree
- context-compression-and-caching.md: remove the obsolete 'context
pressure warnings' section (warnings were removed for causing
models to give up early)
- context-engine-plugin.md: compress() signature now includes
focus_topic param
- extending-the-cli.md: _build_tui_layout_children signature now
includes model_picker_widget; add to default layout
Also fixed three pre-existing broken links/anchors the build warned
about (docker.md -> api-server.md, yuanbao.md -> cron-jobs.md and
tips#background-tasks, nix-setup.md -> #container-aware-cli).
Regenerated per-skill pages via website/scripts/generate-skill-docs.py
so catalog tables and sidebar are consistent with current SKILL.md
frontmatter.
docusaurus build: clean, no broken links or anchors.
264 lines
16 KiB
Markdown
264 lines
16 KiB
Markdown
---
|
||
title: "Baoyu Comic — Knowledge comics (知识漫画): educational, biography, tutorial"
|
||
sidebar_label: "Baoyu Comic"
|
||
description: "Knowledge comics (知识漫画): educational, biography, tutorial"
|
||
---
|
||
|
||
{/* This page is auto-generated from the skill's SKILL.md by website/scripts/generate-skill-docs.py. Edit the source SKILL.md, not this page. */}
|
||
|
||
# Baoyu Comic
|
||
|
||
Knowledge comics (知识漫画): educational, biography, tutorial.
|
||
|
||
## Skill metadata
|
||
|
||
| | |
|
||
|---|---|
|
||
| Source | Bundled (installed by default) |
|
||
| Path | `skills/creative/baoyu-comic` |
|
||
| Version | `1.56.1` |
|
||
| Author | 宝玉 (JimLiu) |
|
||
| License | MIT |
|
||
| Tags | `comic`, `knowledge-comic`, `creative`, `image-generation` |
|
||
|
||
## Reference: full SKILL.md
|
||
|
||
:::info
|
||
The following is the complete skill definition that Hermes loads when this skill is triggered. This is what the agent sees as instructions when the skill is active.
|
||
:::
|
||
|
||
# Knowledge Comic Creator
|
||
|
||
Adapted from [baoyu-comic](https://github.com/JimLiu/baoyu-skills) for Hermes Agent's tool ecosystem.
|
||
|
||
Create original knowledge comics with flexible art style × tone combinations.
|
||
|
||
## When to Use
|
||
|
||
Trigger this skill when the user asks to create a knowledge/educational comic, biography comic, tutorial comic, or uses terms like "知识漫画", "教育漫画", or "Logicomix-style". The user provides content (text, file path, URL, or topic) and optionally specifies art style, tone, layout, aspect ratio, or language.
|
||
|
||
## Reference Images
|
||
|
||
Hermes' `image_generate` tool is **prompt-only** — it accepts a text prompt and an aspect ratio, and returns an image URL. It does **NOT** accept reference images. When the user supplies a reference image, use it to **extract traits in text** that get embedded in every page prompt:
|
||
|
||
**Intake**: Accept file paths when the user provides them (or pastes images in conversation).
|
||
- File path(s) → copy to `refs/NN-ref-{slug}.{ext}` alongside the comic output for provenance
|
||
- Pasted image with no path → ask the user for the path via `clarify`, or extract style traits verbally as a text fallback
|
||
- No reference → skip this section
|
||
|
||
**Usage modes** (per reference):
|
||
|
||
| Usage | Effect |
|
||
|-------|--------|
|
||
| `style` | Extract style traits (line treatment, texture, mood) and append to every page's prompt body |
|
||
| `palette` | Extract hex colors and append to every page's prompt body |
|
||
| `scene` | Extract scene composition or subject notes and append to the relevant page(s) |
|
||
|
||
**Record in each page's prompt frontmatter** when refs exist:
|
||
|
||
```yaml
|
||
references:
|
||
- ref_id: 01
|
||
filename: 01-ref-scene.png
|
||
usage: style
|
||
traits: "muted earth tones, soft-edged ink wash, low-contrast backgrounds"
|
||
```
|
||
|
||
Character consistency is driven by **text descriptions** in `characters/characters.md` (written in Step 3) that get embedded inline in every page prompt (Step 5). The optional PNG character sheet generated in Step 7.1 is a human-facing review artifact, not an input to `image_generate`.
|
||
|
||
## Options
|
||
|
||
### Visual Dimensions
|
||
|
||
| Option | Values | Description |
|
||
|--------|--------|-------------|
|
||
| Art | ligne-claire (default), manga, realistic, ink-brush, chalk, minimalist | Art style / rendering technique |
|
||
| Tone | neutral (default), warm, dramatic, romantic, energetic, vintage, action | Mood / atmosphere |
|
||
| Layout | standard (default), cinematic, dense, splash, mixed, webtoon, four-panel | Panel arrangement |
|
||
| Aspect | 3:4 (default, portrait), 4:3 (landscape), 16:9 (widescreen) | Page aspect ratio |
|
||
| Language | auto (default), zh, en, ja, etc. | Output language |
|
||
| Refs | File paths | Reference images used for style / palette trait extraction (not passed to the image model). See [Reference Images](#reference-images) above. |
|
||
|
||
### Partial Workflow Options
|
||
|
||
| Option | Description |
|
||
|--------|-------------|
|
||
| Storyboard only | Generate storyboard only, skip prompts and images |
|
||
| Prompts only | Generate storyboard + prompts, skip images |
|
||
| Images only | Generate images from existing prompts directory |
|
||
| Regenerate N | Regenerate specific page(s) only (e.g., `3` or `2,5,8`) |
|
||
|
||
Details: [references/partial-workflows.md](https://github.com/NousResearch/hermes-agent/blob/main/skills/creative/baoyu-comic/references/partial-workflows.md)
|
||
|
||
### Art, Tone & Preset Catalogue
|
||
|
||
- **Art styles** (6): `ligne-claire`, `manga`, `realistic`, `ink-brush`, `chalk`, `minimalist`. Full definitions at `references/art-styles/<style>.md`.
|
||
- **Tones** (7): `neutral`, `warm`, `dramatic`, `romantic`, `energetic`, `vintage`, `action`. Full definitions at `references/tones/<tone>.md`.
|
||
- **Presets** (5) with special rules beyond plain art+tone:
|
||
|
||
| Preset | Equivalent | Hook |
|
||
|--------|-----------|------|
|
||
| `ohmsha` | manga + neutral | Visual metaphors, no talking heads, gadget reveals |
|
||
| `wuxia` | ink-brush + action | Qi effects, combat visuals, atmospheric |
|
||
| `shoujo` | manga + romantic | Decorative elements, eye details, romantic beats |
|
||
| `concept-story` | manga + warm | Visual symbol system, growth arc, dialogue+action balance |
|
||
| `four-panel` | minimalist + neutral + four-panel layout | 起承转合 structure, B&W + spot color, stick-figure characters |
|
||
|
||
Full rules at `references/presets/<preset>.md` — load the file when a preset is picked.
|
||
|
||
- **Compatibility matrix** and **content-signal → preset** table live in [references/auto-selection.md](https://github.com/NousResearch/hermes-agent/blob/main/skills/creative/baoyu-comic/references/auto-selection.md). Read it before recommending combinations in Step 2.
|
||
|
||
## File Structure
|
||
|
||
Output directory: `comic/{topic-slug}/`
|
||
- Slug: 2-4 words kebab-case from topic (e.g., `alan-turing-bio`)
|
||
- Conflict: append timestamp (e.g., `turing-story-20260118-143052`)
|
||
|
||
**Contents**:
|
||
| File | Description |
|
||
|------|-------------|
|
||
| `source-{slug}.md` | Saved source content (kebab-case slug matches the output directory) |
|
||
| `analysis.md` | Content analysis |
|
||
| `storyboard.md` | Storyboard with panel breakdown |
|
||
| `characters/characters.md` | Character definitions |
|
||
| `characters/characters.png` | Character reference sheet (downloaded from `image_generate`) |
|
||
| `prompts/NN-{cover\|page}-[slug].md` | Generation prompts |
|
||
| `NN-{cover\|page}-[slug].png` | Generated images (downloaded from `image_generate`) |
|
||
| `refs/NN-ref-{slug}.{ext}` | User-supplied reference images (optional, for provenance) |
|
||
|
||
## Language Handling
|
||
|
||
**Detection Priority**:
|
||
1. User-specified language (explicit option)
|
||
2. User's conversation language
|
||
3. Source content language
|
||
|
||
**Rule**: Use user's input language for ALL interactions:
|
||
- Storyboard outlines and scene descriptions
|
||
- Image generation prompts
|
||
- User selection options and confirmations
|
||
- Progress updates, questions, errors, summaries
|
||
|
||
Technical terms remain in English.
|
||
|
||
## Workflow
|
||
|
||
### Progress Checklist
|
||
|
||
```
|
||
Comic Progress:
|
||
- [ ] Step 1: Setup & Analyze
|
||
- [ ] 1.1 Analyze content
|
||
- [ ] 1.2 Check existing directory
|
||
- [ ] Step 2: Confirmation - Style & options ⚠️ REQUIRED
|
||
- [ ] Step 3: Generate storyboard + characters
|
||
- [ ] Step 4: Review outline (conditional)
|
||
- [ ] Step 5: Generate prompts
|
||
- [ ] Step 6: Review prompts (conditional)
|
||
- [ ] Step 7: Generate images
|
||
- [ ] 7.1 Generate character sheet (if needed) → characters/characters.png
|
||
- [ ] 7.2 Generate pages (with character descriptions embedded in prompt)
|
||
- [ ] Step 8: Completion report
|
||
```
|
||
|
||
### Flow
|
||
|
||
```
|
||
Input → Analyze → [Check Existing?] → [Confirm: Style + Reviews] → Storyboard → [Review?] → Prompts → [Review?] → Images → Complete
|
||
```
|
||
|
||
### Step Summary
|
||
|
||
| Step | Action | Key Output |
|
||
|------|--------|------------|
|
||
| 1.1 | Analyze content | `analysis.md`, `source-{slug}.md` |
|
||
| 1.2 | Check existing directory | Handle conflicts |
|
||
| 2 | Confirm style, focus, audience, reviews | User preferences |
|
||
| 3 | Generate storyboard + characters | `storyboard.md`, `characters/` |
|
||
| 4 | Review outline (if requested) | User approval |
|
||
| 5 | Generate prompts | `prompts/*.md` |
|
||
| 6 | Review prompts (if requested) | User approval |
|
||
| 7.1 | Generate character sheet (if needed) | `characters/characters.png` |
|
||
| 7.2 | Generate pages | `*.png` files |
|
||
| 8 | Completion report | Summary |
|
||
|
||
### User Questions
|
||
|
||
Use the `clarify` tool to confirm options. Since `clarify` handles one question at a time, ask the most important question first and proceed sequentially. See [references/workflow.md](https://github.com/NousResearch/hermes-agent/blob/main/skills/creative/baoyu-comic/references/workflow.md) for the full Step 2 question set.
|
||
|
||
**Timeout handling (CRITICAL)**: `clarify` can return `"The user did not provide a response within the time limit. Use your best judgement to make the choice and proceed."` — this is NOT user consent to default everything.
|
||
|
||
- Treat it as a default **for that one question only**. Continue asking the remaining Step 2 questions in sequence; each question is an independent consent point.
|
||
- **Surface the default to the user visibly** in your next message so they have a chance to correct it: e.g. `"Style: defaulted to ohmsha preset (clarify timed out). Say the word to switch."` — an unreported default is indistinguishable from never having asked.
|
||
- Do NOT collapse Step 2 into a single "use all defaults" pass after one timeout. If the user is genuinely absent, they will be equally absent for all five questions — but they can correct visible defaults when they return, and cannot correct invisible ones.
|
||
|
||
### Step 7: Image Generation
|
||
|
||
Use Hermes' built-in `image_generate` tool for all image rendering. Its schema accepts only `prompt` and `aspect_ratio` (`landscape` | `portrait` | `square`); it **returns a URL**, not a local file. Every generated page or character sheet must therefore be downloaded to the output directory.
|
||
|
||
**Prompt file requirement (hard)**: write each image's full, final prompt to a standalone file under `prompts/` (naming: `NN-{type}-[slug].md`) BEFORE calling `image_generate`. The prompt file is the reproducibility record.
|
||
|
||
**Aspect ratio mapping** — the storyboard's `aspect_ratio` field maps to `image_generate`'s format as follows:
|
||
|
||
| Storyboard ratio | `image_generate` format |
|
||
|------------------|-------------------------|
|
||
| `3:4`, `9:16`, `2:3` | `portrait` |
|
||
| `4:3`, `16:9`, `3:2` | `landscape` |
|
||
| `1:1` | `square` |
|
||
|
||
**Download step** — after every `image_generate` call:
|
||
1. Read the URL from the tool result
|
||
2. Fetch the image bytes using an **absolute** output path, e.g.
|
||
`curl -fsSL "<url>" -o /abs/path/to/comic/<slug>/NN-page-<slug>.png`
|
||
3. Verify the file exists and is non-empty at that exact path before proceeding to the next page
|
||
|
||
**Never rely on shell CWD persistence for `-o` paths.** The terminal tool's persistent-shell CWD can change between batches (session expiry, `TERMINAL_LIFETIME_SECONDS`, a failed `cd` that leaves you in the wrong directory). `curl -o relative/path.png` is a silent footgun: if CWD has drifted, the file lands somewhere else with no error. **Always pass a fully-qualified absolute path to `-o`**, or pass `workdir=<abs path>` to the terminal tool. Incident Apr 2026: pages 06-09 of a 10-page comic landed at the repo root instead of `comic/<slug>/` because batch 3 inherited a stale CWD from batch 2 and `curl -o 06-page-skills.png` wrote to the wrong directory. The agent then spent several turns claiming the files existed where they didn't.
|
||
|
||
**7.1 Character sheet** — generate it (to `characters/characters.png`, aspect `landscape`) when the comic is multi-page with recurring characters. Skip for simple presets (e.g., four-panel minimalist) or single-page comics. The prompt file at `characters/characters.md` must exist before invoking `image_generate`. The rendered PNG is a **human-facing review artifact** (so the user can visually verify character design) and a reference for later regenerations or manual prompt edits — it does **not** drive Step 7.2. Page prompts are already written in Step 5 from the **text descriptions** in `characters/characters.md`; `image_generate` cannot accept images as visual input.
|
||
|
||
**7.2 Pages** — each page's prompt MUST already be at `prompts/NN-{cover|page}-[slug].md` before invoking `image_generate`. Because `image_generate` is prompt-only, character consistency is enforced by **embedding character descriptions (sourced from `characters/characters.md`) inline in every page prompt during Step 5**. The embedding is done uniformly whether or not a PNG sheet is produced in 7.1; the PNG is only a review/regeneration aid.
|
||
|
||
**Backup rule**: existing `prompts/…md` and `…png` files → rename with `-backup-YYYYMMDD-HHMMSS` suffix before regenerating.
|
||
|
||
Full step-by-step workflow (analysis, storyboard, review gates, regeneration variants): [references/workflow.md](https://github.com/NousResearch/hermes-agent/blob/main/skills/creative/baoyu-comic/references/workflow.md).
|
||
|
||
## References
|
||
|
||
**Core Templates**:
|
||
- [analysis-framework.md](https://github.com/NousResearch/hermes-agent/blob/main/skills/creative/baoyu-comic/references/analysis-framework.md) - Deep content analysis
|
||
- [character-template.md](https://github.com/NousResearch/hermes-agent/blob/main/skills/creative/baoyu-comic/references/character-template.md) - Character definition format
|
||
- [storyboard-template.md](https://github.com/NousResearch/hermes-agent/blob/main/skills/creative/baoyu-comic/references/storyboard-template.md) - Storyboard structure
|
||
- [ohmsha-guide.md](https://github.com/NousResearch/hermes-agent/blob/main/skills/creative/baoyu-comic/references/ohmsha-guide.md) - Ohmsha manga specifics
|
||
|
||
**Style Definitions**:
|
||
- `references/art-styles/` - Art styles (ligne-claire, manga, realistic, ink-brush, chalk, minimalist)
|
||
- `references/tones/` - Tones (neutral, warm, dramatic, romantic, energetic, vintage, action)
|
||
- `references/presets/` - Presets with special rules (ohmsha, wuxia, shoujo, concept-story, four-panel)
|
||
- `references/layouts/` - Layouts (standard, cinematic, dense, splash, mixed, webtoon, four-panel)
|
||
|
||
**Workflow**:
|
||
- [workflow.md](https://github.com/NousResearch/hermes-agent/blob/main/skills/creative/baoyu-comic/references/workflow.md) - Full workflow details
|
||
- [auto-selection.md](https://github.com/NousResearch/hermes-agent/blob/main/skills/creative/baoyu-comic/references/auto-selection.md) - Content signal analysis
|
||
- [partial-workflows.md](https://github.com/NousResearch/hermes-agent/blob/main/skills/creative/baoyu-comic/references/partial-workflows.md) - Partial workflow options
|
||
|
||
## Page Modification
|
||
|
||
| Action | Steps |
|
||
|--------|-------|
|
||
| **Edit** | **Update prompt file FIRST** → regenerate image → download new PNG |
|
||
| **Add** | Create prompt at position → generate with character descriptions embedded → renumber subsequent → update storyboard |
|
||
| **Delete** | Remove files → renumber subsequent → update storyboard |
|
||
|
||
**IMPORTANT**: When updating pages, ALWAYS update the prompt file (`prompts/NN-{cover|page}-[slug].md`) FIRST before regenerating. This ensures changes are documented and reproducible.
|
||
|
||
## Pitfalls
|
||
|
||
- Image generation: 10-30 seconds per page; auto-retry once on failure
|
||
- **Always download** the URL returned by `image_generate` to a local PNG — downstream tooling (and the user's review) expects files in the output directory, not ephemeral URLs
|
||
- **Use absolute paths for `curl -o`** — never rely on persistent-shell CWD across batches. Silent footgun: files land in the wrong directory and subsequent `ls` on the intended path shows nothing. See Step 7 "Download step".
|
||
- Use stylized alternatives for sensitive public figures
|
||
- **Step 2 confirmation required** - do not skip
|
||
- **Steps 4/6 conditional** - only if user requested in Step 2
|
||
- **Step 7.1 character sheet** - recommended for multi-page comics, optional for simple presets. The PNG is a review/regeneration aid; page prompts (written in Step 5) use the text descriptions in `characters/characters.md`, not the PNG. `image_generate` does not accept images as visual input
|
||
- **Strip secrets** — scan source content for API keys, tokens, or credentials before writing any output file
|