assistant-claw/state-schemas/person.md
Atlas refactor bd0be97630 Refactor: drop Vega framing, promote Atlas to repo root
This repo IS Atlas (总助 Claw / 老板视角项目执行雷达). The earlier
two-profile framing (Atlas + Vega placeholder) was a misread — Vega is
the agent persona answering Multica issues, not the product. Vega has
no relationship to assistant-claw the product.

Changes:
- Move atlas/* to top-level (git mv preserves history)
- Remove empty Vega placeholders prompts/.gitkeep, tools/.gitkeep
- Delete atlas/ wrapper directory (now empty)
- Update path references in INTEGRATION-hermes.md, scripts/mirror-...sh,
  docs/decisions/0001-mirror-nuwa-skill.md
- Rewrite README.md as Atlas-only, remove dual-profile language

After this commit:
- Top-level OpenClaw 8 files (IDENTITY/SOUL/USER/AGENTS/TOOLS/MEMORY/
  BOOTSTRAP/HEARTBEAT + CLAUDE symlink + zh-CN mirrors)
- skills/{6 sub-skills + DESCRIPTION + README}
- mcp-tools/{spec + Python implementation}
- state-schemas/{project, person, customer + README}
- autopilots/{5 atlas-*.yaml}
- client-deck/, docs/decisions/, scripts/

The ~/.hermes/skills/atlas/ destination convention preserved (atlas as
a skill namespace on the operator's machine, distinct from source path).
2026-05-09 17:54:18 +08:00

5.4 KiB
Raw Blame History

State Schema: state/people/<name>.json

Owned by: claw-people-observer (write); read by claw-report-writer.

Hard rule

This schema NEVER contains a verdict. Atlas writes only data; the boss writes any verdict (e.g., 9-Box potential dimension, A/B/C label).

Fields that would imply a verdict (潜力, Topgrading_等级) exist with null defaults and are written by the boss via override only — never by Atlas.

Identifier convention

<canonical_name>.json where canonical_name is the merged identity (after alias resolution). Aliases are stored in state/people/aliases.json.

Examples: 张三.json, lisi.json, Wang_Wu.json

Top-level shape

{
  "name": "张三",                                     // string, canonical identity
  "aliases": ["zhang san", "Z.San"],                  // array<string>
  "internal": true,                                   // bool — true if email domain ∈ company_domains
  "primary_email": "zhangsan@us.com",                 // string

  "产出指标": {                                       // object — pure metrics, no verdicts
    "active_projects": 8,                             // int, projects where person is Responsible AND status=Active
    "completed_30d": 2,                               // int, completed in last 30 days
    "stalled_ratio": 0.375,                           // float, stalled / (active + stalled)
    "avg_response_hours": 27,                         // float, median, only when person is Responsible
    "客户主动催办次数_30d": 4,                         // int
    "computed_at": "2026-05-09T07:30:00Z"
  },

  "行为标签_BARS": [                                  // array<object>, behavior-anchored ratings
    {
      "维度": "主动性",                                // string, BARS dimension
      "锚点": "客户首次催才回应",                      // string, the matched anchor phrase
      "评分": 2,                                       // int 1..5
      "依据邮件": ["msg-abc@..."],                     // array<string>, source email IDs
      "rule_ref": "BARS-proactivity-3",                // string, which rule produced this tag
      "asserted_at": "2026-05-09T07:30:00Z"
    }
  ],

  "关键事件_CCAR_30d": [                              // array<object>, critical incidents
    {
      "date": "2026-04-22",
      "事件": "PRJ-001 客户投诉,未升级",
      "性质": "负向",                                  // enum: 正向 | 负向
      "source_email_ids": ["msg-xyz@..."],
      "rule_ref": "R-CCAR-escalation-missed"
    }
  ],

  "网络中心度_ONA": {                                 // object, refreshed weekly
    "信息中介度": 0.42,                                // float [0,1], betweenness centrality
    "孤立指数": 0.18,                                  // float [0,1], 1 / unique_correspondents (normalized)
    "解读": "中等枢纽,未被孤立",                      // string, machine-generated brief
    "computed_at": "2026-05-06T08:00:00Z"
  },

  "9_box_自动估": {                                   // object
    "performance": "中下",                             // enum: 高 | 中 | 中下 | 低 — auto-estimated
    "潜力": null,                                       // enum or null — NEVER auto-set; boss-only
    "建议象限": "Solid Performer 或 Underperformer看潜力定", // string, prose suggestion
    "boss_to_confirm": true                             // bool, true until boss writes 潜力
  },

  "Topgrading_等级": null,                            // enum: A | B+ | B | B- | C | null — boss-only

  "data_sparse": false,                               // bool, true when person has < 3 active projects

  "_meta": {
    "created_at": "2025-08-12T10:00:00Z",
    "updated_at": "2026-05-09T07:30:12Z",
    "atlas_version": "v0.4",
    "merge_history": []                                // append when aliases get merged in
  }
}

What Atlas IS allowed to write

  • Activity metrics (项目数 / 卡点率 / 响应时长 etc.)
  • Behavior tags from boss-confirmed BARS anchors
  • Critical incidents matched by rules
  • ONA centrality
  • 9-Box performance dimension (auto-estimate, with boss_to_confirm: true)

What Atlas is NEVER allowed to write

  • 9_box_自动估.潜力 — boss-only
  • Topgrading_等级 — boss-only
  • Any field that says "应该" / "建议解雇" / "不胜任" — language guard
  • BARS tags using anchors not in boss_skill.md > Decision Heuristics

Boss override format

Boss replies to Brief or weekly rollup:

OVERRIDE PEOPLE 张三 9_box_自动估.潜力="高"
OVERRIDE PEOPLE 张三 Topgrading_等级="B+"
OVERRIDE PEOPLE 张三 行为标签 retire BARS-proactivity-3 reason="不公平"

Logged to state/audit/boss_overrides.csv. Retired BARS tags increment a counter in the rule's audit; if any rule is retired ≥ 2 times, it surfaces in next quarterly distillation review.

Display rule for claw-report-writer

When rendering people sections in Brief / Rollup:

  • Always lead with metric ("张三 项目密度 8, 卡点率 37.5%")
  • Never lead with a verdict ("张三表现下滑")
  • BARS tags shown only with their anchor + email ID hint
  • Topgrading_等级 shown only if boss has filled it
  • ONA centrality used as supplementary context, not headline

Privacy

  • This file lives inside the client's network. Never leaves.
  • Right-to-delete: a single CLI command (atlas-people-purge --name "张三") wipes all related state and writes a tombstone to audit/.