From fba2d2b7a78105d9fe9e558023a2c47503b9b983 Mon Sep 17 00:00:00 2001
From: Liu Xiaodong <164149097+SheldonLiu0412@users.noreply.github.com>
Date: Fri, 3 Apr 2026 19:43:43 +0800
Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E9=A3=9E=E4=B9=A6=E8=AE=BE?=
=?UTF-8?q?=E7=BD=AE=E9=A1=B5=E6=9D=83=E9=99=90=E8=AF=A6=E6=83=85=E6=94=B6?=
=?UTF-8?q?=E8=B5=B7=E6=80=81=20+=20=E6=96=B0=E5=A2=9E=E9=A3=9E=E4=B9=A6?=
=?UTF-8?q?=20CLI=20=E9=85=8D=E7=BD=AE=E5=BC=95=E5=AF=BC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 权限列表改为默认收起,点击展开查看详情,减少页面长度
- 新增「配置飞书 CLI」区块,含可收起的三步配置说明和一键复制提示词按钮
- 统一两处收起/展开的 UI 样式(ChevronRight 箭头 + 过渡动画)
- 微调创建飞书 Bot 引导步骤的文案
Made-with: Cursor
---
.../components/settings/FeishuSettings.tsx | 117 +++++++++++++++---
1 file changed, 102 insertions(+), 15 deletions(-)
diff --git a/apps/electron/src/renderer/components/settings/FeishuSettings.tsx b/apps/electron/src/renderer/components/settings/FeishuSettings.tsx
index a76fa06..0ded7aa 100644
--- a/apps/electron/src/renderer/components/settings/FeishuSettings.tsx
+++ b/apps/electron/src/renderer/components/settings/FeishuSettings.tsx
@@ -9,7 +9,7 @@
import * as React from 'react'
import { useAtomValue, useSetAtom } from 'jotai'
import { toast } from 'sonner'
-import { Loader2, CheckCircle2, XCircle, ExternalLink, Users, User, Trash2, RefreshCw, Copy, Check, Power, PowerOff, Plus } from 'lucide-react'
+import { Loader2, CheckCircle2, XCircle, ExternalLink, Users, User, Trash2, RefreshCw, Copy, Check, Power, PowerOff, Plus, ChevronRight } from 'lucide-react'
import { Button } from '@/components/ui/button'
import {
Select,
@@ -101,6 +101,7 @@ function Link({ href, children }: { href: string; children: React.ReactNode }):
/** 权限列表展示 + 一键复制批量权限 JSON */
function PermissionsStep(): React.ReactElement {
const [copied, setCopied] = React.useState(false)
+ const [expanded, setExpanded] = React.useState(false)
const handleCopy = React.useCallback(() => {
navigator.clipboard.writeText(FEISHU_SCOPES_JSON).then(() => {
@@ -123,6 +124,27 @@ function PermissionsStep(): React.ReactElement {
进入「权限管理」页面,点击下方按钮复制权限配置 JSON,
然后在飞书开放平台通过「批量开通」粘贴即可一键添加所有权限:
+
+ {expanded && (
+
+
im:message — 获取与发送单聊、群组消息
+
im:message:send_as_bot — 以机器人身份发送消息
+
im:message.p2p_msg:readonly — 接收用户发给机器人的单聊消息
+
im:message.group_at_msg:readonly — 接收群聊中 @机器人 的消息
+
im:message.group_msg — 读取群聊历史消息(群聊上下文)
+
im:chat:readonly — 获取群组信息
+
im:chat.members:read — 获取群成员列表(支持 @某人)
+
im:resource — 获取消息中的资源文件(图片、文档等)
+
contact:contact.base:readonly — 获取用户基本信息(群聊发送者名称)
+
+ )}
: }
{copied ? '已复制' : '复制批量权限配置'}
-
-
im:message — 获取与发送单聊、群组消息
-
im:message:send_as_bot — 以机器人身份发送消息
-
im:message.p2p_msg:readonly — 接收用户发给机器人的单聊消息
-
im:message.group_at_msg:readonly — 接收群聊中 @机器人 的消息
-
im:message.group_msg — 读取群聊历史消息(群聊上下文)
-
im:chat:readonly — 获取群组信息
-
im:chat.members:read — 获取群成员列表(支持 @某人)
-
im:resource — 获取消息中的资源文件(图片、文档等)
-
contact:contact.base:readonly — 获取用户基本信息(群聊发送者名称)
-
)
}
+// ===== 飞书 CLI 预置 Prompt =====
+
+const FEISHU_CLI_PROMPT = `请帮我配置飞书 CLI 开发环境,按以下步骤执行:
+
+1. 安装飞书 CLI 到全局
+npm install -g @larksuite/cli
+
+2. 将 SKILL 配置到本工作区(不要安装在全局)
+npx skills add https://github.com/larksuite/cli -y -g
+
+3. 初始化 CLI 配置
+lark-cli config init --new
+
+到最后一步配置环节需要特别提醒用户:已有Bot应用则选择已有应用,没有再选择新建飞书CLI应用。`
+
+/** 飞书 CLI 配置引导 */
+function FeishuCliSection(): React.ReactElement {
+ const [expanded, setExpanded] = React.useState(false)
+ const [copied, setCopied] = React.useState(false)
+
+ const handleSendToAgent = React.useCallback(() => {
+ navigator.clipboard.writeText(FEISHU_CLI_PROMPT).then(() => {
+ setCopied(true)
+ toast.success('配置指令已复制,请在 Agent 对话中粘贴发送')
+ setTimeout(() => setCopied(false), 2000)
+ }).catch(() => {
+ toast.error('复制失败')
+ })
+ }, [])
+
+ return (
+
+
+
+
复制配置提示词,并前往飞书Bot日常绑定的默认工作区,发送即可让 Proma 协助完成配置。(SKILL仅安装于当前工作区,避免占用大量上下文和增加Token消耗。)
+
+
+ {expanded && (
+
+
步骤 1 — 安装飞书 CLI 到全局
+
npm install -g @larksuite/cli
+
步骤 2 — 将 SKILL 配置到本工作区(不要安装在全局)
+
npx skills add https://github.com/larksuite/cli -y -g
+
步骤 3 — 初始化 CLI 配置
+
lark-cli config init --new
+
+ )}
+
+
+
+
+
+ )
+}
+
// ===== 绑定卡片组件 =====
interface FeishuBindingCardProps {
@@ -730,7 +814,7 @@ function FeishuConfigTab(): React.ReactElement {
飞书开放平台
{' '}(海外版:
Lark 开放平台
- ),点击「创建自建应用」,填写应用名称和描述。
+ ),点击「创建自建应用」并填写名称描述。
@@ -741,10 +825,10 @@ function FeishuConfigTab(): React.ReactElement {
获取凭证
- 进入应用详情页,在「凭证与基础信息」中找到{' '}
+ 进入详情页,在「凭证与基础信息」中找到{' '}
App ID 和{' '}
App Secret,
- 复制到上方的配置表单中。
+ 复制到上方的配置表单。
@@ -811,6 +895,9 @@ function FeishuConfigTab(): React.ReactElement {
+ {/* 飞书 CLI 配置引导 */}
+
+
)
}
From 211525c724f78443b8cc0e5ad192af7e741d491f Mon Sep 17 00:00:00 2001
From: Liu Xiaodong <164149097+SheldonLiu0412@users.noreply.github.com>
Date: Fri, 3 Apr 2026 19:57:17 +0800
Subject: [PATCH 2/2] =?UTF-8?q?chore:=20=E5=BE=AE=E8=B0=83=E9=A3=9E?=
=?UTF-8?q?=E4=B9=A6=20CLI=20=E9=85=8D=E7=BD=AE=E5=BC=95=E5=AF=BC=E6=96=87?=
=?UTF-8?q?=E6=A1=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 移除说明中括号内的 Token 消耗提示,精简文案
- 步骤 2 补充提醒用户是否需要额外安装到全局的说明
Made-with: Cursor
---
.../src/renderer/components/settings/FeishuSettings.tsx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/apps/electron/src/renderer/components/settings/FeishuSettings.tsx b/apps/electron/src/renderer/components/settings/FeishuSettings.tsx
index 0ded7aa..9a81116 100644
--- a/apps/electron/src/renderer/components/settings/FeishuSettings.tsx
+++ b/apps/electron/src/renderer/components/settings/FeishuSettings.tsx
@@ -196,7 +196,7 @@ function FeishuCliSection(): React.ReactElement {
>
-
复制配置提示词,并前往飞书Bot日常绑定的默认工作区,发送即可让 Proma 协助完成配置。(SKILL仅安装于当前工作区,避免占用大量上下文和增加Token消耗。)
+
复制配置提示词,并前往飞书Bot日常绑定的默认工作区,发送即可让 Proma 协助完成配置。