ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Actual 怎么用 @actual-app/cli 命令行工具查询和修改预算数据

Actual 怎么用 @actual-app/cli 命令行工具查询和修改预算数据 Actual 怎么用 actual-app/cli 命令行工具查询和修改预算数据【免费下载链接】actualA local-first personal finance app项目地址: https://gitcode.com/GitHub_Trending/ac/actual如果你已经部署了一台 Actual sync server并且希望在终端里直接查询账户、交易、预算分配甚至脚本化地新增交易或调整月度预算actual-app/cli就是对应的工具。它连接到你正在运行的 sync server把预算数据缓存到本地目录然后提供actual command subcommand形式的命令来完成读写操作。使用前有两个前提一台正在运行的 Actual sync server以及 Node.js v22 或更高版本。需要区分的是这个 CLI 并不直接操作本地的预算文件所有操作都通过 sync server 完成它也和用于托管服务器本身的 Server CLIactual-app/sync-server是两个不同的包。安装全局安装npm install --locationglobal actual-app/cli或者作为项目依赖安装npm install --save actual-app/cli安装完成后命令行入口是actual。如果是在 monorepo 内做二次开发可以先yarn build:cli再直接运行构建产物验证node packages/cli/dist/cli.js accounts list配置 sync server 连接CLI 的必需连接信息有三个服务器 URL、认证凭据密码或 session token 二选一、预算的 Sync ID。Sync ID 可以在 Actual 界面的 Settings → Advanced → Sync ID 处找到。配置有四种来源优先级从高到低依次是CLI 全局 flags如--server-url、--password、--sync-id环境变量配置文件基于 cosmiconfig内置默认值dataDir默认为~/.actual-cli/data。环境变量如下其中ACTUAL_SERVER_URL必填大多数命令还需要ACTUAL_SYNC_ID变量说明ACTUAL_SERVER_URLActual sync server 的 URL必填ACTUAL_PASSWORD服务器密码与 token 二选一ACTUAL_SESSION_TOKENSession token密码的替代方案ACTUAL_SYNC_ID预算 Sync ID大多数命令必填ACTUAL_DATA_DIR本地缓存预算数据的目录ACTUAL_CACHE_TTL缓存 TTL秒默认 60ACTUAL_LOCK_TIMEOUT预算目录锁等待超时秒默认 10ACTUAL_NO_LOCK设为1可禁用预算目录锁ACTUAL_ENCRYPTION_PASSWORD端到端加密预算文件的密码三个密钥类变量ACTUAL_PASSWORD、ACTUAL_SESSION_TOKEN、ACTUAL_ENCRYPTION_PASSWORD可以改从文件读取变量名加_FILE后缀例如ACTUAL_PASSWORD_FILE/run/secrets/actual-password_FILE形式优先于普通环境变量。最简单的用法是直接导出环境变量export ACTUAL_SERVER_URLhttp://localhost:5006 export ACTUAL_PASSWORD你的服务器密码 export ACTUAL_SYNC_ID你的SyncID也可以写配置文件。配置文件可以放在当前工作目录到家目录之间的任意位置支持.actualrcJSON 或 YAML、.actualrc.json、actual.config.json、package.json中的actual键或全局配置目录下actual子目录中的config/config.json/config.yaml等格式。文档给出的.actualrc.json示例其中password和syncId为占位值需替换为你自己的值{ serverUrl: http://localhost:5006, password: your-password, syncId: 1cfdbb80-6274-49bf-b0c2-737235a4c81f, cacheTtl: 60, lockTimeout: 10, noLock: false }官方文档明确建议不要在配置文件里存明文密码。如果必须存把文件权限收紧如 Linux 上 600并加入.gitignore更推荐直接用ACTUAL_PASSWORD/ACTUAL_SESSION_TOKEN环境变量或指向 Docker secrets 之类的*_FILE文件。验证连接是否可用配置好后先用一条只读命令确认连接和凭据都正确actual server version该命令返回服务器版本例如输出形如{version: ...}的 JSON。命令失败时退出码非零错误信息以纯文本写到 stderr形如Error: message。遇到连不上、认证失败等问题时加--verbose可以看到信息性的 stderr 日志辅助定位。查询预算数据列出账户。actual accounts list默认不包含已关闭的账户加--include-closed可以看全部。--format支持json默认便于脚本处理、table、csv三种输出actual accounts list --format table按名字查实体 ID。后续修改命令大多需要账户、分类等的 ID用server get-id查找--type支持accounts、categories、payees、schedulesactual server get-id --type accounts --name Checking actual server get-id --type categories --name Groceries查看某个月的预算。actual budgets month 2026-03 --format table用 ActualQL 查询交易。actual query run执行 ActualQL 查询常用选项包括--table、--select、--filterJSON 条件、--order-byfield:desc表示降序、--limit、--offset、--count、--group-by以及--file从 JSON 文件读查询-表示 stdin。几个文档给出的例子# 最近 5 笔交易便捷参数隐含 --table transactions --order-by date:desc actual query run --last 5 # 金额排序取 10 条 actual query run --table transactions --select date,amount,payee.name --order-by date:desc --limit 10 # 过滤负金额支出 actual query run --table transactions --filter {amount:{$lt:0}} --limit 5 # 统计交易总数 actual query run --table transactions --count # 分组聚合按分类求和聚合表达式需通过 --file 传 JSON echo {table:transactions,groupBy:[category.name],select:[category.name,{amount:{$sum:$amount}}]} | actual query run --file -不确定有哪些表和字段时actual query tables actual query fields transactions导出交易到 CSV。actual transactions list --account account-id --start 2026-01-01 --end 2026-12-31 --format csv transactions.csvaccount-id用前面get-id或accounts list的结果替换。修改预算数据新增交易。--data接收 JSON 数组金额单位为整数分-2500即 -$25.00actual transactions add --account account-id \ --data [{date:2026-03-14,amount:-2500,payee_name:Coffee Shop}]也可以从文件读--file transactions.json。如果要对已对账的账户做带去重的导入用actual transactions import --account id --data [...]先加--dry-run预览不落库的效果。更新与删除交易。actual transactions update transaction-id --data {notes:Updated note} actual transactions delete transaction-id调整月度预算额度。金额同样是整数分50000即 $500.00actual budgets set-amount --month 2026-03 --category category-id --amount 50000修改账户。例如新建或改名actual accounts create --name Checking [--offbudget] [--balance 50000] actual accounts update id --name New Name除交易与预算外categories、category-groups、payees、tags、rules、schedules都有对应的 list/create/update/delete 子命令用法同上完整列表见 CLI 文档。验证修改是否生效。写命令add、update、set-amount等在执行前后都会与服务器同步执行成功返回 0然后重新读取来确认例如新增交易后actual query run --last 5 actual budgets month 2026-03 --format table命令失败时退出码非零、stderr 出现Error: ...加--verbose查看更详细的诊断输出。缓存、并发与常见问题CLI 在本地保留一份预算缓存TTL默认 60 秒内的读命令list、balance、query run等直接复用缓存不访问服务器写命令则总是先同步再写入。相关操作actual sync # 立即刷新缓存 actual sync --status # 查看本地缓存状态是否过期等 actual sync --clear # 删除本地缓存下一条命令重新下载 actual --refresh accounts list # 单次调用强制同步 actual --cache-ttl 3600 query run ... # 单次调用覆盖 TTL0 表示禁用缓存对读操作多的脚本文档建议先actual sync一次再配合较长的--cache-ttl跑多条读命令避免每次都打服务器。CLI 对每个预算的缓存目录加锁读是共享锁、写是排他锁另一个进程持锁时后续调用最多等待--lock-timeout秒默认 10后报错确定是单进程可信环境时可以用--no-lock跳过。文档明确列出的几个坑金额一律是整数分输入flags、JSON传分5000表示 $50.00--format table和csv输出会自动转成小数显示json输出始终是原始分值方便程序处理。拆分交易对交易求和或计数时过滤is_parent: false否则父记录与子记录会重复计入总额。未分类交易没有分类的交易category.name为null按分类过滤或分组时要考虑这一点。AQL 不支持日期子字段date.month、date.year等不能作为查询字段按月分组需先用日期范围取回原始交易再在脚本里本地聚合。自签名证书如果你的 sync server 用自签名 SSLCLI 默认会拒绝连接。文档给出的替代做法是设置NODE_TLS_REJECT_UNAUTHORIZED0例如NODE_TLS_REJECT_UNAUTHORIZED0 actual budgets list这会关闭所有 TLS 证书校验、存在中间人风险文档强调只在你能控制服务器的受信网络中使用更稳妥的方式是把自己的 CA 证书加入系统信任链。ActualQL 的完整过滤操作符、聚合函数参考在 ActualQL 文档与 CLI 配合使用的命令细则见 packages/cli/README.md。【免费下载链接】actualA local-first personal finance app项目地址: https://gitcode.com/GitHub_Trending/ac/actual创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表