weichen ac8db54ecb Add svc.sh update command: auto-detect repo advances and refresh services
Why:
After the repository moves forward, updating a running service meant
manually figuring out the new commit, rebuilding and redeploying by hand;
the user asked for the tool to detect and update automatically.

Evidence:
- "update [name...] [--check] [--all] [--no-fetch]": fetches origin,
  compares each service's registered source against the latest (Dev repo
  origin/main for local@/dev@ sources, newest Releases version for
  release@), prints a per-service table (current / latest / state), and
  without --check refreshes outdated running services by reusing the full
  deploy pipeline (stop → build/verify → start → health check; persisted
  exec= config and tags survive; update events appended to history).
- local@ services: auto git pull --ff-only origin main + make sync before
  rebuilding, guarded three ways (current branch == main, clean worktree,
  ff-only) — dirty trees or non-main branches are skipped with a warning,
  never touching uncommitted work.
- dev@ sources go straight to the remote main commit via an isolated
  worktree; release@ sources deploy the newest Releases version with
  sha256 verification; postgres and static --dir services are reported as
  not applicable; sources that diverged from or lead the remote are never
  force-updated.
- Verified end to end with five test services: dev@73b2802 → dev@ffda6d3
  (real isolated build, HTTP 200, tag/port preserved, worktree recycled),
  non-main-branch skip, stopped-service warning vs --all, release
  sha256-verified update, --check read-only (svc.env checksums unchanged),
  unregistered name exits 2.
- Fixed en route: a latent bug from the v2 refactor — materialize_dev_commit
  leaked submodule/make stdout into the captured worktree path, breaking
  every real dev@sha deploy since (cp: File name too long); build output
  now goes to stderr. Also fixed an unbound-variable crash in the update
  loop (local statement self-reference under set -u).

Impact:
New read-mostly operational command; no behavior change to existing
commands except dev@sha deploys now actually working end to end.
Makefile gains svc-update; --help and docs/svc.md document the command.

Refs: .task/feature-svc-auto-update.md(任务卡=PR 描述)
2026-09-30 15:22:33 +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 决策记录)。 本机服务管理(后端/前端/数据库部署、生命周期、备份克隆):docs/svc.md(scripts/svc.sh)。

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%