development ipc api - WangYajun369/ai-writing-platform GitHub Wiki

IPC 命令速查

适用版本1.7.0 | 最后核对:2026-09-05

TimeWrite 共注册 173 个 IPC 命令,全部在 src-tauri/src/lib.rsinvoke_handler 中集中注册,前端通过 src/lib/tauri-bridge.ts 调用(Agent 命令为例外,见文末说明)。桥接层导出 18 个 API 对象bookApi volumeApi chapterApi snapshotApi worldCardApi diaryApi scheduleApi windowApi aiApi imageApi importExportApi debugApi systemApi vocabApi ttsApi dictApi taskCardApi writingApi)。

架构约定tauri-bridge.ts 是全项目唯一允许调用 invoke 的模块。禁止在其他文件中直接 import @tauri-apps/apiinvoke


命令总览

模块 命令数 Rust 源文件
书籍 11 commands/book.rs
8 commands/volume.rs
章节 16 commands/chapter.rs
快照 5 commands/snapshot.rs
世界观 5 commands/world_card.rs
日记 5 commands/diary.rs
日程 4 commands/schedule.rs
生词本 10 commands/vocab.rs
离线词典 5 commands/vocab_dict.rs
语音合成 1 commands/tts.rs
AI 8 commands/ai/{test,embedding,chat,summarize}.rs
导入导出 8(export 2 / import_txt 1 / backup 5) commands/io/{export,import_txt,backup}.rs
图片 2 commands/image.rs
窗口 22 commands/window/{manager,debug,validate}.rs
Agent 6 commands/agent/skills.rs
系统 1 commands/system_check.rs
任务项目 9 commands/project.rs
任务卡 17 commands/task.rs
标签 4 commands/tag.rs
任务元数据 4 commands/task_meta.rs
子任务 6 commands/subtask.rs
附件 5 commands/attachment.rs
操作日志 3 commands/activity.rs
任务模板 5 commands/template.rs
提醒 1 commands/reminder.rs
日程迁移 1 commands/migrate.rs
写作统计 1 commands/writing_stats.rs
合计 173

分层调用链

React 组件 → Zustand/Jotai → tauri-bridge.ts → invoke()
  → commands/(参数校验,无 SQL)
    → service/(事务边界、业务规则、SQL 审计日志 emit_sql_log)
      → repository/(纯 SQL,接受 &Connection,无业务逻辑)
        → db/(r2d2 连接池 + SQLite WAL + FTS5)

各层职责边界在对应 mod.rs 注释中有明确约定:repository 层不依赖 Tauri State / AppHandle,命令层不包含 SQL


书籍 book

命令 说明
list_books 列出所有书籍(排除软删除)
get_book 获取单本书详情
create_book 创建新书籍(自动创建默认卷)
update_book 更新书籍元信息
set_book_cover 设置书籍封面(文件路径)
set_book_cover_data 设置封面(Base64 data URL 直传)
delete_book 软删除书籍(级联子孙卷/章)
list_deleted_books 列出回收站中的书籍
restore_book 恢复已删除书籍
hard_delete_book 彻底删除书籍
clear_book_trash 清空回收站

volume

命令 说明
list_volumes 列出书籍下所有卷
list_deleted_volumes 列出回收站卷
create_volume 创建新卷
update_volume 更新卷名
delete_volume 软删除卷(级联章节)
restore_volume 恢复已删除卷
hard_delete_volume 彻底删除卷
reorder_volumes 卷排序

章节 chapter

命令 说明
list_chapters 列出章节列表
list_deleted_chapters 列出回收站章节
get_chapter_content 获取章节正文
create_chapter 创建新章节
save_chapter 保存章节内容(事务:更新内容 + 重算全书字数)
update_chapter_status 更新章节状态(大纲/草稿/润色中/已完成)
rename_chapter 重命名章节
delete_chapter 软删除章节
restore_chapter 恢复章节
hard_delete_chapter 彻底删除章节
reorder_chapters 章节排序
move_chapter_to_volume 移动章节到其他卷
save_chapter_summary 保存 AI 章节总结
clear_chapter_summary 清除章节总结
get_chapter_summary 获取章节总结
save_chapter_outline 保存章节大纲

快照 snapshot

命令 说明
list_snapshots 列出章节所有快照
create_snapshot 创建新快照(auto / milestone)
get_snapshot_content 获取快照内容
restore_snapshot 恢复快照内容到章节
delete_snapshot 删除快照

世界观 world_card

命令 说明
list_world_cards 列出所有世界观卡片
create_world_card 创建卡片(6 种类型)
update_world_card 更新卡片内容
delete_world_card 删除卡片
search_world_cards FTS5 全文搜索

日记 diary

命令 说明
list_month_diaries 列出指定年月的日记摘要(按日期升序,不含正文)
list_all_diaries 列出全部日记摘要(书页式「看日记」跨月浏览用,按日期升序)
get_diary 按日期获取日记全文(无记录返回 null)
save_diary 保存日记(校验关键字数量/长度上限并入库;内容为空时前端转为删除该日记录)
delete_diary 删除某日日记

日程 schedule

命令 说明
list_schedules_by_date 列出某日全部日程
list_schedules_by_month 列出某月全部日程(日历状态点用,按日期与创建时间排序)
save_schedule 新增或更新日程(含完成状态)
delete_schedule 删除日程

v1.5.0 起旧「个人日程」UI 已下线,命令仅服务历史数据迁移(schedules 表),不推荐前端直接调用。

任务项目 project

v1.5.0 新增。任务卡模块的项目级命令,集中在 service/project_service.rs / service/project_stats_service.rs

命令 说明
project_list 列出项目(可按 status 过滤,含统计聚合:总数 / 待办 / 进行中 / 已完成 / 逾期)
project_get 单项目详情
project_create 创建项目
project_update 更新项目(含置顶 / 完成 / 归档状态流转)
project_delete 软删除项目(任务级联软删除)
project_restore 恢复已删除项目
project_hard_delete 彻底删除项目(任务级联硬删除)
project_list_deleted 列出回收站项目
project_clear_trash 清空项目回收站

任务卡 task

v1.5.0 新增。看板 / 今日视图 / 全部任务 / 搜索筛选核心命令。

命令 说明
task_create 创建任务(项目必填;标签 / 子任务可随创建一并提交)
task_update 更新任务字段(含计划今日、计划开始、截止、优先级、备注、重复、完成总结等)
task_get 单任务详情(含标签 / 子任务 / 附件)
task_list 项目内任务列表(状态分组 + 手动排序序)
task_list_all 全部任务(搜索关键词 / 状态 / 标签 / 优先级 / 截止范围筛选 + 排序)
task_set_status 改变状态(todo / doing / done;完成时写 completed_time 并记日志)
task_drag 看板拖拽:跨列改变状态或同列重排
task_move_to_project 移动到其他项目
task_copy 复制任务
task_delete 软删除任务
task_restore 恢复已删除任务
task_hard_delete 彻底删除任务
task_list_deleted 列出回收站任务
task_clear_trash 清空任务回收站
task_purge_expired_trash 清理过期回收站条目
task_today_overview 今日视图概览(逾期 / 进行中 / 今日截止 / 计划今日 / 今日已完成,含完成率)
task_roll_planned_today 「计划今日」滚动清理(过期未完成自动顺延至今天)

标签 tag

v1.5.0 新增。任务标签全局管理。

命令 说明
tag_list 列出全部标签
tag_create 创建标签
tag_update 更新标签(改名 / 换色 / 启停)
tag_delete 删除标签(自动解除任务关联)

任务元数据 task_meta

v1.5.0 新增。模块级 key-value 与提醒偏好。

命令 说明
task_meta_get 读取任意 key
task_meta_set 写入任意 key
reminder_prefs_get 读取提醒偏好(JSON 字符串)
reminder_prefs_set 保存提醒偏好(JSON 整体覆盖)

子任务 subtask

v1.5.0 新增(P2)。子任务清单与父任务进度联动。

命令 说明
subtask_list 列出任务下子任务
subtask_create 新增子任务
subtask_update 编辑子任务标题
subtask_set_done 勾选完成 / 取消
subtask_delete 删除子任务
subtask_reorder 子任务排序

附件 attachment

v1.5.0 新增(P2)。任务附件(本地文件实体)。

命令 说明
attachment_list 列出任务附件
attachment_pick_and_add 系统文件选择并添加附件(记录 file_name / type / size / local_path)
attachment_delete 删除附件(软删除标记)
attachment_open 打开附件文件(系统默认程序)
attachment_cleanup_orphans 清理孤立附件(文件与记录不一致时)

操作日志 activity

v1.5.0 新增(P2)。任务 / 项目操作时间线与周报。

命令 说明
activity_list_task 某任务操作日志时间线(最新在前)
activity_list_project 某项目操作日志(项目动态)
project_weekly_stats 近 8 周「新增 / 完成」周报统计

任务模板 template

v1.5.0 新增(P2)。任务模板预设与一键套用。

命令 说明
template_list 列出模板
template_create 创建模板
template_update 更新模板
template_delete 删除模板
task_create_from_template 套用模板创建任务(含子任务清单 / 标签 / 截止偏移)

提醒 reminder

v1.5.0 新增(P2)。到期 / 逾期提醒(系统通知 + 铃铛中心)。

命令 说明
reminder_check 立即检查并发送当前应提醒的到期 / 逾期任务通知

日程迁移 migrate

v1.5.0 新增。把旧「个人日程」(schedules 表)迁移为任务卡项目「日程迁移」下的任务。

命令 说明
migrate_schedules 一键迁移(幂等:已迁移数据保持最新,未删除源记录)

写作统计 writing_stats

v1.6.0 新增。按日净增字数统计:保存章节时记录净增(新字数 − 旧字数,仅计正增量),writing_stats 表按 (book_id, stat_date) 聚合;随书籍删除级联清理。状态栏进度条 / 连续写作天数 / 30 日曲线均以此为数据源。

命令 说明
get_writing_stats 当前作品写作统计:dailyTarget / todayWords / streakDays / lastDays(近 30 日每日净增)

生词本 vocab

v1.4.0 新增。业务集中在 service/vocab_service.rs;每次影响「今日待复习数」的写操作后向主窗口广播 vocab-due-updated(首页入口角标实时刷新)。

命令 说明
vocab_add 收录生词(单词已存在则更新释义并返回;参数含 phonetics/meanings/例句/例句翻译/可选 AI 学习知识/来源)
vocab_update 编辑音标 / 释义 / 例句 / AI 知识
vocab_set_status 切换状态(learning / mastered / suspended)
vocab_delete 删除生词(复习记录级联删除)
vocab_list 列出生词(status 过滤 + 单词模糊搜索)
vocab_due 今日到期复习队列
vocab_get 单条生词详情
vocab_review 提交复习反馈(rating:0 忘记 / 1 模糊 / 2 记得 / 3 轻松),按 SM-2 推进调度
vocab_logs 某生词的复习历史记录
vocab_stats 生词本统计(首页角标与统计页共用)

离线词典 vocab_dict

v1.4.0 新增。ECDICT 离线词库(sqlite 导入)查询为主;未命中 / 未导入时走 DeepSeek AI 释义兜底。

命令 说明
dict_status 词库安装状态(是否导入、词条规模)
dict_import 导入 ECDICT 离线词库(source_path → 建表并复制到应用目录)
dict_lookup 离线查词(音标 + 释义 + 例句)
check_word_ai 单词拼写检查 + 首条英文释义 + 例句翻译(AI,兜底与录入提示用)
dict_explain_ai AI 精讲:词根词缀 / 同反义词 / 固定搭配 / 词形变化 / 词性例句(DeepSeek)

语音合成 tts

v1.4.0 新增。豆包语音合成(seed-tts-2.0)接口封装,前端经 tts-player.ts 合成并本地播放。

命令 说明
tts_speak 合成文本为音频并返回本地临时文件路径(支持 speaker 音色参数)

AI commands/ai/

命令 源文件 说明
test_ai_connection ai/test.rs 测试对话服务连通性(返回可用模型列表)
test_rag_connection ai/test.rs 测试 RAG/Embedding 服务连通性
rag_search ai/embedding.rs RAG 检索(向量优先,FTS5/LIKE 降级)
trigger_embedding ai/embedding.rs 批量生成 Embedding 向量
check_embedding_status ai/embedding.rs 检查 Embedding 索引状态(含 stale 标记)
stream_ai_chat ai/chat.rs SSE 流式对话
summarize_chapter ai/summarize.rs 章节内容总结(非流式)
summarize_conversation ai/summarize.rs 对话历史压缩(滑动窗口摘要)

v1.0.0 起 commands/ai.rs 已拆分为 4 个子模块,早期文档中的 ai.rs ~1265 行 说法已失效。

事件通道

事件名 方向 载荷
ai-stream-chunk Rust → 前端 StreamEvent { content, thinking, phase, done, error, usage }
agent-stream-chunk Rust → 前端 { event, data, requestId }
debug-log Rust → 所有窗口 LogEntry
debug-window-closed Rust → main ()
chapter-summary-done Rust → 前端 ()
agent-status-changed Rust → main { status, message }(关闭流程发出;status=closing 时前端显示退出遮罩)
vocab-due-updated Rust → 所有窗口 () —— 影响「今日待复习数」的写操作后广播,首页入口角标实时刷新
vocab-window-closed Rust → main () —— 英语字典窗口被关闭
tasks-data-updated 前端 → 各窗口 () —— 任务卡数据变更后广播(窗口内 store 直接 emit),首页角标 / 日历状态点 / 日记当日任务实时刷新
tasks-window-closed Rust → main () —— 任务卡窗口被关闭

导入导出 commands/io/

v1.7.0 重写:备份载荷升级为 v2(含 schemaVersion / appVersion / payloadHash),新增只读预检与幂等识别;全部命令受 try_acquire_io_lock() 互斥保护,并发调用返回 E_IO_BUSY

命令 源文件 说明
export_book io/export.rs 导出为 TXT / Markdown / HTML(支持卷结构,发 export-progress 事件,临时文件 + rename 原子写出)
cancel_book_export io/export.rs 取消进行中的导出,不留半成品(返回 E_EXPORT_CANCELED
import_txt io/import_txt.rs 导入 TXT:行级章节识别 + 按「书名 + 正文指纹」去重,返回 chaptersCreated / chaptersSkipped / chaptersRenamed
export_all_data io/backup.rs 全量加密备份(AES-256-GCM,v2 载荷)
export_single_book io/backup.rs 单作品加密备份
import_backup io/backup.rs 按选定策略(智能合并 / 仅补齐缺失 / 覆盖式)从备份恢复,落库前建回退点
inspect_backup io/backup.rs 只读预检:解密 → 结构/引用校验 → 指纹校验 → 幂等识别 → 逐表对账,返回报告供预览对话框展示,零写入
rollback_import io/backup.rs 回滚到指定导入回退点(24h 内有效)

错误码约定

src-tauri/src/error.rsAppError 实现自定义 Serialize,所有命令错误统一输出 { code, message }。取码规则(AppError::code()):消息以 E_ 开头时提取该前缀码(如 E_TXT_READ:读取 TXT 失败E_TXT_READ),否则按变体归默认码 —— E_DB_POOL / E_DB / E_HTTP / E_SERDE / E_IO / E_CRYPTO / E_VALIDATION / E_NOT_FOUND / E_BUSINESS / E_GENERAL

io 目录定义的业务码:

触发场景
E_IO_BUSY 已有导入/导出/回滚操作进行中(命令级互斥)
E_BACKUP_VERSION 备份主版本高于当前支持版本
E_BACKUP_KEY 备份密钥不符(非本机导出的备份)
E_BACKUP_FILE 文件读取失败 / 格式不合法
E_BACKUP_SCHEMA / E_BACKUP_REFERENCE 载荷结构校验 / 引用完整性校验失败
E_BACKUP_TOO_LARGE 序列化后超过 200 MB
E_BACKUP_SERIALIZE JSON 序列化失败
E_BACKUP_WRITE 临时文件写入或 rename 失败
E_BACKUP_TXN 导入/回滚事务异常
E_BACKUP_ROLLBACK 回退点不存在、已过期或作用域异常
E_BACKUP_CACHE 缓存数据解析失败
E_BACKUP_STRATEGY 导入策略非法
E_TXT_READ / E_TXT_QUERY / E_TXT_TXN / E_TXT_COMMIT TXT 导入的读取 / 查询 / 事务 / 提交阶段
E_TXT_TOO_LARGE 超过 20 MB 或 2,000 章上限
E_TXT_NO_CHAPTERS 未识别出任何章节内容
E_EXPORT_FORMAT 不支持的导出格式
E_EXPORT_WRITE 导出文件写入失败
E_EXPORT_CANCELED 用户取消导出

前端统一经错误解析层(parseError / errText / adviceFor / showError)处理,兼容对象 / 字符串 / Error 三种形态,并按 code 追加建议动作(如 E_BACKUP_VERSION 附「前往更新」按钮跳 GitHub Releases)。

图片 image

命令 说明
process_image 图片压缩/校验/编码(1200px 编辑器图、800px 封面图)
process_image_cropped 按前端传入的裁剪参数处理图片

窗口 commands/window/

命令 源文件 说明
open_world_window / close_world_window window/manager.rs 世界观独立窗口
open_history_window / close_history_window window/manager.rs 版本历史窗口
open_summary_window / close_summary_window window/manager.rs 章节总结窗口
open_ai_toolbox_window / close_ai_toolbox_window window/manager.rs AI 工具箱窗口
open_vocab_window / close_vocab_window / is_vocab_window_open window/manager.rs 英语字典·生词本窗口(v1.4.0;关闭时广播 vocab-window-closed
open_tasks_window / close_tasks_window / is_tasks_window_open window/manager.rs 任务卡·项目管理窗口(v1.5.0;命令面板深链参数 `?taskswin=1&section=today
open_diary_book_window / close_diary_book_window window/manager.rs 「看日记」独立窗口(v1.5.0;参数 ?diarybookwin=1
open_debug_window / close_debug_window window/debug.rs 调试控制台窗口
log_message window/debug.rs 前端日志上报(写入 LOG_BUFFER + 广播)
get_debug_logs window/debug.rs 获取历史日志(缓冲区上限 1000 条)
clear_debug_logs window/debug.rs 清空日志缓冲区
validate_database window/validate.rs 数据库完整性校验 + FTS5 索引重建

Agent commands/agent/

v1.1 起 Agent 由 Python 外部进程迁移为 Rust 原生引擎(无 9877 / 9876 服务)。 原 get_agent_status / start_agent / stop_agent 兼容命令已随迁移一并移除。

命令 说明
execute_agent_skill 执行 Skill(Rust 引擎 ReAct 循环,增量经 agent-stream-chunk 推送)
cancel_agent_skill 取消当前 Agent 任务(引擎全局取消标志)
list_agent_memories 列出指定作品的记忆条目
update_agent_memory 更新记忆内容/关键词/类型
delete_agent_memory 删除单条记忆
clear_agent_memories 清空指定作品的全部记忆

系统检查 system_check

命令 说明
system_check 运行环境自检(v1.1 无外部服务依赖,校验内置引擎/数据库等)

前端桥接层 API 模块

src/lib/tauri-bridge.ts 中对应的 17 个 API 对象:

API 对象 覆盖命令数
bookApi 11
volumeApi 8
chapterApi 16
snapshotApi 5
worldCardApi 5
diaryApi 5
scheduleApi 4
vocabApi 10
dictApi 5
ttsApi 1
aiApi 8
importExportApi 5
imageApi 2
windowApi 16
debugApi 6
systemApi 1
taskCardApi 55

例外说明:Agent 命令(execute_agent_skill / cancel_agent_skill / 记忆管理)未封装进 tauri-bridge.ts(无 agentApi 对象),由 components/agent/useAgent.tsAgentMemoryPanel.tsxuseAiChat.ts 直接 invoke——与「唯一 IPC 入口」约定不一致,列为待重构项。


相关文档