DWF platform command-line tool for AI agents
Project description
DWF-CLI
DWF(Digital Workflow)平台命令行工具,通过 REST API 与 DWF 后端交互,为 AI 智能体和开发人员提供数据模型查询、数据操作、认证管理等功能。
功能
- 用户认证 — 登录/登出/状态查询(AES 加密密码传输)
- 数据模型管理 — 查询/创建/更新/删除实体类、关联类、外部实体类及其属性
- 数据操作 — 对象数据的增删改查(CRUD),支持
--if-not-exists幂等创建 - 高级查询 — 对象列表支持
refs(关联字段拉平)和options(嵌套子查询) - Excel 快速建表 — 上传 Excel 一键完成建表和数据导入
- 功能模型 — 应用管理、全局操作列表
- 表单模型 — 视图的查询/创建/更新/删除
- Schema 自省 —
dwf-cli schema查看命令参数定义,--validate校验输入 - 配置管理 — 服务器地址、AES 密钥等配置项管理
快速开始
环境要求
- Python 3.12+
- uv 包管理器
安装
# 安装(推荐 uv tool)
uv tool install dwf-cli
# 或从源码安装
git clone https://gitee.com/tsinghua-nercbds/dwf-cli.git
cd dwf-cli
uv tool install .
配置与登录
# 配置 DWF 服务器地址
dwf-cli config set server http://your-dwf-server:6060
# 登录(输入原始密码,CLI 自动加密)
dwf-cli auth login
# 查看登录状态
dwf-cli auth status
使用示例
# 查询实体类列表
dwf-cli datamodel list
dwf-cli datamodel list -p 1 -s 10
# 查询关联类 / 外部实体类
dwf-cli datamodel list -t r
dwf-cli datamodel list -t x
# 包含系统类
dwf-cli datamodel list --system
# 查看某个类的属性
dwf-cli datamodel show User
dwf-cli datamodel show Animate -f json
# 创建实体类(支持 --type entity|relation|external)
dwf-cli datamodel create --data '[{"className":"TestClass","displayName":"测试类"}]'
dwf-cli datamodel create -t relation --data '[{"className":"UserAsset","leftClass":"User","rightClass":"Asset"}]'
dwf-cli datamodel create -t external --external-mode sql --file ext.json
# 更新类信息
dwf-cli datamodel update --data '{"id":"ABC123","displayName":"新名称"}'
dwf-cli datamodel update -t external --data '{"id":"EXT123","displayName":"新名称"}'
# 属性管理
dwf-cli datamodel attribute list --keyword name
dwf-cli datamodel attribute create --data '[{"attributeName":"phone","valueType":"String"}]'
dwf-cli datamodel attribute bind -c User --data '[{"attributeName":"phone"}]'
# 对象数据操作
dwf-cli datamodel object list -c User -p 0
dwf-cli datamodel object get <oid> -c User
dwf-cli datamodel object create -c User --data '{"name":"test"}'
dwf-cli datamodel object create -c User --data '{"name":"test"}' --if-not-exists
# 对象高级查询(refs 关联字段拉平)
dwf-cli datamodel object list -c Animate --file query.json
# Excel 一键建表
dwf-cli datamodel excel-quickstart template.xlsx
# Schema 自省
dwf-cli schema --all
dwf-cli schema datamodel create
# 功能模型
dwf-cli funcmodel app list
dwf-cli funcmodel operations list
# 表单模型
dwf-cli formmodel view list -c User
dwf-cli formmodel view create -c User --name myView
# 配置管理
dwf-cli config list
dwf-cli config get server
dwf-cli config set aes_key "your-key"
文档
完整文档使用 MkDocs + Material 主题构建:
# 本地预览(默认不含 API 参考文档,构建更快)
uv run mkdocs serve
# 包含 API 参考文档
DWF_INCLUDE_API_DOCS=1 uv run mkdocs serve
# 重新生成 API 文档(从 OpenAPI JSON)
uv run python scripts/openapi_to_md.py
文档站点自动部署至 Tomcat(通过 Jenkinsfile CI)。
架构
项目采用三层分离架构:
cli/ → api/ → core/
cli/— CLI 层:Typer 命令定义、参数解析、Rich 表格输出api/— API 层:DWF 后端 REST API 的 Python SDK(httpx)core/— 基础设施层:配置管理、AES 加密、错误定义、输出格式化
依赖方向严格单向:cli → api → core,禁止反向依赖。
详细架构设计见 ARCHITECTURE.md。
项目结构
src/dwf_cli/
├── __init__.py # 入口点 (dwf-cli = "dwf_cli:app")
├── __main__.py # python -m dwf_cli
├── api/ # DWF 后端 REST SDK
│ ├── client.py # HTTP 客户端(baseURL、token 注入、错误映射)
│ ├── auth.py # 认证接口
│ ├── datamodel.py # 数据模型 + 对象 CRUD 接口
│ ├── funcmodel.py # 功能模型接口
│ └── formmodel.py # 表单模型接口
├── cli/ # Typer 命令
│ ├── __init__.py # 命令注册 + 上下文初始化
│ ├── _common.py # 共享工具(ContextObj、get_client)
│ ├── auth.py # dwf-cli auth {login, logout, status}
│ ├── datamodel.py # dwf-cli datamodel {list, show, object CRUD}
│ ├── funcmodel.py # dwf-cli funcmodel {app, operations}
│ ├── formmodel.py # dwf-cli formmodel {view}
│ └── config.py # dwf-cli config {get, set, list}
└── core/ # 基础设施
├── config.py # 配置管理(JSON 持久化)
├── crypto.py # AES 密码加密
├── errors.py # 异常层级 + 退出码
└── output.py # Rich 表格/JSON 输出
开发
添加新命令
只需 3 步:
- 新建
src/dwf_cli/api/xxx.py— 定义 API 调用函数 - 新建
src/dwf_cli/cli/xxx.py— 定义 Typer 命令 - 编辑
src/dwf_cli/cli/__init__.py— 添加app.add_typer()
开发命令
uv run dwf-cli --help # 开发时运行 CLI
uv run pytest -v # 运行测试
uv run ruff check . # 代码检查
uv run ruff format . # 代码格式化
uv add <package> # 添加依赖
安装后直接使用:
dwf-cli --help # 已安装环境直接调用
文档命令
uv run mkdocs serve # 本地预览文档
DWF_INCLUDE_API_DOCS=1 uv run mkdocs serve # 含 API 参考
uv run python scripts/openapi_to_md.py # 重新生成 API 文档
技术栈
- Typer — CLI 框架
- httpx — HTTP 客户端
- Rich — 终端美化输出
- pycryptodome — AES 密码加密
- uv — 包管理器
- pytest — 测试框架
- Ruff — 代码检查与格式化
AI Agent 集成
DWF-CLI 可被 AI 编程工具(opencode、Claude Code 等)通过内置 bash 工具直接调用。
在你的项目 AGENTS.md(opencode)或 CLAUDE.md(Claude Code)中添加以下内容:
## DWF CLI
Use `dwf-cli` to interact with the DWF platform.
- Run `dwf-cli schema --all` to get full command + parameter reference as JSON
- Run `dwf-cli <command> --help` for specific command usage
- Always use `--format json` for output parsing
- Use `--data` for inline JSON, `--file` for file input
- Use `--dry-run` to preview before executing
- Setup: `dwf-cli config set server <url>` then `dwf-cli auth login -u <user> -p <pass>`
License
Apache-2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dwf_cli-0.1.1.tar.gz.
File metadata
- Download URL: dwf_cli-0.1.1.tar.gz
- Upload date:
- Size: 145.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.5 {"installer":{"name":"uv","version":"0.10.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
36ef79abe443f37fa0755608dd022caba5840402d34a88ed599075b98982fb04
|
|
| MD5 |
a53a050c06ac94743546fd3779700cdc
|
|
| BLAKE2b-256 |
16d241b60e5b4c8d5f3635c3b6d0b1852b68e58f55e6fd77d179b7cba10a85ce
|
File details
Details for the file dwf_cli-0.1.1-py3-none-any.whl.
File metadata
- Download URL: dwf_cli-0.1.1-py3-none-any.whl
- Upload date:
- Size: 72.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.5 {"installer":{"name":"uv","version":"0.10.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b07e68dd492919109a59a90b372fb828b65d41438be4e93f930401495f6e556c
|
|
| MD5 |
7e5ef9360152d4d17680ea9c530595c8
|
|
| BLAKE2b-256 |
f13b01a16f5a7297e11fc0ed024b934c8f0ce911b52ae2dcbfa8c11b0c7937b1
|