2026-02-01 08:00:00
已发布文章总数:323
最近一次发布日期:2026-01-26
| Category | Last Updated Date | Count |
|---|---|---|
| 诗 | 2025-01-26 | 65 |
| 随笔 | 2025-02-09 | 39 |
| Misc | 2026-01-26 | 24 |
| kPWN | 2024-02-18 | 24 |
| PWN | 2023-01-26 | 22 |
| 程序分析 | 2024-04-20 | 21 |
| 云安全 | 2022-09-19 | 16 |
| 读书笔记 | 2023-11-04 | 12 |
| Metasploit | 2018-10-30 | 10 |
| 渗透测试 | 2019-06-10 | 10 |
| Rootkit | 2017-05-11 | 10 |
| 网络安全 | 2021-01-07 | 8 |
| 容器逃逸 | 2022-08-29 | 7 |
| PowerShell | 2018-06-13 | 6 |
| AI | 2023-07-18 | 5 |
| 云计算 | 2019-02-20 | 4 |
| Linux | 2017-10-23 | 4 |
| Web安全 | 2020-12-18 | 3 |
| Kernel | 2017-06-02 | 3 |
| 摄影 | 2023-10-02 | 3 |
| 虚拟化 | 2023-03-22 | 3 |
| 学术研究 | 2025-12-02 | 2 |
| CTF | 2018-12-22 | 2 |
| Fuzzing | 2023-10-31 | 2 |
| Malware | 2017-01-15 | 2 |
| Multimedia | 2019-01-04 | 2 |
| CyberRange | 2022-10-20 | 2 |
| Web3安全 | 2024-03-28 | 1 |
| AI4Security | 2024-03-20 | 1 |
| Java | 2017-03-26 | 1 |
| JavaScript | 2019-08-10 | 1 |
| 入侵检测 | 2021-01-23 | 1 |
| Algorithms | 2022-11-11 | 1 |
| 小说 | 2025-03-17 | 1 |
| 反序列化 | 2020-12-19 | 1 |
| 数学 | 2018-10-25 | 1 |
| 可信计算 | 2024-02-18 | 1 |
| 虚拟化安全 | 2022-05-13 | 1 |
| LaTeX | 2022-08-25 | 1 |
2026-01-26 19:04:21
近来我在摸索将Gemini Cli等终端agents融入工作流,目前总体感觉是——这类工具确实能够将脑力和精力从“杂活”和“需要但不感兴趣”的事情中解放出来,效率提升很多。这篇短文将介绍一个最近的实践案例。
作为博士生,我经常需要做的一件事是手动将电子邮件中的会议、报告、答辩等信息添加到Apple日历中。手动设置事件的标题、时间、地点、提前提醒时间、线上开会链接等内容属实麻烦。在ChatGPT出圈后,我一直想要开发一个功能——选中文字后直接在右键菜单中点击“添加日程”,程序就能够调用LLM去解析文字,生成Apple日历事件并导入到日历中。
然而,这个想法在脑海中,一直也没有去实现。最近,需要添加的事件尤其多,今晚吃饭回来后又想到了这一茬儿,于是打开Gemini Cli,给出需求,让它设计方案并实现,十分顺利。
现在我只需要在邮件中选中文字,点击右键,然后选择“添加日程”:

稍等片刻,就能在日历中看到对应的事项了:

代码仓库:https://github.com/brant-ruan/text2agenda
为了提高成功率,我在Gemini Cli中将模型设定为gemini-3-pro-preview。初始需求描述如下:
我想要在当前目录下开发一个软件或者借助Mac上已有的automator等,它的功能是给我的macbook添加一个右键菜单“添加日程”,
使用场景是选中一段文字后,比如在Outlook中选中一个关于会议日程信息通知邮件的文字部分,右键,选择“添加日程”,
然后自动调用OpenAI/DeepSeek/Gemini等大模型的API,将其解析成.ics(苹果日程格式),然后自动导入到我的系统日历中。
这个项目允许用户通过配置文件配置API KEY等配置项。
很快,Gemini给出了实现方案:
I will design a solution using a Python script as the core logic engine (handling the API call and Calendar interaction) and use macOS Automator to trigger it via the right-click menu.
Here is the development plan:
1. Project Setup & Configuration
* Structure: Create a directory for the project.
* Dependencies: Use Python's requests library to communicate with LLM APIs.
* Config: Create a config.json file where you can define your API Key, Base URL (allowing use of OpenAI, DeepSeek, or Gemini via compatible endpoints), and Model name.
2. Core Logic Implementation (remind.py)
* Input: The script will accept text arguments (the selected text from your email/document).
* Context: It will automatically detect the current system date/time so that relative dates like "next Friday" are parsed correctly.
* LLM Processing: It will send the text to the configured API with a prompt to extract event details (Title, Start Time, End Time, Location, Notes) in a strict JSON format.
* Calendar Automation: Instead of just generating an .ics file (which requires manual clicking to import), I will use AppleScript (executed via Python) to directly insert the event into your macOS Calendar app.
3. Verification
* I will create a dummy test to ensure the script runs and attempts to reach the API (handling errors gracefully if the API key is not yet set).
4. Integration (The "Right-Click" Menu)
* Since I cannot interact with your macOS GUI to create the Automator workflow, I will generate the Python script and then provide you with exact, simple steps to create the Automator Quick Action that runs this script.
I will start by setting up the project structure and the configuration file.
方案不错,批准了,请执行!很快,Gemini大哥就完成实现,并且给出了配置指南:
You now have a fully functional backend to parse text into Calendar events using an LLM.
Project Files Created
* remind.py: The main logic script.
* config.json: Configuration file for your API Key.
* run_remind.sh: A helper script for Automator to run the Python code easily.
* venv/: A Python virtual environment with necessary libraries installed.
Step 1: Configure API Key
Open the configuration file and paste your OpenAI (or compatible) API Key.
open config.json
Change `YOUR_API_KEY_HERE` to your actual key.
Step 2: Create the "Right-Click" Menu (Automator)
Since this part interacts with the macOS UI, you need to perform these steps manually once:
1. Open Automator (cmd+space, type "Automator").
2. Choose New Document -> Quick Action.
3. At the top, configure:
* Workflow receives current Text in Any Application.
4. In the left sidebar, search for Run Shell Script and drag it to the right.
5. Configure the script action:
* Shell: /bin/bash
* Pass input: as arguments (Important!)
* Paste the following command (using the absolute path to your project):
/ABSOLUTE_PATH/run_remind.sh "$1"
6. Press Cmd+S to save. Name it Add Event (or "添加日程").
How to Use
1. Select any text containing a date/time (e.g., in an email or website).
2. Right-click the text.
3. Go to Services (or just look at the bottom of the menu) -> Add Event.
4. The script will run in the background, send the text to the LLM, and automatically add the event to your macOS Calendar.
Troubleshooting:
If nothing happens, check the log file created by the script:
cat /tmp/remind_log.txt
按照它的提示配置完(文字解析使用的是物美价廉的gpt-5-nano),我测试了一下,检查日志,发现了问题,再次交互:
遇到了问题:Analyzing text...
Error calling API: 400 Client Error: Bad Request for url: https://api.openai.com/v1/chat/completions
Failed to extract event data.
我建议你使用litellm来调用,而非自己手写request
Gemini很快完成了基于LiteLLM的实现。我再次提出需求:
现在就不必在配置文件中添加base_url了,不过我希望配置文件中支持设置提前几分钟提醒。
Gemini再次完成实现。现在,整个流程已经很流畅了。不过,我还希望更方便一些:
我怎么才能将这个右键菜单从“Services”中移出来到一级菜单?
Gemini大哥不厌其烦地给出指点:
在 macOS 系统中,原生不支持用户直接将 Automator (自动操作) 创建的“快速操作”强行固定在右键的一级菜单中。macOS
会根据你启用的服务数量,自动决定是将它们折叠进“服务 (Services)”子菜单,还是显示在菜单底部。
要想实现“在一级菜单直接点击”,通常有以下两种方案:
方案一:清理“服务”菜单(原生,但不保证 100% 成功)
macOS 的逻辑是:如果启用的“服务”很少,它有时会将它们直接显示在右键菜单底部,而不折叠进子菜单。你可以尝试禁用不用的服务:
1. 打开 系统设置 (System Settings) -> 键盘 (Keyboard)。
2. 点击 键盘快捷键 (Keyboard Shortcuts) -> 服务 (Services)。
3. 在“文本 (Text)”分类下,取消勾选你不常用的所有服务,只保留刚才创建的“Add Event”。
4. 重启应用(如浏览器或邮件)看是否生效。
...
我再次尝试,发现了一个问题——设置的提前15分钟变成了15小时,于是再次发问:
现在似乎填写的提前15分钟最终在日历中变成了提前15小时,请改正。另外,我希望生成的事件能够体现出事件的本质特征。
例如,对于下面的文字,我希望生成的事件标题为Anonymous's PH.D Defense之类,而不是他的defense题目(...):
PH.D DEFENCE - PUBLIC SEMINAR
Title: ...
Speaker: Mr. Anonymous
Date/Time: 1 February 2026, Monday, 03:00 PM to 04:30 PM
Venue: XXXX, XXXX XX-XX
Advisor: Dr XXX, XXX, School of Computing
Gemini再次更新代码中的prompt。至此,这个小玩意儿已经完全满足了我的使用需求。
2025-12-02 11:39:20
本文在“安全研究GoSSIP”公众号上首发。
老读者从首尔发回报道——11月17日到19日,第四十届软件工程领域国际会议ASE 2025在韩国首尔顺利举行。今年的ASE会议一共收到了1181篇投稿,最终录用了246篇论文。其中,来自中国的作者占比超过60%(含中国大陆及港澳台),体现了在软件工程领域的强劲实力。在所有提交和接收的论文中,研究主题的Top 3均为“AI和SE”、“测试和分析”、“安全及其他非功能特性”。
今天为大家推荐的论文是发表在这次ASE上的,一篇关于软件供应链漏洞影响评估的工作:Propagation-Based Vulnerability Impact Assessment for Software Supply Chains。该工作由新加坡国立大学梁振凯研究组完成并投稿。
随着软件生态变得日益复杂,软件供应链中的漏洞不仅影响漏洞所在的项目,还为依赖其所在项目的下游项目带来了安全风险——即使下游项目业务自身安全,攻击者还是能够通过利用这些上游漏洞来达到攻击下游项目的目的。因此,识别一个漏洞在软件供应链中的影响范围和规模变得越来越重要。
然而,现有工作并不能满足这一需求。一方面,已有研究要么不精确——只考虑了软件包层级(package-level)的依赖关系,没有进一步考虑漏洞所在函数是否真正可达,从而引入了大量虚假告警,要么是不完整的——通过在软件生态中采样等方式考察了局部或部分的函数调用图级(call-graph-level)依赖关系;另一方面,当前已被广泛采用的漏洞评估指标,如CVSS、CWE等,都只能用于对漏洞本身进行评估,而无法反映漏洞在软件供应链中的影响。
为了实现精确、完整的软件供应链漏洞影响评估,受程序分析中的数据流分析算法启发,论文首先提出了一个基于worklist并支持多层级剪枝的漏洞传播分析算法,能够精确、高效地在函数调用图层级、面向漏洞所在整个软件供应链生态实现漏洞传播分析。在此基础上,论文进一步提出了漏洞传播评分系统(Vulnerability Propagation Scoring System,简称VPSS),对漏洞传播分析结果进行建模,帮助人们对漏洞在软件生态中的影响进行量化和感知,支撑更加科学、及时的漏洞治理工作。
论文作者在Java Maven生态系统上实现了工具原型,并使用100个Maven生态中的漏洞进行了测试。评估结果显示,论文提出的算法能够完成全Maven生态的漏洞影响评估,相应的VPSS分数能够提供有价值的漏洞影响规模情报。
该论文的贡献主要包括:
软件供应链安全已成为信息安全领域的焦点。一个上游库的漏洞(例如Heartbleed 或 Log4Shell )就可能使其下游成千上万的软件项目处于风险之中 。因此,在漏洞被披露后,快速准确地评估其“影响范围”(Impact Scope)至关重要 。然而,现有的研究在尝试解决这个问题时,面临两大局限:
缺乏准确且完整的传播分析:
作者进一步从六个方面衡量、对比了现有工作,并得出理想的漏洞传播分析应该具备的特性:

缺乏量化供应链“传播影响”的指标:例如,我们熟知的CVSS评分系统,是用来评估漏洞本身的固有特征(如攻击复杂度、所需权限等),但它无法衡量漏洞在供应链中的“传播影响”。一个CVSS 9.8分的漏洞,如果只存在于一个无人问津的库中,其真实的供应链风险可能远小于一个7.5分但存在于核心基础库中的漏洞。CVSS v4.0的官方FAQ也明确承认了CVSS不适用于衡量供应链的传播影响。
针对上述痛点,作者希望设计一个既准确(CG级别)又完整(全生态、传递性)的分析框架,并提出一个专门用于量化传播影响的新指标。
为了实现这一目标,作者设计了一个包含四个步骤的语言无关的自动化漏洞影响评估框架,如下图所示:

首先,作者需要构建一个描述目标软件生态中全部依赖关系的依赖图。但如果直接构建“项目-版本”(PV)级别的图,规模将大到无法处理(例如Java Maven生态有超过1500万个PV )。作者的关键洞察是:转而构建P-level(项目级别)的依赖图。这个图的规模要小得多(Maven中约66万个P ),可以作为高效的预过滤器 ,同时将具体的版本依赖信息(deps.json)用于后续的精确查询 。这个依赖图只需要构建一次,然后随着软件生态官方仓库做动态增量更新即可。
为了进行CG级别的分析,我们必须首先知道“漏洞在哪几个函数里”。对此,作者采用了一种LLM辅助的优化策略 :首先,使用传统的patch-based方法从补丁中提取候选的VF。然后,利用LLM(作者测试了GPT-4o-mini等模型)强大的代码语义理解能力,自动过滤掉那些与漏洞无关的修改,包括“语义等价的修改”(如重命名变量、增删空格或注释等)和“语义改变但无关的修改”(如增删日志(logging)代码等)。

这是作者提出的分析框架的核心。他们设计了一种新颖的“分层基于工作列表(Hierarchical Worklist-based)”的算法:

为什么用Worklist?论文的算法借鉴了数据流分析中的经典“工作列表”思想 。这使作者能系统地遍历整个生态依赖图,有效处理复杂的共享依赖,甚至是真实世界中存在的“循环依赖”问题 ,确保分析的健全性(soundness)。
为什么是Hierarchical(分层)?这是为了效率。直接对全生态构建CG进行分析是计算上不可行的 。作者设计了三级“分层剪枝(Hierarchical Pruning)”策略 ,逐层过滤掉海量的“假阳性”依赖关系:
在精确分析完传播范围后,作者引入了一个全新的量化指标:VPSS(Vulnerability Propagation Scoring System),用于量化漏洞在供应链中的影响范围和演变。它和CVSS一样,采用0-10分制,并分为低、中、高、危急四个等级,易于理解和使用。注意,VPSS是“时间感知(Time-aware)”的,因此可以计算漏洞在任意时间点(例如t)的VPSS分数(计算时会排除t之后发布的P和PV),从而动态追踪其影响力的演变。
VPSS的核心公式是VPSS_raw = PBF x PDF,其中:
详细的计算过程如下:

作者在Java Maven软件生态上实现了分析框架的原型 ,并抽取了100个真实CVE进行评估 。
发现1:分层剪枝策略效果显著。在分析100个CVE的过程中,平均97.8%的项目(P)和99.2%的项目版本(PV)被成功剪枝。
发现2:假阳性比例大。如下图所示,如果仅基于依赖声明(即“initial”状态),平均一个漏洞会涉及上千个项目和数万个PV。而作者的分析(v3)最终确认,高达94.9%的PV是假阳性(即它们虽然依赖了,但根本没调用)。这大大降低了CG的构建成本 。

作者计算了这100个CVE在披露后24个月内(每30天一个快照,t0到t23)的VPSS分数演变。
发现1:VPSS能动态反映生态修复趋势。如下图所示,绝大多数漏洞的VPSS分数都随时间推移呈下降趋势。这完全符合预期:随着补丁被应用、下游项目逐渐迁移到安全版本,漏洞的实际传播影响在不断减小。
发现2:VPSS能捕获异常的“延迟更新”现象。作者也发现了一个有趣的特例:CVE-2016-3086的分数在t1时刻反而异常上升了(从6.95升至7.19)。作者推测这可能是由于下游项目“延迟更新”其依赖所导致的。

发现3:大部分漏洞的传播影响有限。如下面的箱线图所示,在100个CVE中,绝大多数的VPSS分数都保持在较低水平,并在两年内趋于稳定。

CVE-2016-5393在测试数据集中VPSS得分最高(t0时为7.35)。作者分析发现,它在披露时直接影响了228个项目,并传递影响了另外154个项目。其最长传播链达到了7跳,并且在24个月后分数依然高达6.86,反映了生态中“长尾依赖”的顽固性。

论文链接:https://arxiv.org/pdf/2506.01342
VPSS开源项目链接:https://github.com/brant-ruan/vpss
作者团队十分欢迎大家交流合作,一起推动软件供应链漏洞治理工作!
投稿作者简介:阮博男,2024级新加坡国立大学博士生,导师为梁振凯老师,目前主要研究方向为漏洞挖掘和漏洞评估,相关研究成果发表在ASE、USENIX Security、RAID等软件工程和信息安全领域的国际会议上,曾获得RAID 2024最佳实践论文奖和USENIX Security 2025杰出论文奖,也曾在BlackHat Asia、KCon、CIS等国内外知名工业界信息安全会议上发表演讲。
如果对NUS Curiosity Research Group感兴趣,梁振凯老师也在招收系统安全方向的博士生和博士后,详细信息可以参考:
梁振凯老师的个人主页:https://www.comp.nus.edu.sg/~liangzk
NUS Curiosity研究小组主页:https://nus-curiosity.github.io
2025-09-13 08:00:00
作者:北岛
这是你,这是
被飞翔的阴影困扰的 你忽明忽暗
我不再走向你 寒冷也让我失望
很多年 冰山形成以前
鱼曾浮出水面 沉下去,很多年
我小心翼翼
穿过缓缓流动的夜晚 灯火在钢叉上闪烁
很多年 寂寞 这没有钟的房间
离去的人也会带上 钥匙,很多年
在浓雾中吹起口哨
桥上的火车驰过 一个个季节
从田野的小车站出发 为每棵树逗留
花开结果,很多年
2025-07-21 08:00:00
作者:黄国平
我走了很远的路,吃了很多的苦,才将这份博士学位论文送到你的面前。二十二载求学路,一路风雨泥泞,许多不容易。如梦一场,仿佛昨天家人才团聚过。
出生在一个小山坳里,母亲在我十二岁时离家。父亲在家的日子不多,即便在我病得不能自己去医院的时候,也仅是留下勉强够治病的钱后又走了。我十七岁时,他因交通事故离世后,我哭得稀里糊涂,因为再得重病时没有谁来管我了。同年,和我住在一起的婆婆病故,真的无能为力。她照顾我十七年,下葬时却仅是一副薄薄的棺材。另一个家庭成员是老狗小花,为父亲和婆婆守过坟,后因我进城上高中而命不知何时何处所终。如兄长般的计算机启蒙老师◼️◼️没能看到我的大学录取通知书,对我照顾有加的师母也在不惑之前匆匆离开人世。每次回去看他们,这一座座坟茔都提示着生命的每一分钟都弥足珍贵。
人情冷暖,生离死别,固然让人痛苦与无奈,而贫穷则可能让人失去希望。家徒四壁,在煤油灯下写作业或者读书都是晚上最开心的力。如果下雨,保留节目就是用竹笋壳塞瓦缝防漏雨。高中之前的主要经济来源是夜里抓黄鳝、周末钓鱼、养小猪崽和出租水牛。那些年里,方圆十公里的水田和小河都被我用脚测量过无数次。被狗和蛇追,半夜落水,因蓄电瓶进水而摸黑逃回家中:学费没交,黄鳍却被父亲偷卖了,然后买了肉和酒,都是难以避免的事。
人后的苦尚旦还能克服,人前的尊严却无比脆弱。上课的时候,因拖欠学费而经常被老师叫出教室约谈。雨天湿漉着上课,屁股后面说不定还是泥。夏天光着脚走在滚烫的路上。冬天穿着破旧衣服打着寒颤穿过那条长长的过道领作业本。这些都可能成为压垮骆驼的最后一根稻草。如果不是考试后常能从主席台领奖金,顺便能贴一墙奖状满足最后的虚荣心,我可能早已放弃。
身处命运的旋涡,耗尽心力去争取那些可能本就是稀松平常的东西,每次转折都显得那么的身不由己。幸运的是,命运到底还有一丝怜惜。进入高中后,学校免了全部学杂费,■■■一家帮助解决了生活费。进入大学后,计算机终于成了我一生的事业与希望,胃溃疡和胃出血也终与我作别。
我很庆幸保研时选择了自动化所,感谢研究生部的老师们将我从别的部门调剂到模式识别实验室,感谢导师宗成庆老师选择了我,宗老师将我引入了科学研究的大门,博士这五年无疑是我过去最幸福的时光。惭愧的是,离宗老师的期望显然还有很远的距离,我也知道本可以做得更好。这一段经历已经成为我这一生值得回味的美好瞬间之一。我很喜欢人机交互式机器翻译这个题目,但也仅开了个头。在未来,希望能有机会弥补这段遗憾。
从家出发坐大巴需要两个半小时才能到县城,一直盼着走出大山。从炬光乡小学、大寅镇中学、仪陇县中学、绵阳市南山中学,到重庆的西南大学,再到中科院自动化所,我也记不清有多少次因为现实的压力而觉得自己快扛不下去了。这一路,信念很简单。把书念下去,然后走出去,不枉活一世。世事难科,未来注定还会面对更为复杂的局面。但因为有了这些点点滴滴,我已经有勇气和耐心面对任何困难和挑战。理想不伟大,只愿年过半百,归来仍是少年,希望还有机会重新认识这个世界,不辜负这一生吃过的苦。最后如果还能做出点让别人生活更美好的事,那这辈子就赚了。
最近这些年,特别感谢■■■■■■■■■■■■■■■■重塑了我的人生。
感谢■■■老师和■■■老师为我的研究提出诸多建设性的意见和建议。与他们的交流过程中,我也被他们坦诚为人、踏实做事的处事风格所感染。感谢所有和我一起在课题组工作的老师们和学习的同学们:■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■、■■■。我们在研究上共同努力,互相学习,如亲兄弟姐妹一般谈笑风生。不认大学将来在休息,我想我们都不会忘记这些年一起度过的时光。感谢课题组■■■女士,感谢模式识别综合办实验室的■■■、■■■和■■■等老师,感谢研究生部的■■■、■■■、■■■和■■■等老师,他们为我的学习和工作给予了极大的帮助。这会成为我日后工作的动力,希望最后能成为课题组值得骄傲的学生。
感谢父母给了我生命,感谢婆婆和叔辈对我的抚养,感谢■■■■■■■■■■■■■■■■■■对我的牵挂,感谢■■■和■■■对我的支持,感谢一路上让我生活变得美好或者不那么美好的人和事。
最后,对参加论文评审、答辩的各位老师表示衷心的感谢!
2025-07-21 08:00:00
作者:安老三
今天,我巧遇拍短视频采访,还需要抓题,因为我是这群工友中唯一上过高中的,两个女孩子就选中了我,我有幸抓到了“我的母亲”这个标题,重温母亲的回忆,让我思绪万千。
母亲走了三十多年了,就埋在村头的老坟地里,她的模样、她的一举一动就跟在眼前似的。
母亲啊,一辈子就没闲过,天不亮就起,摸着黑才歇。家里家外操不完的心,穿的永远是洗得发白、补了又补的衣裳。她心善能容人,跟邻里没红过脸,有啥好东西总先紧着别人。
最让我忘不了的是吃饭,一大家子人围着桌子,母亲从来不上桌,她就在灶台边忙活,等我们都吃完了,她才瞅瞅锅里,剩下了,就扒拉两口,要是没剩,她就不吃了,说不饿。那会儿日子都紧巴,穷富差不了多少,可人心热乎,讲情义,母亲就是那最厚道的一个。她包的饺子,那叫一个香,是穷日子里最盼的念想。
过年是她最累的时候,洗洗涮涮,准备年饭,累得腰都直不起来,可脸上总挂着笑,看着我们放炮仗那股高兴劲儿,她比我们还乐呵。再破的衣裳,经她的手也给我们拾掇得干干净净。
那时候还是集体,一年四季都出不到一点新鲜菜,到秋天就要分口粮,白天打下谷子,晚上分给每家每户,这一分就是一个大晚上。农村的秋天还是一个很冷的秋天,母亲身上穿得很薄,粮食分到家以后,母亲这一晚上冻得受不了,她那薄薄的被子围在身上一会儿,天就亮了。母亲一天的辛劳又开始了,她揉揉眼,又得爬起来给一大家子弄吃的。家里人多,那口烧柴火的大铁锅死沉死沉,端上端下,真不是一般人能干的力气活。现在想想,母亲那瘦小的身子,哪来那么大劲儿。
母亲走的时候才五十出头,是累病的。如今她的坟就在村边,一个不起眼的小土包。每次回村,我总要去那儿站站,跟她说说话。我在城里干了大半辈子苦力,扛水泥、扎钢筋、爬脚手架,手上肩上全是老茧,累是真累。可想想母亲当年端那口大铁锅的劲儿,想想她冻得发抖还咬牙撑到天亮的样子,我这力气就又上来了。母亲没享过福,可她教会我的就是这骨子里的硬气和对家的担当。我得把您撑起来的这个家接着撑下去,撑稳当。
坟头上的草青了又黄,黄了又青,就像我的念想一样,一年年总也断不了。我已经当了爸爸,也已经当了爷爷,但我已经三十多年没叫过妈妈了。我想着,等哪天我扛不动水泥了,就回村里挨着那堆土躺下,没准那时候我再叫妈妈,她就能听见了。