← 返回 Skills 市场
cygnostik

Llc Phone

作者 Chris M. · GitHub ↗ · v3.0.4 · MIT-0
cross-platform ⚠ suspicious
160
总下载
1
收藏
0
当前安装
7
版本数
在 OpenClaw 中安装
/install llc-phone
功能描述
Low-latency inbound and outbound AI phone calls via the OpenAI Realtime API and Twilio, covering pre-warm and pre-accept patterns, IVR and receptionist flows...
使用说明 (SKILL.md)

Lowest Latency Calls

Architecture, configuration, and reference for the OpenAI Realtime API + Twilio phone system.

To PLACE calls, manage prospects, and run campaigns: pair this skill with your own outbound dialer / campaign layer. This skill is about the real-time call infrastructure itself.

DO NOT CHANGE (confirmed working, breaks if altered)

The call flow, session config format, and audio path below were debugged through many iterations. Do not restructure without reading this entire skill.

Session config — FLAT format only

// CORRECT:
{ type: "session.update", session: {
    modalities: ["text", "audio"], voice: "cedar",
    turn_detection: { type: "semantic_vad", eagerness: "high", create_response: true, interrupt_response: true },
    input_audio_format: "g711_ulaw", output_audio_format: "g711_ulaw",
}}
// WRONG (API rejects): session: { type: "realtime", audio: { input: { format: ... } } }

Outbound call flow — caller-first

Callee picks up, says hello, THEN the agent responds. No forced greeting. Semantic VAD with create_response: true handles it automatically.

Audio path — direct passthrough

Audio deltas from OpenAI are already base64 g711_ulaw. Forward directly to Twilio. No PCM conversion, no gain control, no resampling.

Greeting trigger

conversation.item.create (user message) + response.create. NOT response.create with instructions. Trigger on session.updated, NOT session.created.

Twilio webhook

Must point to /twiml. Verify: check Twilio API, not assumptions.

SAFE TO TUNE

  • Prompt size: smaller = faster inference. Reference outbound prompt is ~478 tokens.
  • VAD eagerness: "high" first turn, "medium" after. Configurable.
  • Tool loading: lean tools first turn, full set after first response.done.
  • Voice: cedar is a solid default for all scenarios. Can change per scenario.
  • Inference priming: text-only response.create during pre-warm warms pipeline without audio.
  • Twilio edge: configure to colocate with your deployment region and OpenAI region for lowest RTT.

Debugging Checklist

Before adding patches when calls fail:

  1. Is the websocket server process running? (systemctl status \x3Cyour-service>, pm2 status, or your equivalent)
  2. Single owner on the websocket port? lsof -i :\x3CPORT>
  3. Twilio webhook URL correct? Check the Twilio API, not local config files.
  4. Check your server log (whatever path you configured — stdout, file, or journald)
  5. OpenAI outage? Check status.openai.com
  6. Session config accepted? Look for session.updated in logs. error after session.created = wrong config format.

Do not pile patches. If it worked before and doesn't now, check infrastructure first.

Restart Procedure (pattern)

Whatever process supervisor you use, the correct sequence is:

stop the websocket server
→ kill any orphaned listeners on the websocket port (lsof -i :\x3CPORT> -t | xargs kill)
→ start the websocket server

Always stop → kill orphans → start. A bare restart can leave a stale listener holding the port.

Restore from Snapshot (pattern)

Keep a known-good copy of sessionManager.ts (the file most affected by tuning) in a snapshots directory alongside the source. To restore:

copy snapshots/sessionManager-TUNED-\x3Cdate>.ts → src/sessionManager.ts
restart using the procedure above

Key Files (relative to the websocket-server project)

What Path
sessionManager.ts websocket-server/src/sessionManager.ts
server.ts websocket-server/src/server.ts
Snapshots websocket-server/snapshots/
Service unit your process supervisor unit file (systemd user unit, pm2 ecosystem file, etc.)
Logs wherever you configured (stdout + journald, /var/log/..., pm2 logs, etc.)
.env websocket-server/.env (contains PORT)

Reference Documents

All reference docs in {baseDir}/docs/:

File Content
{baseDir}/docs/01-overview.md Model landscape, changelog
{baseDir}/docs/02-session-config.md session.update reference + defaults
{baseDir}/docs/03-prewarm-outbound.md Pre-warm: buffer, fallback, edge cases
{baseDir}/docs/04-inbound-modes.md AI IVR, Receptionist, CSR with DB
{baseDir}/docs/05-async-tools.md Async tool calling
{baseDir}/docs/06-latency-tuning.md All latency levers
{baseDir}/docs/07-twilio-integration.md PCMU format, edge, AMD, stream events
{baseDir}/docs/08-known-issues.md Bugs, workarounds, watch-later
{baseDir}/docs/09-openclaw-config.md Config + install/publish

Load the relevant doc before answering architecture or config questions.

Key Facts (always available without file load)

  • Model: gpt-realtime-1.5 (flagship), gpt-realtime-mini (cost-sensitive)
  • WebSocket: wss://api.openai.com/v1/realtime?model=gpt-realtime-1.5
  • Audio: mu-law / PCMU at 8 kHz mono, base64 encoded
  • Turn detection: semantic_vad with eagerness: "high" is the tested default
  • Pre-warm timeout: 10 seconds (fallback to cold connect)

Lessons

  1. Session config: flat format only. Nested is rejected.
  2. Trigger greeting on session.updated, not session.created.
  3. Semantic VAD works without prior audio response.
  4. Verify infrastructure before debugging behavior.
  5. Audio is already PCMU. No conversion needed.
  6. Prompt size directly affects per-turn latency.
  7. When patches pile up: stop, read docs, rewrite from baseline.
安全使用建议
This skill is internally consistent for building OpenAI Realtime + Twilio voice integrations, but before installing: 1) Only supply the OpenAI and Twilio credentials if you trust the skill author — those tokens let the skill place and control calls and access the Realtime API. 2) Review the SKILL.md prompt templates (they contain '[SYSTEM]' markers) to ensure they do not contain hidden instructions you don't want run. 3) Do not grant any agent executing this skill direct shell access or automatic execution privileges without sandboxing — the docs include system-level commands (systemctl, lsof, kill, file copy) intended for human operators. 4) Test in a dev environment with test Twilio numbers and a scoped/revocable OpenAI key, and rotate credentials after verification. 5) If you need stronger guarantees, ask the maintainer for a minimal runnable example or an audited code repo before deploying to production.
功能分析
Type: OpenClaw Skill Name: llc-phone Version: 3.0.4 The llc-phone skill bundle is classified as suspicious due to the inclusion of high-risk operational instructions in SKILL.md, specifically patterns for terminating system processes using 'lsof' and 'kill' and overwriting source files during restoration. While these capabilities are plausibly needed for the stated purpose of managing a telephony websocket server, they represent a significant attack surface for the AI agent. The skill also requires sensitive credentials (OPENAI_API_KEY, TWILIO_AUTH_TOKEN) as documented in README.md and docs/09-openclaw-config.md, though no evidence of intentional malice or data exfiltration was observed.
能力标签
cryptorequires-sensitive-credentials
能力评估
Purpose & Capability
Name/description (low-latency OpenAI Realtime + Twilio phone calls) match the declared env vars (OPENAI_API_KEY, TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, TWILIO_PHONE_NUMBER). No unrelated credentials or binaries are required. Optional config variables mentioned in docs (DIDs, transfer numbers, etc.) are sensible for telephony routing.
Instruction Scope
SKILL.md is an extensive operational guide and contains concrete code snippets, session config, file paths (websocket-server/src/sessionManager.ts), and admin commands (systemctl, lsof, kill, copy). Those are appropriate for deploying/operating the realtime telephony stack, but they give an agent broad operational guidance — if you let an agent execute system commands or access filesystem, review and sandbox that capability. The instructions also include prompt templates (e.g., markers like '[SYSTEM]') which are expected for model prompts.
Install Mechanism
Instruction-only skill — no install spec, no downloads or extracted archives. That minimizes risk from arbitrary code distribution; the package is documentation and operational guidance only.
Credentials
Requested environment variables are limited to OpenAI and Twilio credentials and caller number — appropriate and proportional to the stated functionality. Additional optional env keys referenced in docs (DIDs, transfer destinations) are reasonable for a telephony integration. The primaryEnv (OPENAI_API_KEY) matches the skill's focus. No unrelated secrets are requested.
Persistence & Privilege
Skill is not always-enabled (always: false) and is user-invocable. It does not request to modify other skills or system-wide agent settings in the manifest. Documentation suggests adding credentials to openclaw.json (normal for skill config); treat that file as sensitive.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install llc-phone
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /llc-phone 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v3.0.4
Genericize internal naming in reference docs: "Claw Receptionist" -> "Receptionist", "Voss/AI turn" -> "AI turn", VOSS_* env var prefix -> REALTIME_*. No functional changes.
v3.0.3
Sanitized SKILL.md and README — removed deployment-specific paths, hostnames, and user references. Technical content unchanged.
v3.0.2
Refresh llc-phone skill guidance and current phone-system references.
v3.0.1
llc-phone 3.0.1 - No file or functionality changes detected in this release. - All documentation, features, and interfaces remain unchanged from the previous version.
v3.0.0
**Major update: Full working TypeScript reference implementation added.** - Added complete, production-tested TypeScript source code for inbound/outbound AI phone calls via OpenAI Realtime API and Twilio in `src/`. - Expanded documentation to describe each core source file and its role in the call workflow (e.g., server, session manager, function/tool handlers). - Receptionist mode now described generically (removed "Claw" branding). - Explicitly lists environment configuration (now includes `.env.example`). - Maintains and reorganizes reference/latency best practices and how-to-guide structure. - All company- or agent-specific settings are configurable via environment variables and prompt templates.
v0.0.2
No user-facing changes in this version. - No file changes or SKILL.md content updates detected for version 0.0.2. - Functionality and documentation remain unchanged from the previous release.
v0.0.1
Initial release of llc-phone: low-latency AI phone call skill for OpenAI Realtime API and Twilio. - Provides guidance for configuring, deploying, and optimizing inbound/outbound AI phone calls with emphasis on minimizing latency. - Covers pre-warm/pre-accept patterns, IVR and receptionist flows, customer-service routing, VAD tuning, function calling, and prompt caching. - Includes a structured reference documentation system for detailed implementation steps and troubleshooting. - Offers clear rules for answering questions, specifying direction, mode, model, and providing relevant config/code samples. - Documents known issues, model version differences, and best practice latency-reduction tactics.
元数据
Slug llc-phone
版本 3.0.4
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 7
常见问题

Llc Phone 是什么?

Low-latency inbound and outbound AI phone calls via the OpenAI Realtime API and Twilio, covering pre-warm and pre-accept patterns, IVR and receptionist flows... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 160 次。

如何安装 Llc Phone?

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

Llc Phone 是免费的吗?

是的,Llc Phone 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Llc Phone 支持哪些平台?

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

谁开发了 Llc Phone?

由 Chris M.(@cygnostik)开发并维护,当前版本 v3.0.4。

💬 留言讨论