# Hledger 插件 - 在主题中渲染纯文本记账日志

**URL:** <https://meta.discourse.org/t/hledger-plugin-render-plain-text-accounting-journals-in-topics/413437>\
**Category:** Plugin\
**Created:** [2026年九月27日 16:08 UTC](https://meta.discourse.org/t/hledger-plugin-render-plain-text-accounting-journals-in-topics/413437 "2026-09-27T16:08:44Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![raucao](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/raucao/32/549164_2.png) [@raucao](https://meta.discourse.org/u/raucao)\
**Post date:** [2026年九月27日 16:08 UTC](https://meta.discourse.org/t/hledger-plugin-render-plain-text-accounting-journals-in-topics/413437/1 "2026-09-27T16:08:45Z")

</div>

| | | |
| --- | --- | --- |
| ℹ | **摘要** | 在主题的帖子中实时渲染 [hledger](https://hledger.org) 日记账作为仪表板。 |
| 🛠 | **仓库** | [gitea.kosmos.org/raucao/discourse-hledger](https://gitea.kosmos.org/raucao/discourse-hledger) |
| 📖 | **安装指南** | [README](https://gitea.kosmos.org/raucao/discourse-hledger#installation) |

## 功能

在主题的首个帖子中，将 [hledger](https://hledger.org) 日记账放入围栏的 `hledger` 代码块中，它将被替换为由服务器的 `hledger` 可执行文件按需生成的包含五个报告的仪表板：

- 📋 **账户** — 完整的余额树，所有父账户均已展开。

- ⚖ **资产负债表** — 资产、负债和权益，折叠为各个部分。

- 📈 **损益表** — 收入和支出。

- 👥 **权益** — 按商品分布的投入资本。

- 🧾 **日记账** — 包含每笔分录的交易日志。

- 报告可以通过从/至日期范围进行过滤；结束日期包含在内。

- 以 `@username` 形式编写的账户段（例如 `equity:@alice`）会变成  
Discourse 提及链接，并带有通常的个人资料卡；仅链接现有用户。

- 报告按需生成并按帖子修订版本缓存，因此编辑  
日记账会刷新它们。

### 示例代码块

```
```hledger
2024-01-01 期初余额
    assets:bank:checking 1000.00 EUR
    equity:alice -600.00 EUR
    equity:bob -400.00 EUR
```
```

### 截图

 ![Accounts](https://global.discourse-cdn.com/meta/original/4X/9/4/2/94265135707ab367e9de98ec40d1eb15d9eddc0d.png)  
 ![P&L](https://global.discourse-cdn.com/meta/original/4X/e/b/2/eb2e81ec6f92e53e45f1d11f4513a736b84ccc66.png)  
 ![Journal](https://global.discourse-cdn.com/meta/original/4X/c/1/e/c1e884420d77a56a43c7db1582d9b9a4b6e8ff38.png)

## 要求

- 服务器上的 `hledger` 可执行文件（已在 hledger 1.32.3 上测试）。
- Discourse 2.7.0 或更高版本。

使用标准 Docker 安装时，通过 `app.yml` 安装插件和 `hledger` 包并重新构建：

```yaml
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://gitea.kosmos.org/raucao/discourse-hledger.git discourse-hledger
    - exec:
        cd: $home
        cmd:
          - apt-get update
          - DEBIAN_FRONTEND=noninteractive apt-get install -y hledger

```

## 配置

1. 在 `管理 > 设置 > 插件` 中启用插件（`hledger enabled`）。
2. 在主题的首个帖子中添加 hledger 日记账。
3. 如果可执行文件不在默认 `PATH` 上，可选择设置 `hledger path`。

## 设置

| 名称 | 描述 |
| --- | --- |
| `hledger enabled` | 启用插件。 |
| `hledger path` | `hledger` 可执行文件的路径（默认 `hledger`）。 |
| `hledger max journal bytes` | 接受的日记账的最大大小，以字节为单位（默认 262144）。 |
| `hledger max journal lines` | 日记账中的最大行数（默认 5000）。 |
| `hledger timeout seconds` | 每次 hledger 调用的实际时间限制（默认 10）。 |
| `hledger max output bytes` | 捕获的 hledger 输出的上限（默认 1048576）。 |
| `hledger memory limit mb` | hledger 进程的内存上限；0 表示禁用（默认 256）。 |
| `hledger global rate limit per minute` | 所有用户报告生成的上限；0 表示禁用（默认 120）。 |

## 安全性

日记账是不可信的输入。该插件以非特权子进程身份运行 `hledger`，使用清理后的环境、私有工作目录、硬性超时、CPU/文件大小/内存限制以及输出上限，并且拒绝 `include` 指令。报告仅返回给查看者可见的主题，并且请求按 IP（30/分钟）和全局进行速率限制。

## 兼容性和许可证

- MIT 许可证
- 欢迎在此主题或通过电子邮件、社交媒体（ActivityPub）或聊天（XMPP）联系 [raucao@kosmos.org](mailto:raucao@kosmos.org) 提供反馈、错误报告和翻译。
