Skip to main content
Glama

HACOO — Human Agent CO-wOrk eTV design platform

基于 FluxEDA 五层协议架构(见 docs/FluxEDA.md)实现的人机协同 eTV 设计平台。以 OpenCode + KIMI 2.6 (vLLM) 为 Agent 入口,通过 MCP 把异构 EDA 工具整合到统一、安全、可观测的 API 空间。多用户共享部署,实例级隔离。

多 Agent 设计团队(产品核心)

平台内置覆盖数字芯片设计全流程的 9 个专业 Agent,每个有独立 prompt、 工具白名单和专属知识库:

Agent

阶段

职责

生产工具 (adapter)

dft

前端

scan/ATPG/MBIST 可测性设计

ICC2 / Innovus

synthesis

前端

逻辑综合,时序/面积/功耗权衡

ICC2 / Innovus

apr

后端

布局布线,3D IC 分区/hybrid bonding/TSV 感知

ICC2 / Innovus

sta

签核

多 corner 时序,ECO 建议

PrimeTime

pv

签核

DRC/LVS/PERC

Calibre

irem

签核

IR drop / EM / PG 加固

RedHawk-SC / Voltus

thermal

签核

热分布、3D 层间热耦合

Voltus / RedHawk-SC

sipi

签核

串扰/PDN/SSN/D2D 接口裕度

PrimeTime / RedHawk-SC

flow

控制

ISF 平台对接: 流程串接、DB 管理、CICD、Airflow 监视

ISF (REST)

生产 EDA adapter(真实命令语义封装)

每个工具 adapter 把 api_* 调用翻译为工具原生命令(T2 语义差异封装在 adapter 内):PrimeTime/ICC2/Innovus/Voltus/RedHawk-SC 走持久 Tcl shell 会话(hacoo/adapters/shell.py: TclShell),Calibre 走批处理 + RVE 解析。 工具可执行文件按 HACOO_<TOOL>_BIN 环境变量解析(缺失时报错含配置指引):

export HACOO_PRIMETIME_BIN=/tools/synopsys/pt/bin/pt_shell
export HACOO_ICC2_BIN=/tools/synopsys/icc2/bin/icc2_shell
export HACOO_INNOVUS_BIN=/tools/cadence/innovus/bin/innovus
export HACOO_CALIBRE_BIN=/tools/mentor/calibre/bin/calibre
export HACOO_VOLTUS_BIN=/tools/cadence/voltus/bin/voltus
export HACOO_REDHAWK_SC_BIN=/tools/ansys/redhawk_sc/bin/redhawk_sc

注意:不同工具的同名 api_* 方法(如各家 api_load_design)按 (instance → tool) 命名空间解析签名,网关 G3 参数检查始终使用正确工具的签名。

自由搭配(按实验裁剪 Agent 集合)

python -m hacoo agents list              # 查看 9 个 Agent 及启停状态
python -m hacoo agents disable thermal   # 本次实验不让 thermal 参与
python -m hacoo agents disable sipi
python -m hacoo agents sync              # 重新生成 OpenCode subagent 文件

禁用是网关层硬强制:被禁 Agent 的任何调用返回 AGENT_DISABLED;每个 Agent 只能调用白名单内的后端工具,越权返回 AGENT_FORBIDDEN。flow 中含被禁 Agent 的 stage 会让 run 立即失败并记录——未参与的 Agent 绝不会"偷偷执行"。

自我成长(每 Agent 独立知识库)

每个 Agent 的生成式 prompt 内置强制的 Knowledge loop: 决策前查 KB → 决策前记录 rationale → 行动后闭环 outcome → 新问题沉淀 lesson

  • hacoo_knowledge_add / query —— 经验按 Agent 隔离存储(knowledge/<agent>.jsonl), 关键词+tag 检索,被复用的经验权重自动上升(reuse_count)

  • 经验是 append-only JSONL,可 git 追踪、可人工审阅

问题定位(哪个 Agent 的哪个决策出了问题)

# Agent 视角: 每个决策都有 rationale + outcome
python -m hacoo call api_decision_query --args '{"run_id": "run-xxx"}'
# Run 视角: manifest + 决策时间线 + request_id 级审计
python -m hacoo call api_flow_trace --args '{"run_id": "run-xxx"}'

Flow 编排

api_flow_start(template, params) 按模板执行多 Agent 流程(内置 block_signoff / sta_only);所有 stage 共享后端实例(状态跨 stage 连续), 每个 stage 自动记录决策并关联审计。ISF 能力通过 isf adapter 暴露 (api_isf_submit_flow / flow_status / db_save / db_query / cicd_trigger / airflow_dags,mock 实现,替换为真实 ISF REST 调用即可上线)。

Related MCP server: Arcas OnlineEDA MCP Server

5 分钟上手

# 1) 启动平台(核心层零第三方依赖, Python >= 3.8)
python -m hacoo serve

# 2) 新终端: 环境自检
python -m hacoo doctor

# 3) 跑一遍演示流程 (mock 时序签核)
python -m hacoo demo

# 4) OpenCode 入口 (Agent 形式)
set VLLM_BASE_URL=http://<vllm-host>:8000/v1   # Windows; Linux 用 export
opencode            # hacoo 为主 orchestrator, hacoo-sta 等为 subagent

架构映射(SPEC 五层 + Skills 层)

SPEC 层

步骤

实现

访问层

A1-A3

hacoo/access/mcp_server.py(Agent 入口)、hacoo/access/sdk.py(Python SDK)、hacoo/server.py(TCP 前门)

通信层

C1-C4

hacoo/comm/protocol.py — socket RPC,request_id 追踪、instance_id 路由

网关层

G1-G9

hacoo/gateway/control.py(G1/G3/G4 + 主体识别)、registry.py(G2)、gateway.py(G5-G9 + 配额/所有权/审计)

适配层

T1-T4

hacoo/adapters/base.py(api_* 注册/规范化)、mock_eda.py(示例工具)

运行时层

R1-R11

hacoo/runtime/backend.py(持久状态 worker)、manager.py(生命周期/归属/串行化)

Skills 层

.opencode/skills/ — 工作流知识编码(任务分解/输入验证/执行顺序/上下文)

多用户使用

  • 身份与授权:token → Principal(user, role, capabilities)。角色:admin / engineer(read+write)/ viewer(read-only)。配置 HACOO_AUTH_FILE

    {
      "tokens": {"tok-alice": {"user": "alice", "role": "engineer"},
                 "tok-admin": {"user": "bob", "role": "admin"}},
      "roles": {"admin": ["read", "write", "admin"],
                "engineer": ["read", "write"],
                "viewer": ["read"]}
    }
  • 实例隔离:实例按 user 归属,非属主访问返回 UNAUTHORIZED(admin 豁免); api_list_instances 只列自己的实例。

  • 配额:每用户默认最多 8 个实例(HACOO_MAX_INSTANCES_PER_USER),超限返回 QUOTA_EXCEEDED

  • 并发安全:同一实例上的调用自动串行化(保护持久状态);不同实例/不同用户 完全并行。

  • 审计:每次调用落一条 JSONL(logs/hacoo-audit.jsonlHACOO_AUDIT_LOG=off 关闭),含 request_id / user / method / status / elapsed_ms,全链路可追溯。

CLI 一览(易用入口)

python -m hacoo serve [--host H] [--port P]   启动平台服务
python -m hacoo doctor                        环境自检 (Python/服务/授权/工具/vLLM)
python -m hacoo demo                          演示流程 (mock 时序签核)
python -m hacoo whoami                        当前身份 / 角色 / 配额
python -m hacoo methods [-v] [--tool T]       列出可用 api_* 方法
python -m hacoo instances                     我的活实例
python -m hacoo call api_report_timing --instance inst-xxx --args '{"max_paths":5}'

配置(hacoo/config.py,全部可用环境变量覆盖)

环境变量

默认

说明

HACOO_HOST / HACOO_PORT

127.0.0.1:9877

服务监听地址

HACOO_IDLE_TIMEOUT_S

1800

实例空闲回收 (R9)

HACOO_HEARTBEAT_INTERVAL_S

5

心跳周期 (R7)

HACOO_AUTO_RESTART

1

实例故障自动重启 (R10)

HACOO_MAX_INSTANCES_PER_USER

8

每用户实例配额

HACOO_AUDIT_LOG

logs/hacoo-audit.jsonl

审计日志路径 / off

HACOO_AUTH_FILE

授权配置 JSON

HACOO_ADAPTERS_PATH

插件 adapter 目录(os.pathsep 分隔)

HACOO_AGENTS_FILE

hacoo.agents.json

Agent 启停配置

HACOO_KNOWLEDGE_DIR

knowledge/

Agent 知识库目录

HACOO_DECISIONS_LOG

logs/decisions.jsonl

决策日志

HACOO_RUNS_DIR

runs/

flow run manifest 目录

HACOO_CONFIG

JSON 配置文件(低于环境变量优先级)

客户端侧:HACOO_SERVER(平台地址)、HACOO_TOKEN(访问令牌)。

扩展一个新 EDA 工具(维护者指南)

方式一:插件目录(推荐,零侵入)

  1. 在任意目录写 mytool_adapter.py:继承 ToolAdapter,设置 tool_name, 用 @api_method 封装工具原生命令(T2 语义差异限制在 api_* 方法之后);

  2. 部署时 export HACOO_ADAPTERS_PATH=/path/to/dir —— 网关与后端自动发现, hacoo_list_methods 即刻可见。

方式二:内置登记hacoo/adapters/ 新建模块并在 ADAPTERS 字典加一行。

两种方式都自动获得:注册表发现、参数校验、授权、审计、实例生命周期管理。

三种 Agent / 客户端入口(A1)

  1. OpenCode(推荐):根目录 opencode.json 已配好 vllm-kimi/kimi2.6 provider + hacoo MCP server;.opencode/agent/hacoo.md 为 primary agent。

  2. LangChain runner(批处理/CI): python -m hacoo.agent_runner "加载 chip.v (top=chip), 综合并报告时序"

  3. Python SDK

    from hacoo.access.sdk import HacooClient
    with HacooClient() as c, c.session("mock_eda") as eda:
        eda.call("api_load_design", path="chip.v", top="chip")
        print(eda.call("api_report_timing", max_paths=5)["data"])

公司 Linux 部署

bash scripts/deploy_linux.sh ~/hacoo-platform   # 含冒烟测试
# 编辑 ~/hacoo-platform/hacoo.env 填公司 vLLM 地址与 token, 然后:
~/hacoo-platform/start-server.sh

测试

python -m tests.test_e2e    # 或 python -m pytest tests/

覆盖:能力发现 / 状态保持 (R6) / 实例隔离 / 多用户所有权与配额 / 并发串行化 / 注册表与协议拒绝 (G1-G2) / 参数校验 (G3) / 授权 (G4) / 异步任务与取消 (R8) / 显式释放 (R11) / 审计日志。

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    F
    maintenance
    A comprehensive Model Context Protocol server that connects AI assistants to Electronic Design Automation tools, enabling Verilog synthesis, simulation, ASIC design flows, and waveform analysis through natural language interaction.
    6
    109
    -
  • A
    license
    C
    quality
    D
    maintenance
    Provides programmatic access to Arcas OnlineEDA platform for electronic design automation, enabling formal verification, equivalence checking, power analysis, security verification, and FPGA design through natural language and automated workflows.
    5
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables LLMs to interact with hardware designs (Verilog/SystemVerilog), formal verification tools, waveform logs, protocol specifications, and bug databases through 34 structured tools.
    -