Add the intent seed domain for the agent-intent module.
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
| 包 | 职责 | 依赖边界 |
|
||||
|---|---|---|
|
||||
| errcode | 码格式、定义、注册表、`E` 错误类型 | 只依赖标准库 |
|
||||
| domains | sys / agent / squad 种子码;Go 为权威,JSON 为导出快照 | 只依赖 errcode |
|
||||
| domains | sys / agent / squad / intent 种子码;Go 为权威,JSON 为导出快照 | 只依赖 errcode |
|
||||
| httpx | 统一错误信封与 `X-Trace-Id` | 只依赖 errcode |
|
||||
| server | HTTP API,默认 `:8091` | 组合根之一 |
|
||||
| cli | `errcode` 命令 | 组合根之一 |
|
||||
@@ -27,6 +27,7 @@
|
||||
- [注册治理](docs/governance.md)
|
||||
- [agent-native](docs/agent-native-mapping.md)
|
||||
- [agent-squad](docs/agent-squad-mapping.md)
|
||||
- [agent-intent](docs/agent-intent-mapping.md)
|
||||
- [和日志系统对齐](docs/integration.md)
|
||||
|
||||
## 进程内用法
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
# agent-intent 错误码映射
|
||||
|
||||
agent-intent v1 无 HTTP 面,核心包按 Pattern B 接入:错误常量的字符串值即下列规范码,错误类型实现 `ErrorCode()` / `ErrorFields()` 鸭子方法供日志系统展开;其仓内 `catalogcheck` 对齐测试保证两边常量相等,本表是人类可读对照。
|
||||
|
||||
| agent-intent 常量 | 规范码 | HTTP | 触发场景 |
|
||||
|---|---|---|---|
|
||||
| `intent.InvalidSpec` | intent.invalid_spec | 400 | spec 定义/校验失败:id 冲突、正则不合法、未知字段、matcher 无正向条件、槽位 group 越界、覆盖版本未递增 |
|
||||
| `intent.SpecProtected` | intent.spec_protected | 400 | overlay 试图覆盖或禁用保护域内的 spec |
|
||||
| `intent.LoadFailed` | intent.load_failed | 500 | 配置读取/解析失败;此时保留上一生效快照 |
|
||||
| `intent.InvalidArgument`(复用框架域) | sys.invalid_argument | 400 | 调用方错误:nil 快照、输入超长 |
|
||||
|
||||
「无匹配」(fallback 分支)是正常识别结果,不产生错误码;识别路径的失败语义与重试由宿主决定。
|
||||
@@ -10,7 +10,7 @@ import (
|
||||
func TestEmbeddedCatalogMatchesRegistry(t *testing.T) {
|
||||
r := errcode.NewRegistry()
|
||||
RegisterAll(r)
|
||||
for _, domain := range []string{"sys", "agent", "squad"} {
|
||||
for _, domain := range []string{"sys", "agent", "squad", "intent"} {
|
||||
got, err := ExportDomain(r, domain)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
|
||||
@@ -9,11 +9,11 @@ import (
|
||||
|
||||
func TestWriteCatalog(t *testing.T) {
|
||||
if os.Getenv("WRITE_CATALOG") != "1" {
|
||||
t.Skip("set WRITE_CATALOG=1 to regenerate sys.json agent.json squad.json")
|
||||
t.Skip("set WRITE_CATALOG=1 to regenerate sys.json agent.json squad.json intent.json")
|
||||
}
|
||||
r := errcode.NewRegistry()
|
||||
RegisterAll(r)
|
||||
for _, domain := range []string{"sys", "agent", "squad"} {
|
||||
for _, domain := range []string{"sys", "agent", "squad", "intent"} {
|
||||
data, err := ExportDomain(r, domain)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ import "embed"
|
||||
|
||||
// 导出的目录快照。改 Go 定义后用 WRITE_CATALOG=1 重写这些文件。
|
||||
//
|
||||
//go:embed sys.json agent.json squad.json
|
||||
//go:embed sys.json agent.json squad.json intent.json
|
||||
var catalogFS embed.FS
|
||||
|
||||
// CatalogJSON 返回已嵌入的域目录原文。
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package domains
|
||||
|
||||
import "error-code-system/errcode"
|
||||
|
||||
func registerIntent(r *errcode.Registry) {
|
||||
must(r, def(errcode.IntentInvalidSpec, 400, errcode.SeverityError, errcode.RetryNever, errcode.SideEffectNone,
|
||||
"意图定义校验失败", "检查 spec 的 id/domain/matcher/slots 与来源文件;整批配置已原子拒绝"))
|
||||
must(r, def(errcode.IntentSpecProtected, 400, errcode.SeverityError, errcode.RetryNever, errcode.SideEffectNone,
|
||||
"试图覆盖或禁用保护域意图", "保护域由宿主构建时声明;修改须走宿主内置定义,不接受 overlay"))
|
||||
must(r, def(errcode.IntentLoadFailed, 500, errcode.SeverityError, errcode.RetryNever, errcode.SideEffectNone,
|
||||
"意图配置加载失败", "查看来源路径与解析原因;失败时保留上一生效快照"))
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
[
|
||||
{
|
||||
"code": "intent.invalid_spec",
|
||||
"http": 400,
|
||||
"severity": "error",
|
||||
"retry": "never",
|
||||
"side_effects": "none",
|
||||
"summary": "意图定义校验失败",
|
||||
"hint": "检查 spec 的 id/domain/matcher/slots 与来源文件;整批配置已原子拒绝"
|
||||
},
|
||||
{
|
||||
"code": "intent.load_failed",
|
||||
"http": 500,
|
||||
"severity": "error",
|
||||
"retry": "never",
|
||||
"side_effects": "none",
|
||||
"summary": "意图配置加载失败",
|
||||
"hint": "查看来源路径与解析原因;失败时保留上一生效快照"
|
||||
},
|
||||
{
|
||||
"code": "intent.spec_protected",
|
||||
"http": 400,
|
||||
"severity": "error",
|
||||
"retry": "never",
|
||||
"side_effects": "none",
|
||||
"summary": "试图覆盖或禁用保护域意图",
|
||||
"hint": "保护域由宿主构建时声明;修改须走宿主内置定义,不接受 overlay"
|
||||
}
|
||||
]
|
||||
+2
-1
@@ -8,11 +8,12 @@ import "error-code-system/errcode"
|
||||
|
||||
func init() { RegisterAll(errcode.Default) }
|
||||
|
||||
// RegisterAll 向 r 登记 sys / agent / squad 三域。重复调用会因码冲突失败。
|
||||
// RegisterAll 向 r 登记 sys / agent / squad / intent 四域。重复调用会因码冲突失败。
|
||||
func RegisterAll(r *errcode.Registry) {
|
||||
registerSys(r)
|
||||
registerAgent(r)
|
||||
registerSquad(r)
|
||||
registerIntent(r)
|
||||
}
|
||||
|
||||
func must(r *errcode.Registry, def errcode.Definition) {
|
||||
|
||||
@@ -48,3 +48,10 @@ const (
|
||||
SquadQualityFailed Code = "squad.quality_failed"
|
||||
SquadCancelled Code = "squad.cancelled"
|
||||
)
|
||||
|
||||
// 意图识别域。对齐 agent-intent 核心包错误常量;消费方以 catalogcheck 对齐测试防止双权威。
|
||||
const (
|
||||
IntentInvalidSpec Code = "intent.invalid_spec"
|
||||
IntentSpecProtected Code = "intent.spec_protected"
|
||||
IntentLoadFailed Code = "intent.load_failed"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user