weichen 60261a835a Generalize svc.sh into a multi-kind service manager with tags and persistence
Why:
svc.sh only managed agent-system environments; databases, standalone
frontend serving, per-service tags and reusable start configs were out of
scope, and the user asked for a unified service lifecycle on this host.

Evidence:
- Service model v2: kind=agent|static|postgres registered in
  runtime/<name>/svc.env (dotenv, mode 600); legacy entries without kind=
  are adopted as agent.
- postgres: "db create <name> --port/--user/--password/--db/--auth-mode/
  --tag" runs initdb (scram-sha-256, pwfile 0600), start/stop/restart use
  pg_ctl (-m fast, never SIGKILL on postmaster) with pg_isready checks and
  first-start database creation; "db dsn <name> [--reveal]" prints a
  composable DSN (password masked by default). Verified end to end against
  a real postgresql@18 instance: data survives restart, wrong passwords
  rejected, stop/restart clean.
- static: "deploy --kind static --from dev[@sha]|local" builds frontend
  dist into htdocs/ in an isolated worktree, or "--dir PATH" serves an
  existing directory; verified serving HTTP 200, restart, stop, dry-run
  plan, and explicit rejection of release sources.
- agent: unchanged three deploy sources plus --tag; bare start/restart now
  reuses the persisted exec= from svc.env (verified: same custom port and
  args across restart); old binaries lacking --dsn/--auth get those flags
  auto-omitted with a warning.
- "list|status [--tag]" shows NAME/KIND/STATE/PID/ADDR/SOURCE/TAGS for all
  registered services; "<name> status" gives per-kind detail; "rm <name>
  [--purge]" unregisters (and optionally deletes) only runtime/<name>/.
- Fixed during verification: psql arg mangling (-c -c), tags lost because
  record_state read svc.env inside its own redirect block, postgres
  --version field parsing, unbound vars for unregistered names.

Impact:
Same invariants as before: writes stay under runtime/<name>/ and
runtime/.worktrees/ (only --from local also writes main-checkout build
outputs, all gitignored), stops only own pidfile+cmdline-verified
processes, port conflicts reported not seized. Prompt output moved to
stderr so stdout (tables, DSNs) stays pipeable. Makefile gains svc-list.

Refs: .task/feature-svc-services-registry.md(任务卡=PR 描述)
2026-09-30 13:44:58 +00:00

Agent-System-Dev

Agent-System 的开发集成仓(父仓):以 submodule 固定全部模块组合,承载跨仓构建、测试编排与原生(非容器)开发环境。非分发单元——发布物在 Agent-System-Releases。

组合结构

modules/core        Agent-System-Core        核心契约(领域模型/事件协议/插件 API/设置与 UI 词汇)
modules/backend     Agent-System-Backend     后端单二进制(内嵌前端与嵌入式 SQLite)
modules/frontend    Agent-System-Frontend    前端(React 19 + Vite + TS)
modules/documents   Agent-System-Documents   系统文档与过程记录
modules/ui          Agent-System-UI          UI 组件库(词汇渲染器/设计令牌/收件箱卡片工作区组件)
deps/development-guidelines                 开发规范(gitlink 固定版本)
deps/agent-native  deps/agent-squad  deps/agent-intent   生态执行/编排/意图
deps/agent-command   Agent-Command           命令总线基础库(spec/注册表/危险分级/审计信封)
deps/error-code-system  deps/logging-system   基础设施
plugins/            示例插件与插件开发参考(P4 起填充)

父仓 gitlink 是各组件源码版本的权威;构建、审核与发布固定提交,不执行 submodule update --remote。

常用命令

make sync     # 物化全部 submodule(递归)
make build    # 构建单二进制 bin/agent-system
make test     # 全量测试
make dev      # 开发模式说明(前后端分离热更新)

约束(全局)

  • 非容器化部署:默认单二进制,必要时拆分多个原生二进制;不发布容器镜像。
  • 依赖方向:frontend→core←backend;插件只依赖 core;生态仓依赖纪律沿用各仓既有约定。
  • 开发规范:deps/development-guidelines(见各仓 AGENTS.md)。

文档

设计方案:modules/documents/docs/proposals/2026-09-29-system-skeleton-design-and-plan.md(含 D1–D16 决策记录)。

S
Description
开发集成仓:以 submodule 固定全部模块组合,承载跨仓构建、测试编排与原生(非容器)开发环境;发布物在 Agent-System-Releases。
Readme
32 MiB
Languages
Python 56.2%
Shell 35.9%
Go 5.3%
JavaScript 1.4%
Makefile 1.1%
Other 0.1%