Token导航 LogoToken导航

Agent Skill · 研究检索

localsend(localsend 搜索)

localsend 用于查找、检索和筛选相关信息,适合在 OpenClaw 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

localsend 是研究检索类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为需要联网;许可证为 MIT-0,第三方扫描有提醒项,按安装量在研究检索类的 73,675 个 Skill 里排第 5,917。

总安装 23,862周安装 956GitHub Stars 公开资料未说明下载 7,724核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT-0
版本
3.4.0

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:localsend(localsend 搜索)
来源仓库:https://github.com/chordlini/localsend
安装命令:
openclaw skills install localsend
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install localsend

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

使用 LocalSend 协议向附近设备发送和接收文件,支持交互式 Telegram 菜单。适合查找、检索和筛选相关信息,尤其在局域网内文件传输场景。可用于快速分享文档或资源给周边设备。使用前请确认是否允许设备发现及文件读写权限。localsend 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 OpenClaw;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 openclaw skills install localsend;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

localsend 怎么安装?

在终端执行 openclaw skills install localsend。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

localsend 支持哪些 AI 工具?

公开资料标注支持 OpenClaw。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

localsend 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

localsend 是免费的吗?

来源标注的许可证是 MIT-0。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

localsend 用的人多吗?

公开数据是累计安装 23,862 次,近一周安装 956 次,下载 7,724 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

localsend 安全吗?

第三方扫描有提醒项,说明存在需要人工确认的行为。安装前请打开源码看清它读了什么、联网到哪里。

值得选的地方和要先想清楚的地方

值得选的地方

  • 专注 OpenClaw 一种宿主,触发方式和使用习惯不用来回切换。
  • 许可证明确为 MIT-0,商用和分发边界好判断。

先想清楚的地方

  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 OpenClaw,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。

不太适合

  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
localsend

localsend 搜索 · 本页

23,862—需要联网MIT-0有提醒

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

name
localsend
description
Send and receive files to/from nearby devices using the LocalSend protocol. Trigger with /localsend to get an interactive Telegram menu with real inline buttons — device discovery, file sending, text sending, and receiving.
metadata
openclaw
emoji
📡
trigger
/localsend
requires
bins
install
|

LocalSend

Interactive file transfer between devices on the local network using real Telegram inline keyboard buttons. Works with any device running the LocalSend app (Android, iOS, Windows, macOS, Linux).

Install

The localsend-cli is a zero-dependency Python CLI. Install from GitHub:

curl -fsSL https://raw.githubusercontent.com/Chordlini/localsend-cli/master/localsend-cli -o ~/.local/bin/localsend-cli
chmod +x ~/.local/bin/localsend-cli

Full docs: https://github.com/Chordlini/localsend-cli

Requires Python 3.8+ and openssl (for TLS).


Telegram Button Format

All menus MUST use OpenClaw's inline button format. Send buttons alongside your message using this structure:

buttons: [
  [{ "text": "Label", "callback_data": "ls:action" }],
  [{ "text": "Row 2", "callback_data": "ls:other" }]
]
  • Outer array = rows of buttons
  • Inner array = buttons per row (max 3 per row for readability)
  • Prefix all callback_data with ls: to namespace this skill
  • When user taps a button, you receive: callback_data: ls:action

State Awareness (CRITICAL)

This skill uses conversational state. Track where you are in the flow:

StateMeaningNext user input should be treated as...
idleNo active flowNormal message — respond normally
awaiting_fileAsked user to drop/specify a file to sendThe file to send — do NOT comment on it, describe it, or react to it. Immediately use it as the send payload.
awaiting_textAsked user to type text to sendThe text payload — send it, don't discuss it
awaiting_confirmWaiting for send confirmationExpect ls:confirm-send or ls:menu
receivingReceiver is activeMonitor for incoming files

RULES:

  • When in awaiting_file state and user sends an image/file/path → treat it as the file to send. Show confirmation buttons immediately.
  • When in awaiting_text state and user types anything → treat it as the text to send.
  • NEVER comment on, describe, or react to a file/image when you're in awaiting_file state.
  • State resets to idle when user taps ls:menu or the flow completes.

On Trigger: Main Menu

When the user types /localsend or mentions sending/receiving files locally, send this message with real inline buttons:

Message:

📡 LocalSend — File Transfer

Buttons:

buttons: [
  [
    { "text": "📤 Send", "callback_data": "ls:send" },
    { "text": "📥 Receive", "callback_data": "ls:receive" }
  ],
  [
    { "text": "🔍 Scan Devices", "callback_data": "ls:devices" }
  ]
]

Do NOT run any commands yet. Wait for the button tap.


Flow: Scan Devices

Trigger: callback_data: ls:devices or user says "scan", "discover", "find devices"

  1. Run:
   localsend-cli discover --json -t 2
  1. Devices found — create one button per device, plus Refresh and Back:

Message:

   📡 Found 3 devices:

Buttons (one device per row):

   buttons: [
     [{ "text": "📱 Fast Potato — 192.168.0.148", "callback_data": "ls:dev:Fast Potato" }],
     [{ "text": "💻 Rami-Desktop — 192.168.0.100", "callback_data": "ls:dev:Rami-Desktop" }],
     [{ "text": "🖥️ Living Room PC — 192.168.0.105", "callback_data": "ls:dev:Living Room PC" }],
     [
       { "text": "🔄 Refresh", "callback_data": "ls:devices" },
       { "text": "⬅️ Back", "callback_data": "ls:menu" }
     ]
   ]
  1. No devices found:

Message:

   📡 No devices found.
   Make sure LocalSend is open on the other device and both are on the same WiFi.

Buttons:

   buttons: [
     [
       { "text": "🔄 Try Again", "callback_data": "ls:devices" },
       { "text": "⬅️ Back", "callback_data": "ls:menu" }
     ]
   ]
  1. User taps a device (callback_data: ls:dev:DEVICENAME) — store it as the selected target. Show action menu:

Message:

   ✅ Selected: Fast Potato (192.168.0.148)
   What do you want to do?

Buttons:

   buttons: [
     [
       { "text": "📄 Send File", "callback_data": "ls:sendfile" },
       { "text": "📝 Send Text", "callback_data": "ls:sendtext" }
     ],
     [
       { "text": "📦 Send Multiple", "callback_data": "ls:sendmulti" },
       { "text": "⬅️ Back", "callback_data": "ls:devices" }
     ]
   ]

Flow: Send

Trigger: callback_data: ls:send

Step 1 — Pick target device (if not already selected)

Run discover and show device picker (see Scan Devices flow above).

Step 2 — Choose what to send

Message:

Send to Fast Potato:

Buttons:

buttons: [
  [
    { "text": "📄 Send File", "callback_data": "ls:sendfile" },
    { "text": "📝 Send Text", "callback_data": "ls:sendtext" }
  ],
  [
    { "text": "📦 Send Multiple", "callback_data": "ls:sendmulti" },
    { "text": "⬅️ Back", "callback_data": "ls:menu" }
  ]
]

Send File (callback_data: ls:sendfile)

  1. Ask: "Send me the file, drop a path, or tell me which file to send"
  2. User provides file path or sends a file via chat
  3. Get file size with stat or ls -lh
  4. Confirm with buttons:

Message:

   📤 Send to Fast Potato?
   📄 project.zip — 4.2 MB

Buttons:

   buttons: [
     [
       { "text": "✅ Send", "callback_data": "ls:confirm-send" },
       { "text": "❌ Cancel", "callback_data": "ls:menu" }
     ]
   ]
  1. On confirm, run:
   localsend-cli send --to "Fast Potato" /path/to/project.zip
  1. Report result:

Message:

   ✅ Sent project.zip (4.2 MB) to Fast Potato

Buttons:

   buttons: [
     [
       { "text": "📤 Send Another", "callback_data": "ls:send" },
       { "text": "⬅️ Menu", "callback_data": "ls:menu" }
     ]
   ]

Send Text (callback_data: ls:sendtext)

  1. Ask: "Type the text you want to send:"
  2. User types their message
  3. Write text to temp file, send:
   echo "user's text" > /tmp/localsend-text.txt
   localsend-cli send --to "Fast Potato" /tmp/localsend-text.txt
   rm /tmp/localsend-text.txt
  1. Confirm:

Message:

   ✅ Text sent to Fast Potato

Buttons:

   buttons: [
     [
       { "text": "📝 Send More Text", "callback_data": "ls:sendtext" },
       { "text": "📤 Send File", "callback_data": "ls:sendfile" }
     ],
     [{ "text": "⬅️ Menu", "callback_data": "ls:menu" }]
   ]

Send Multiple (callback_data: ls:sendmulti)

  1. Ask: "List the files or give me a glob pattern (e.g. ~/Screenshots/*.png)"
  2. User provides paths or pattern
  3. Expand glob, list files with sizes:

Message:

   📦 Send 5 files to Fast Potato?
   📄 photo1.jpg — 2.1 MB
   📄 photo2.jpg — 1.8 MB
   📄 photo3.jpg — 3.2 MB
   📄 photo4.jpg — 2.5 MB
   📄 photo5.jpg — 1.9 MB
   📊 Total: 11.5 MB

Buttons:

   buttons: [
     [
       { "text": "✅ Send All", "callback_data": "ls:confirm-send" },
       { "text": "❌ Cancel", "callback_data": "ls:menu" }
     ]
   ]
  1. On confirm, run:
   localsend-cli send --to "Fast Potato" photo1.jpg photo2.jpg photo3.jpg photo4.jpg photo5.jpg
  1. Report:

Message:

   ✅ Sent 5 files (11.5 MB) to Fast Potato

Buttons:

   buttons: [
     [
       { "text": "📤 Send More", "callback_data": "ls:send" },
       { "text": "⬅️ Menu", "callback_data": "ls:menu" }
     ]
   ]

Flow: Receive

Trigger: callback_data: ls:receive or user says "receive", "start receiving", "listen"

Step 1 — Snapshot current files

ls -1 /home/rami/.openclaw/workspace/_incoming/ > /tmp/localsend-before.txt

Step 2 — Start receiver in background

localsend-cli --alias openclaw-workspace receive --save-dir /home/rami/.openclaw/workspace/_incoming/ -y

Run with run_in_background: true. Store the task ID.

CRITICAL: --alias MUST come BEFORE receive (global flag).

Step 3 — Confirm ready with buttons

Message:

📡 Receiver active — "openclaw-workspace"
📁 Saving to: ~/incoming/
✅ Auto-accept: ON

Send files from your device whenever ready.

Buttons:

buttons: [
  [
    { "text": "🛑 Stop", "callback_data": "ls:stop" },
    { "text": "🔄 Status", "callback_data": "ls:status" }
  ]
]

Step 4 — Monitor for incoming files

Poll every 3 seconds for new files:

ls -1 /home/rami/.openclaw/workspace/_incoming/ > /tmp/localsend-after.txt
diff /tmp/localsend-before.txt /tmp/localsend-after.txt

Step 5 — Post-receive confirmation (MANDATORY)

When file(s) arrive, immediately present in chat with inline buttons.

Single file:

Message:

✅ Received from Fast Potato:
📄 portfolio.zip — 240 MB
📁 Saved to: ~/incoming/portfolio.zip

Buttons (contextual by file type):

buttons: [
  [
    { "text": "📂 Extract", "callback_data": "ls:extract" },
    { "text": "🚀 Deploy", "callback_data": "ls:deploy" }
  ],
  [
    { "text": "📥 Receive More", "callback_data": "ls:receive" },
    { "text": "🛑 Stop", "callback_data": "ls:stop" }
  ]
]

Image file — show inline preview:

Message:

✅ Received from Fast Potato:
🖼️ screenshot.png — 2.1 MB

Include MEDIA:~/incoming/screenshot.png for inline preview.

Buttons:

buttons: [
  [
    { "text": "📂 Open Folder", "callback_data": "ls:openfolder" },
    { "text": "📥 Receive More", "callback_data": "ls:receive" }
  ],
  [{ "text": "🛑 Stop", "callback_data": "ls:stop" }]
]

Multiple files:

Message:

✅ Received 3 files from Fast Potato:
📄 app.apk — 45 MB
📄 README.md — 2 KB
🖼️ icon.png — 128 KB
📊 Total: 45.1 MB

Buttons:

buttons: [
  [
    { "text": "📂 Show All", "callback_data": "ls:showall" },
    { "text": "📥 Receive More", "callback_data": "ls:receive" }
  ],
  [{ "text": "🛑 Stop", "callback_data": "ls:stop" }]
]

Contextual button rules by file type:

  • .zip, .tar.gz → add 📂 Extract button
  • .png, .jpg, .gif, .webp → show MEDIA: inline + 📂 Open Folder
  • .apk → add 📱 Install button
  • .html, .js, .py → add 👁️ Preview button
  • website archives → add 🚀 Deploy button

Step 6 — Stop receiver

Trigger: callback_data: ls:stop

  1. Kill the background task using stored task ID
  2. Confirm:

Message:

   🛑 Receiver stopped.

Buttons:

   buttons: [
     [
       { "text": "📡 Restart", "callback_data": "ls:receive" },
       { "text": "⬅️ Menu", "callback_data": "ls:menu" }
     ]
   ]

Flow: Status Check

Trigger: callback_data: ls:status

Check if receiver is running and count new files:

ls -1 /home/rami/.openclaw/workspace/_incoming/ > /tmp/localsend-after.txt
diff /tmp/localsend-before.txt /tmp/localsend-after.txt | grep "^>" | wc -l

Message:

📡 Receiver: Running (12 min)
📁 Files received: 2
📊 Total: 242 MB

Buttons:

buttons: [
  [
    { "text": "🛑 Stop", "callback_data": "ls:stop" },
    { "text": "📂 Show Files", "callback_data": "ls:showall" }
  ]
]

Callback Data Reference

callback_dataAction
ls:menuShow main menu
ls:sendStart send flow
ls:receiveStart receive flow
ls:devicesDiscover devices
ls:dev:DEVICENAMESelect a specific device
ls:sendfileSend single file
ls:sendtextSend text message
ls:sendmultiSend multiple files
ls:confirm-sendConfirm and execute send
ls:stopStop receiver
ls:statusCheck receiver status
ls:extractExtract received archive
ls:deployDeploy received website
ls:openfolderOpen save directory
ls:showallList all received files

CLI Reference

CommandUsage
Discoverlocalsend-cli discover --json -t 2
Sendlocalsend-cli send --to "DEVICE" file1 file2 ...
Receivelocalsend-cli --alias NAME receive --save-dir DIR -y
FlagScopeDescription
--alias NAMEGlobal (before subcommand)Device name to advertise
--to NAMEsendTarget device (case-insensitive substring)
-t NdiscoverScan duration in seconds (use 2 for speed)
--jsondiscoverMachine-readable output
--save-dir DIRreceiveSave location (default: ~/Downloads)
-yreceiveAuto-accept transfers

Troubleshooting

ProblemFix
unrecognized arguments: --aliasMove --alias BEFORE the subcommand
No devices foundOpen LocalSend on target, same WiFi, screen on
Port 53317 in useNormal — CLI auto-falls back to 53318/53319
Transfer declined (403)Use -y on receiver side
Transfer hangsLarge file on slow WiFi — be patient

Reference

  • CLI repo & docs: https://github.com/Chordlini/localsend-cli
  • LocalSend protocol: references/protocol.md or https://github.com/localsend/protocol

平台分布

OpenClaw

78.84%
按下载量换算6,090

安全审计

VirusTotal

可疑

ClawScan

通过

Static analysis

未展示

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在提醒或未通过项,安装前请自行复核。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills