Local-first · Human-accountable · Multi-agent

Case Dojo
项目架构设计

一个以人类判断为门槛、以本地 Codex / Claude subscription 为推理引擎、以 Project Skills 和证据锚点为约束的股权税务案例训练系统。

Localhost runtime Codex + Claude 10 synthetic cases 4 specialist agents Strict validation
HUMANPractitioner提问、发现事实、提交 Human Plan,并对最终判断负责。
EXPERIENCEBrowser Dojo管理案例、访谈、门槛、复盘、Markdown 和 HTML 结果。
LOCAL RUNTIMENode Orchestrator仅监听 127.0.0.1,连接本机 CLI 与 subscription session。
INTELLIGENCESkills + Agents角色分工、来源约束、对抗审阅和严格产出契约。
01 / SYSTEM LAYERS

六层架构,各自承担一种责任

界面不持有模型凭据,模型不直接决定人类方案,subagent 不写共享文件。每一层都有明确边界。

LAYER 01体验层
src/main.jssrc/styles.csscase-layout.csslocalStorage
案例浏览、Discovery、Human Plan、复盘与 HTML summary。
LAYER 02API 编排层
server/index.mjsprompts.mjscases.mjs
验证请求、加载 packet、组装 prompt、输出 NDJSON stream。
LAYER 03Provider 层
codex execclaude -psession resumeauth probe
复用本机已登录 subscription;不把 token 暴露给浏览器。
LAYER 04能力层
Case Dojo Skill4 specialist agentsCLAUDE.mdAGENTS.md
定义工作流、角色、Human-first gate 和治理边界。
LAYER 05证据与案例层
cases/data/anchors/public/private split
把模拟事实、市场证据、primary authority 和未知项分开。
LAYER 06产物与验证层
runs/deliverables/validate_run.py
保留可追溯记录,并用确定性 validator 结束每次训练。
02 / DUAL PROVIDERS

同一个 Dojo,两套本地推理引擎

Provider 可切换,但案例、Human Plan gate、数据契约和 validation 不随模型变化。

OPENAI LOCAL AGENT
Codex
codex exec --json --sandbox workspace-write
  • 复用 ChatGPT subscription 登录
  • 原生读取 AGENTS.md 与 `.agents/skills/`
  • 专业角色定义在 `.codex/agents/`
  • 通过 thread id 续接 app session

统一案例
统一门槛
统一输出

ANTHROPIC LOCAL AGENT
Claude Code
claude -p --output-format stream-json
  • 复用 Claude subscription 登录
  • 读取根级 CLAUDE.md 和 `/case-dojo`
  • 专业角色定义在 `.claude/agents/`
  • 支持 Agent 工具与 session resume
03 / SPECIALIST AGENTS

四个角色,主线程统一落笔

Agents 负责独立思考和结构化返回;Dojo Master 是共享 run 文件的唯一写入者,避免并行覆盖与来源混乱。

Case Architect案例架构师

构建 public/private packet,绑定 authority 与 market anchors,定义 disclosure triggers、difficulty 和 privacy。

READ-ONLY RETURN
Client Actor模拟客户

保持同一会话,只回答被问到的内容;不教练、不泄露 answer key,不输出 workflow 元说明。

PERSISTENT DISCOVERY
Equity Planner独立同行专家

在人类提交计划后,独立生成 issue map、替代路径、计算需求、时序和 reversal conditions。

POST-GATE ONLY
Red-team Reviewer对抗审阅者

挑战 discovery、技术依据、痛点证据、隐私、沟通、客户价值和内容发布边界。

INDEPENDENT FIRST PASS
04 / HUMAN-FIRST WORKFLOW

答案被锁在人的判断之后

这不是“让 AI 先给答案再学习”。训练价值来自先发现、先排序、先承担判断,再接受独立挑战。

STATE 01Case Ready

选择 synthetic case,加载公开事实,private packet 留在 server。

STATE 02Discovery

Client Actor 逐步披露,完整记录问答和未发现事实。

STATE 03Human Plan

Practitioner 写 material facts、优先级、路径、时序和未知项。

STATE 04Peer + Red Team

两个独立 first pass,对照而不是替人补写方案。

STATE 05Debrief

评分、misses、reversal conditions、repeat drill 与内容角度。

STATE 06Validated Run

三份 deliverables、完整记录和 strict validation。

Human-first Gate

Practice mode 下,只有当 `human-plan.md` 是真实尝试且 practitioner 明确提交后,planner analysis 才能进入系统。

SUBMIT PLAN → unlock
05 / TRUST BOUNDARY

公开信息与私有状态严格分离

浏览器只获得训练所需公开数据;隐藏事实用于 Client Actor 的受控披露,不进入初始案例页面。

Browser / Public Zone VISIBLE

case-public.json:persona、opening concern、topics
Practitioner questions 与可见 transcript
Human Plan、review、Markdown visualization
不包含 OAuth token 或 subscription credential
LOCAL API BOUNDARY

Server / Private Zone CONTROLLED

_private/case-private.json:hidden facts 与 answer key
Disclosure map 与 client-session state
本机 Codex / Claude 登录与 session id
Primary authority verification 与 run writes
PRIVACY

不保存 raw PII

姓名、SSN、账号、邮箱、电话、完整税表和未脱敏 employer documents 不进入仓库。

PROVENANCE

来源留在 source artifacts

UI 可以隐藏 FACT / ASSUMPTION 等标签,但 JSON、anchor log 与正式分析仍保留来源类型。

AUTHORITY

技术主张需要一手来源

无法用当前 primary authority 验证的结论标记为 VERIFY_WITH_PRIMARY_SOURCE。

06 / DATA & OUTPUT CONTRACT

目录本身就是系统契约

跨 provider 共享的不是模型记忆,而是仓库中的 case packets、anchors、templates、run files 和 validator。

equity-case-dojo/
├── src/                         # Browser UI
├── server/                      # Local orchestration
├── .agents/skills/case-dojo/    # Canonical workflow
├── .codex/agents/               # Codex roles
├── .claude/skills/case-dojo/    # Claude-native skill
├── .claude/agents/              # Claude roles
├── cases/
│   ├── catalog.json
│   └── <case>/
│       ├── case-public.json
│       ├── _private/case-private.json
│       └── anchor-log.md
├── data/anchors/
├── examples/demo-rsu-ca/
├── runs/<case-id>/
├── AGENTS.md
└── CLAUDE.md
01
run-state.json阶段、gate 与 validation 状态
02
transcript.md + human-plan.md人的发现过程与提交前判断
03
peer-analysis.md + red-team.md两个独立的 post-gate 视角
04
pain-points.json + debrief.md证据阶段、训练评分与改进路径
05
三份 deliverablesCase Memo、Discovery Questions、External Content
validate_run.py --strict确定性完成条件,不靠模型自我声明
07 / REQUEST SEQUENCE

一次 Discovery turn 如何穿过系统

浏览器发送问题,server 注入 synthetic packet 与 transcript,provider 返回 NDJSON,UI 只显示过滤后的客户对白。

Practitioner
Browser UI
Local Server
Provider CLI
Client Actor
提交具体 discovery question →
POST /api/agent · mode=discovery →
加载 public/private packet + 清理 transcript + 组装 dialogue-only contract →
Codex exec / Claude -p → skill-aware role execution
← NDJSON text / tool / done events
← CLIENT ACTOR · CODEX / CLAUDE · 客户对白
08 / DEPLOYMENT MODEL

静态页面可以上云,推理必须留在本机

云端部署无法自动访问用户电脑里的 Codex / Claude credential,所以 production-like 完整能力仍依赖 localhost runtime。

FULL CAPABILITY

Local-first App

UI、API、subscription、skills、agents 和 run writes 位于同一台受信任机器。适合真正训练与正式产物生成。

http://127.0.0.1:8792
STATIC EXPERIENCE

Cloudflare / Sites

可托管案例浏览、教程和本架构页面;若没有用户本机 companion server,则不能直接调用本地 subscription。

static UI only
09 / ARCHITECTURAL DECISIONS

九个关键设计决定

这些决定让系统保持训练价值、可追溯性和跨 provider 一致性。

Human-first,不是 AI-first

人类计划先于 peer analysis,避免把专业判断外包给模型。

Local subscription,不传浏览器 token

浏览器只连接 localhost API;credential 留在 CLI 与系统 keychain。

一个 canonical resource layer

Claude-native workflow 复用同一套 schemas、references、templates 和 validators。

Subagent 只返回,不写共享文件

并行推理与串行落盘分开,降低覆盖、竞态和 provenance 丢失。

Public / private packet 分离

训练者只能通过提问发现隐藏事实,而不是先看到完整答案。

展示层隐藏标签,源数据保留标签

可读性与证据完整性同时成立,UI 决策不污染 case records。

真实市场证据决定 pain stage

角色扮演的可信感不等于真实 demand;没有 real anchor 就停留 P0。

Markdown 是正式内容,HTML 是阅读视图

结构化源文件可 diff、可验证;HTML 负责复盘体验与分享。

Validator 决定完成,不让模型自评

必需文件、格式、证据与 disclosure 由确定性脚本检查。