感谢你对 Daedalus 的关注。本文档是三仓共用的贡献指南公共部分;各仓特有约束见各自 CONTRIBUTING.md 的「本仓特有约束」段。
- Go 1.25+(
go.mod声明go 1.25.0且构建用GOTOOLCHAIN=local,低版本无法构建) - Deno 1.x (仅 copilot 插件开发需要)
- Podman / Docker (镜像构建)
- just (命令运行器,类 make)
- git + jj (版本控制,推荐 jj)
Daedalus 由三个平级仓库组成,本地开发必须以平级目录形态 clone:
~/work/daedalusys/
├── daedalus-core/ # 镜像编排 + 5 core runtime + copilot 源码
├── daedalus-sdk/ # 11 个安全核心包 + Provider/Slot 契约
└── daedalus-plugins/ # 9 个 Go 能力插件 monorepo
仓名必须为 daedalus-core / daedalus-sdk / daedalus-plugins(与 go.work 路径对应)。
三仓经 go.work 桥接依赖关系:
cd ~/work/daedalusys/daedalus-core
cp go.work.example go.work
just verify-dev-layout # 守门:兄弟仓就位 + go.mod module 路径匹配
go build ./... # 经 go.work 解析 SDK 与插件模块go.work引用../daedalus-sdk与../daedalus-plugins/{fs,shell,...}- 单仓 clone(无兄弟仓)时:各仓自带
go.work.example,cp为go.work即生效
- 格式化:
gofmt -l .必须零输出 - 静态检查:
go vet ./...必须通过 - 命名: 遵循 Go 标准命名惯例(导出大写,非导出小写)
- 错误处理: 使用哨兵错误(
errors.Is/errors.As),%w包装保留哨兵 - 注释语言: 必须使用中文(见下方「注释规范」)
- 格式化:
deno fmt必须零差异 - 静态检查:
deno lint必须通过 - 运行时: 仅 copilot 插件使用 Deno,其余能力插件全部 Go 实现
本项目所有源代码、配置文件、构建脚本中的注释必须使用中文。包括但不限于:
| 文件类型 | 注释格式 |
|---|---|
| Go 源码 | // 与 /* */ 注释,godoc 注释 |
| TypeScript / Deno | // 与 /* */ 注释 |
| Shell / Bash | # 注释 |
| systemd unit | # 注释 |
| justfile / Makefile | # 注释 |
| Containerfile | # 注释 |
| YAML / JSON / TOML | 注释字段(含 policy.toml、daedalus.plugin.json) |
不视为注释的内容(保留英文):标识符、字符串字面量、API 协议字段(如 JSON 键、HTTP 头、协议名)、系统命令、URL、日志中可被外部解析的 token。
# 全仓测试
go test ./...
# 带覆盖率
go test -coverprofile=coverage.out ./...
go tool cover -html=coverage.out
# 金样向量重放(audit 包在 ../daedalus-sdk/,本仓无 ./audit/)
cd ../daedalus-sdk && go test -run TestGolden ./audit/...deno test --allow-all tests/deno/# 从 core 仓根执行(经 go.work 桥接)
just test # 全量:本仓 + SDK + plugins + Deno
# 或手动
just go-test # 仅 Go
just test # Go + Deno# 同步 + 构建镜像
just build
# 仅同步 vendor 树
just sync
# 构建 Go 二进制
just go-build
# 打包插件
just plugin-pack
# 验证镜像
just verify-image
# 开发模式构建(demo build-tag)
just go-build-demo- 语言: 提交信息使用中文
- 格式:
<type>(<scope>): <description> - type:
feat,fix,docs,test,refactor,chore,ci - scope: 可选,标明影响的模块(如
audit,plugin/copilot,pathguard) - 禁止: 提交信息中不写
todo N/决策 N/oracle review等进度信息
- Fork 对应仓库(或在组织内创建分支)
- 本地测试 通过:
go test ./...+go vet ./... - 提交 遵循上述 commit convention
- PR 标题 清晰描述变更内容
- PR 说明 包含:
- 变更动机
- 变更内容摘要
- 测试方法
- 影响范围(是否跨仓)
如果变更影响多个仓库:
- 先在影响面最大的仓库开 issue
- 各仓分别开 PR,互相 cross-link
- 说明依赖关系(如「SDK PR #X 先合并后,本 PR 才能通过」)
请在新仓开 issue。本 issue tracker 仅服务本仓代码:
- 跨仓问题(如同时影响 SDK 与 plugins)请先开在本仓,影响面大者会在评论里 cross-link 到其他仓
- 老仓
Daedalusys/Daedalusys已于 2026-09-21 archived,历史 issue 保留可读;新 issue 一律开在本仓
- 不要在代码中硬编码 API 密钥、密码或证书
- 不要提交包含敏感信息的文件
- 安全漏洞请通过 GitHub Security Advisories 私下报告,不要开公开 issue
- VISION.md — 系统愿景与设计层总览
- AGENTS.md — AI 操作知识库(含反模式清单)
- ARCHITECTURE.md — 中等粒度架构说明