{
  "source_file": "0930",
  "source_platform": "Dev.to",
  "author": "Mariano Gobea Alcoba",
  "title_listed": "Hamilton-Jacobi-Bellman Equation: Reinforcement Learning and Diffusion Models!",
  "keywords": "",
  "domain": "图像处理",
  "content_type": "深度技术解析",
  "is_paid_flag": "否",
  "url": "https://dev.to/mgobea/hamilton-jacobi-bellman-equation-reinforcement-learning-and-diffusion-models-5f01",
  "publish_date": "2026-03-30",
  "corpus_stage": "",
  "notes": "",
  "id": "f83fed1bbeff",
  "collected_at": "2026-10-02T14:05:44",
  "title": "Hamilton-Jacobi-Bellman Equation: Reinforcement Learning and Diffusion Models! - DEV Community",
  "body_markdown": "The Hamilton-Jacobi-Bellman (HJB) equation stands as a cornerstone in the theory of optimal control, providing a necessary and sufficient condition for optimality in continuous-time dynamic systems. Its implications extend beyond classical control, finding profound connections in contemporary fields such as reinforcement learning (RL) and generative modeling, particularly diffusion models. This analysis aims to elaborate on these connections, providing a technical perspective on how the HJB equation underpins the theoretical foundations of these diverse areas.\nThe Hamilton-Jacobi-Bellman Equation in Optimal Control\nThe HJB equation is a first-order, non-linear partial differential equation (PDE) that characterizes the value function of an optimal control problem. Consider a system whose state evolves according to a deterministic ordinary differential equation (ODE):\ndX\n_\nt = f(X\n_\nt, u\n_\nt, t) dt\nEnter fullscreen mode\nExit fullscreen mode\nwhere\nX_t\nis the state vector at time\nt\n,\nu_t\nis the control input, and\nf\nis the dynamics function. The objective is to find a control policy\nu_t = \\pi(X_t, t)\nthat minimizes a cost functional over a time horizon\n[t_0, T]\n:\nJ(X\n_{\nt\n_\n0\n}\n, t\n_\n0, u) =\n\\int\n_{\nt\n_\n0\n}^{\nT\n}\nL(X\n_\nt, u\n_\nt, t) dt + M(X\n_\nT, T)\nEnter fullscreen mode\nExit fullscreen mode\nHere,\nL\nis the running cost (or instantaneous cost rate), and\nM\nis the terminal cost. Assuming\nu_t\nis chosen to minimize this cost, the optimal value function\nV(x, t)\nis defined as:\nV(x, t) =\n\\min\n_{\nu\n\\in\n\\mathcal\n{\nU\n}}\n\\left\\{\n\\int\n_{\nt\n}^{\nT\n}\nL(X\n_\ns, u\n_\ns, s) ds + M(X\n_\nT, T)\n\\right\\}\nEnter fullscreen mode\nExit fullscreen mode\nsubject to\nX_t = x\n.\nApplying the principle of optimality from dynamic programming, Bellman's principle states that an optimal policy has the property that whatever the initial state and initial decision are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the initial decision. For a sufficiently small time step\ndt\n, the value function can be expressed as:\nV(x, t) =\n\\min\n_{\nu\n}\n\\left\\{\nL(x, u, t) dt + V(x + f(x, u, t) dt, t + dt)\n\\right\\}\nEnter fullscreen mode\nExit fullscreen mode\nExpanding\nV(x + f(x, u, t) dt, t + dt)\nusing a Taylor series approximation:\nV(x + f(x, u, t) dt, t + dt)\n\\approx\nV(x, t) +\n\\nabla\n_\nx V(x, t)\n^\nT f(x, u, t) dt +\n\\frac\n{\n\\partial\nV\n}{\n\\partial\nt\n}\n(x, t) dt\nEnter fullscreen mode\nExit fullscreen mode\nSubstituting this back and rearranging terms, and then dividing by\ndt\nas\ndt \\to 0\n, yields the deterministic HJB equation:\n-\n\\frac\n{\n\\partial\nV\n}{\n\\partial\nt\n}\n(x, t) =\n\\min\n_{\nu\n}\n\\left\\{\nL(x, u, t) +\n\\nabla\n_\nx V(x, t)\n^\nT f(x, u, t)\n\\right\\}\nEnter fullscreen mode\nExit fullscreen mode\nwith the terminal condition\nV(x, T) = M(x, T)\n. The optimal control\nu^*(x, t)\nis found by solving the minimization problem on the right-hand side. This HJB equation is a central tool for analytically determining optimal control laws.\nHJB and Reinforcement Learning\nReinforcement Learning (RL) concerns an agent learning to make optimal decisions in an environment to maximize a cumulative reward. The HJB equation serves as the continuous-time, continuous-state counterpart to the discrete-time Bellman equation, which is fundamental to most RL algorithms. In RL, the objective is typically to maximize a return (negative of cost),\nR(X_{t_0}, t_0, u) = \\int_{t_0}^{T} R(X_t, u_t, t) dt\n, where\nR\nis the instantaneous reward. The value function\nV(x, t)\nin this context represents the maximum expected future reward.\nTransforming the HJB equation from cost minimization to reward maximization simply changes the sign of\nL\nto\nR\nand replaces\nmin\nwith\nmax\n:\n\\frac\n{\n\\partial\nV\n}{\n\\partial\nt\n}\n(x, t) =\n\\max\n_{\nu\n}\n\\left\\{\nR(x, u, t) +\n\\nabla\n_\nx V(x, t)\n^\nT f(x, u, t)\n\\right\\}\nEnter fullscreen mode\nExit fullscreen mode\nThe challenge in RL is that the dynamics\nf\nand reward function\nR\nare often unknown or partially known. Furthermore, the state space and action space can be high-dimensional and continuous. Direct analytical solutions to the HJB equation are typically intractable for all but the simplest problems due to the curse of dimensionality.\nConsequently, RL algorithms often resort to approximation methods. Value-based methods aim to approximate the value function\nV(x, t)\n(or the action-value function\nQ(x, u, t)\n) using function approximators like neural networks. Policy-based methods directly learn the optimal policy\nu^*(x, t)\n(or\n\\pi(x, t)\n). Actor-Critic methods combine both, with an 'actor' learning the policy and a 'critic' learning the value function to guide the actor's updates. These methods effectively try to solve an approximate version of the HJB equation without explicitly formulating it as a PDE. For instance, in continuous-action spaces, methods like DDPG (Deep Deterministic Policy Gradient) or SAC (Soft Actor-Critic) attempt to find an optimal\nQ\nfunction and an optimal policy that satisfies conditions analogous to the HJB optimality condition.\nStochastic Optimal Control and Diffusion Processes\nMany real-world systems are subject to inherent randomness, necessitating the use of stochastic differential equations (SDEs) to model their dynamics. The HJB equation extends naturally to this domain. Consider a system evolving according to an Ito SDE:\ndX\n_\nt = f(X\n_\nt, u\n_\nt, t) dt +\n\\sigma\n(X\n_\nt, t) dW\n_\nt\nEnter fullscreen mode\nExit fullscreen mode\nwhere\ndW_t\nis a vector of Wiener processes, and\n\\sigma(X_t, t)\nis the diffusion coefficient matrix, which can depend on the state and time. The cost functional remains similar, but now we seek to minimize its\nexpected\nvalue:\nJ(X\n_{\nt\n_\n0\n}\n, t\n_\n0, u) = E\n\\left\n[ \\int_{t_0}^{T} L(X_t, u_t, t) dt + M(X_T, T) \\right]\nEnter fullscreen mode\nExit fullscreen mode\nTo derive the HJB equation for this stochastic system, we again employ Bellman's principle of optimality and Ito's Lemma for the increment of the value function\nV(X_t, t)\n:\ndV(X\n_\nt, t) =\n\\frac\n{\n\\partial\nV\n}{\n\\partial\nt\n}\ndt +\n\\nabla\n_\nx V\n^\nT dX\n_\nt +\n\\frac\n{\n1\n}{\n2\n}\n\\text\n{\nTr\n}\n\\left\n(\n\\sigma\n\\sigma\n^\nT\n\\nabla\n_{\nxx\n}^\n2 V\n\\right\n) dt\nEnter fullscreen mode\nExit fullscreen mode\nSubstituting\ndX_t\nfrom the SDE, taking the expectation, and following a similar limiting procedure as in the deterministic case, we arrive at the stochastic HJB equation:\n-\n\\frac\n{\n\\partial\nV\n}{\n\\partial\nt\n}\n(x, t) =\n\\min\n_{\nu\n}\n\\left\\{\nL(x, u, t) +\n\\nabla\n_\nx V(x, t)\n^\nT f(x, u, t) +\n\\frac\n{\n1\n}{\n2\n}\n\\text\n{\nTr\n}\n\\left\n(\n\\sigma\n(x, t)\n\\sigma\n(x, t)\n^\nT\n\\nabla\n_{\nxx\n}^\n2 V(x, t)\n\\right\n)\n\\right\\}\nEnter fullscreen mode\nExit fullscreen mode\nThis equation is a non-linear parabolic PDE. The last term, involving the second derivative (Hessian) of\nV\n, accounts for the diffusion (randomness) in the system. The matrix\n\\sigma \\sigma^T\nis often denoted as\nD\n(diffusion matrix), so the term becomes\n\\frac{1}{2} \\text{Tr}\\left( D(x, t) \\nabla_{xx}^2 V(x, t) \\right)\n. This term highlights the fundamental connection between optimal control of stochastic systems and the theory of diffusion processes. The probability density function\np(x, t)\nof the state\nX_t\nin such a system evolves according to the Fokker-Planck equation (also known as the Kolmogorov Forward equation):\n\\frac\n{\n\\partial\np\n}{\n\\partial\nt\n}\n= -\n\\nabla\n_\nx\n\\cdot\n(f p) +\n\\frac\n{\n1\n}{\n2\n}\n\\nabla\n_\nx\n\\nabla\n_\nx : (D p)\nEnter fullscreen mode\nExit fullscreen mode\nThis equation describes how the probability distribution of the system's state changes over time under the influence of drift\nf\nand diffusion\nD\n.\nDiffusion Models: A Probabilistic Generative Approach\nDiffusion models (DMs) are a class of generative models that have gained prominence for their ability to generate high-fidelity samples from complex data distributions. They operate by defining a two-stage process: a forward diffusion process and a reverse denoising process.\nForward Diffusion Process\nThe forward process gradually transforms data samples\nx_0 \\sim q(x_0)\ninto pure noise over a fixed time horizon\nT\n. This is typically modeled as an SDE:\ndX\n_\nt = f(X\n_\nt, t) dt + g(t) dW\n_\nt\nEnter fullscreen mode\nExit fullscreen mode\nwhere\nf(X_t, t)\nis the drift function and\ng(t)\nis the diffusion coefficient, often chosen such that\ng(t)^2 = \\sigma^2(t)\n(variance schedule). This process perturbs the data\nx_0\ntowards an isotropic Gaussian distribution\n\\mathcal{N}(0, I)\n. The probability distribution\nq(X_t | x_0)\nis usually tractable, often being a Gaussian distribution.\nReverse Denoising Process\nThe core idea of DMs is that if the forward diffusion process is a specific type of SDE, then its time-reversed counterpart can also be described by an SDE, which starts from pure noise and gradually denoises it back to a data sample\nx_0\n. The reverse SDE for\nX_t\nevolving from\nT\ndown to\n0\nis given by:\ndX\n_\nt =\n\\left\n[ f(X_t, t) - g(t)^2 \\nabla_x \\log q(X_t, t) \\right]\ndt + g(t) d\n\\bar\n{\nW\n}_\nt\nEnter fullscreen mode\nExit fullscreen mode\nwhere\nd\\bar{W}_t\nis a Wiener process for time flowing backward, and\nq(X_t, t)\nis the marginal probability density of the forward process at time\nt\n. The term\n\\nabla_x \\log q(X_t, t)\nis known as the\nscore function\n. It represents the direction in the state space that increases the probability density at\nX_t\n. Critically,\nf(X_t, t)\nhere is the drift of the\nforward\nprocess. If the forward process is a simple Ornstein-Uhlenbeck process, then\nf(X_t, t)\nis usually a linear function of\nX_t\n. The reverse SDE essentially uses the score function to guide the noisy samples back towards regions of higher data density.\nTraining a diffusion model involves learning to estimate this score function\ns_\\theta(X_t, t) \\approx \\nabla_x \\log q(X_t, t)\nusing a neural network, often via a score-matching objective or a denoising objective as in Denoising Diffusion Probabilistic Models (DDPMs). Once trained, samples are generated by initializing\nX_T\nfrom\n\\mathcal{N}(0, I)\nand simulating the reverse SDE using the learned score network.\nConnecting HJB, Reinforcement Learning, and Diffusion Models\nThe connections between these three domains are deep, stemming from the underlying principles of optimal control and stochastic processes.\nThe Score Function as an Optimal Control\nThe reverse diffusion process can be framed as an optimal control problem. The goal is to steer the noisy distribution\nq(X_T, T)\n(pure noise) towards the data distribution\nq(X_0, 0)\n(real data) in an \"optimal\" way.\nConsider the reverse SDE:\ndX\n_\nt =\n\\left\n[ f(X_t, t) - g(t)^2 \\nabla_x \\log q(X_t, t) \\right]\ndt + g(t) d\n\\bar\n{\nW\n}_\nt\nEnter fullscreen mode\nExit fullscreen mode\nHere, the term\nf(X_t, t)\nrepresents the 'natural' drift of the forward process, and\ng(t)^2 \\nabla_x \\log q(X_t, t)\ncan be interpreted as an\noptimal control\ninput that guides the process against its natural tendency (or purely random diffusion) to reach the desired terminal distribution.\nMore formally, this connection is solidified through the theory of\nSchrödinger Bridge Problems (SBPs)\nand\nOptimal Transport\n. An SBP seeks to find the most likely stochastic process that connects two marginal distributions at two different times, given a reference stochastic process (often a simple diffusion). The solution to an SBP involves finding a drift modification to the reference process. This optimal drift is precisely related to the score function.\nIn the context of optimal transport, one might seek to minimize the \"energy\" or \"work\" required to transform one probability distribution into another. For stochastic processes, this often leads to control problems where the cost is related to the deviation from a reference diffusion. The HJB equation, in turn, provides the value function for such minimum-cost control problems.\nFor instance, consider a value function\nV(x, t)\nthat measures the \"cost-to-go\" from state\nx\nat time\nt\nto reach the target data distribution\nq(x_0)\n. If we define a cost function\nL(x, u, t)\nrelated to the control\nu\n(e.g.,\n(u - f(x,t))^2 / (2 g(t)^2)\n) then the HJB equation would describe this optimal value. The optimal control\nu^*(x, t)\nderived from the HJB equation will correspond to the drift required to achieve the optimal path. The score function\n\\nabla_x \\log q(x, t)\nemerges as a crucial component of this optimal drift.\nSpecifically, the\nSchrödinger system\n(a pair of coupled linear parabolic PDEs) describes the forward and backward marginal distributions of the optimal stochastic process in an SBP. These equations have structural similarities to the HJB equation. In some formulations, the solution of the SBP (the optimal drift) can be derived from the gradients of potentials, which are themselves solutions to systems related to HJB, particularly when one considers the connection between optimal control, HJB, and the logarithm of the probability density function (log-density, which is what the score function differentiates).\nIf we define a value function related to the negative log-likelihood of reaching the target distribution, then its gradient would essentially be the optimal \"force\" to apply. In the case of score-based generative models, the learned score function\ns_\\theta(X_t, t)\nis precisely this force.\nReinforcement Learning Perspective on Diffusion Models\nFrom an RL standpoint, training a diffusion model can be viewed as learning an optimal policy (the score function\ns_\\theta(X_t, t)\n) for a continuous-time stochastic control problem.\nAgent:\nThe neural network that estimates the score function.\nEnvironment:\nThe forward diffusion process, which introduces noise.\nState:\nThe noisy data\nX_t\n.\nAction/Control:\nThe estimated score\ns_\\theta(X_t, t)\nwhich determines the drift in the reverse SDE.\nReward:\nImplicitly defined. The ultimate \"reward\" is successfully generating samples that belong to the original data distribution\nq(x_0)\n. The training objective (e.g., denoising score matching) quantifies how well the learned policy steers the samples towards the data manifold. It penalizes discrepancies between the true score and the estimated score, which can be interpreted as a penalty for suboptimal control.\nIn this context, the training of diffusion models can be seen as a form of\nInverse Reinforcement Learning (IRL)\nor\nModel-Based RL\n.\nIRL:\nInstead of specifying a reward function, we observe \"optimal\" trajectories (the paths from noise to data) and try to infer the underlying reward (or cost) function that would lead to such behavior. Here, the \"optimal trajectories\" are implicitly encoded in the data distribution, and the score function helps reconstruct these optimal paths.\nModel-Based RL:\nThe SDE for the reverse process acts as a dynamic model. The score network is learning to control this dynamic model to achieve a desired outcome.\nThe objective function in diffusion models, often an expectation over noise scales and data samples, can be conceptually linked to minimizing a divergence (e.g., KL divergence) between the generated data distribution and the true data distribution. Such divergences can sometimes be formulated as costs in an optimal control problem, making the learned score function a derivative of the optimal value function described by an HJB equation.\nFor example, the continuous-time version of DDPMs often optimizes an objective that resembles a variational lower bound on the negative log-likelihood, which, when translated to an SDE setting, can be interpreted as minimizing a generalized energy or cost associated with the reverse path. The HJB equation, in this light, provides the necessary conditions for the value function of this underlying optimal control problem, whose optimal policy corresponds to the score function.\nChallenges and Future Directions\nDespite these theoretical connections, several challenges remain. The HJB equation's analytical intractability for high-dimensional problems persists. While RL techniques offer approximation strategies, they often struggle with sample efficiency and convergence guarantees. For diffusion models, the computational cost of simulating SDEs for sampling can be high, and while methods like ODE samplers or fewer sampling steps exist, they still rely on an accurate score function estimate.\nFuture research could explore:\nDirect HJB Solvers for Diffusion Models:\nCan we leverage advanced numerical methods for PDEs (e.g., neural PDE solvers, sparse grids) to directly approximate the value function or optimal control (score function) from an HJB formulation, rather than relying solely on score matching?\nExplicit RL Formulations for Diffusion:\nCan diffusion model training be framed as a more explicit RL problem with defined rewards and transitions, allowing the application of sophisticated RL algorithms (e.g., policy iteration, Q-learning variants) to learn the score function? This could potentially lead to more robust or efficient training paradigms.\nOptimal Control for Latent Spaces:\nExtending these ideas to diffusion in latent spaces could provide a principled way to navigate and generate complex data by controlling latent dynamics.\nConnecting Different Optimal Transport Costs:\nInvestigate how different cost functions in optimal transport problems give rise to different forms of diffusion models and their corresponding HJB equations. This could lead to a richer family of generative models.\nThe Hamilton-Jacobi-Bellman equation provides a unified mathematical framework that deeply connects optimal control, reinforcement learning, and modern generative models like diffusion models. Understanding these underlying theoretical links not only enriches our comprehension of these fields but also opens avenues for cross-pollination of ideas and the development of more powerful algorithms. The HJB equation, originating in the quest for optimal decision-making, continues to be a fertile ground for innovation in artificial intelligence.\nFor inquiries regarding advanced control systems design, reinforcement learning applications, or high-dimensional generative modeling, please visit our website at\nhttps://www.mgatc.com\nfor expert consulting services.\nOriginally published in Spanish at\nwww.mgatc.com/blog/hamilton-jacobi-bellman-equation-reinforcement-learning-diffusion-models/",
  "metadata": {
    "title": "Hamilton-Jacobi-Bellman Equation: Reinforcement Learning and Diffusion Models! - DEV Community",
    "description": "The Hamilton-Jacobi-Bellman (HJB) equation stands as a cornerstone in the theory of optimal control,... Tagged with hamiltonjacobibellman, hjb, reinforcementlearning, rl.",
    "keywords": "hamiltonjacobibellman, hjb, reinforcementlearning, rl, software, coding, development, engineering, inclusive, community",
    "author": null,
    "og:type": "article",
    "og:url": "https://dev.to/mgobea/hamilton-jacobi-bellman-equation-reinforcement-learning-and-diffusion-models-5f01",
    "og:title": "Hamilton-Jacobi-Bellman Equation: Reinforcement Learning and Diffusion Models!",
    "og:description": "The Hamilton-Jacobi-Bellman (HJB) equation stands as a cornerstone in the theory of optimal control,...",
    "og:site_name": "DEV Community",
    "og:image": "https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb98tz3zh6bgt5zej5jrt.png",
    "twitter:site": "@thepracticaldev",
    "twitter:creator": "@",
    "twitter:title": "Hamilton-Jacobi-Bellman Equation: Reinforcement Learning and Diffusion Models!",
    "twitter:description": "The Hamilton-Jacobi-Bellman (HJB) equation stands as a cornerstone in the theory of optimal control,...",
    "twitter:card": "summary_large_image",
    "twitter:widgets:new-embed-design": "on",
    "twitter:image:src": "https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb98tz3zh6bgt5zej5jrt.png"
  },
  "paywall": {
    "listed_paid": false,
    "detected": false,
    "marker": "",
    "public_only": false,
    "policy": "付费/会员内容只保留页面公开可见部分，不绕过付费墙"
  },
  "crawl": {
    "success": true,
    "status_code": 200,
    "error": ""
  },
  "code_blocks": [
    {
      "file": "attachments/f83fed1bbeff/code/body-000.txt",
      "chars": 25,
      "language": "text"
    },
    {
      "file": "attachments/f83fed1bbeff/code/body-001.txt",
      "chars": 66,
      "language": "text"
    },
    {
      "file": "attachments/f83fed1bbeff/code/body-002.txt",
      "chars": 95,
      "language": "text"
    },
    {
      "file": "attachments/f83fed1bbeff/code/body-003.txt",
      "chars": 81,
      "language": "text"
    },
    {
      "file": "attachments/f83fed1bbeff/code/body-004.txt",
      "chars": 121,
      "language": "text"
    },
    {
      "file": "attachments/f83fed1bbeff/code/body-005.txt",
      "chars": 108,
      "language": "text"
    },
    {
      "file": "attachments/f83fed1bbeff/code/body-006.txt",
      "chars": 107,
      "language": "text"
    },
    {
      "file": "attachments/f83fed1bbeff/code/body-007.txt",
      "chars": 47,
      "language": "text"
    },
    {
      "file": "attachments/f83fed1bbeff/code/body-008.txt",
      "chars": 83,
      "language": "text"
    },
    {
      "file": "attachments/f83fed1bbeff/code/body-009.txt",
      "chars": 139,
      "language": "text"
    },
    {
      "file": "attachments/f83fed1bbeff/code/body-010.txt",
      "chars": 196,
      "language": "text"
    },
    {
      "file": "attachments/f83fed1bbeff/code/body-011.txt",
      "chars": 94,
      "language": "text"
    },
    {
      "file": "attachments/f83fed1bbeff/code/body-012.txt",
      "chars": 32,
      "language": "text"
    },
    {
      "file": "attachments/f83fed1bbeff/code/body-013.txt",
      "chars": 86,
      "language": "text"
    },
    {
      "file": "attachments/f83fed1bbeff/code/body-014.txt",
      "chars": 86,
      "language": "text"
    }
  ],
  "images": [],
  "audio": [],
  "videos": [],
  "links": [
    {
      "href": "https://www.mgatc.com/",
      "label": "https://www.mgatc.com",
      "type": "a"
    },
    {
      "href": "https://www.mgatc.com/blog/hamilton-jacobi-bellman-equation-reinforcement-learning-diffusion-models/",
      "label": "www.mgatc.com/blog/hamilton-jacobi-bellman-equation-reinforcement-learning-diffusion-models/",
      "type": "a"
    }
  ],
  "repair_version": 2,
  "repaired_at": "2026-10-14T10:50:05Z",
  "source_url": "https://dev.to/mgobea/hamilton-jacobi-bellman-equation-reinforcement-learning-and-diffusion-models-5f01",
  "papers": [],
  "actual_video_files": [],
  "body_chars": 18131,
  "expected_body_images": 0,
  "discovery_status": "ok",
  "delivery_status": "ok",
  "missing_reason": "",
  "raw_html": "attachments/f83fed1bbeff/pages/source.html",
  "local_html": "attachments/f83fed1bbeff/pages/article.html",
  "body_base_path": "attachments/f83fed1bbeff/pages/",
  "body_markdown_path": "attachments/f83fed1bbeff/pages/article.md"
}