DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

shoxiy-danny /

shoxiy-danny/dsh-feishu

Verified

The harness lives in Feishu, on a Linux server. Goal cards, live progress, multi-bot. Not a remote for the webpage.

★ 1 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHubProject homepage
READMESource: main@d2fdd7ac

dsh-feishu

dsh-feishu

Harness 长在飞书里,不是飞书遥控网页

dsh-plugin Feishu only headless Node 22 MIT

中文 · English · 功能 · 适合谁 · 五分钟

dsh-feishu: Harness 长在飞书里,不是飞书遥控网页


中文

插件市场里 feishu / lark 已经三十多个。多数是通知器、多 IM 网关,或 dsh plugin --profile web add 之后挂在官方网页旁边的桥。飞书只是遥控器:网页还在,关掉浏览器,产品就少了一半。不少还默认你坐在个人 PC 前,终端里弹二维码。

这套是跑在飞书里的 harness,部署面是 无头常驻:macOS、Linux、WSL 都能跑,主打一台能出网的机器当守护进程,不是笔记本终端扫码。一个 dsh --profile feishu 常驻,日志进文件,没有要人盯着的 TTY。飞书长连接进、飞书卡片出。模型、斜杠命令、进度、Goal、会话,全部发生在聊天框。没有 3080,没有给本机用的 TUI。高危操作出飞书审批卡,不是网页弹窗。

首个 bot 只能在开放平台建好,把 App ID / Secret 写进环境变量再启动。服务器上没处可贴二维码。已经通了的 bot 再开第二个,码可以打回飞书;那是后话,不是第一次上手。

不跟货架比按钮数量。没有打字机答案卡。要比的四件事:

  1. 长在飞书里 — harness 的面就是飞书,不是遥控网页
  2. Goal 卡片 — 设定、改目标、暂停、恢复、清除,点卡片就能做;重启不偷着续
  3. 一进程多 bot — 2~3 个飞书身份共用一套 Agent,同一条 session 不能两头同时握
  4. 会变的进度头 — [dsf-23% G1/3] Using bash...(2),不是「正在思考…」四个字一直挂着

Goal card, approval card, ask card

GitHub 上另有一个 PGZXB/dsh-feishu,飞书控制台 + 卡内审批,官方 Web 还在。owner 不同,产品也不同。

卖点

完全不依赖 Web

不装 dsh-web-app,不开 3080,不跑 headless 一次性进程。Cordis 插件直接 create / followup / steer / cancel / resume。飞书是面,不是壳外面再套的壳。

Goal:一张卡片管到底

发 /goal,或直接在卡片里填目标点「设定并开始」。句末可写「最多跑 3 轮」。

Agent 自己多轮推进。进程重启后 不会 偷偷接着烧,要在卡片上点「恢复自动续跑」,或发 /goal resume。

卡片上能做的事:

  • 设定 / 修改目标(卡内表单)
  • 暂停 / 恢复自动续跑
  • 清除当前目标
  • 完成变绿、阻塞变红,原地改,不另刷一堆纯文字

斜杠命令仍然全部可用。先到的算数。

会变的进度头

进度卡片原地改:

[dsf-23% G1/3] Using bash...(2)

模型别名、上下文占比、Goal 轮次(快到上限标 near)。跑完变 Done,失败变 Failed,正文另发一条,不跟进度糊在一起。

一进程多 Bot

同一个进程挂 2~3 个独立飞书应用。会话按 (appId, chat_id) 分开。历史可以互相 /resume,同一条 session 不能被两个窗口同时握住。

斜杠命令就在聊天框

/stop /clear /model /status /compact /resume /rename /goal /bye

不支持的 / 会直接告诉你本期有哪些。完整表见 docs/handbook.md。

高危审核卡 / 提问卡

未点名的 rm、find -delete、破坏性 git 会挂起,飞书出一张橙卡。点「允许这一次」才跑;打字同意不算批准。

需要选择时模型调 ask_user_question,出蓝卡。可以点选项,也可以在卡内填空提交,也可以直接打字。先到的算数。开放平台须订 card.action.trigger。

上下文会自己收

累计过 100K 之后,名单内(read / glob / grep / bash / 搜索读页)且超过 8K 的工具结果,完整进模型 3 次,第 4 次发送前走官方头 4K 尾 1K。skill 不过。冷启动和开门前的历史不回砍。glob 自动滤掉 node_modules / .git / .pnpm。可选:生图 / 多步浏览类 MCP 藏到 enable_mcp 之后。规格见 PRUNE.md。

多模态按飞书的方式走

图 / 语音 / 文件落到本地 inbox,把路径写给模型。不把图片塞进 session image block。回图、回文件、回语音走 send_file。

适合谁 / 不适合谁

适合:有一台能出网的机器,要把 dsh 做成 7×24 云端同事;已经在飞书办公、不想再为 Agent 开网页或守着笔记本终端;同一套 Agent 多个飞书身份;Goal 这种「交代完让它自己盯」,但中断和续跑必须自己说了算。

不适合:个人 PC 上扫码 30 秒上手、还想留官方 Web 控制台、需要打字机流式答案卡、或只把飞书当通知渠道。那些货架上已经很多,去搜 feishu 即可。

五分钟跑起来

面向一台已经能出网的机器(Linux / macOS / WSL;Windows 原生机也能起进程,Agent 调 bash 会别扭)。需要 Node 22 和已安装的 dsh(npm i -g @deepseek-ai/dsh)。

先在飞书开放平台建一个企业自建应用,事件订阅用长连接(WebSocket),不要 webhook。把 App ID / Secret 备好再部署。步骤见 docs/feishu-setup.md。

从 GitHub 装到独立 profile

dsh plugin --profile feishu add github:shoxiy-danny/dsh-feishu

建议钉扫描过的 commit,和市场页证据对齐:

dsh plugin --profile feishu add github:shoxiy-danny/dsh-feishu#<sha>

然后把 App ID / Secret 和 DEEPSEEK_API_KEY 放进环境,再:

dsh --profile feishu

从本仓脚本装(开发 / 自托管)

cp .env.example .env
# 填 FEISHU_APP_ID / FEISHU_APP_SECRET / DEEPSEEK_API_KEY

chmod +x scripts/*.sh scripts/dsh-feishu-cli
./scripts/setup.sh
./scripts/start.sh

启动后到这个应用的单聊打一句。应先收到表情,再看到进度头,然后是正文。发 /goal 会出一张可点的目标卡。

工作目录默认家目录;附件落 workspace/inbox/。第二个 bot 再填 FEISHU_APP_ID_2 / FEISHU_APP_SECRET_2。

文档

文件 内容
docs/handbook.md 斜杠命令、Goal 卡片、模型、多 bot、MCP、假 bot
docs/feishu-setup.md 飞书应用、权限、长连接
docs/publish.md 作者:GitHub topic 和市场收录
examples/ 模型表、profile overlay 样例

默认模型只有 DeepSeek 官方 dsf / dsp。加自己的供应商:手册「模型」一节按字段说明,不按厂商抄作业。样例骨架在 examples/。

需要 DeepSeek Harness。发现页:dsh-plugin.market。


English

The harness lives in Feishu, not a remote for the webpage.

The plugin market already has thirty-plus feishu / lark listings. Most are notifiers, multi-IM gateways, or bridges you add with dsh plugin --profile web add. Feishu is only a remote: the webpage is still there, and closing the browser takes half the product with it.

This is the harness, running in Feishu, meant as a headless daemon on a box that stays on: Linux, macOS, or WSL. Not a laptop you scan a terminal QR on. One dsh --profile feishu. Logs go to a file. Nobody has to watch a TTY. Feishu WebSocket in, Feishu card out. Models, slash commands, progress, Goal, sessions: all in chat. No port 3080. No desktop TUI. High-risk commands pause on a Feishu approval card, not a web popup.

The first bot has to be created on the open platform and dropped into env vars. A headless server has nowhere to put a QR code. Extra bots can later be opened from an already-working chat; that is not how you bootstrap.

We do not compete on button count. No typewriter answer card. Four things instead:

  1. Lives in Feishu — the harness surface is chat, not a remote for the webpage
  2. Goal card — set, edit, pause, resume, clear on the card; a restart will not keep burning tokens until you resume
  3. Several bots, one process — 2–3 Feishu identities, one agent; one session cannot be held by two windows
  4. A progress header that changes — [dsf-23% G1/3] Using bash...(2), not a frozen "Thinking…"

The three cards below are drawn from the real card JSON. They are not Feishu screenshots.

There is another GitHub repo named PGZXB/dsh-feishu: a Feishu console with in-card approvals, official web still on. Different owner, different product.

Features

No web dependency

No dsh-web-app, no port 3080, no one-shot headless runner. A Cordis plugin calls create / followup / steer / cancel / resume in-process. Feishu is the surface, not a wrapper around a wrapper.

Goal: one card, the whole loop

Send /goal, or type the objective on the card and tap Set and start. You can append "max 3 rounds" at the end.

The agent continues across turns. After a process restart it will not keep burning tokens until you tap Resume or send /goal resume.

On the card: create / edit (form), pause, resume, clear. Complete turns green, blocked turns red. Slash commands still work.

A progress header that actually changes

The card edits in place:

[dsf-23% G1/3] Using bash...(2)

Model alias, context %, Goal round (near when the cap is close). Done / Failed on the card; the reply is a separate message.

Several bots, one process

The same process holds 2–3 Feishu apps. Sessions are keyed by (appId, chat_id). History can /resume across bots; one session cannot be held by two windows at once.

Slash commands in the composer

/stop /clear /model /status /compact /resume /rename /goal /bye

Unknown / replies with the supported list. Full table: docs/handbook.md. /resume with no number sends a session card. The model can rename via SlashCommand({ command: "/rename …" }).

Context prunes itself

After 100K tokens, large read / glob / grep / bash / search results stay intact for 3 model views, then official head 4K + tail 1K. Skill results are never cut. Spec: PRUNE.md.

Approval cards / ask-user cards

Unnamed rm, find -delete, and destructive git pause on an orange card. Tap Allow once to run. Typing yes does not approve. Choices go through ask_user_question (blue card): tap an option, submit the form, or type a reply. First answer wins. Subscribe to card.action.trigger on the open platform.

Five minutes

Aimed at a machine that can reach the internet (Linux / macOS / WSL; a raw Windows box will start, but the agent’s bash calls will fight you). Need Node 22 and dsh (npm i -g @deepseek-ai/dsh).

Create a Feishu enterprise self-built app first. Subscribe to events over WebSocket, not webhook. Have App ID / Secret ready before you deploy. Details: docs/feishu-setup.md.

Install from GitHub

dsh plugin --profile feishu add github:shoxiy-danny/dsh-feishu

Pin a scanned commit if you want the same evidence the market page shows:

dsh plugin --profile feishu add github:shoxiy-danny/dsh-feishu#<sha>

Put FEISHU_APP_ID / FEISHU_APP_SECRET / DEEPSEEK_API_KEY in the environment, then:

dsh --profile feishu

Install from this repo (dev / self-host)

cp .env.example .env
# fill FEISHU_APP_ID / FEISHU_APP_SECRET / DEEPSEEK_API_KEY

chmod +x scripts/*.sh scripts/dsh-feishu-cli
./scripts/setup.sh
./scripts/start.sh

Then send one message in a p2p chat with that app. You should get a reaction, a progress header, then the reply. /goal opens a tappable Goal card.

Default cwd is the home directory; attachments land in workspace/inbox/. A second bot is FEISHU_APP_ID_2 / FEISHU_APP_SECRET_2.

Who this is for / not for

For: you have a machine that stays on and want dsh as a 24/7 coworker; you already live in Feishu and do not want another Agent webpage or a laptop terminal to babysit; one agent, several Feishu identities; Goal ("leave it running") with pause / resume that you say out loud.

Not for: 30-second QR setup on a personal PC; people who still want the official web console or typewriter streaming cards; or Feishu-as-notifications-only. The market already has those. Search feishu.

Docs

File What
docs/handbook.md Commands, Goal card, models, multi-bot, MCP, fake CLI bot
docs/feishu-setup.md Feishu app, scopes, long connection
docs/publish.md Author: GitHub topics and market listing
examples/ Model table and profile overlay samples

Ships DeepSeek official aliases only: dsf / dsp. Extra providers: handbook §模型 (per-field, not per-vendor). Skeleton in examples/.

Requires DeepSeek Harness. Discovery: dsh-plugin.market.

MIT. Issues and PRs welcome.

—/ 5

No ratings yet

Verified DSH bundle

Commit d2fdd7ac94e4

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout