内置环境变量
了解 AI 对话中自动注入的系统内置环境变量,用于获取会话上下文信息
内置环境变量
除了用户自定义的环境变量外,系统会在 AI 对话启动时注入一组内置环境变量,用于提供当前会话的上下文信息。用户身份、工作空间 ID 和 IM 用户 ID 等用户上下文变量会提供给 Agent 运行环境,方便 Skill 和命令行工具读取。
变量列表
| 变量名 | 说明 | 示例值 |
|---|---|---|
JAVIS_WORKSPACE_ID | 当前工作空间 ID | cm5abc123def456 |
JAVIS_WORKSPACE_NAME | 当前工作空间名称 | 我的项目 |
JAVIS_LOGIN_USER_ID | 当前登录用户 ID | a1b2c3d4-e5f6-7890-abcd-ef1234567890 |
JAVIS_LOGIN_USERNAME | 当前登录用户名 | 张三 |
JAVIS_LOGIN_USER_EMAIL | 当前登录用户邮箱 | zhangsan@example.com |
JAVIS_DEPARTMENT_ID | 当前用户在组织内匹配到的部门 ID | 6f4b2d9f-1d26-4e0e-9b41-2b6f1f3a9a21 |
JAVIS_DEPARTMENT_CODE | 当前用户部门的业务编码,可由用户维护为空间外部系统的唯一部门标识 | dept-tech-001 |
JAVIS_FRONTEND_BASE_URL | 前端服务基础 URL | https://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_ID | IM 会话 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-Username | JAVIS_LOGIN_USERNAME |
Javis-Login-User-Email | JAVIS_LOGIN_USER_EMAIL |
Javis-Login-User-Id | JAVIS_LOGIN_USER_ID |
Javis-Workspace-Id | JAVIS_WORKSPACE_ID |
Javis-Department-Id | JAVIS_DEPARTMENT_ID |
Javis-Department-Code | JAVIS_DEPARTMENT_CODE |
Javis-Im-Dingtalk-User-Id | JAVIS_IM_DINGTALK_USER_ID |
Javis-Im-Feishu-User-Id | JAVIS_IM_FEISHU_USER_ID |
Javis-Im-Wecom-User-Id | JAVIS_IM_WECOM_USER_ID |
其中 Javis-Department-Id 是 Knodo 内部部门 ID,Javis-Department-Code 是用户维护的部门业务编码,网关可按需映射为下游系统需要的 department_id 和 department_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_TOKEN 和 JAVIS_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 执行环境中同时可用
详细的自定义环境变量管理请参考:环境变量管理