Agent

独立进程,默认端口 :8889config/{env}/agent.yamlport)。

Session 默认存在进程内存session_store: memory)。main.go 即使绑定了 Redis Provider,也不会自动用 Redis 存对话。多实例共享时在 agent.yamlsession_store: redis,并保证 Redis 可连;Ping 失败会打 Warn 并回退内存,避免 POST /sessions 变成 {"error":"internal"}

DeepSeek

在项目根 .env 中设置(该文件已 gitignore):

APP_ENV=development
DEEPSEEK_API_KEY=你的key

config/development/llm.yaml 使用 OpenAI 兼容接口:https://api.deepseek.com/v1,模型 deepseek-chat

每次 Chat 会把请求体和响应体打到 Debug 日志(log.leveldebug/trace 时可见),不记录 Authorization 和 API Key。development 默认 log.level: trace,rotate 文件在应用 log 目录。

启动与演示

./hade agent start

启动后访问 http://127.0.0.1:8889/ 可打开内置的 Agent Console。页面不需要单独安装或构建前端依赖,已经随 Go 二进制一起编译。

config/{env}/agent.yaml 中的 console_enabled 控制调试台路由,默认开启:

console_enabled: true

设置为 false 后,//agent-ui.css/agent-ui.jsGET/PUT /config/tools 均不再注册;Session 与 Messages 业务 API 不受影响。

Console 支持:

  • 在运行时切换 OpenAI 兼容的 API Base URL、模型和 API Token;
  • 新建、恢复当前浏览器标签页中的 Session,并进行多轮对话;
  • 实时展示 thoughtactionobservationfinalerror SSE 事件;
  • 查看 Agent 当前注册的工具,以及中止正在执行的请求。

页面提交的模型配置仅影响当前 Agent 进程。Token 只保存在服务端内存中,查询接口不会回传原文,浏览器也不会把它写入 Web Storage。进程重启后仍以 config/{env}/llm.yaml 和环境变量为准。

调试接口当前不带身份认证。包含 Token 的场景建议用 --address 127.0.0.1:8889 只监听本机;如果需要开放到局域网或公网,应先在上游增加 HTTPS 与访问控制。

对应的调试接口为:

GET  /config     # 返回 base_url、model、api_key_configured
PUT  /config     # 热更新;省略 api_key 保留旧值,传空字符串清空
GET  /tools      # 返回当前注册的工具定义

需要本机 database.default 可连(与 /demo/orm 相同)。首次调用 create_user 会 AutoMigrate users 表。

curl -s -X POST http://127.0.0.1:8889/sessions
curl -N -X POST http://127.0.0.1:8889/sessions/<id>/messages \
  -H 'Content-Type: application/json' \
  -d '{"message":"创建一个名叫 foo、邮箱 foo@gmail.com、25 岁的用户,然后用返回的 id 再查一次。"}'

SSE 中应出现 create_user / get_useraction 与 JSON observation,并以 final 结束。

Last Updated:
Contributors: jianfengye