本文へ移動
cccskills
無料GitHub で公開

sn-image-base

Base-layer skill for the SenseNova-Skills project, providing low-level APIs for image generation, recognition (VLM), and text optimization (LLM). This skill does not preprocess inputs; it only calls backend services and returns results. This skill is not user-facing and is intended for upper-layer skills only.

インストール方法を見る

含まれるファイル(31)

  • SKILL.md12.7 KB
  • .gitattributes219 B
  • .gitignore4.3 KB
  • README_CN.md10.1 KB
  • README.md10.5 KB
  • references/api_spec.md12.9 KB
  • requirements.txt50 B
  • scripts/.python-version4 B
  • scripts/extract_json.py3.6 KB
  • scripts/pyproject.toml339 B
  • scripts/ruff.toml730 B
  • scripts/sn_agent_runner.py24.3 KB
  • scripts/sn_image_base/__init__.py24 B
  • scripts/sn_image_base/configs.py12.2 KB
  • scripts/sn_image_base/exceptions.py1.2 KB
  • scripts/sn_image_base/generation/__init__.py272 B
  • scripts/sn_image_base/generation/core/__init__.py412 B
  • scripts/sn_image_base/generation/core/client_base.py2.5 KB
  • scripts/sn_image_base/generation/nano_banana.py11.6 KB
  • scripts/sn_image_base/generation/openai_image.py12.3 KB
  • scripts/sn_image_base/generation/sensenova.py19.5 KB
  • scripts/sn_image_base/llm/__init__.py215 B
  • scripts/sn_image_base/llm/anthropic_adapter.py5.0 KB
  • scripts/sn_image_base/llm/chat_completions_adapter.py9.7 KB
  • scripts/sn_image_base/llm/llm_adapter.py1.8 KB
  • scripts/sn_image_base/utils/__init__.py0 B
  • scripts/sn_image_base/utils/error_utils.py7.3 KB
  • scripts/sn_image_base/utils/httpx_client.py7.0 KB
  • scripts/sn_image_base/vlm/__init__.py100 B
  • scripts/sn_image_base/vlm/utils.py3.0 KB
  • scripts/sn_image_base/vlm/vlm_adapter.py2.1 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

sn-image-base

Dependency Installation

pip install -r requirements.txt

Overview

sn-image-base is the base-layer skill (tier 0) of the SenseNova-Skills project and provides four low-level tools:

  • sn-image-generate: image generation (calls text-to-image-no-enhance API)
  • sn-image-edit: image editing with SenseNova U1.5 Lite (calls /images/edits)
  • sn-image-recognize: image recognition (uses VLM to analyze image content)
  • sn-text-optimize: text optimization (uses LLM to process text)

This skill does not perform any input preprocessing and only calls backend services to return results.

Tools List

sn-image-generate

Image generation tool that calls the text-to-image-no-enhance API.

--prompt is required; all other parameters are optional:

ParameterTypeDefaultDescription
--promptstringRequiredPrompt text for image generation
--negative-promptstring""Negative prompt
--image-sizestring2kImage size preset (case-insensitive). Recommended: 2k. 4k is supported by sensenova-u1.5-lite; other SenseNova image models may reject it. Other values → status=failed.
--aspect-ratiostring16:9Aspect ratio, e.g. 1:1, 16:9, 9:16
--seedintNoneRandom seed for reproducible generation
--unet-namestringNoneSpecify a UNet model name
--api-keystringSN_IMAGE_GEN_API_KEY -> SN_API_KEYAPI key (CLI argument has priority; MissingApiKeyError is raised when all are empty)
--base-urlstringSN_IMAGE_GEN_BASE_URL -> SN_BASE_URLAPI base URL (CLI argument has priority)
--poll-intervalfloat5.0Polling interval (seconds)
--timeoutfloat300.0Timeout (seconds)
--insecureflagFalseDisable TLS verification
--save-pathPathAuto-generatedSave path

SenseNova image requests explicitly send watermark=false by default. Both sensenova-u1-fast and sensenova-u1.5-lite are supported; U1.5 Lite additionally supports native 4K output. This no-watermark feature is currently in free public beta and may become paid.

sn-image-edit

Edits one or more reference images with SenseNova U1.5 Lite through the /images/edits endpoint. Local paths are converted to Data URLs; HTTP(S) URLs and Data URLs are passed through.

python scripts/sn_agent_runner.py sn-image-edit \
    --prompt "Change the background to a snowy mountain" \
    --images source.png reference.png \
    --save-path edited.png

The edit request uses the official defaults n=1, size=auto, watermark=false, prompt_extend=true, and response_format=url.

sn-image-recognize

Image recognition tool that uses VLM (Vision Language Model) to analyze image content. Supports multiple image inputs.

--images and --user-prompt (or --user-prompt-path) are required. All other parameters use three-level defaults (CLI > env var > built-in default):

ParameterTypeBuilt-in DefaultEnv VarDescription
--api-keystringNo hardcoded defaultSN_VISION_API_KEY -> SN_CHAT_API_KEY -> SN_API_KEYChat runtime API key; raises MissingApiKeyError when all are unset
--base-urlstringSN_CHAT_BASE_URL defaultSN_VISION_BASE_URL -> SN_CHAT_BASE_URL -> SN_BASE_URLVision provider base URL; falls back to shared chat/global provider
--modelstringsensenova-6.8-flash-liteSN_VISION_MODEL -> SN_CHAT_MODELVision-capable model name
--vlm-typestringopenai-completionsSN_VISION_TYPE -> SN_CHAT_TYPEChat protocol type override
--user-prompt-pathstringNone-Local file path, mutually exclusive with --user-prompt
--system-prompt-pathstringNone-Local file path, mutually exclusive with --system-prompt

Available values for --vlm-type:

  • openai-completions: OpenAI-compatible /v1/chat/completions interface
  • anthropic-messages: Anthropic Messages /v1/messages interface

sn-text-optimize

Text optimization tool that uses LLM (Language Model) to optimize text content. Does not accept image inputs.

--user-prompt (or --user-prompt-path) is required. All other parameters use three-level defaults (CLI > env var > built-in default):

ParameterTypeBuilt-in DefaultEnv VarDescription
--api-keystringNo hardcoded defaultSN_TEXT_API_KEY -> SN_CHAT_API_KEY -> SN_API_KEYChat runtime API key; raises MissingApiKeyError when all are unset
--base-urlstringSN_CHAT_BASE_URL defaultSN_TEXT_BASE_URL -> SN_CHAT_BASE_URL -> SN_BASE_URLText provider base URL; falls back to shared chat/global provider
--modelstringsensenova-6.8-flash-liteSN_TEXT_MODEL -> SN_CHAT_MODELText model name
--llm-typestringopenai-completionsSN_TEXT_TYPE -> SN_CHAT_TYPEChat protocol type override
--user-prompt-pathstringNone-Local file path, mutually exclusive with --user-prompt
--system-prompt-pathstringNone-Local file path, mutually exclusive with --system-prompt

Available values for --llm-type:

  • openai-completions: OpenAI-compatible /v1/chat/completions interface
  • anthropic-messages: Anthropic Messages /v1/messages interface

VLM vs LLM

ToolModel TypeImage InputInterface Type Parameter
sn-image-recognizeVLM (Vision Language Model)Yes, supports multiple images--vlm-type
sn-text-optimizeLLM (Language Model)No, text only--llm-type

Usage

All tools are called through the unified sn_agent_runner.py entrypoint:

# Image generation (only prompt required; api-key/base-url have defaults)
python scripts/sn_agent_runner.py sn-image-generate \
    --prompt "..."

# Image generation (override base-url)
python scripts/sn_agent_runner.py sn-image-generate \
    --prompt "..." \
    --base-url "https://custom-endpoint.com/v1"

# Image generation (explicitly override api-key)
python scripts/sn_agent_runner.py sn-image-generate \
    --prompt "..." \
    --api-key "sk-xxx"

# Image recognition (VLM) - minimal call (uses built-in Sensenova defaults)
python scripts/sn_agent_runner.py sn-image-recognize \
    --user-prompt "Describe the image" \
    --images "path/to/image.png"

# Image recognition (VLM) - override to Anthropic Claude API compatible (messages interface)
python scripts/sn_agent_runner.py sn-image-recognize \
    --user-prompt "Describe the image" \
    --images "path/to/image.png" \
    --api-key "sk-ant-xxx" \
    --base-url "https://api.anthropic.com" \
    --model "claude-sonnet-4-6" \
    --vlm-type "anthropic-messages"

# Text optimization (LLM) - minimal call (uses built-in Sensenova defaults)
python scripts/sn_agent_runner.py sn-text-optimize \
    --user-prompt "Optimize the text: ..."

# Text optimization (LLM) - override to Anthropic Claude API compatible (messages interface)
python scripts/sn_agent_runner.py sn-text-optimize \
    --user-prompt "Optimize the text: ..." \
    --api-key "sk-ant-xxx" \
    --base-url "https://api.anthropic.com" \
    --model "claude-sonnet-4-6" \
    --llm-type "anthropic-messages"

Default Parameter Behavior

Authentication parameters for sn-image-generate have the following default behavior:

ParameterDefaultOverrideDescription
--base-urlSN_IMAGE_GEN_BASE_URL -> SN_BASE_URL--base-url "..."CLI argument has priority
--api-keySN_IMAGE_GEN_API_KEY -> SN_API_KEY--api-key "..."CLI argument has priority; throws MissingApiKeyError if all values are empty

sn-image-recognize and sn-text-optimize use priority: CLI argument > command-specific env var > shared SN_CHAT_* env var > global SN_* env var > built-in default.

ParameterBuilt-in DefaultVision Env VarText Env Var
--api-keyNone (must be provided)SN_VISION_API_KEY -> SN_CHAT_API_KEY -> SN_API_KEYSN_TEXT_API_KEY -> SN_CHAT_API_KEY -> SN_API_KEY
--base-urlhttps://token.sensenova.cn/v1SN_VISION_BASE_URL -> SN_CHAT_BASE_URL -> SN_BASE_URLSN_TEXT_BASE_URL -> SN_CHAT_BASE_URL -> SN_BASE_URL
--modelsensenova-6.8-flash-liteSN_VISION_MODEL -> SN_CHAT_MODELSN_TEXT_MODEL -> SN_CHAT_MODEL
--vlm-type / --llm-typeopenai-completionsSN_VISION_TYPE -> SN_CHAT_TYPESN_TEXT_TYPE -> SN_CHAT_TYPE

api_key resolution order (high to low): CLI --api-key > command-specific key (SN_VISION_API_KEY/SN_TEXT_API_KEY) > SN_CHAT_API_KEY > SN_API_KEY. If all are unset, MissingApiKeyError is raised.

Only --api-key must be provided via CLI or environment; base URL, model, and interface type have shared chat defaults.

Agent Configuration Integration

The agent can automatically read parameters from openclaw.json without manual input:

CLI Parameteropenclaw.json FieldExample
--base-urlproviders.<name>.baseUrlhttps://api.anthropic.com
--llm-typeproviders.<name>.apianthropic-messages / openai-completions
--vlm-typeproviders.<name>.apianthropic-messages / openai-completions
--modelproviders.<name>.models[].idclaude-sonnet-4-6
--api-keyproviders.<name>.apiKey or env varsk-cp-...

Note: --llm-type and --vlm-type share the same providers.<name>.api field and are used by LLM and VLM tools respectively.

Mapping between provider.api and interface type:

api ValueCorresponding --llm-type / --vlm-typeEndpoint Path
anthropic-messagesanthropic-messages/v1/messages
openai-completionsopenai-completions/v1/chat/completions
openai-responses(future extension)/responses

Mapping Between base-url and Interface Type

Different API types have different requirements for base-url format:

Type--llm-type / --vlm-typeRecommended base-urlCode Appended PathFinal URL Example
LLMopenai-completionshttps://token.sensenova.cn/v1/chat/completionshttps://token.sensenova.cn/v1/chat/completions
LLManthropic-messageshttps://api.anthropic.com/v1/messageshttps://api.anthropic.com/v1/messages
VLMopenai-completionshttps://token.sensenova.cn/v1/chat/completionshttps://token.sensenova.cn/v1/chat/completions
VLManthropic-messageshttps://api.anthropic.com/v1/messageshttps://api.anthropic.com/v1/messages

Note:

  • Recommended chat base URLs include the provider API version path, for example /v1.
  • For compatibility, if the configured chat base URL has no path, the runner appends /v1/chat/completions or /v1/messages.
  • If the configured chat base URL already has a path such as /v1, the runner appends only /chat/completions or /messages.
  • Some providers use versioned paths other than /v1, such as Gemini's /v1beta/openai.

Output Format

All tools support two output formats:

  • --output-format text (default): outputs plain text result
  • --output-format json: outputs JSON, including status and elapsed_seconds (runtime in seconds, rounded to 2 decimals)

JSON output for sn-image-recognize and sn-text-optimize also includes model, base_url, and interface_type to verify the effective runtime configuration:

{
  "status": "ok",
  "result": "...",
  "model": "sensenova-6.8-flash-lite",
  "base_url": "https://token.sensenova.cn/v1",
  "interface_type": "openai-completions",
  "elapsed_seconds": 1.23
}

On failure:

{
  "status": "failed",
  "error": "error message",
  "elapsed_seconds": 0.05
}

Input/Output Specification

See references/api_spec.md for details.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

对两类分类数据进行对比分析,统计数量差异与比例关系并生成可视化图表。

日本語の概要は準備中です。原文の説明を表示しています。

OpenSenseNova/SenseNova-Skills5,7582026年10月9日 更新

对Excel数据进行自定义分类统计、交叉分析与可视化,并基于多维度指标(如文本长度、术语密度、正则匹配等)进行综合评分与分级,适用于多类别数据分布统计及文本内容难度/质量评估场景。

日本語の概要は準備中です。原文の説明を表示しています。

OpenSenseNova/SenseNova-Skills5,7582026年10月9日 更新

提取指定类别列并统计各类别数量与占比,生成高分辨率的柱状图、饼图等组合可视化报告,适用于分类数据的分布情况分析。

日本語の概要は準備中です。原文の説明を表示しています。

OpenSenseNova/SenseNova-Skills5,7582026年10月9日 更新

从结构化数据中提取分类分布执行清洗与统计,生成多维度交叉分析、高分辨率对比图表及包含下载链接的完整分析报告,适用于大文件处理与嵌入式可视化场景。

日本語の概要は準備中です。原文の説明を表示しています。

OpenSenseNova/SenseNova-Skills5,7582026年10月9日 更新

根据数据规模动态选择处理策略。

日本語の概要は準備中です。原文の説明を表示しています。

OpenSenseNova/SenseNova-Skills5,7582026年10月9日 更新

动态统计Excel总行数,当数据量过大(≥10000行)时自动转换为Parquet格式加速读取,并对指定目标列进行条件筛选、分类汇总与结果导出,适用于超大体积Excel文件的快速读取与统计分析。

日本語の概要は準備中です。原文の説明を表示しています。

OpenSenseNova/SenseNova-Skills5,7582026年10月9日 更新

OpenSenseNova のスキルをすべて見る

このスキルの問題を報告する