sliverp/DeepSeek-harness-lark0

deepseek-harness-lark

Feishu and Lark text, image, and file channel bridge for DeepSeek Harness

AI 分析

核心用途是将飞书/Lark 消息通道与 DSH Agent 桥接,支持多媒体消息传输及精细的访问控制策略。适合需要通过飞书与 DSH 智能体交互并进行权限管控的团队。

パッケージ
deepseek-harness-lark
バージョン
0.1.2
ライセンス
MIT
最終更新
2026/08/14

インストール

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:sliverp/DeepSeek-harness-lark

ドキュメント

README 全文を読む ↗

Bundle configuration

- id: lark-channel
  name: deepseek-harness-lark
  config:
    appId: !!js process.env.LARK_APP_ID
    appSecretRef: LARK_APP_SECRET
    cwd: !!js process.env.DSH_LARK_CWD ?? process.cwd()

International Lark and restrictive policy example:

    domain: lark
    singlePolicy: allowlist
    singleAllowFrom: [ou_xxx]
    groupPolicy: allowlist
    groupAllowChats: [oc_xxx]
    groupRequireMention: true
    imageInputMode: auto
    maxInboundFiles: 10
    maxInboundFileBytes: 52428800
    maxInboundMessageFileBytes: 104857600
    maxReplyFiles: 5
    maxOutboundFileBytes: 31457280
    agentPreset: standard

Access policies accept open, allowlist, or disabled. Use allowlists and least-privilege Harness permissions in production.

Inbound images and ordinary files are downloaded through the message-scoped resource endpoint using their matching message_id and resource key; this requires im:message:readonly (or the broader im:message). The separate im:resource scope remains necessary for bot-side image/file upload. Filenames are reduced to safe leaf names, files are created without overwriting existing paths, and each message gets a private directory below /.dsh-lark/inbox/. The defaults allow 10 files, 50 MiB per file, and 100 MiB total per message. The model receives the saved path and must use its normal filesystem tools to read the file; file contents are not executed or silently injected into the prompt.

When the model intentionally returns a regular workspace file, it places an explicit Markdown link to that file in the final visible answer. The plugin resolves the canonical path, rejects missing files, directories, symlink escapes, and every target outside the session cwd, then uploads the bounded bytes with Lark's file API. Only the final assistant message is inspected; intermediate tool output cannot trigger a file send. By default, one reply may send up to 5 non-empty files of at most 30 MiB each.

agentPreset is the explicit fallback for new sessions and persisted records without a preset. The tool-loop fix advances the plugin session namespace from lark-v1-* to lark-v2-*: existing files are neither deleted nor rewritten, but the plugin no longer appends to potentially DSML-contaminated lark-v1-* records. They remain available for inspection in the Web UI.