{% extends "base.html" %} {% block title %}{{ agent.label }} · agent · aether 控制台{% endblock %} {% block content %}

{{ agent.label }}

{{ agent.id }}

{% if ok_bump %} {% endif %}

Workflow(只读,不能改拓扑)

    {% for node in workflow %}
  1. {{ node.label }}
    {{ node.hint }}
  2. {% endfor %}
{% if agent.kind == "rewrite" %}

运行 · 翻译一篇 raw 文章

选一篇 translate_status='raw'body_html 不为空的文章 (说明 Block 1D 已经抓过原文)。点「▶ 运行」跳到实时任务页,看 load_inputs → extract_markdown → translate → upsert_draft 四个节点的状态流。

{% if raw_articles %}
共 {{ raw_articles|length }} 篇候选(按 fetched_at 倒序)
先去看文章库
{% else %}

没有 raw 文章可翻译。 articles 表里 translate_status='raw' 且 body_html 不为空的行数为 0。

先跑一次 fetch(/agents 抓源 agent 点运行)+ Block 1D curate, 再回到这里就能选了。

回 agents 列表

{% endif %}

Prompt · v{{ agent.prompt_version }} {{ agent.prompt_source }}

保存会创建一个新版本(v{{ (agent.prompt_version or 1) + 1 }}),老版本保留作历史。 文件位置:data/prompts/{{ agent.platform_id }}/v{{ (agent.prompt_version or 1) + 1 }}.md (不进 git;用你自己的 VCS / 备份策略管)。

取消
{% elif agent.kind == "fetch" %}

Descriptor(v0.1 只读)

{% if agent.descriptor %}

agent_factory 表的 active 行 · version {{ agent.descriptor['version'] }} · updated {{ agent.descriptor['updated_at'] }}

{{ agent.descriptor['descriptor'] | tojson(indent=2) }}
{% else %}

没有 agent_factory 行(source 还没生成过 descriptor)。

{% endif %}

运行

点运行触发一次 fetch subgraph,抓到的文章写到 articles 表。

看这个 source 的文章 编辑这个 source
{% endif %}
{% endblock %}