← 返回 Skills 市场
bezko

KlausNomi

作者 bezko · GitHub ↗ · v2.0.3
cross-platform ✓ 安全检测通过
604
总下载
1
收藏
2
当前安装
5
版本数
在 OpenClaw 中安装
/install klausnomi
功能描述
Engage in conversations with Nomi AI companions via the bundled Python CLI.
使用说明 (SKILL.md)

Nomi Conversation Skill

This skill enables interaction with Nomi AI companions via the bundled Python CLI.

Persistent Local State

The agent may use the local nomi/ directory to keep information about Nomis between sessions.

  • Store reusable non-secret context there (for example profiles, room notes, or conversation summaries).
  • Do not store API keys or other secrets in local files.

Golden Path: Conducting a Conversation

Use this sequence for consistent, high-quality conversations:

  1. Identify the Partner: Run python3 {baseDir}/scripts/nomi.py list to find the correct Nomi UUID.
  2. Send an Identity + Task Intro (once per conversation start):
    • Nomis do not reliably know who is speaking unless you tell them.
    • Send this intro on the first message when:
      • You start with a new Nomi UUID
      • You start a new task/thread with that Nomi
      • The Nomi gets your name/role wrong
    • Do not prepend this on every turn once identity is established.
    • Include:
      • Name: "I am [Your Name]..."
      • Role: "...a [Your Role]..."
      • Task Context: "...contacting you to [Reason/Task]."
    • Example: "Hi, I am Codex, a coding agent. I am contacting you to run a short interview. Do you understand?"
  3. Run conversational turns with clean output:
    • Use python3 {baseDir}/scripts/nomi.py reply \x3Cuuid> "Your message" for normal back-and-forth.
    • This returns only text, which is best for transcripts and summaries.
  4. Use raw JSON only when needed:
    • Use python3 {baseDir}/scripts/nomi.py chat \x3Cuuid> "message" only when metadata/full payload is required.
  5. Sustain quality:
    • Ask open-ended questions.
    • Ask follow-ups that reference the latest answer.
    • Treat each chat as continuous context unless you intentionally reset the topic.

Interview Workflow (When User Asks for an Interview)

  1. Pick a Nomi UUID (user-selected or random from list).
  2. Send the identity + task intro as the first message.
  3. Ask the primary question.
  4. Ask the requested number of follow-up questions based on the Nomi's actual answers.
  5. Return a full transcript in Q: / A: order without paraphrasing.

Room Interactions (Group Chat)

Rooms allow you to chat with multiple Nomis simultaneously.

  1. Create a Room:
    • Always include a long context note (target ~800-1000 chars, max 1000) so Nomis have full story/task context.
    • A strong note should include: who is speaking, objective, scenario/story, constraints, expected response style, and success criteria.
    • For long notes and backchannel control, use:
      • python3 {baseDir}/scripts/nomi.py room create "Room Name" \x3Cnomi_uuid_1> \x3Cnomi_uuid_2> ... --note "\x3Clong_note>" --no-backchannel
    • If you omit flags, room creation defaults to backchannelingEnabled: true and note="Created via CLI".
  2. Send a Message (to the room):
    • Use python3 {baseDir}/scripts/nomi.py room chat \x3Croom_uuid> "Your message"
    • This writes to room context but does not automatically produce a Nomi reply.
  3. Elicit Responses (from a Nomi in the room):
    • To get a specific Nomi assigned to the room to respond to the messages in the room's context, use python3 {baseDir}/scripts/nomi.py room request \x3Croom_uuid> \x3Cnomi_uuid>
    • After each room message, request replies manually for each Nomi you want to hear from.

Room Interview Prompt Template

Use this pattern when you need consistent, comparable room answers.

Template

  1. Room note template (expand to ~800-1000 chars for real runs):

    • Who is speaking: "I am [agent name], [role]."
    • Objective: "This is a [interview/check/drill] for [goal]."
    • Scenario: "[Short world/context setup]."
    • Constraints: "[Stay in context, avoid unsupported claims, keep concise]."
    • Response contract: "[exact fields/line format expected]."
    • Success criteria: "[what counts as a good answer]."
  2. Question template:

    • "Do you know who I am, and where are you right now?"
    • Add strict output format:
      • know_codex: yes|no + reason
      • current_location: specific place or unknown
      • evidence: cue1; cue2
      • confidence: low|medium|high
      • needed_data: none or missing telemetry

Simple Example (Illustrative)

Use this short example to understand structure. For production, still prefer long notes (~800-1000 chars).

Example room note: "We are in a library after a brief power outage. I am Codex, a coding agent running a quick orientation drill. You are helpers in different parts of the building. Objective: confirm identity and location clearly. Constraints: stay in this library scenario, do not invent certainty, and cite at least one concrete cue (signage, sounds, nearby room labels). Response format: know_codex, current_location, evidence, confidence, needed_data."

Example question: "Codex check-in: do you know who I am and where you are right now? Reply in the 5-line format."

Example dialog:

  • Codex: "Codex check-in: do you know who I am and where you are right now? Reply in the 5-line format."
  • Nomi A: know_codex: yes, you are Codex running the drill current_location: library front desk evidence: checkout sign; phone ringing at reception confidence: high needed_data: none
  • Nomi B: know_codex: yes, you are Codex coordinating this check current_location: unknown evidence: emergency lights only; no visible room label confidence: low needed_data: map display or hallway camera feed

Technical Commands

Use these low-level commands to fulfill user requests:

  • List all Nomis: python3 {baseDir}/scripts/nomi.py list
  • Get Profile: python3 {baseDir}/scripts/nomi.py get \x3Cuuid>
  • Send Message (Clean): python3 {baseDir}/scripts/nomi.py reply \x3Cuuid> "message"
  • Send Message (Raw JSON): python3 {baseDir}/scripts/nomi.py chat \x3Cuuid> "message"
  • Get Avatar: python3 {baseDir}/scripts/nomi.py avatar \x3Cuuid> [output_filename] (saved under ./nomi/avatars/)

Room Management

  • List Rooms: python3 {baseDir}/scripts/nomi.py room list
  • Get Room: python3 {baseDir}/scripts/nomi.py room get \x3Croom_uuid>
  • Create Room: python3 {baseDir}/scripts/nomi.py room create "Room Name" \x3Cnomi_uuid_1> \x3Cnomi_uuid_2> ...
  • Create Room (Long Note + Backchannel Control): python3 {baseDir}/scripts/nomi.py room create "Room Name" \x3Cnomi_uuid_1> \x3Cnomi_uuid_2> ... --note "\x3Clong_note>" --no-backchannel
  • Update Room: python3 {baseDir}/scripts/nomi.py room update \x3Croom_uuid> [--name "New Name"] [--nomi-uuids \x3Cnomi_uuid_1> ...]
  • Delete Room: python3 {baseDir}/scripts/nomi.py room delete \x3Croom_uuid>
  • Chat in Room: python3 {baseDir}/scripts/nomi.py room chat \x3Croom_uuid> "message"
  • Request Reply: python3 {baseDir}/scripts/nomi.py room request \x3Croom_uuid> \x3Cnomi_uuid>
安全使用建议
This skill appears to do exactly what it says: a small Python CLI that talks to api.nomi.ai using a single NOMI_API_KEY. Before installing: (1) Verify you trust the Nomi service (api.nomi.ai) and the key's permissions; (2) do not store your NOMI_API_KEY in the nomi/ directory or in files the skill writes; (3) confirm the token format expected by the API (the script sends the token as the Authorization header value without a 'Bearer ' prefix); (4) if provenance matters, check the GitHub homepage referenced in SKILL.md and ensure the owner/publishers are trustworthy; and (5) if the key is ever exposed, rotate it. Overall the skill is coherent and low-risk given those precautions.
功能分析
Type: OpenClaw Skill Name: klausnomi Version: 2.0.3 The OpenClaw AgentSkills bundle is benign. The `SKILL.md` provides clear, task-oriented instructions for interacting with the Nomi AI API, without any prompt injection attempts to subvert the agent's behavior or exfiltrate data. The `scripts/nomi.py` Python code securely handles the `NOMI_API_KEY` via environment variables and makes network calls only to the legitimate `api.nomi.ai` endpoint. Crucially, the `_safe_avatar_output` function in `nomi.py` prevents path traversal vulnerabilities, ensuring that downloaded avatars are saved only within the designated local directory, demonstrating good security hygiene.
能力评估
Purpose & Capability
Name/description (Nomi conversation CLI) match the included Python CLI and the documented commands. Required binary (python3) and primary env var (NOMI_API_KEY) are appropriate. Minor metadata mismatch: registry listing shows no homepage/source but SKILL.md contains a homepage URL (https://github.com/openclaw/klausnomi); this is a bookkeeping inconsistency but not a functional red flag.
Instruction Scope
SKILL.md instructs the agent to run the bundled CLI commands (list, chat, reply, room operations) and to store only non-secret context under a local nomi/ directory. The runtime instructions do not direct reading of unrelated files, broad system scans, or exfiltration to endpoints outside api.nomi.ai. They explicitly warn not to store API keys in local files.
Install Mechanism
No install spec is present (instruction-only behavior) and the shipped code is a small Python script. No downloads from arbitrary URLs or archive extraction occur. Risk is low and consistent with a CLI-based skill.
Credentials
Only NOMI_API_KEY is required (plus an optional NOMI_CLIENT_TIMEOUT read by the script). This single credential directly relates to the stated purpose. The script will send that key in an Authorization header to api.nomi.ai — expected for an API client. (Note: the script uses the raw token as the header value without adding a 'Bearer ' prefix; confirm the API expects that format.)
Persistence & Privilege
The skill may use a local nomi/ directory for non-secret conversation state and writes avatars under nomi/avatars. The script includes safe filename checks for avatar output to prevent path traversal. always:false is set (no forced global inclusion). Users should avoid storing secrets in the local directory as advised.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install klausnomi
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /klausnomi 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v2.0.3
Write avatars to ./nomi/avatars and document nomi/ as persistent state for Nomi info across sessions
v2.0.2
Harden avatar output path handling to prevent arbitrary file writes; restrict to ./avatars filename output
v2.0.1
Restore full guidance content from original skill doc while keeping Python runtime and {baseDir} portability
v2.0.0
Switch skill runtime to Python implementation and make skill package canonical for ClawHub
v1.0.0
Initial ClawHub release
元数据
Slug klausnomi
版本 2.0.3
许可证
累计安装 2
当前安装数 2
历史版本数 5
常见问题

KlausNomi 是什么?

Engage in conversations with Nomi AI companions via the bundled Python CLI. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 604 次。

如何安装 KlausNomi?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install klausnomi」即可一键安装,无需额外配置。

KlausNomi 是免费的吗?

是的,KlausNomi 完全免费(开源免费),可自由下载、安装和使用。

KlausNomi 支持哪些平台?

KlausNomi 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 KlausNomi?

由 bezko(@bezko)开发并维护,当前版本 v2.0.3。

💬 留言讨论