Skip to content

工作区与文件传输 API ​

工作区 Job 用于目录、元数据与数据预览;文件传输是独立 HTTP 路由,用于暂存 wheel 与同步归档。

工作区与文件传输 API调用示意

调用约定 ​

以下均为 POST /jobs/{name},请求体是 {"arguments":{...}}。远程转发时在封装顶层添加 target,不能放进 arguments。每个响应使用 JobResponse,表格默认值依据当前内置配置和 Step。部署可修改 Job Schema,运行服务的 /jobs 是最终依据。

所有示例 JSON 均为结构示例;任务、会话、文件路径与哈希必须替换为本服务实际返回的值。完整通用 TaskStatus 字段见 Task 协议。

接口清单 ​

Job用途
list_entries列出工作区内一层目录。
list_task_runs列出含 metadata.json 的任务目录。
preview_file预览支持类型的文件。
delete_entries删除工作区中的文件或目录。

list_entries ​

列出工作区内一层目录。

参数类型必填默认值约束与含义
pathstring否""服务工作区相对路径

只接受表中业务字段。

请求

json
{
  "arguments": {}
}

响应

answer 为 WorkspaceListing:path、entries、truncated。每个 entry 含 name、path、kind、preview_kind、supported、size、modified_at。

json
{
  "answer": {
    "path": "",
    "entries": [],
    "truncated": false
  },
  "success": true,
  "metadata": {}
}

行为与失败情况

path 默认空字符串表示根目录;目录优先排序。最多返回 5000 项,truncated=true 表示列表截断,不提供 offset 分页。

list_task_runs ​

列出含 metadata.json 的任务目录。

参数类型必填默认值约束与含义
task_typestring是—(省略)任务类型目录;minLength=1, 正则 ^[A-Za-z0-9][A-Za-z0-9_-]*$

只接受表中业务字段。

请求

json
{
  "arguments": {
    "task_type": "train"
  }
}

响应

answer 与 WorkspaceListing 相同,只保留任务结果目录。

json
{
  "answer": {
    "path": "train",
    "entries": [],
    "truncated": false
  },
  "success": true,
  "metadata": {}
}

行为与失败情况

正在执行或失败而没有 metadata 的目录不进入研究结果列表。task_type 是目录名,不是 Task 注册名。

preview_file ​

预览支持类型的文件。

参数类型必填默认值约束与含义
pathstring是—(省略)服务工作区相对路径
offsetinteger否0CSV/Parquet 预览跳过的数据行数;minimum=0
limitinteger否200CSV/Parquet 预览最多返回的数据行数;minimum=1, maximum=5000

只接受表中业务字段。

请求

json
{
  "arguments": {
    "path": "base/base#demo#api-demo/metadata.json"
  }
}

响应

answer 按 kind 判别:text/markdown/json/yaml/csv/parquet/unsupported;每种都有 size。

json
{
  "answer": {
    "kind": "json",
    "size": 1200,
    "content": "",
    "data": {},
    "parse_error": null,
    "truncated": false
  },
  "success": true,
  "metadata": {}
}

行为与失败情况

offset/limit 仅对 CSV、Parquet 的数据行有效,默认 0/200,上限 5000。text/markdown 最多读取 512 KiB;JSON/YAML 超过 32 MiB 返回 parse_error。解析失败可仍是 success=true,必须查看 parse_error。

delete_entries ​

删除工作区中的文件或目录。

参数类型必填默认值约束与含义
pathsarray是—(省略)待删除的工作区相对路径列表;maxItems=200, minItems=1

只接受表中业务字段。

请求

json
{
  "arguments": {
    "paths": ["tmp/example.txt"]
  }
}

响应

answer 是 DeletedEntry 数组,每项 deleted 为相对路径,kind 为 file/directory。

json
{
  "answer": [
    {
      "deleted": "tmp/example.txt",
      "kind": "file"
    }
  ],
  "success": true,
  "metadata": {}
}

行为与失败情况

最多 200 路径;根目录与逃逸路径不可删除。任务目录应优先使用 delete_tasks,保留任务状态和日志管理约束。

相关文档 ​

实现依据:axonx/config/default.yaml、axonx/steps/workspace/ 与 axonx/components/service/http/jobs.py。

文件上传与清理 ​

上传以原始二进制请求体发送,不是 multipart/form-data。x-file-name 为必填文件名 header;x-file-directory 可选,指定以 tmp 开头的工作区相对子目录,不能指定工作区任意位置。

bash
curl -s -X POST http://127.0.0.1:1024/files \
  -H "Authorization: Bearer $AXONX_SERVICE_TOKEN" \
  -H 'Content-Type: application/octet-stream' \
  -H 'x-file-name: axonx_example-0.1.0-py3-none-any.whl' \
  -H 'x-file-directory: tmp/plugins' \
  --data-binary @dist/axonx_example-0.1.0-py3-none-any.whl

FileCopy 的响应形状如下,哈希和字节大小必须以真实返回为准:

json
{
  "answer": {
    "path": "tmp/plugins/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/axonx_example-0.1.0-py3-none-any.whl",
    "sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "size": 4096
  },
  "success": true,
  "metadata": {}
}

文件暂存目录按内容 SHA-256 命名,相同内容与文件名上传是幂等的。默认单文件上限为 256 MiB;服务同时检查 Content-Length 和实际流入字节数。非法 Content-Length 为 400,超限为 413;缺失/非法文件名、目录逃逸等为 422,符号链接或不同内容占据目的位置为 409。

消费者 install_plugin、sync_tasks 使用返回的 path。安装还要传 sha256。上传完成不代表插件已安装,也不代表任务快照已应用。消费者会清理暂存制品;未消费时可主动清理:

bash
curl -s -X DELETE 'http://127.0.0.1:1024/files?path=tmp%2Fplugins%2Fyour-digest%2Fyour-wheel.whl' \
  -H "Authorization: Bearer $AXONX_SERVICE_TOKEN"

上例路径为占位,需替换实际 path;cleanup 响应 answer 为 {"path":"返回的路径"}。重复清理已消费的合法路径是无害的;此路由只清理暂存文件,不能删除任意工作区文件。后端路径规则拒绝绝对路径、逃逸路径和 tmp 外的路径。

预览响应分型 ​

kind特有字段消费建议
textcontent、truncated内容截断时不要推断完整文件
markdowncontent、frontmatter、frontmatter_error、truncatedfrontmatter 单独读取,错误单独提示
json / yamlcontent、data、parse_error、truncatedparse_error 非空时不能使用 data 分析
csvcolumns、rows、offset、limit、has_more下一页 offset 加已返回行数
parquetCSV 同类字段,以及 column_schema、row_count、row_group_countschema 提供列类型与 nullable
unsupportedsize接口不提供该格式的预览内容

原始文件字节大小、行分页 offset 与日志字节 offset 是三种不同信息。文本预览没有通用字符分页。Parquet 行数与分组信息来自文件元数据,返回 rows 只是当前窗口。

Agent-native quant research.