唯杰地图 logo唯杰地图
VJMAP
EN

工作区

更新于 2026-04-25约 7 分钟
.md

分类代号:C.7 本章共 5 个接口

如果还没读过,建议先看 入门 · 工作区,了解 vjmap 的命名空间模型。

工作区用来把地图 / KV / 全文搜索按"项目"隔开。默认所有地图都在"匿名工作区";创建命名工作区后,URL 前缀由 /api/v1/map/... 变成 /api/v1/workspace/{name}/...。


快速索引

序号 SDK 方法 URL
48 get_workspaces / getWorkspaces GET /api/v1/service/getWorkspace
49 workspace_create / workspaceCreate POST /api/v1/service/workspaceCreate
50 workspace_modify / workspaceModify POST /api/v1/service/workspaceModify
51 workspace_delete / workspaceDelete DELETE /api/v1/service/workspaceDelete/{name}
52 workspace_status / workspaceStatus GET /api/v1/service/workspaceStatus

48 · 列出工作区 getWorkspace

URL:GET /api/v1/service/getWorkspace

  • 非 root 账户仅看到 自己创建的 + isPublic=true 的工作区
  • root(AuthorityId:root)账户看全部

响应(实采:创建 1 个后)

[
  {
    "name": "nb_ws_1776831982",
    "alias": "nb 临时测试",
    "isPublic": false,
    "workDir": "nb_ws_1776831982",
    "idleCloseTime": 0,
    "disableFullSearch": false,
    "createTime": "2026-04-22 12:26:22"
  }
]

一个工作区都没有时返回 null(而不是空数组 [])。

Python

ws_list = svc.get_workspaces() or []
for w in ws_list:
    print(w["name"], w["alias"])

Node.js

const ws = (await svc.getWorkspaces()) || [];
for (const w of ws) console.log(w.name, w.alias);

49 · 创建工作区 workspaceCreate

URL:POST /api/v1/service/workspaceCreate

请求 body

字段 类型 说明
name string 唯一工作区名(会出现在 URL 路径里,注意字符集)
alias string 显示名,任意字符
workDir string 工作区数据目录名;空串表示与 name 一致
isPublic bool 是否对所有登录用户可见
disableFullSearch bool 是否禁用该工作区的全文搜索索引

响应(实采)

{
  "data": "nb_ws_1776831982",
  "status": "ok"
}

Python

svc.workspace_create(
    name="myproj",
    alias="我的项目",
    is_public=False,
)

Node.js

await svc.workspaceCreate({ name: 'myproj', alias: '我的项目' });

50 · 修改工作区 workspaceModify

URL:POST /api/v1/service/workspaceModify

body 必须是 getWorkspaces() 返回的完整 obj(包含 createTime 在内所有字段)。常见用法:先拿再改再 POST。

响应(实采)

{
  "name": "nb_ws_1776831982",
  "status": "success"
}

Python

ws_list = svc.get_workspaces() or []
me = next(w for w in ws_list if w["name"] == "myproj")
me["alias"] = "新别名"
me["disableFullSearch"] = True
svc.workspace_modify(me)

Node.js

const ws = (await svc.getWorkspaces()) || [];
const me = ws.find(w => w.name === 'myproj');
me.alias = '新别名';
await svc.workspaceModify(me);

51 · 删除工作区 workspaceDelete

URL:DELETE /api/v1/service/workspaceDelete/{name}

响应(实采)

{
  "name": "nb_ws_1776831982",
  "status": "success"
}

⚠️ 删除不会自动清理工作区内的地图数据;如需彻底清除,先在该工作区内删完地图再删工作区。SDK 切换到目标工作区调 delete_map / delete_map_file 即可(见 01-map-management)。

Python

svc.workspace_delete("myproj")

Node.js

await svc.workspaceDelete('myproj');

52 · 工作区状态 workspaceStatus

URL:GET /api/v1/service/workspaceStatus

查询当前正在服务中的工作区(已启用 fork 进程 / 加载了地图)。若无工作区处于活跃状态,返回 null。

响应(实采:无活跃工作区)

null

活跃时形如:

[
  { "name": "myproj", "status": "running", "pid": 12345, "memory": 128_000_000 }
]

在 SDK 中切换工作区

SDK 构造后,可以用 svc.use_workspace("myproj") 把后续所有 map/... / cmd/... 调用都前缀到 /workspace/myproj/:

svc = vjmap.Vjmap(API, TOKEN)
svc.use_workspace("myproj")
svc.list_maps()            # -> /api/v1/workspace/myproj/cmd/listmaps/...
svc.use_workspace(None)    # 切回匿名

Node.js 同名方法 svc.useWorkspace("myproj")。


这篇文档有帮助吗?