Kicks your tasks in the ass… so you don’t have to.
安徽大学 集成电路学院|程序设计实训课程项目
Ass-Igned 是一个轻量级的命令行(CLI)任务管理系统,面向“任务记录与整理成本过高”的实际问题。
项目使用 C 语言实现基础数据结构与存储逻辑,并通过 AI 服务将自然语言任务解析为结构化数据(时间、优先级等),从而减少人工分类与判断的负担。
- 🧠 自然语言解析:将任务描述解析为结构化字段(截止时间、优先级 P0–P3)
- 🗂 单文件本地存储:自定义任务数据库文件,支持快速查找与空间复用
- 💻 CLI 交互:基于 readline 的交互式命令行
- 🧩 分层模块设计:交互层 / AI 层 / 数据层解耦,结构清晰
Ass-Igned
├── LICENSE
├── Makefile // 项目的构建脚本,用于定义编译、链接、清理等操作
├── README.md
├── docs // 文档目录,用于存放设计文档
├── include // 包含了所有模块的公共头文件
│ ├── ai_client.h // AI 客户端模块的接口
│ ├── api_key.h // 存储API密钥的头文件,被排除在版本控制之外。
│ ├── cJSON.h // 第三方 JSON 解析库 cJSON 的头文件
│ ├── common.h // 通用定义,跨模块共享
│ ├── database.h // 数据库模块的顶级接口,将底层文件操作抽象
│ ├── log.h // 日志模块的接口
│ ├── macro.h //存放项目中的各种宏
│ ├── monitor.h // 监控器(用户交互)模块的接口
│ └── parser.h // 解析器模块的接口
├── package-lock.json
├── package.json
└── src
├── ai_client // AI交互层
│ ├── ai_client.c // AI 客户端与外部 API 交互逻辑
│ └── prompts.c // 用于不同 AI 功能的提示词模板
├── ass_main.c // 主程序入口点
├── database // 数据层
│ ├── database.c // 数据库模块的业务逻辑实现,对外提供接口
│ ├── index_manager.c // 索引管理器的实现
│ ├── index_manager.h // 索引管理器的接口文件
│ ├── parser.c // 解析器的实现
│ ├── storage_manager.c // 存储管理器的实现
│ └── storage_manager.h // 存储管理器的接口文件
├── monitor // 交互层
│ ├── adb.c // Ass-Igned Debugger(ADB) 的命令实现
│ ├── adb.h // ADB 的接口
│ └── monitor.c // 主监控器的实现
└── utils // 工具函数和库
├── cJSON.c
└── log.c
- Linux (在 Ubuntu 24.04 LTS 上经过测试)
- GCC
- Make
依赖库:
libcurl—— 用于 AI API / HTTP 请求readline—— CLI 交互体验
本项目默认不包含 API Key,需要用户自行配置:
- 在
include/目录下新建文件api_key.h - 定义你的 API Key,例如:
#define MY_API_KEY "your_api_key_here"相关宏定义位于
ai_client.h,如有需要可直接修改为你自己的 Key 或 API 地址。
项目使用 ASS_HOME 作为根目录,请先设置:
export ASS_HOME=$(pwd)建议将其加入 ~/.bashrc 或 ~/.zshrc,取决于你的Shell。
sudo apt install libcurl4-openssl-dev
sudo apt install libreadline-devmake run默认行为:
- 可执行文件:
build/ass - 日志文件:
build/ass.log - 数据库:
build/tasks.db
make gdbmake valgrind内存报告将保存至:
build/valgrind.log
- 自动递归扫描
src/下的所有.c文件 - 使用
-MMD自动生成依赖,避免手动维护 - 开启
-Wall -Werror,强制工程级代码质量 - 构建产物全部集中在
build/,保持源码目录整洁
- 更复杂的任务依赖与调度
- 任务优先级与时间冲突检测
- 插件化 AI Provider(支持多模型)
- TUI / Web 前端