dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
Feishu/Lark-first local AI agent gateway and native DeepSeek Harness plugin for Codex, Claude Code, Kimi Code, DeepSeek Harness, and Antigravity; Telegram optional.
English | 中文文档 | 📖 飞书图文版 (Feishu Doc) | Full Reference
Always-on personal AI bots like Grok Bot, OpenAI dots, and Meta Muse, but running on your own machine and living in Feishu/Lark.
They give every agent its own cloud computer. TaroCub gives it yours.
Each TaroCub bot is a real Codex, Claude Code, Kimi Code, DeepSeek Harness, or Antigravity agent running locally, with a Feishu identity of its own.
Message it like a teammate: send voice notes, files, and screenshots; get back documents, images, and finished work.
Feishu is the face. Mix engines freely and run as many bots as you want, with no per-bot fee.
📖 Feishu Doc (飞书图文) | Quick Start | Surfaces | File Center | Core Highlights | Lark Setup | Commands | Docs
TaroCub turns the coding agents already on your computer into personal bots you talk to in Feishu/Lark. It is not a hosted agent product: every bot runs the real Codex, Claude Code, Kimi Code, DeepSeek Harness, or Antigravity CLI on your own machine, with your files, tools, and logins. TaroCub gives each one a durable chat identity: sessions you can resume from your phone, two-way file delivery, voice transcription, scheduled tasks, multi-bot routing, and audit logs. Telegram is retained as an optional compatibility channel.
Feishu/Lark is the primary platform. The maintainer has not used Telegram as a day-to-day control surface for a long time. Telegram remains available for existing deployments, but new installations should start with Feishu/Lark.
This project was formerly named cc-telegram-bridge. The canonical repository is now cloveric/tarocub; GitHub redirects the old URL, and existing state directories plus the cctb shorthand remain supported for compatibility.
| Cloud agents: Grok Bot, OpenAI dots, Meta Muse | TaroCub | |
|---|---|---|
| Where it runs | The vendor's cloud computer | Your own computer |
| Your files and data | Uploaded to the vendor | Stay on your machine |
| Models | The vendor's own models | Codex, Claude Code, Kimi Code, DeepSeek Harness, and Antigravity side by side; pick one engine per bot |
| How many bots | Tied to the vendor's subscription plans | As many as you like, one Feishu app per bot. TaroCub is MIT-licensed and charges nothing per bot; you only use the model plans you already have |
| What it can do | Whatever the vendor exposes | Anything your machine can do: local tools, scripts, and logged-in accounts |
| Where you chat | The vendor's own app | Feishu/Lark, with Telegram optional |
Grok Bot, dots, and Muse are products of SpaceXAI (xAI), OpenAI, and Meta. TaroCub is an independent open-source project and is not affiliated with or endorsed by them.
The lion cub is TaroCub's mascot. Give every bot its own face: these hand-drawn avatars are transparent 512×512 PNGs in assets/avatars/ and work well as Feishu app icons.
Lion | Fox | Raccoon | Panda | Rabbit | Cat | Tiger | Taro Bear | Penguin |
It is built for people who already use CLI agents heavily and want:
The intended setup flow is agent-assisted: clone the repo, open it in Codex, Claude Code, Kimi Code, DeepSeek Harness, or Antigravity, and ask the agent to configure the bridge for you. The CLI exists so your local agent can do the boring setup work instead of making you hand-edit every file.
The old long README is preserved as Full Reference. This landing page is intentionally short.
Open this repository in Codex, Claude Code, Kimi Code, DeepSeek Harness, or Antigravity and say:
Read the README and configure TaroCub for me.
Run the Lark wizard, check permissions, install/bind lark-cli, and tell me what I need to scan or approve.
That is the preferred path. Manual commands are still below for operators who want to see each step. If you explicitly need the legacy-compatible Telegram channel, ask the agent to configure it with a BotFather token instead.
git clone https://github.com/cloveric/tarocub.git
cd tarocub
npm install
npm run build
node dist/src/index.js lark setup --detached --install-cli --identity bot-only
node dist/src/index.js lark yolo unsafe
--detached keeps QR registration alive in tmux, prints one durable registration link, writes progress to ~/.cctb/<lark-instance>/lark-setup.log, and starts the Lark service when setup completes. Use --no-start-service only when you explicitly want to prepare the app without listening yet.
If lark doctor reports missing app scopes, open the permission page URL it prints and grant the JSON it prints. PersonalAgent apps activate the grant immediately after confirmation; enterprise custom apps may still require a version publish. Then run:
node dist/src/index.js lark provision
node dist/src/index.js lark doctor
node dist/src/index.js lark slash sync
Install the standalone native plugin into the web profile used by ordinary
Harness and by TaroCub's private Harness hosts:
dsh plugin --profile web add github:cloveric/deepseek-harness-web-search-plugin
The plugin adds source-traceable Brave/Tavily live search and URL extraction.
TaroCub integration and /tarocub guidance are optional. Installing it does
not create a Feishu/Lark app or start the bridge. The canonical TaroCub
subdirectory source remains compatible. Check, update, or remove it with:
dsh --profile web --dump-config | grep -A18 -B2 mcp-cctb-search
dsh plugin --profile web update deepseek-harness-web-search-plugin
dsh plugin --profile web remove deepseek-harness-web-search-plugin
TaroCub still recognizes installations made under the former
tarocub-deepseek-harness-plugin package name so they can be migrated without
breaking managed bots.
Create a Telegram bot with @BotFather, then run:
npm run dev -- telegram configure <telegram-bot-token>
npm run dev -- telegram yolo unsafe
npm run dev -- telegram service start
telegram yolo unsafe maps to approvalMode: "bypass": Codex uses its bypass sandbox mode, Claude Code/Antigravity use their unsafe skip-permissions modes, Kimi selects ACP auto, and DeepSeek selects Harness danger-full-access. Treat it as equivalent to bypassing normal approval prompts and local sandbox controls.
Send any message to the bot. It will reply with a pairing code:
npm run dev -- telegram access pair <pairing-code>
| Surface | Best for | Status |
|---|---|---|
| Feishu/Lark | Team chat, interactive cards, Docs comments, Sheets/Docs/Drive workflows, group/thread workflows | Recommended — the primary, actively-developed channel |
| Telegram | Mobile control, voice input, file delivery, multi-bot operations, cron, Agent Bus | Fully supported; longest-tested, but no longer the day-to-day focus |
| Local CLI | Operations, setup, debugging, status, backups, direct sends | First-class operator interface |
| Local web console | Instance settings and a read-only inventory of bot-created, downloaded, and workspace files | Loopback-only and token-gated |
Start the local console from the repository checkout:
npm run dev -- ui
The command prints a one-time, token-bearing loopback URL such as
http://127.0.0.1:<port>/?token=.... Open the complete URL in a browser, then
select File Center. Keep the terminal process running while the page is in
use; press Ctrl-C to stop it. The private package does not install a global
cctb executable, so cctb ui is not a supported launch command.
The console has two views:
File Center is deliberately non-destructive. It highlights protected browser profiles, recently active paths, rebuildable environments, temporary content, and items that still need human judgment, but it never deletes, moves, archives, deduplicates, or automatically cleans files.
| Highlight | Why it matters |
|---|---|
| Real CLI engines, not a fake chat backend | Codex, Claude Code, Kimi Code, DeepSeek Harness, and Antigravity run as their native local CLIs, so your real auth, local files, project instructions, MCP/plugins, and engine behavior stay intact. |
| DeepSeek Harness web search plugin | Install github:cloveric/deepseek-harness-web-search-plugin; its self-contained runtime adds Brave/Tavily live search and URL extraction, while TaroCub integration remains optional. |
| DeepSeek Search MCP | Plain Harness gets Search MCP from the plugin. Managed DeepSeek bots use that registration when valid and otherwise retain TaroCub's private fallback, so exactly one mcp-cctb-search client is active while native Harness search remains available. |
| Engine-neutral Lark intake | Audio routing, video preparation, and group/topic session boundaries are resolved before dispatch, so Claude, Codex, Kimi, DeepSeek, and Antigravity receive the same media behavior and chat/thread isolation rules. |
| Session Resume | Continue existing work instead of starting over: Claude local sessions, Codex threads, Kimi ACP sessions, DeepSeek Harness sessions, and Antigravity conversations can be attached from chat and detached later. Bindings and resumed workspace roots are scoped to the private chat, group, or topic that created them, so another conversation cannot silently switch projects. |
| Mid-turn steering | While a Codex or DeepSeek turn is running on Lark, a plain-text follow-up sent within the steer eligibility window (default 30s, /steer to tune/disable/unlimit) is injected straight into it so the engine course-corrects without a second turn — acked with an OK reaction. Past the window (or with /q <message>) it queues as its own turn. Files, quoted replies, and queued backlogs keep normal FIFO order automatically. |
| Feishu/Lark as a native work surface | Lark adds what Telegram cannot: Card 2.0 choices, approval cards, Docs comment @mentions, Sheets/Docs/Drive workflows through lark-cli, /newgroup, and thread-aware group work. |
| Optional Telegram control plane | Existing deployments can still send files and screenshots, record voice messages, approve work, stop turns, inspect status, and operate multiple personal bots. |
| Engine-native progress and diagnostics | Codex consumes authoritative turn/completed summaries before any read fallback. Claude forwards child-agent text into the matching live tool panel without contaminating the parent answer. Kimi preserves ACP task/review lifecycles, DeepSeek replays ordered Harness history/projections, and Antigravity maps native structured session/text/tool/result events without posting protocol or thinking output as an answer. |
| Voice/audio ASR and video intake | Telegram voice/audio/video and Lark voice/audio resources are downloaded and transcribed before engine dispatch. Short audio uses local Qwen ASR; media entering automatic ASR at ≥ 15 minutes uses Aliyun Tingwu when configured, with chunked local fallback. Lark video is visual-first: clips ≤ 10 seconds include one chronological frame per second (up to 10), the original video path, and a best-effort audio transcript; longer or unprobeable clips skip automatic framing/ASR and pass the original path directly to the selected engine. Silent video or ASR failure never blocks visual delivery. This shared Lark preprocessing applies to Claude, Codex, Kimi, DeepSeek, and Antigravity. /stop cancels active probing, extraction, and transcription. See Long-audio cloud ASR for configuration. |
| File and artifact delivery | Agents can return generated images, PDFs, reports, decks, source bundles, and other files through structured send.file, send.image, send.batch, audio, and video tags. Structured/legacy aliases are deduplicated by real file identity; image batches split only on an explicit size rejection, while ambiguous acknowledgements stop without an immediate duplicate retry. |
| Scheduled work and reminders | /cron and cron.add persist one-shot reminders, recurring jobs, and agent-run scheduled tasks outside model memory, with chat/thread routing preserved. |
| Agent Bus | Multiple bot instances can call each other as local workers for delegation, fan-out, chain, verifier, and coordinator-led crew workflows. |
| Mini Bus | Telegram topics or Lark threads can become lightweight named peers, so one group can run planner/writer/reviewer-style workflows without separate bots. |
| Board | Durable Kanban state for tasks, model-assisted planning, dependencies, WIP, review gates, workspaces, heartbeats, stale-run recovery, Lark task cards, and execution history. |
| Search MCP | Optional Brave/Tavily MCP gives source-traceable web_search, web_extract, provider status, fallback notices, and source logs. |
| Operational visibility | status, doctor, timeline, audit, dashboard, usage tracking, service locks, and backups make failures inspectable instead of mysterious. |
| Web console and File Center | npm run dev -- ui starts a loopback-only, token-gated console for safe instance configuration and a read-only, filterable inventory of bot files and storage usage. |
| VC meeting attendance (experimental) | On Feishu/Lark, the bot can join a video meeting, follow the live transcript, answer when addressed, invite participants, and explicitly end a hosted meeting (/meeting join/status/ask/leave/invite/end). Off by default; requires Feishu's bot-join beta allowlist. |
| Feature | Feishu/Lark | Telegram | Local CLI |
|---|---|---|---|
| Codex / Claude Code / Kimi Code / DeepSeek Harness / Antigravity engines | Yes | Yes | Yes |
| Session resume / detach | Yes | Yes | Yes |
| Voice/audio ASR and video intake | Frames/direct path by duration | ASR | Inspect/debug |
| File and image delivery | Yes | Yes | lark send / telegram send |
| Stop and approvals | Interactive cards | Inline buttons | Service controls |
Mid-turn steering + /q queue escape | Yes (Codex and DeepSeek) | Planned | Native in the corresponding CLI |
| Plan Mode-style choices | Rich choice cards | Sequential buttons, including multi-select | Tool/debug path |
| Cron reminders and agent jobs | Yes | Yes | Manage/list/run |
| Board durable tasks | Yes | Yes | Inspect/export |
| Agent Bus fan/chain/verify | Yes | Yes | Configure peers |
| Mini Bus topic/thread workflows | Lark threads | Telegram topics | Inspect state |
| Docs comments and Sheets workflows | Yes, with lark-cli | Not applicable | Provision/auth/doctor |
| VC meeting attendance (gated beta) | /meeting commands | Not applicable | Config + preflight |
| Web console and File Center | — | — | npm run dev -- ui (loopback + token) |
| Timeline, audit, dashboard, usage | Yes | Yes | Primary ops surface |
Select Kimi in either chat channel with /engine kimi (or use
telegram engine kimi --instance <name> for a Telegram instance). The service
resolves KIMI_EXECUTABLE first and otherwise
falls back to ~/.kimi-code/bin/kimi; Kimi Code must already be authenticated
locally. TaroCub uses the persistent kimi acp protocol, not prompt-mode text
scraping.
Kimi supports streamed text/thought/tool events, /stop, tool approvals,
multi-question and multi-select Lark/Telegram forms, /compact,
model/effort/mode options, and /resume session scanning/selection. TaroCub loads instance and
channel guidance through a workspace .kimi-code/agents/agent.md main-agent
override that retains Kimi's ${base_prompt} and ${plugin_sections}. It also
exposes local Codex skills to bridge-owned Kimi workspaces and injects the
built-in Search MCP alongside Kimi's native MCP/plugins.
The current compatibility baseline is Kimi Code 2.1.1 with
@agentclientprotocol/sdk 1.4.0. The public packages/acp-server tree and Hook
event surface consumed by TaroCub remain unchanged. TaroCub's real adapter
re-verified new/list/load plus a resumed turn, cancellation followed by worker
reuse, exactly one Hook start and terminal event for a background Bash task,
Search MCP discovery, a two-field multi-select form, and external symlinked
Skills. Kimi 2.1.1 rolls back 2.1.0's post-trust realpath restrictions, so the
bridge-owned .kimi-code/skills link remains supported. Its restored default
filesystem watchers are left enabled so native config, Skill, MCP, and
instruction changes can reload while a persistent worker is alive. No
compatibility shim is required. Kimi
0.43's standard ACP form elicitation was verified end to end with two
questions, including multi-select and distinct display labels/wire values.
Older permission-style single-choice requests remain supported as a
compatibility fallback. TaroCub
always supplies the complete configured
MCP list and fails closed if Kimi rejects session initialization; it does not
retry by silently removing stdio search. Native Kimi user/project MCP files and
plugins remain independent. Kimi 0.43 can defer MCP tool definitions, but the
built-in Search MCP deliberately remains immediately discoverable rather than
being deferred. Kimi 0.42 always enables its secondary-model pool,
but without a [secondary_model] section subagents inherit the caller's model,
so existing TaroCub instances do not need a new model setting.
Kimi full-auto maps to ACP yolo; delegated terminal working directories are
kept inside the real workspace, but this is not an OS sandbox. Explicit
bypass maps to ACP auto. Starting with Kimi 0.41.0, auto is true Never Ask
mode: dangerous and unanalyzable commands execute without interruption. New
Kimi configurations therefore default to bridge full-auto / ACP yolo; use
telegram yolo unsafe or /yolo unsafe only when fully unattended execution is
intentional. Pre-0.41 Kimi bypass values without the new explicit Never Ask
acknowledgement are also resolved as yolo; re-run the unsafe command to opt in
under the new semantics.
Kimi 0.41.0 also allows AskUserQuestion(background=true) to outlive the
foreground turn. TaroCub keeps those approval cards attached to the retained
background task instead of aborting them with the completed turn, routes a late
request through the hook-recorded question task even across a newer foreground
turn, and aborts it on TaskStop, terminal WaitFor, worker teardown, or bounded
expiry.
TaroCub implements the ACP terminal lifecycle used by Kimi for delegated
Bash/process work (create, bounded UTF-8 output, wait, kill, and release), and
cleans up unreleased terminals when a worker exits. KIMI_CODE_LEGACY_FLAG=1
remains a rollback escape hatch, not the recommended Bot configuration.
Kimi's plugin manager is not part of the ACP surface used by TaroCub. Optional
official capabilities such as Kimi Computer Use and Kimi WebBridge must be
installed or updated once in the local interactive Kimi TUI, then activated
for the Bot with a fresh TaroCub session (/reset). Plugins are user-wide and
may add browser/computer-control MCP servers, so TaroCub deliberately does not
auto-install them.
With Kimi Code 0.32 or newer, TaroCub also installs an inert local hook plugin
under KIMI_CODE_HOME and activates it only for bridge-owned ACP subprocesses.
TaskStarted, background-task Notification, SubagentStop, TurnStarted,
Stop, StopFailure, and Interrupt feed the existing run cards, worker
retention, and restart guard. Kimi 0.33 introduced a completed-process review
flow in a synthetic task-origin turn where it may inspect bad output and retry.
TaroCub
retains that autonomous ACP stream after the original user turn has ended,
keeps intermediate process failures in the audit timeline without sending
misleading failure cards, and delivers only Kimi's final reviewed conclusion.
If no review turn arrives, a bounded fallback delivers the real task output;
accepted relay events are drained before that fallback decides no review exists,
and lost reviews