818f1412d5 feat(heicode): 客户端错误遥测上报端点(默认关闭)(#24) (#27)
* feat(heicode): 客户端错误遥测上报端点(默认关闭)(#24)

按客户端 winos#23 契约 + 权威 schema 实现,结合 HM 入库逻辑:

- POST /api/heicode/telemetry/events,挂 UserOrV2DeviceAuth(设备配对鉴权)。
- 接收顶层 JSON 数组(非包裹),批量 1-20、<=256KB;校验 body client_id 等于已验签
  设备(X-Heicode-Device-Id),不一致 403;无设备身份拒绝。
- 真实 4xx/5xx 码(400 非数组、413 超限、403 设备、410 关闭),让客户端"4xx 丢弃"
  语义生效;2xx 返回 {accepted:n}。
- 独立表 telemetry_events,与计费完全隔离:不写 consume log、不碰 quota。
- 宽松入库(最大化采集):未知枚举 / 哨兵 app_version(0.0.0-heicode-local)/ 缺字段
  原样入库;schema_version 缺省 1;stack_top/context 存 TEXT(JSON);记 user_id 作
  device 到 account 关联 + 服务端 received_at。
- 默认 HEICODE_TELEMETRY_ENABLED=false 时返回 410(kill switch);隐私政策更新 +
  端点下发形态确认前不开启外发。

测试用客户端仿真夹具:parseTelemetryBatch / toModel 映射与默认 / 拒绝非数组,全过。

Refs #24(上线门槛:隐私政策 §2 如实披露 + 下发形态 + 去重;见工单评论)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(heicode): GET /api/heicode/config 下发 telemetry 配置/kill-switch (#24)

按客户端 #24 拍板:选独立 config 端点(而非塞登录响应),便于 kill switch 在
会话内传导、不依赖重登录。返回 telemetry 块 {enabled, endpoint, max_batch,
flush_interval_sec};enabled 取 HEICODE_TELEMETRY_ENABLED(默认 false)。
未鉴权全局只读(同 capabilities 姿态)。

测试 heicode_config_test.go:enabled 反映 env、endpoint 与摄入路由一致、缺省 false。

Refs #24

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(telemetry): 服务端二次脱敏 stack_top/context + 明确生产门槛 (#24 review)

按 Fasthei 复审意见补隐私门槛:

- 服务端纵深防御脱敏:新增导出 model.RedactText(包装已上线的 redactAuditSecrets,
  #11),在 telemetry 入库前对 stack_top / context 再脱敏一遍(sk-/Bearer/URL
  token/JSON 密钥字段),即便客户端漏脱敏也不会把明文密钥落库。
- 测试 TestTelemetryToModel_RedactsSecrets:stack_top 里的 sk-、context 里的
  Bearer token 被打码,非密钥内容保留。
- 端点默认 HEICODE_TELEMETRY_ENABLED=false,关时 410;隐私政策披露完成前生产
  不得开启外发(见 #24 评论记录产品/法务状态)。

go build / vet 干净;controller 测试通过。

Refs #24

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: chenchen <chenchen@xinghanlab.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 22:16:29 +08:00

Heicode

Heicode 面向多人协作、可追溯交付的软件团队:把需求对齐、实现、验证、发布和持续运营连成一条少断层的链路,并用可编排的智能体角色承接其中可标准化的环节——强调「能复盘、能审计、能按团队规模裁剪」,而不是罗列某一家的工具栈。

下面的目录表仅供工程查阅;不代表对外产品承诺、路线图或你必须采用的集成方式。

本仓 = Heicode Manager(HM)端。 历史上终端/桌面客户端(cc-haha)、官网(website)与 Manager 曾同处一个 monorepo;现已拆分,本仓只保留 Heicode Manager(基于 new-api 的模型网关 + 管理控制台)。客户端(终端 + 桌面)在 heicode-macos-release-dev / heicode-winos-release-dev 独立仓。

这个仓库里有什么(工程布局)

目录 大致含义
heicode/ Heicode Manager:基于 new-api 的模型网关 + 管理控制台。Go(Gin/GORM)后端 + web/default 前端(Bun/Rsbuild/React)。
docs/ 产品共识、实施计划与集成契约(索引见 docs/README.md)。

客户端与官网不在本仓。

产品在解决什么问题

  • 协作范式:把瀑布 / 敏捷下的角色分工落到可复述的闸门与智能体承接边界。
  • 交付可追溯:文档、沟通与变更尽量与版本、发布对齐,便于复盘与合规。
  • 模型与执行分层:HM 提供模型网关与权限 / 计费;云端 agent 由 agent_management(AM)部署,客户端拿到 agent 公网地址后直连 agent 使用。

产品定位与架构共识见 docs/heicode.md,实施计划见 docs/plan.md。

快速启动(开发联调)

Heicode Manager 在 heicode/ 子目录:Go 后端 + web/default 前端。完整构建 / 运行命令与分层规则见 heicode/CLAUDE.md 与 heicode/README.md。

与 Heicode 登录相关的最小路由(以实际代码为准):

  • GET /heicode/oauth/authorize
  • GET /heicode/oauth/session

平台侧能力还包括模型发现(如 GET /v1/models)与 Anthropic Messages 兼容入口等。

集成与对接契约见 docs/integration/(HM↔AM、桌面客户端对接等)。

许可证

heicode/(Heicode Manager,基于 new-api)许可证见 heicode/LICENSE(常见为 AGPLv3)。

S
Description
No description provided
Readme
17 MiB
Languages
Go 98.8%
Python 1.1%