我开源了一个 Python 工作资料整理工具:自动读取 Word、Excel 并生成 AI 周报
工作资料经常分散在 Word、Excel、Markdown 和纯文本文件中。每周整理工作周报时通常需要先逐个打开文件再复制内容、归纳重点最后手动整理成报告过程比较耗时。因此我写了一个小型 Python 项目Work Inbox Agent。它可以扫描指定目录读取常见工作文档提取统一格式的内容并调用 DeepSeek 生成带来源引用的工作周报。项目已经上传到 AtomGit项目地址Work-Inbox-Agent:本地读取 Word、Excel、Markdown 和文本资料调用 DeepSeek 生成带来源引用的工作周报。 - AtomGit一、项目功能目前项目支持以下文件格式.docx读取 Word 段落和表格.xlsx读取 Excel 工作表、表头、行数和前 50 行内容.md读取 Markdown 文本.txt读取普通文本文件对于暂不支持的文件格式程序会记录为unsupported不会因为单个文件无法读取而中断整个扫描过程。项目会将不同文件解析成统一的数据结构主要包含文件名文件类型文件内容文档章节表格内容文件元数据之后可以将这些内容交给 DeepSeek生成 Markdown 和 JSON 两种格式的工作周报。二、项目处理流程整个流程可以分为五步扫描工作资料目录 ↓ 识别文件类型 ↓ 提取 Word、Excel、Markdown 和文本内容 ↓ 整理为统一的数据结构 ↓ 调用 DeepSeek 生成周报这样做的好处是文件读取和 AI 总结相互独立。后续如果需要增加 PDF、CSV 或其他文件格式只需要增加对应的读取器不需要修改整个工作流。三、项目结构项目的主要目录如下work-inbox-agent/ ├── examples/ │ └── work-files/ ├── tests/ │ └── test_readers.py ├── work_inbox/ │ ├── readers/ │ │ ├── base.py │ │ ├── docx.py │ │ ├── text.py │ │ ├── xlsx.py │ │ └── registry.py │ ├── skills/ │ │ └── weekly_report/ │ ├── workflows/ │ │ └── weekly_report.py │ ├── cli.py │ ├── model_client.py │ └── models.py ├── .env.example ├── launcher.py ├── pyproject.toml └── README.md其中readers负责读取不同类型的文件models.py定义统一的数据模型model_client.py负责调用 DeepSeekworkflows负责组织周报生成流程tests保存读取器相关测试launcher.py提供简单的桌面启动入口四、如何安装项目要求 Python 3.10 或更高版本。先克隆项目git clone https://gitcode.com/weixin_62375676/Work-Inbox-Agent.git cd Work-Inbox-Agent创建虚拟环境python -m venv .venvmacOS 或 Linux 执行source .venv/bin/activateWindows 执行.venv\Scripts\activate安装项目依赖pip install -e .项目使用了以下主要依赖openpyxl openai python-docx python-dotenv五、配置 DeepSeek先复制环境变量示例文件cp .env.example .env然后打开.env填写自己的配置DEEPSEEK_API_KEY你的密钥 DEEPSEEK_BASE_URLhttps://api.deepseek.com DEEPSEEK_MODELdeepseek-flash真实的 API Key 不应该提交到 Git 仓库中。项目的.gitignore已经忽略了.env文件公开项目时只保留.env.example。这一点比较重要因为 API Key 一旦被提交到公开仓库可能会被其他人复制使用造成费用损失或账号风险。六、命令行使用扫描资料目录并输出提取结果work-inbox scan ./examples/work-files \ --output ./output/extracted_documents.json生成指定周期的周报work-inbox weekly ./examples/work-files \ --period 2026-09-28 至 2026-10-02也可以不安装命令行入口直接使用 Python 模块python -m work_inbox.cli scan ./examples/work-files生成的结果会包含每个文件的来源信息方便后续检查周报内容是从哪一个文件提取出来的。七、实现过程中比较重要的几个问题1. 不同文件格式如何统一处理Word、Excel 和文本文件的结构差异比较大。Word 主要是段落和表格Excel 主要是工作表、行和列而 Markdown 和 TXT 只有文本内容。如果直接把不同读取结果交给后续逻辑代码会比较混乱。因此项目使用统一的数据结构保存解析结果让后续工作流不需要关心具体的文件格式。2. 单个文件读取失败不能影响全部任务实际工作目录中可能存在损坏文件、临时文件或者不支持的格式。如果遇到一个文件就直接抛出异常整个周报任务可能会失败。因此当前设计会尽量记录文件状态让其他可读取的文件继续处理。3. API Key 不能写死在代码中项目需要调用 DeepSeek API但密钥不能直接写在 Python 文件中。目前支持两种方式写入.env在 macOS 启动界面中临时填写无论采用哪种方式都不应该把真实密钥提交到公开仓库。4. 模型返回结果需要校验项目要求模型返回 JSON但模型返回内容不一定总是完全符合预期。因此代码会检查返回内容是否为空内容是否可以解析为 JSONJSON 顶层是否为对象如果返回结果不符合要求程序会给出错误提示而不是继续生成错误报告。八、测试情况项目当前包含读取器测试覆盖了 Word、Excel、Markdown 和文本等基本场景。本地运行测试python -m pytest目前测试结果为5 passed这说明当前基础读取功能可以正常通过测试。但项目仍然是一个小型工具后续还需要增加更多测试例如空文件处理损坏文件处理大型 Excel 文件处理模型接口超时模型返回格式错误不同操作系统下的启动脚本测试九、开源说明这个项目使用 MIT License 发布。MIT License 允许其他人学习、使用、修改和再发布项目但需要保留原作者的版权声明和许可证内容。项目目前更适合作为个人工作资料整理工具和学习项目使用。如果要应用在正式生产环境中还需要进一步考虑工作资料中的隐私和敏感信息API 调用费用文件权限网络异常和重试日志脱敏大文件处理模型输出的人工审核尤其是工作资料中可能包含客户信息、公司内部信息或个人隐私使用 AI 总结前应先确认资料是否允许发送到第三方模型服务。十、后续计划后续计划包括增加 PDF 和 CSV 文件读取支持。增加更详细的文件读取日志。增加模型调用失败后的重试和超时处理。增加周报模板配置功能。增加更多测试用例。完善 Windows 和 macOS 的启动方式。增加敏感信息识别和脱敏功能。结语这个项目并不是一个大型系统而是我针对实际工作资料整理场景编写的一个小工具。通过这个项目我也重新梳理了几个比较基础但实用的问题如何设计不同文件格式的统一读取接口如何管理环境变量和 API Key如何让单个文件异常不影响整体任务如何校验 AI 返回的结构化结果如何为一个 Python 工具补充测试和 README如果你也经常需要整理 Word、Excel 和 Markdown 文件可以试试这个项目也欢迎在 AtomGit 仓库中提出 Issue 或改进建议。项目地址Work-Inbox-Agent:本地读取 Word、Excel、Markdown 和文本资料调用 DeepSeek 生成带来源引用的工作周报。 - AtomGit本文使用 AI 辅助整理文字结构项目代码、功能说明和测试结果均以实际仓库内容为准。

相关新闻

大模型扩展实战:横向、纵向与功能扩展的工程化策略

大模型扩展实战:横向、纵向与功能扩展的工程化策略

1. 模型扩展的上下文与核心挑战1.1 为什么“扩展”是一个持续性的工程命题很多人在第一次接触模型扩展时,会把它理解成一次性的操作——把参数调大、把数据加多、把层数堆深,然后就结束了。但实际做过几个项目之后你会发现,模型扩展更像是一个…

2026/10/13 6:57:54 阅读更多 →
上海酒店游泳池卫生检测-池水、附属空间与报告范围怎样对应

上海酒店游泳池卫生检测-池水、附属空间与报告范围怎样对应

上海酒店游泳池卫生检测的范围,要从实际池体、附属空间和结果项目逐项确认,不能由报告标题包办。主池水结果不自动覆盖小池,空气结果不能替代水质,停用状态也不能在不同设施间直接复制。将稳定编号、位置、采样时间和当日条件连起…

2026/10/13 6:56:54 阅读更多 →
bsp学习:S5P6818启动流程

bsp学习:S5P6818启动流程

1. 启动方式确认读System Boot,系统配置,原理图启动模式有多种,SD0 SD1 SD2不同配置确定其启动模式NC表示断路,原理图得SD0 SD1 SD2101,则启动方式为SD/MMC,其中SD302. 确定启动端口(有三个SD/M…

2026/10/13 6:56:54 阅读更多 →

最新新闻

SpringBoot+Vue打造装饰工程管理系统:完整实战解析

SpringBoot+Vue打造装饰工程管理系统:完整实战解析

做装饰工程项目管理的系统,很多老牌软件公司都停留在单体架构时代,界面老旧、流程僵硬,项目经理宁可自己拉Excel表格也不愿意用。而新团队上来就搞微服务分布式,对一家中小型装饰公司来说,根本就是杀鸡用牛刀&#xff…

2026/10/13 7:36:08 阅读更多 →
Dalsa Nano相机C++采集例程:从接口配置到稳定抓帧

Dalsa Nano相机C++采集例程:从接口配置到稳定抓帧

简介:面向机器视觉、自动化检测与工业现场应用的 Dalsa Nano 相机 C 使用例程,以 GigE Vision 千兆网通信协议为基础,完整演示了相机从连接初始化、参数配置到实时图像采集、显示与保存的整个流程。压缩包内含 77 个文件,主体为 C…

2026/10/13 7:36:08 阅读更多 →
Hive多DISTINCT性能优化:用COLLECT_SET替代COUNT(DISTINCT)

Hive多DISTINCT性能优化:用COLLECT_SET替代COUNT(DISTINCT)

1. 项目概述:为什么“多个DISTINCT”会成为Hive SQL里的隐形性能杀手你有没有写过这样的Hive SQL?SELECT dt,COUNT(DISTINCT user_id) AS dau,COUNT(DISTINCT CASE WHEN is_paying 1 THEN user_id END) AS paying_users,COUNT(DISTINCT CASE WHEN chann…

2026/10/13 7:36:08 阅读更多 →
Flutter鸿蒙化适配:floor_generator桥接SQLite的完整实践与踩坑记录

Flutter鸿蒙化适配:floor_generator桥接SQLite的完整实践与踩坑记录

上个月在适配一个跨平台进销存项目到鸿蒙平台时,数据库层成了第一个硬骨头。这个项目的十几个业务模块全部建立在 floor 这个 ORM 框架之上,实体类、DAO 接口、查询条件都是现成的,本来以为 Flutter 能在鸿蒙环境跑起来,floor 也能…

2026/10/13 7:36:08 阅读更多 →
虚拟机 ens33 没有 IP?ifconfig 不显示网卡地址的排查与修复

虚拟机 ens33 没有 IP?ifconfig 不显示网卡地址的排查与修复

刚装好的虚拟机,开机之后敲下 ifconfig ,屏幕上来回翻的输出里只有 lo 和那个让人无语的 ens33 ,连个 IPv4 地址都不给。这个画面我见过太多次,第一次踩坑时还以为是虚拟网卡坏了,把虚拟机删了重建两回&#xff…

2026/10/13 7:36:08 阅读更多 →
E2B沙箱实战:AI智能体代码执行失控防护与排障指南

E2B沙箱实战:AI智能体代码执行失控防护与排障指南

1. 先搞清楚:AI 智能体为什么总能把沙箱跑崩上周有个朋友找我,说他的 AI 智能体项目出事了:Agent 在沙箱里跑了一段“看似无害”的 Python 脚本,结果沙箱彻底失联,连宿主机都差点被拖挂,最后只能重启整台机…

2026/10/13 7:35:07 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →