AnyNews日记管理器白皮书
这是我使用AI开发一个简单的日记管理程序时撰写的提示词。
AnyNews是一个日记管理器。使用C89编写。
交互规范
用法
anynews [OPTION] DATE
参数列表
| 短参数 | 长参数 | 功能 |
|---|---|---|
-k | --keep | 按原样处理 |
-d | --decrypt | 解密处理 |
-e | --encrypt | 加密处理 |
-m | --edit | 编辑 |
-r | --read | 阅读 |
-c | --cat | 输出 |
-w | --write | 覆写 |
-g | --global | 遍历覆写 |
-o KEY | `--option=KEY | 显示配置项KEY的值 |
-p | --profile | 显示配置文件位置 |
-v | --version | 显示版本 |
-h | --help | 显示帮助 |
其中,处理方式组包括-k、-d和-e。它们的默认选项是-k。
操作方式组包括-m、-r、-c、-w、-g。它们的默认选项是-m。
信息展示组包括-o、-p、-v、-h。它们优于其他的参数,优先展示。它们内部的顺序是-o>-p>-v>-h。
-p、-v、-h和-g忽略DATE。
日期表示
使用数字表示相对日期。例如,0表示今日,+1或者1表示昨日,+2或者2表示前日,-1表示明日。
数字表示法支持的日期区间为[-32768, 32767]。
默认的日期是0。
用例:anynews=anynews 0=anynews -km 0。表示按原样编辑今日的日记。
用横杠式表示绝对日期。例如2026-6-25表示2026年6月25日。
用例:anynews -dc 2026-6-25表示解密2026年6月25日的日记并输出到标准输出。
配置文件
配置文件的格式是ini。不使用小节,使用;作为注释。可配置的字段如下:
editor= ;编辑器
viewer= ;查看器
encrypter= ;加密命令
decrypter= ;解密命令
template= ;模板命令
vault= ;仓库位置
extension= ;扩展名(不以点开头)
begin= ;内部块起始行
end= ;内部块终止行
在本文档中,{editor}表示editor配置项的值,其它配置项亦同。{timestamp}表示当前系统时间戳。
配置文件的储存位置:
- Windows:
%APPDATA%\anynews.ini - Unix:
~/.config/anynews.ini
如果找不到配置文件,AnyNews返回1并退出,并将“Error: config file not found.”输出到标准错误。
如果配置文件中的某些项为空,AnyNews返回1并退出,并将“Error: config is broken”输出到标准错误。
对于任何平台,AnyNews默认提供一份无法工作的待配置的配置文件,其内容是空白的,仅在注释中标明示例配置:
editor= ;vim
viewer= ;less
encrypter= ;cat
decrypter= ;cat
template= ;true
vault= ;~/.anynews
extension= ;md
begin= ;<!--block-->
end= ;<!--endblock-->
行为规范
临时文件
临时文件的储存路径:
- Windows:
%TEMP% - Unix:
/tmp
处理方式组
操作组参数从指定的日期对应的文件来创建一个临时文件。当指定的日期没有对应的文件时,调用template对应的命令,将日期作为标准输入,使用其标准输出创建文件。其中:
-k创建的临时文件即待编辑的文件本身-d创建的临时文件是解密后的文件-e创建的临时文件是加密后的文件
临时文件的命名:anynews_{DATE}_{timestamp}.{extension}。
加密和解密
AnyNews处理纯文本文件。该文件分为两种块:
- 内部块:由{begin}和{end}的两端标记包裹的每个连续文本块。
- 外部块:除内部块以外的每个连续文本块。
解密时,AnyNews将每个内部块的内容作为decrypter的标准输入,并将标准输出替代内部块,逐个删除两端标记,将内部块转化为外部块。
加密时,AnyNews将每个外部块的内容作为encrypter的标准输如,并将标准输出替代外部块,逐个加上两端标记,将外部块转化为内部块。
操作方式组
操作方式组包括-m、-r、-c、-w、-g。它们的默认选项是-m。
-m调用editor编辑临时文件,并在编辑器退出后,将临时文件加密,将加密后的临时文件写回源文件。注意:-m的行为永远包括写入前的加密。
-r调用viewer查看临时文件。
-c将临时文件输出到标准输出。
-w将临时文件写回到源文件。
-g遍历每个文件,对每个文件的行为相当于-w。
目录结构
在vault下,以这样的结构组织文件:
vault/
├── 2026/
│ ├── 01/
│ │ ├── 01.{extension}
│ │ ├── 02.{extension}
│ │ └── ...
│ └── 06/
│ ├── 24.{extension}
│ └── 25.{extension}
└── 2025/
└── 12/
└── 31.{extension}
名称来源
名字来自教员经常讲的一句话:“今天有什么新闻吗?”