deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
让你的 AI 助手真正会记账。
支付宝、微信和各大银行账单自动导入,告别逐笔录入。把导出的账单文件交给 AI,自动整理交易,预览确认后记入账本;再用自然语言查余额、查流水、看收支报表。
基于 Beancount,本地优先,账本以标准文本保存在自己的电脑上。
| 使用环境 | 安装入口 |
|---|---|
| DeepSeek Harness Web | 安装 DSH 插件 dsh-moneypal |
| WorkBuddy | 导入 MoneyPal Skill · WorkBuddy 连接器指引 |
| Qoder / QoderWork | 导入 MoneyPal Skill · Qoder 办公版 / QoderWork 连接器指引 |
| 其他本地 MCP Agent | npm 包 mcp-moneypal · 环境要求 · MCP 配置 |
本仓库是 MoneyPal 产品主页,并维护 DSH Web 插件;MoneyPal Skill 仓库分发通用技能目录,供支持 Skill 的 Agent 应用使用。
完成对应入口的安装与账本准备后,DSH 和 Skill 都可以处理账单导入:
请导入这份账单,先整理交易并展示记账预览,提示可能重复的记录,等我确认后再写入。
账本文件保存在本地,但账单内容、查询结果和交易信息可能进入宿主配置的模型上下文。
已有 DSH Web(0.1.7-rc.2 或更新版本)后,只需三步:
1. 安装插件
dsh plugin --profile web add dsh-moneypal
2. 打开 MoneyPal 会话
重启 DSH Web 并硬刷新浏览器,选择准备保存账本的文件夹作为工作区,在新会话中选择 MoneyPal 预设。
3. 让助手完成首次准备
把下面这句话发给助手:
帮我开始使用 MoneyPal:检查并按需准备运行环境,使用当前工作区的账本;如果还没有账本,先展示初始化内容,等我确认后创建。最后检查账本并查询一次余额。
DSH 可以代你执行环境检查与准备,并通过原生确认框创建新账本;已有账本会直接复用。完成首次余额查询后,就可以提供账单文件或直接用自然语言记账。
需要 Node.js 22.18+。首次创建托管运行时还需要 Python 3.11+(含 venv 和 pip),并能下载 Python 依赖;缺少条件时,让助手协助检查和准备。
以下命令可由 DSH 助手执行,也可在终端手动运行。
检查 MoneyPal 运行时:
dsh plugin --profile web exec dsh-moneypal runtime-status
如果状态中的 available 和 compatible 不是 true,准备运行时后再次检查:
dsh plugin --profile web exec dsh-moneypal setup-runtime
dsh plugin --profile web exec dsh-moneypal runtime-status
兼容运行时需要 Python 3.11+、Beancount 3.2.3+ 和 beanquery 0.2.0+。首次引导由助手按需执行准备命令;日常启动和查询不会自动安装或升级运行时。
新账本优先让助手通过 finance_initialize_ledger 展示初始化内容,在原生确认框中确认后创建。也可手动初始化,将路径替换为选定的账本工作区:
dsh plugin --profile web exec dsh-moneypal init /path/to/ledger-workspace
两种方式都会拒绝覆盖已存在的 default/。已有符合布局的账本无需重新初始化。
DSH 插件提供以下工具:
| 工具 | 用途 |
|---|---|
finance_query_register |
按账户、文本和日期范围查询流水 |
finance_get_balance |
查询账户余额 |
finance_get_income_statement |
查询期间损益表 |
finance_get_balance_sheet |
查询期末资产负债表 |
finance_list_accounts |
列出账本中声明的账户 |
finance_validate_journal |
校验整个账本 |
finance_add_transactions |
预览交易,经根 Agent 的确认框确认后整批原子写入 |
finance_initialize_ledger |
预览初始化内容,经根 Agent 确认后创建基础账本 |
例如:“列出 2026 年 8 月的餐饮支出”“查看截至 2026-08-31 的资产负债表”或“记一笔 2026-09-07 的午餐 35 元,现金支付”。
日期使用 YYYY-MM-DD。DSH Web 可按浏览器时区理解“今天”“昨天”;时间或时区不可用时会要求澄清。报表金额按币种分别展示,不自动换汇。
记账前核对预览中的日期、账户、金额、说明和重复提醒。确认前账本不会改变;取消或关闭确认框不会写入。账本在预览后发生变化时,必须重新预览并确认。若返回 write_outcome_uncertain,先查询账本确认结果,再决定是否重试。
当当前账本会话的 default/main.beancount 存在时,会话标题栏显示“资产负债概览”入口。抽屉展示截至浏览器本地日期的资产与负债明细;打开且页面可见时每 30 秒刷新,也可手动刷新。金额按商品分别展示,不做汇率换算。
抽屉是只读界面。查询使用当前已挂载会话的工作区;正式记账仍经受确认保护的财务工具完成。
正式账本位于账本工作区下的 default/:
<账本工作区>/default/
├── main.beancount
├── accounts.beancount
└── transactions/
└── <年份>.beancount
main.beancount 汇入账户声明和年度交易文件。初始化会创建 CNY 商品和一组基础账户;需要时可按自己的账户结构编辑 accounts.beancount。仓库中的 data/finance/default/ 是演示账本,不会自动用作正式账本。
写入目标为 transactions/<年份>.beancount。每批交易在一次确认后原子写入,并在提交前重新校验账本快照。疑似重复交易会提示但不会阻止确认;账本锁不会自动删除。提交结果不确定时必须先查询账本,系统不会自动重试。
| 现象 | 处理方式 |
|---|---|
invalid_ledger_layout |
检查 default/main.beancount、default/accounts.beancount、年度交易文件和 include。 |
runtime_unavailable |
运行 runtime-status 检查;状态不兼容时显式运行 setup-runtime。 |
| 看不到 MoneyPal 预设或抽屉 | 确认 DSH 版本和插件 bundle,重启 DSH Web、硬刷新浏览器,并在新会话中选择 MoneyPal。 |
preview_stale 或预览过期 |
重新查询账本、生成预览并确认。 |
ledger_locked |
确认没有其他写入进程,再按账本维护流程处理遗留锁。 |
write_outcome_uncertain |
先查询正式账本核对是否已写入,不要直接重复提交。 |
升级插件后重启 DSH Web、硬刷新浏览器,并在新会话中选择 MoneyPal:
dsh plugin --profile web add dsh-moneypal
卸载前关闭 DSH Web,再移除插件 bundle:
dsh plugin --profile web remove dsh-moneypal
插件移除后预设不再出现在新会话中。MoneyPal 运行时不会随插件卸载;旧版遗留的 .agent-presets/dsh-moneypal 目录由新版 DSH 忽略,插件不会自动删除。
本仓库只构建和发布 dsh-moneypal。从源码安装:
npm ci
npm run build
dsh plugin --profile web add /path/to/MoneyPal/dist/packages/dsh-moneypal
packages/dsh-moneypal/ 是市场发现用清单及补丁源,不是可直接安装的构建目录。
验证命令:
npm run typecheck
npm run test:fast
npm test
npm run test:release
涉及发布的改动使用 npm run test:release。该门禁要求真实兼容的 MoneyPal 运行时,并检查实际 tarball、隔离安装和包入口。
根工作区标记为 private,不可直接发布。Release 工作流验证版本与 tag,构建并验收单个 DSH tarball,再通过 npm OIDC Trusted Publishing 发布到 next。稳定版的 latest 提升由维护者运行 npm run release:promote;发布前确认工作树干净,并完成 DSH Web 的真实宿主验收。
DSH 插件规范见 开发规范。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。