North Coder
HTTP API

登录态 Token

控制面 REST 端点——向常驻后端内存注入用户登录态 token(RFC-0091)。

宿主程序(小北统一产品 shell 等)把当前用户的登录态 token 注入 North Coder 常驻后端的进程内存。后端在会话 Agent 调起工具 CLI 时,把每个条目 name=value 作为环境变量注入子进程,使依赖登录态的 CLI 能带用户身份运行。

后端是纯透传管道:不验签、不解析、不管过期;token 只存进程内存,绝不落盘,重启即清空。ncoder login / token 命令就是调用这些端点;宿主程序不便用 CLI 时可直接调用。命令侧说明见 CLI — 登录态 Token

所有端点挂在 /api 下,走共享认证中间件(loopback 127.0.0.1 / ::1 受信任,非 loopback 需 server token)。原始 token 值只出现在 PUT 请求体中——绝不进入 URL、响应或日志。

PUT /api/runtime-tokens/{name}

写入或覆盖(幂等)一个具名 token。{name} 必须是合法环境变量标识符([A-Za-z_][A-Za-z0-9_]*),它就是注入到 Agent 工具 CLI 的环境变量名。NORTH_AUTH_TOKEN 是默认名,对齐小北生态约定。

请求体:

{ "value": "<原始 token>" }

200 响应(只回脱敏视图,绝不回显原值):

{
  "name": "NORTH_AUTH_TOKEN",
  "masked": "********abcd",
  "updated_at": 1749879029.123
}

updated_at 是 Unix 纪元秒(浮点)。错误:400 {"detail":{"code":"invalid_runtime_token_name", ...}}——名称非法。

# 用 jq 构造请求体,安全处理 token 中的特殊字符
jq -n --arg v "$NORTH_AUTH_TOKEN" '{value: $v}' \
  | curl -X PUT http://127.0.0.1:8848/api/runtime-tokens/NORTH_AUTH_TOKEN \
      -H 'Content-Type: application/json' --data-binary @-

GET /api/runtime-tokens

列出所有条目,仅脱敏值(名称 + 脱敏预览 + updated_at),绝不返回原值。脱敏预览为固定 8 个 * 加末 4 位(长度 ≤ 4 的 token 全打码)。

200 响应:

[
  { "name": "NORTH_AUTH_TOKEN", "masked": "********abcd", "updated_at": 1749879029.123 }
]
curl http://127.0.0.1:8848/api/runtime-tokens

DELETE /api/runtime-tokens/{name}

删除具名 token。存在并删除 → 204;不存在 → 404;名称非法 → 400

curl -X DELETE http://127.0.0.1:8848/api/runtime-tokens/NORTH_AUTH_TOKEN

错误:404 {"detail":{"code":"runtime_token_not_found", ...}}

注入语义

  • 环境每次工具运行重建——PUT下一次 Agent 运行生效,进行中的运行不受影响;DELETE 后旧 token 立即不再注入。
  • 作用域仅限 Agent 工具 CLI——用户交互终端(PTY)与 MCP server 子进程不注入
  • 后端每次(重)启动后表都是空的。宿主程序须在每次(重)连接、token 刷新/过期时重新 PUT(幂等覆盖)。

完整设计见 RFC-0091;shell 对接契约见仓库内 docs/integrations/ncoder-login-token-injection.md

本页内容