面向安全的 DeepSeek Harness 飞书通道:提供白名单远程 Agent 访问、工作区路径与符号链接边界校验、风险分级审批、会话隔离、日志脱敏和有界消息队列。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:WyattJHayes/dsh-feishu-channel
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
在飞书中驱动本机 DeepSeek Harness Agent。插件使用飞书官方 WebSocket 长连接接收事件,再经 Open API 回发文本;本机不监听公网端口。
当前版本支持:
- 绑定项目目录后复用同一个 DSH Agent 会话;桌面端可以看到同一 session。
/new会清除当前会话级模型选择;下一次创建 Agent 时使用当前默认模型。- 同一 chat 的普通 prompt 按 FIFO 顺序执行,阶段摘要和最终结果回发飞书。
/project、/new、/status、/cancel、/approve、/deny、/help。- 高风险工具调用的一次性审批。审批默认 10 分钟过期,取消、断线或插件停止时按拒绝处理。
- 重启后恢复已保存 session;恢复失败不会静默创建替代 session,请使用
/new显式重置。
凭证
App ID 和 App Secret 只通过 DSH 凭据服务读取,插件配置和状态文件只保存引用,不保存凭证值:
dsh credentials set FEISHU_APP_ID <your-app-id>
dsh credentials set FEISHU_APP_SECRET <your-app-secret>
默认引用名必须保持为 FEISHU_APP_ID 和 FEISHU_APP_SECRET。凭证引用只允许环境变量格式的名称,例如 feishu.app_id 不合法。
配置
在 web profile 的 Cordis patch 中为插件配置显式白名单和允许的项目根目录。所有列表默认为空,空列表会拒绝来源或项目绑定:
- insert:
- id: feishu-channel
name: dsh-feishu-channel
config:
allowedOpenIds: [ou_example]
allowedChatIds: [oc_example]
allowedProjectRoots:
- /Users/example/Projects
agentPreset: restricted
私聊至少需要 allowedOpenIds。群聊同时需要发送者的 open_id 和群的 chat_id。项目路径必须是允许根目录内的已有目录,插件会按真实路径检查符号链接和路径边界;不会默认放行当前目录、用户目录或整个文件系统。
群聊回复默认只发给通过白名单的发送者,避免群内其他成员旁观 Agent 输出。确实需要共享群聊结果时,显式设置 groupOutputMode: group,并确认群成员都属于可信输出受众。未授权事件不会回发拒绝消息,以避免身份探测和出站队列消耗。
可选配置包括 stateFile、groupOutputMode、approvalTimeoutMs、progressIntervalMs、maxProgressMessages、progressStatusTtlMs、maxProgressSessions、maxPromptLength、maxQueuedPrompts、maxOutboundQueue、maxOutboundTextLength、maxOutboundChunks、dedupeCapacity、dedupeTtlMs、agentOperationTimeoutMs、whenIdleTimeoutMs 和 cancelTimeoutMs。数值配置有保守上限,maxProgressMessages 默认是 12,progressStatusTtlMs 默认是 900000 毫秒,maxProgressSessions 默认是 1024,maxQueuedPrompts 默认是 8,maxOutboundQueue 默认是 64,maxOutboundTextLength 默认是 12000,maxOutboundChunks 默认是 4,stateFile 只能落在 DSH 主目录的 cache 内;未设置 DSH_HOME 时沿用 DSH 的默认 ~/.dsh 主目录。
使用
/project /absolute/path/to/project
/status
请修改一个文件并运行测试
/cancel
/approve <id>
/deny <id>
/new
/help
普通文本必须先绑定项目。控制命令不会进入 prompt 队列。未知 slash 文本按普通 prompt 处理。工具参数、文件内容、环境变量和完整模型流不会自动发送到飞书,只回传阶段摘要和最终文本。
安全边界
白名单成员拥有所选 Agent preset 在本机上的全部能力,应把飞书接入视为把终端交给白名单成员。建议使用受限 preset,并只配置必要的 allowedProjectRoots。插件创建或恢复会话前会强制使用 workspace-write 与 ask;已有但无法证明由插件管理的 live Agent 不会被复用,请使用 /new。
文件删除、外部写入、发布推送、强制 Git 操作、系统级或高权限命令需要一次性审批;未知工具、无法判断的命令和越出项目目录的访问会拒绝。审批 token 只能由原 chat 使用一次,不能跨 chat 复用。
如果 App Secret 曾经出现在聊天、日志或屏幕中,应立即在飞书开放平台轮换 App Secret,然后通过 DSH 凭据服务写入新值,并重启 web profile。不要把新旧密钥写进插件配置、状态文件或 README。
人工冒烟
插件测试只使用假的 Agent 和 Lark 输出,不会自动向飞书发送消息。真实验证需由用户在已授权 chat 中手动发送:绑定项目、执行只读任务、触发并批准/拒绝高风险操作、取消运行、/new、重启恢复,以及未授权来源拒绝。
License
MIT
链接
同类插件
toby-bridges/api-relay-audit★ 875
从 DeepSeek Harness 对 AI API 中转站和 LLM 代理运行本地安全审计,生成 Markdown 报告,覆盖提示词注入、模型替换信号、工具调用改写、错误泄漏、流完整性和按 profile 启用的 Web3 风险。
SeaOf0/dsh-redteam-model★ 682
面向授权安全研究的 DSH 合集:九个工作模式(redteam 总控、渗透测试、代码审计、二进制分析、攻防评估、免杀对抗、应急溯源、云安全攻防、CTF 解题)与十五个运行时插件,设置页管理台支持一键部署、安装、更新与卸载。
howmp/dsh-pentest★ 607
面向 DeepSeek Harness 的授权渗透模式:以探索链路记录目标、线索、资产与漏洞,并在 Web 中可视化展示。
PerryLink/dsh-auto-review★ 235
审批链上的第二模型自动审查:只读审查子代理返回带理由的 allow/deny 结构化裁决,默认 fail-closed。
NanmiCoder/dsh-auto-mode★ 164
在 Workspace Write 与 Full access 之间增加 Auto 权限档:日常操作留在官方 workspace-write 沙箱内,由当前会话模型复核升权与破坏性调用,精确的越界访问按次放行一次,意图不明时询问,命中关键路径则拒绝。
PerryLink/dsh-permission-rules★ 120
Claude Code 风格的声明式权限规则:按序 allow/deny/ask 的 YAML 规则,在 tools/pre-execute 瀑布上匹配工具名、参数、工作区路径与 agent 身份,带完整会话日志审计、干跑模式与热重载。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。