🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

飞书生活管家 zhiyang052/dsh-feishu-assistant

DeepSeek Harness
zhiyang05265 天前有提交已提供中文文档扫描:高危

在飞书聊天里记账、排待办、管健身并定时提醒

28.8/100
综合分
3
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add zhiyang052/dsh-feishu-assistant
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
dsh 原生插件 · platform
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 65 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
🔴 安全扫描发现高危能力自动 · 静态分析源码
v2.7.0
🔴 扫描:高危尚无人工评估

静态扫描发现安装期即执行代码,或命令参数由运行时变量拼接(参数来源无法静态判定,从严处理)。

命令参数由运行时变量拼接读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 59 处,展示前 59 条)
  • 写入本地文件
    plugins/assistant-core/src/db.ts:13
    mkdirSync(dirname(dbPath), { recursive: true })
  • 读取密钥环境变量
    plugins/assistant-core/src/exercise-report.ts:67
    const apiKey = process.env.DEEPSEEK_API_KEY
  • 请求外部主机api.deepseek.com
    plugins/assistant-core/src/exercise-report.ts:72
    const resp = await fetch('https://api.deepseek.com/chat/completions', {
  • 发起网络请求
    plugins/assistant-core/src/exercise-report.ts:72
    const resp = await fetch('https://api.deepseek.com/chat/completions', {
  • 写入本地文件
    plugins/assistant-core/src/exercise-report.ts:98
    mkdirSync(dir, { recursive: true })
  • 读取本地文件
    plugins/assistant-core/src/exercise-report.ts:106
    if (existsSync(FONT)) doc.registerFont('cjk', FONT)
  • 读取本地文件
    plugins/assistant-core/src/exercise-report.ts:107
    const F = existsSync(FONT) ? 'cjk' : 'Helvetica'
  • 写入本地文件
    plugins/assistant-core/src/exercise-report.ts:140
    writeFileSync(abs, Buffer.concat(bufs))
  • 写入本地文件
    plugins/assistant-core/src/exercise-report.ts:181
    writeFileSync(abs, Buffer.from(buf))
  • 读取本地文件
    plugins/assistant-core/src/reminders-store.ts:41
    if (!existsSync(path)) return { reminders: [] }
  • 读取本地文件
    plugins/assistant-core/src/reminders-store.ts:43
    const raw = JSON.parse(readFileSync(path, 'utf8')) as RemindersFile
  • 写入本地文件
    plugins/assistant-core/src/reminders-store.ts:53
    mkdirSync(dirname(path), { recursive: true })
  • 写入本地文件
    plugins/assistant-core/src/reminders-store.ts:55
    writeFileSync(tmp, JSON.stringify(data, null, 2) + '\n', 'utf8')
  • 写入本地文件
    plugins/assistant-core/src/reminders-store.ts:56
    renameSync(tmp, path)
  • 读取本地文件
    plugins/assistant-core/src/report-core.ts:53
    if (existsSync(f)) return f
  • 读取密钥环境变量
    plugins/assistant-core/src/report-core.ts:64
    const apiKey = process.env.DEEPSEEK_API_KEY
  • 请求外部主机api.deepseek.com
    plugins/assistant-core/src/report-core.ts:91
    const resp = await fetch('https://api.deepseek.com/chat/completions', {
  • 发起网络请求
    plugins/assistant-core/src/report-core.ts:91
    const resp = await fetch('https://api.deepseek.com/chat/completions', {
  • 写入本地文件
    plugins/assistant-core/src/report-core.ts:342
    mkdirSync(dir, { recursive: true })
  • 写入本地文件
    plugins/assistant-core/src/report-core.ts:362
    writeFileSync(abs, buf)
  • 写入本地文件
    plugins/assistant-core/src/tools-annual.ts:87
    mkdirSync(join(opts.filesDir, 'charts'), { recursive: true })
  • 写入本地文件
    plugins/assistant-core/src/tools-annual.ts:90
    writeFileSync(abs, barPng(`${year} 月度待办完成数`, data))
  • 读取密钥环境变量
    plugins/assistant-core/src/tools-body.ts:289
    const apiKey = process.env.DEEPSEEK_API_KEY
  • 请求外部主机api.deepseek.com
    plugins/assistant-core/src/tools-body.ts:294
    const resp = await fetch('https://api.deepseek.com/chat/completions', {
  • 发起网络请求
    plugins/assistant-core/src/tools-body.ts:294
    const resp = await fetch('https://api.deepseek.com/chat/completions', {
  • 读取密钥环境变量
    plugins/assistant-core/src/tools-course.ts:34
    const apiKey = process.env.DEEPSEEK_API_KEY
  • 读取本地文件
    plugins/assistant-core/src/tools-course.ts:36
    const b64 = readFileSync(imagePath).toString('base64')
  • 请求外部主机api.deepseek.com
    plugins/assistant-core/src/tools-course.ts:37
    const resp = await fetch('https://api.deepseek.com/chat/completions', {
  • 发起网络请求
    plugins/assistant-core/src/tools-course.ts:37
    const resp = await fetch('https://api.deepseek.com/chat/completions', {
  • 执行外部命令固定命令
    plugins/assistant-core/src/tools-course.ts:83
    execSync('which tesseract', { stdio: 'ignore' })
  • 执行外部命令运行时拼接
    plugins/assistant-core/src/tools-course.ts:84
    return execSync(`tesseract "${imagePath}" stdout -l chi_sim 2>/dev/null`, { encoding: 'utf8', maxBuffer: 10 * 1024 * 1024 })
  • 写入本地文件
    plugins/assistant-core/src/tools-health.ts:179
    mkdirSync(join(opts.filesDir, 'charts'), { recursive: true })
  • 写入本地文件
    plugins/assistant-core/src/tools-health.ts:182
    writeFileSync(
  • 写入本地文件
    plugins/assistant-core/src/tools-ledger.ts:324
    mkdirSync(dir, { recursive: true })
  • 写入本地文件
    plugins/assistant-core/src/tools-ledger.ts:335
    writeFileSync(filePath, JSON.stringify(payload, null, 2), 'utf8')
  • 写入本地文件
    plugins/assistant-core/src/tools-ledger.ts:350
    writeFileSync(filePath, Buffer.from(buf))
  • 读取密钥环境变量
    plugins/assistant-core/src/tools-plan.ts:33
    const apiKey = process.env.DEEPSEEK_API_KEY
  • 请求外部主机api.deepseek.com
    plugins/assistant-core/src/tools-plan.ts:36
    const resp = await fetch('https://api.deepseek.com/chat/completions', {
  • 发起网络请求
    plugins/assistant-core/src/tools-plan.ts:36
    const resp = await fetch('https://api.deepseek.com/chat/completions', {
  • 读取密钥环境变量
    plugins/assistant-core/src/tools-plan.ts:220
    const apiKey = process.env.DEEPSEEK_API_KEY
  • 请求外部主机api.deepseek.com
    plugins/assistant-core/src/tools-plan.ts:224
    const resp = await fetch('https://api.deepseek.com/chat/completions', {
  • 发起网络请求
    plugins/assistant-core/src/tools-plan.ts:224
    const resp = await fetch('https://api.deepseek.com/chat/completions', {
  • 写入本地文件
    plugins/assistant-core/src/tools-report.ts:30
    mkdirSync(chartDir, { recursive: true })
  • 写入本地文件
    plugins/assistant-core/src/tools-report.ts:33
    writeFileSync(abs, buf)
  • 读取本地文件
    plugins/content-web/src/index.ts:445
    const raw = JSON.parse(readFileSync(config.remindersPath, 'utf8')) as { reminders?: Array<{ enabled?: boolean }> }
  • 读取密钥环境变量
    plugins/content-web/src/index.ts:835
    const apiKey = process.env.DEEPSEEK_API_KEY
  • 请求外部主机api.deepseek.com
    plugins/content-web/src/index.ts:838
    const resp = await fetch('https://api.deepseek.com/chat/completions', {
  • 发起网络请求
    plugins/content-web/src/index.ts:838
    const resp = await fetch('https://api.deepseek.com/chat/completions', {
  • 读取本地文件
    plugins/content-web/src/index.ts:1140
    const raw = JSON.parse(readFileSync(config.remindersPath, 'utf8')) as { reminders?: R[] }
  • 读取本地文件
    plugins/content-web/src/index.ts:1255
    if (!existsSync(target) || !statSync(target).isFile()) {
  • 读取本地文件
    plugins/content-web/src/index.ts:1255
    if (!existsSync(target) || !statSync(target).isFile()) {
  • 读取本地文件
    plugins/content-web/src/index.ts:1262
    createReadStream(target).pipe(res)
  • 读取本地文件
    plugins/feishu-bridge/src/index.ts:171
    return (JSON.parse(readFileSync(OWNER_FILE, 'utf8')) as { openId?: string }).openId
  • 写入本地文件
    plugins/feishu-bridge/src/index.ts:178
    mkdirSync(dirname(OWNER_FILE), { recursive: true })
  • 写入本地文件
    plugins/feishu-bridge/src/index.ts:179
    writeFileSync(OWNER_FILE, JSON.stringify({ openId }, null, 2), 'utf8')
  • 读取本地文件
    plugins/feishu-bridge/src/index.ts:413
    const image = readFileSync(payload.path)
  • 读取本地文件
    plugins/feishu-bridge/src/index.ts:441
    const file = readFileSync(payload.path)
  • 写入本地文件
    plugins/feishu-bridge/src/index.ts:586
    mkdirSync(dir, { recursive: true })
  • 写入本地文件
    plugins/feishu-bridge/src/index.ts:591
    writeFileSync(file, buf)
扫描于 2026/11/4(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库
涉及外部主机:api.deepseek.com

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-scope@deepseek-ai/dsh-tools@deepseek-ai/dsh-user-approval@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 聊天中记账
  • 管理日常待办
  • 定时消息提醒

基于deepseek harness和飞书机器人的个人ai助手,通过飞书聊天便捷管理日常待办,内含一个网站,可双端记录个人收支和资金情况,生成健身方案并在特定时间发消息提醒您!

README

由 DeepSeek 最新模型翻译生成
DSH 个人 AI 助手 基于 DeepSeek Harness 和飞书机器人的全能型个人 AI 助手:用飞书聊天框管理你的生活——记账、日历待办、健身健康、新闻推送、定时提醒、财务报告,一切数据同步到自建网站。 详见:docs/08-项目介绍.md — 功能/技术/架构/使用指南(完整版) 功能总览 | 模块 | 能力 | | 飞书对话 | 多领域会话(日常/记账/健康)、流式卡片、AI 视觉识别截图 | | 多账本记账 | 快捷记账(AI 自动分类)、改删流水、统计图表(ECharts)、PDF/Excel 财务报告(含 AI 总结与建议)、任意时间段导出 | | 日历待办 | 全年日历、三类待办(每天/每周/单次)、课程表截图导入、辅导员通知自动排期、抢票倒计时提醒、完成状态全端同步 | | 健身健康 | 身体指标(BMI/BMR/TDEE/VO2max)、运动记录(语言/截图录入)、肌肉分布图(点击部位看动作)、定制健身+饮食计划(热量缺口)、运动报告导出 | | 定时推送 | 早报(待办+饮食+训练三合一)、课程/待办独立提醒、喝水提醒、新闻摘要、月报年报,全部可对话配置 | | 记忆与摘抄 | 长期档案记忆(会话启动注入)、摘抄收藏、内容发布到网站 | | 个人网站 | 主页仪表盘、日历、身体状况、账单、内容、定时任务、推送记录,所有内容飞书/网站双向同步 |
展开完整文档(README 剩余 1 节)
DSH 个人 AI 助手

基于 DeepSeek Harness 和飞书机器人的全能型个人 AI 助手:用飞书聊天框管理你的生活——记账、日历待办、健身健康、新闻推送、定时提醒、财务报告,一切数据同步到自建网站。

详见:docs/08-项目介绍.md — 功能/技术/架构/使用指南(完整版)

功能总览

| 模块 | 能力 |
| 飞书对话 | 多领域会话(日常/记账/健康)、流式卡片、AI 视觉识别截图 |
| 多账本记账 | 快捷记账(AI 自动分类)、改删流水、统计图表(ECharts)、PDF/Excel 财务报告(含 AI 总结与建议)、任意时间段导出 |
| 日历待办 | 全年日历、三类待办(每天/每周/单次)、课程表截图导入、辅导员通知自动排期、抢票倒计时提醒、完成状态全端同步 |
| 健身健康 | 身体指标(BMI/BMR/TDEE/VO2max)、运动记录(语言/截图录入)、肌肉分布图(点击部位看动作)、定制健身+饮食计划(热量缺口)、运动报告导出 |
| 定时推送 | 早报(待办+饮食+训练三合一)、课程/待办独立提醒、喝水提醒、新闻摘要、月报年报,全部可对话配置 |
| 记忆与摘抄 | 长期档案记忆(会话启动注入)、摘抄收藏、内容发布到网站 |
| 个人网站 | 主页仪表盘、日历、身体状况、账单、内容、定时任务、推送记录,所有内容飞书/网站双向同步 |
| 运维 | 开机自启、崩溃自动重启、健康检查 + 飞书故障告警、数据本地化(SQLite) |

架构

┌─────────────────────────────────────────────┐
│ 飞书 App(单聊) │ └──────────────────────┬──────────────────────┘ │ WebSocket 长连接(无需公网回调) ┌──────────────────────▼──────────────────────┐ │ feishu-bridge 插件 │ │ 消息接收/领域路由/图片下载/流式输出/审批卡片 │ └──────────────────────┬──────────────────────┘ │ followup / inject / 事件 ┌──────────────────────▼──────────────────────┐ │ DeepSeek Harness Agent(多领域会话) │ │ main(对话/健身/学习) ledger(记账) │ │ health(健康) │ └───────┬──────────────┬──────────────┬────────┘ ┌───────▼──────┐ ┌─────▼─────┐ ┌─────▼──────────┐ │ assistant-core│ │ content-web│ │ scheduler │ │ 记账/待办/健康│ │ 个人网站 │ │ 定时推送/提醒 │ │ 报表/记忆/摘抄│ │ 8090 端口 │ │ +健康检查告警 │ └───────┬──────┘ └───────────┘ └─────┬──────────┘ └──────────┬─────────────────┘ ┌──────────────────▼──────────────────────────┐ │ 数据:SQLite(记账/待办/健康/摘抄/报告存档) │ │ reminders.json(定时任务)+ 素材文件 │ └─────────────────────────────────────────────┘

技术栈

| 层 | 技术 |
| 运行时 | Node.js 22+(内置 node:sqlite)、DeepSeek Harness(Cordis 插件体系) |
| IM 通道 | 飞书 @larksuiteoapi/node-sdk(WebSocket 长连接) |
| 模型 | DeepSeek API(deepseek-chat / deepseek-v4-flash-vision-exp 视觉) |
| 存储 | SQLite(WAL)+ JSON 配置 |
| 图表 | ECharts SSR + resvg(PNG) |
| 报表 | pdfkit(Noto CJK 字体)+ exceljs |
| 网站 | Node node:http 自建(无框架,纯静态渲染) |
| 部署 | systemd + Nginx(可选 Basic Auth 公网入口) |

环境要求

- 服务器:Ubuntu 22.04+,1 核 1G 起
- Node.js 22+(node:sqlite 需要)
- 飞书企业自建应用(机器人 + 长连接事件订阅)
- DeepSeek API Key(platform.deepseek.com)

快速开始

1. 服务器初始化

安装 Node 22+
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs

安装 DSH CLI
sudo npm install -g @deepseek-ai/dsh

中文字体(PDF 报告)
sudo apt-get install -y fonts-noto-cjk

2. 获取代码与依赖

git clone https://github.com/zhiyang052/dsh-feishu-assistant.git
cd dsh-assistant
npm install

3. 配置凭证

cp cordis.example.yml cordis.yml
编辑 cordis.yml:填飞书 AppID/AppSecret、服务器 IP
export DEEPSEEK_API_KEY=sk-xxx # 写入 ~/.bashrc 或 systemd EnvironmentFile

飞书应用配置(open.feishu.cn):

1. 创建企业自建应用 → 开启机器人能力
2. 「事件与回调」→ 订阅方式选长连接 → 添加事件 im.message.receive_v1
3. 「卡片回调」→ 接收方式选长连接
4. 权限管理开通:im:message、im:message:send_as_bot、im:resource
5. 发布应用版本(改动后必须重新发布)

4. 启动

dsh web --patch ./cordis.yml

生产环境:复制 deploy/dsh-assistant.service.example 到 systemd,deploy/health-check.sh 提供飞书故障告警。

💬 使用指南(飞书对话)

| 你说 | 助手做 |
| 「帮我记一笔:中行卡 -35 午饭」 | 记账 + 自动分类 |
| 「上个月账单总结」 | 统计图表 + AI 总结 + PDF/Excel 报告 |
| 「明天下午3点体测」 | 建待办,到点提醒 |
| 「我10月1号回家」 | 自动安排抢票提醒(提前15天+提前2天) |
| 「今天跑步5公里32分钟」 | 记录运动,网站出趋势图 |
| 「定制减脂计划,不吃猪肉」 | 生成健身+饮食计划(热量缺口)+ 每周待办 |
| 「今天吃什么」 | 生成四餐推荐(含热量),明早早报推送 |
| 「12分钟跑了2500米」 | 估算 VO2max |
| 「记下来:自律给我自由」 | 存入摘抄 |
| 发课程表截图 | AI 视觉提取课程,自动生成每周待办 |

网站

http://<服务器IP>:8090(默认无鉴权,建议 Nginx Basic Auth 后公网访问):

- 主页:今日待办(可一键完成)、账本余额、最近推送
- 日历:月历视图 + 完成率角标 + 月度统计
- 身体状况:指标卡、体重/运动趋势图、肌肉分布图、计划、饮食、AI 总结
- 账单:账本总览、生成财务报告(时间段/账本/图表/总结可配)、历史报告下载
- 内容/摘抄/定时任务/推送记录:全量归档

目录结构

assistant/
├── cordis.example.yml # 插件组合配置模板(凭证占位) ├── plugins/ │ ├── feishu-bridge/ # 飞书长连接桥接(消息/路由/图片/审批/推送) │ ├── assistant-core/ # 业务核心(记账/待办/健康/报表/记忆/调度) │ └── content-web/ # 个人网站(页面 + API) ├── deploy/ │ ├── install.sh # 一键部署脚本 │ ├── health-check.sh # 健康检查 + 飞书告警 │ └── dsh-assistant.service.example ├── data/ # 运行时数据(SQLite/配置,不入库) └── docs/ # 文档

📄 文档

- docs/01-项目方案.md — 整体方案与架构设计
- docs/02-环境搭建与API申请教程.md — 环境/飞书/API 申请
- docs/03-账单功能设计.md — 记账与报告设计
- docs/04-日历待办系统设计.md — 待办/日历/课程表/抢票
- docs/05-财务报告系统设计.md — PDF/Excel 报告
- docs/06-身体状况与健身管理设计.md — 健康/运动/肌肉图/计划
- docs/07-运维手册.md — 自启动/告警/故障排查/备份
- docs/08-项目介绍.md — 功能/技术/架构/使用指南(完整版)
- docs/09-网站搭建教程.md — 网站代码结构/改样式/加页面/部署

安全说明

- 凭证(飞书 AppSecret、DeepSeek Key)存于 cordis.yml / .env,已 gitignore
- 默认权限模式 danger-full-access(AI 可执行任意服务器命令)——个人服务器使用,生产请按需收紧
- 数据全部本地化(SQLite),无第三方存储

License

MIT
预览分享卡片长什么样 ↓zhiyang052/dsh-feishu-assistant
分享 · DeepSeek Harness Hub
zhiyang052/dsh-feishu-assistant

在飞书聊天里记账、排待办、管健身并定时提醒

这是你的仓库?认领条目

回到顶部