千问3.5-9B模型微调+OpenClaw:定制化周报生成助手
本文介绍了如何在星图GPU平台上自动化部署千问3.5-9B镜像,构建定制化周报生成助手。该方案结合OpenClaw框架,可自动抓取Jira数据并生成图文并茂的PDF周报,显著提升团队工作效率。本地化部署确保敏感数据安全,适用于企业内部工作流自动化场景。
千问3.5-9B模型微调+OpenClaw:定制化周报生成助手
1. 为什么需要定制化周报助手
每周五下午三点,我的日历总会准时弹出"编写周报"的提醒。这个看似简单的任务却常常让我陷入两难:要么花半小时手动整理Jira工单和Git提交记录,要么草草写几句应付了事。直到我发现OpenClaw与千问3.5-9B的组合可以彻底改变这个局面。
通过将本地部署的千问3.5-9B模型与OpenClaw自动化框架结合,我构建了一个完全私有的周报生成系统。它不仅能自动抓取Jira数据、分析代码提交记录,还能根据我们团队的特殊格式要求生成图文并茂的PDF报告。最让我惊喜的是,整个方案完全运行在我的MacBook Pro上,敏感的项目数据从未离开本地环境。
2. 技术方案设计思路
2.1 核心组件分工
这个系统的精妙之处在于三个组件的协同工作:
- 千问3.5-9B模型:负责理解周报模板风格、提取关键信息、生成自然语言描述
- OpenClaw框架:作为"数字员工"执行具体的网页抓取、文件操作和邮件发送
- 自定义技能模块:处理Jira API调用、PDF生成等专项任务
我特别选择了9B参数的千问3.5模型,因为它在我的M1 Max笔记本上能流畅运行(约12 tokens/秒),同时保持了足够强的文本理解能力。相比直接使用云端大模型,本地部署虽然响应稍慢,但完全避免了敏感项目信息外泄的风险。
2.2 数据流设计
系统的工作流程经过多次迭代优化:
- OpenClaw通过Jira REST API获取本周工单数据
- 调用本地Git命令提取代码提交统计
- 将结构化数据喂给千问模型生成初稿
- 使用pandoc将Markdown转换为PDF
- 通过SMTP协议自动发送给主管和团队
整个过程中最关键的突破点是设计了合适的数据预处理管道。原始Jira数据包含大量技术细节,直接喂给模型会导致输出过于冗长。我在OpenClaw中增加了数据清洗模块,只保留对管理层决策有价值的信息点。
3. 模型微调实战记录
3.1 准备训练数据
为了让千问3.5-9B理解我们团队特殊的周报风格,我收集了三个月的历史周报作为训练样本。通过以下命令将PDF转换为文本:
pdftotext weekly_report_2023*.pdf - > training_data.txt
关键技巧是保持数据多样性:
- 包含业务进展、技术难点、风险预警等不同章节
- 保留主管的批注和修改痕迹
- 标注出优秀的表达句式作为正例
最终整理出182个样本,使用以下格式保存为JSONL文件:
{"prompt":"Jira数据: [A-123]完成支付接口重构...[B-456]修复登录超时bug", "response":"本周重点完成了支付模块的技术升级,解决了影响用户体验的登录问题..."}
3.2 微调过程踩坑记
第一次尝试微调就遇到了显存不足的问题。千问3.5-9B在FP16精度下需要约20GB显存,而我的笔记本只有32GB统一内存。通过以下调整最终解决:
# 修改train.py关键参数
model.enable_adapters = True # 使用LoRA适配器
train_args.per_device_train_batch_size = 2 # 减小batch size
微调命令示例:
python finetune.py \
--model_name_or_path Qwen/Qwen1.5-9B \
--train_file ./training_data.jsonl \
--output_dir ./output \
--num_train_epochs 3 \
--per_device_train_batch_size 2
整个过程持续了6小时(M1 Max芯片),最终模型文件大小仅增加了178MB(适配器权重),但生成效果显著提升。测试发现模型已经学会使用我们团队特有的术语如"技术债燃烧率""业务阻塞点"等表达。
4. OpenClaw集成细节
4.1 环境配置要点
在~/.openclaw/openclaw.json中配置本地模型端点:
{
"models": {
"providers": {
"local-qwen": {
"baseUrl": "http://localhost:5000/v1",
"api": "openai-completions",
"models": [
{
"id": "qwen-9b-custom",
"name": "Fine-tuned Qwen 9B",
"contextWindow": 8192
}
]
}
}
}
}
启动模型服务时特别注意:
# 使用vLLM加速推理
python -m vllm.entrypoints.openai.api_server \
--model ./output \
--tokenizer Qwen/Qwen1.5-9B \
--port 5000 \
--enforce-eager # 避免M1/M2显卡兼容问题
4.2 技能模块开发
核心技能jira-reporter的主要逻辑:
def generate_weekly_report():
# 1. 获取Jira数据
issues = jira.search_issues('updated >= -7d')
# 2. 调用本地模型
prompt = build_prompt(issues)
response = openclaw.llm_complete(
model="qwen-9b-custom",
prompt=prompt
)
# 3. 生成PDF
pdf = markdown_to_pdf(response.text)
# 4. 邮件发送
send_email(
to=["manager@company.com"],
subject="技术周报 - {}".format(week_number),
attachments=[pdf]
)
遇到的棘手问题是Jira API的鉴权处理。最终采用OpenClaw的安全凭证存储功能:
openclaw credentials set jira_api_token xxxxx
5. 实际效果与优化
5.1 生成样例对比
原始自动生成内容:
本周完成了A-123工单和B-456工单。A-123是支付接口改动,B-456修复了登录问题。
微调优化后内容:
【核心技术进展】
• 支付接口重构(A-123):将原有三方的聚合支付切换为直连模式,成功率从92%提升至99.5%
• 登录超时优化(B-456):通过Redis会话存储改造,将超时投诉量降低70%
【下周重点】
需要产品确认新支付流程的灰度发布计划
5.2 性能调优记录
初期完整流程需要3分钟完成,经过以下优化降至45秒:
- 对Jira数据实现本地缓存(使用SQLite)
- 预加载模型到内存(启动时添加
--load-in-4bit) - 将PDF生成改为异步操作
内存占用优化前后对比:
| 组件 | 优化前 | 优化后 |
|---|---|---|
| 千问模型 | 18GB | 5GB |
| OpenClaw | 1.2GB | 800MB |
| 浏览器实例 | 600MB | (移除) |
6. 安全防护实践
由于系统需要访问Jira、GitLab和邮箱等敏感系统,我实施了多层防护:
- 网络隔离:OpenClaw服务只绑定127.0.0.1
- 权限控制:使用MacOS钥匙串存储API凭证
- 操作审计:开启OpenClaw的完整日志记录
关键配置项:
{
"security": {
"network": {
"host": "127.0.0.1",
"port": 18789
},
"audit": {
"logLevel": "verbose",
"logFile": "~/openclaw_audit.log"
}
}
}
7. 个人心得与建议
这个项目给我的最大启示是:轻量级自动化也能产生巨大价值。相比那些需要复杂审批的企业级系统,我用一个周末搭建的方案已经稳定运行三个月,累计节省了40+小时的手动工作时间。
对于想尝试类似方案的开发者,我的实用建议是:
- 先从单一数据源开始(如仅Jira数据)
- 使用OpenClaw的Web界面调试任务流
- 模型微调前务必清洗数据质量
- 重要报告仍要保持人工复核环节
最让我意外的是,这个私人助手后来被团队其他成员发现后,竟然自发形成了"周五下午茶+集体审阅自动周报"的新传统。技术工具的价值,有时候不仅在于提升效率,更在于重塑工作文化。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐



所有评论(0)