Details (original message): Implement the backend: store/bus/runmgr core, mock and LLM runners (agent-native client), HITL three-branch routing, subagent runs, builtin and declarative HTTP tools, ingest parsers (md/txt/docx/pdf-text), knowledge fulltext, layered settings, profiles, plugin host, REST+SSE API, single-binary entrypoint; e2e and unit tests.
37 lines
1.1 KiB
Go
37 lines
1.1 KiB
Go
// agent-system:单二进制服务(HTTP/SSE + 内嵌前端 + 嵌入式 SQLite)。
|
|
// 部署约束(设计 4.1 原则 8):非容器化;拷贝即运行。
|
|
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"os"
|
|
|
|
"agent-system-backend/internal/app"
|
|
)
|
|
|
|
var version = "0.1.0-dev"
|
|
|
|
func main() {
|
|
if len(os.Args) > 1 {
|
|
switch os.Args[1] {
|
|
case "version", "--version":
|
|
fmt.Println("agent-system", version)
|
|
return
|
|
case "serve":
|
|
os.Args = append([]string{os.Args[0]}, os.Args[2:]...)
|
|
}
|
|
}
|
|
fs := flag.NewFlagSet("serve", flag.ExitOnError)
|
|
addr := fs.String("addr", "127.0.0.1:8787", "监听地址")
|
|
data := fs.String("data", "./data", "数据目录(SQLite 与工件对象目录)")
|
|
pluginsDir := fs.String("plugins", "./plugins", "插件目录(声明资产热加载)")
|
|
mock := fs.Bool("mock", false, "演示模式(等同 runtime.mock=true,不调用模型)")
|
|
fs.Parse(os.Args[1:])
|
|
|
|
if err := app.Run(app.Options{Addr: *addr, DataDir: *data, PluginsDir: *pluginsDir, ForceMock: *mock}); err != nil {
|
|
fmt.Fprintln(os.Stderr, "agent-system:", err)
|
|
os.Exit(1)
|
|
}
|
|
}
|