内置环境变量

了解 AI 对话中自动注入的系统内置环境变量,用于获取会话上下文信息

内置环境变量

除了用户自定义的环境变量外,系统会在 AI 对话启动时注入一组内置环境变量,用于提供当前会话的上下文信息。用户身份、工作空间 ID 和 IM 用户 ID 等用户上下文变量会提供给 Agent 运行环境,方便 Skill 和命令行工具读取。

变量列表

变量名说明示例值
JAVIS_WORKSPACE_ID当前工作空间 IDcm5abc123def456
JAVIS_WORKSPACE_NAME当前工作空间名称我的项目
JAVIS_LOGIN_USER_ID当前登录用户 IDa1b2c3d4-e5f6-7890-abcd-ef1234567890
JAVIS_LOGIN_USERNAME当前登录用户名张三
JAVIS_LOGIN_USER_EMAIL当前登录用户邮箱zhangsan@example.com
JAVIS_DEPARTMENT_ID当前用户在组织内匹配到的部门 ID6f4b2d9f-1d26-4e0e-9b41-2b6f1f3a9a21
JAVIS_DEPARTMENT_CODE当前用户部门的业务编码,可由用户维护为空间外部系统的唯一部门标识dept-tech-001
JAVIS_FRONTEND_BASE_URL前端服务基础 URLhttps://javis.example.com
JAVIS_AUTH_TOKEN认证令牌(用于调用后端 API)jvs_xxx...
JAVIS_PLUGIN_BASE_ROOT插件根目录(仅沙箱模式)/plugins
JAVIS_CONVERSATION_ID当前对话的 Knodo 平台会话 ID(非 IM 平台的会话 ID)cm5xyz789ghi012
JAVIS_IM_SOURCE消息来源钉钉机器人:dingtalk、飞书机器人:feishu、企微机器人:wecom、web 页面(含 IM 工作台):无
JAVIS_IM_CHAT_IDIM 会话 ID,群聊场景下为群会话 ID,单聊场景下为单聊会话 ID(仅 IM 场景)cidXXXXXXXX==
JAVIS_IM_BOT_APP_KEY来源机器人的 App Key(仅钉钉/飞书 IM 场景,钉钉为 AppKey,飞书为 App ID)dingfrdv5ykoccbjz5uc
JAVIS_IM_DINGTALK_USER_ID钉钉发送者的用户 ID(仅钉钉 IM 场景)382153101280125
JAVIS_IM_FEISHU_USER_ID飞书发送者的用户 ID(仅飞书 IM 场景)ou_xxxxxxx
JAVIS_IM_WECOM_USER_ID企微发送者的用户 ID(仅企微 IM 场景)WangXiaoMing

注意:内置环境变量使用 JAVIS_ 前缀,该前缀为系统保留,用户自定义变量不允许使用此前缀。

模型请求 Header 透传

默认情况下,系统只会把 JAVIS_* 内置变量注入到 Agent 运行环境,不会在 Claude Code 或 Codex 访问模型网关时额外附加用户上下文 HTTP Header。

管理员可以在渠道配置或系统配置中开启"透传用户上下文 Header"。开启后,系统会把部分内置环境变量的值映射为模型请求 Header,而不是直接把 JAVIS_* 变量名作为 Header 名发送:

Header 名来源环境变量
Javis-Login-UsernameJAVIS_LOGIN_USERNAME
Javis-Login-User-EmailJAVIS_LOGIN_USER_EMAIL
Javis-Login-User-IdJAVIS_LOGIN_USER_ID
Javis-Workspace-IdJAVIS_WORKSPACE_ID
Javis-Department-IdJAVIS_DEPARTMENT_ID
Javis-Department-CodeJAVIS_DEPARTMENT_CODE
Javis-Im-Dingtalk-User-IdJAVIS_IM_DINGTALK_USER_ID
Javis-Im-Feishu-User-IdJAVIS_IM_FEISHU_USER_ID
Javis-Im-Wecom-User-IdJAVIS_IM_WECOM_USER_ID

其中 Javis-Department-Id 是 Knodo 内部部门 ID,Javis-Department-Code 是用户维护的部门业务编码,网关可按需映射为下游系统需要的 department_iddepartment_code

该开关只影响 Agent 调用模型网关时的请求 Header,不影响 JAVIS_* 内置环境变量注入到 Agent 运行环境。空值不会透传;包含控制字符的值会被忽略,非 ASCII 值会进行 URL 编码后再放入 Header。

使用示例

Bash 脚本

#!/bin/bash echo "当前工作空间: $JAVIS_WORKSPACE_NAME" echo "当前用户: $JAVIS_LOGIN_USERNAME"

Python

import os workspace_name = os.environ.get('JAVIS_WORKSPACE_NAME', '') user_email = os.environ.get('JAVIS_LOGIN_USER_EMAIL', '') print(f"工作空间: {workspace_name}, 用户邮箱: {user_email}")

调用后端 API

使用 JAVIS_AUTH_TOKENJAVIS_FRONTEND_BASE_URL 可以调用后端 API:

curl -X GET "${JAVIS_FRONTEND_BASE_URL}/api/v1/workspaces/${JAVIS_WORKSPACE_ID}" \ -H "Authorization: Bearer ${JAVIS_AUTH_TOKEN}"

安全提示JAVIS_AUTH_TOKEN 包含用户认证信息,请勿在日志中输出或分享给第三方。

与自定义环境变量的关系

  • 内置环境变量由系统自动注入,无需手动配置
  • 用户自定义环境变量不允许使用 JAVIS_ 等系统保留前缀,因此不会与内置变量冲突
  • 两者在 Skill 执行环境中同时可用

详细的自定义环境变量管理请参考:环境变量管理

相关文档