fan56/dsh-feishu0

@aiwayds/dsh-feishu

dsh plugin: drive an existing dsh session from Feishu/Lark — round cards, interactive resume, ask-user cards, steer (outbound-only WebSocket bot)

包名
@aiwayds/dsh-feishu
版本
0.5.0
许可证
MIT
最近更新
2026年9月12日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:fan56/dsh-feishu

📱 Usage

CommandWhat it does
/resumeInteractive session picker card (dropdown + enter; or reply /resume N), sorted by last update
/newStart a brand-new session and bind to it (inherits cwd, model and reasoning effort)
/stopAbort the running turn (queued messages survive)
/btw By-the-way side question while the main task runs: one tool-less model call over a recent-conversation snapshot, streamed into its own card — the main line never notices. Not kept in the session; idle main line refuses; --model provider/model overrides the route; bare /btw re-sends the last exchange (btwContextMessages config sizes the snapshot)
/statusBinding and run status
/sub NInspect the Nth subagent
/modelInteractive model picker (two steps: pick a provider → pick one of its models); live-switches bot-created sessions, otherwise saved as the phone default (applies to /new)
/thinkInteractive reasoning-effort picker for the current model (adapter-provided efforts + provider default); live-switches bot-created sessions, otherwise saved as the phone default
/permissionInteractive permission-preset picker; the pick is replayed as /permission through the dsh command registry
/select-skillInteractive skill picker (user-invocable skills of the bound workspace); activation rides dsh's native /name skill gesture
/profile-switchInteractive model-profile switcher over $DSH_HOME/model-profiles.json; applies the profile's provider/model/effort (agent frontmatter updates remain desktop-only)
/feishu-plugin think on|offToggle the reasoning tail in the activity section (default on)
/settings /preset /theme /reload /hotkeys /model-sync /export /agents /subagents /profile-cfg /login /logout /skillsProvided by the desktop dsh-tui-pi plugin (interactive panels) — the phone refuses them with a desktop pointer (and a phone-side stand-in hint where one exists, e.g. /skills/select-skill)
/goal /dcpExist in the dsh runtime but not yet adapted — refused with a desktop pointer
/sessionMirrored to /status
Any image messageDownloaded and injected into the bound session as an image block (DM: directly; group: only while that group is the active dispatch surface). Requires the model route to accept image input
Any other textInjected as a prompt into the bound session (steered into the running turn when one is live)

Group usage: add the bot to a Feishu group, then @-mention it — @dsh 帮我跑一下测试 dispatches exactly like a DM; commands (/resume, /stop, …) work the same way after a mention. Only allowlisted members ever trigger the bot; everyone else is invisible. Cards land in the group while the dispatches keep coming from there; the binding itself stays the bot's single global one (one session at a time, whichever chat drove it last).

Typical flow:

Session running on your desktop → open Feishu on the train → /resume and pick it
→ keep going from the phone (auto-steer) → answer ask cards with a tap → /stop anytime

⚙️ Configuration (config: block)

keydefaultdescription
operators[]open_id allowlist — required to arm the bot
mode"on""off" disables the plugin entirely
domain"feishu""feishu" (CN) or "lark" (international)
statusIntervalMs5000round-card refresh beat (pseudo-streaming), range [5000, 600000]
bodySegmentChars3500long-body segmentation threshold
resumeListStyle"auto"/resume list: auto/table/list
backgroundPush"off"Completion push for sessions the phone is not bound to, into the last active chat: off / cron (turns carrying a cron delivery or a subagent-settled notice) / all (every finished turn). Env override: DSH_FEISHU_BACKGROUND_PUSH
appIdRef / appSecretRefDSH_FEISHU_APP_ID/SECRETcredentials ref names

Credential resolution order: plaintext in patch > DSH_FEISHU_APP_ID/SECRET env vars > the credentials service.