{ "schema_version": 1, "id": "tjwater.supply-agent", "name": "TJWater 供水 Agent", "description": "供水 Agent 的角色指令、TJWater 插件工具、第一方查询与分析 MCP、OpenCode 原生工具及 Skill 管理索引;计算等待预算由Agent按任务指定,受Server工具目录上限约束。", "purpose": "documentation-index", "path_base": ".opencode", "runtime": { "name": "opencode2", "config_builder": "../src/runtime/opencode2-config.ts" }, "agents": [ { "id": "instruction", "description": "普通聊天与任务协作主 Agent:通过 mcp_tjwater 查询授权资料或执行受控分析,用插件组织回答、地图展示和业务写入;不启动子代理。此文件的公共规则也供后台调查继承。", "path": "agents/instruction.md", "mode": "primary" }, { "id": "investigation", "description": "仅可信 task_execution 会话使用的后台调查主 Agent:在公共指令后追加调查规则,自行调用受控分析,协调最多两个前台只读子任务,统一发布进度、展示请求与报告;完成状态由 Server 运行接口结算。", "path": "agents/investigation.md", "mode": "primary" }, { "id": "investigation-reader", "description": "独立只读指令,仅使用已核验父任务授权的 25 项项目查询,返回证据编号、发现与局限;可读已有分析结果,但无计算、宿主查询、消息、发布、文件、Shell 或递归权限。任务查询仍由 Server 保存证据快照。", "path": "agents/investigation-reader.md", "mode": "subagent" } ], "plugins": [ { "id": "tjwater.tools", "description": "注册 20 个回答、展示、调查写入、通信、记忆/技能管理及待办工具;安装会话 Shell 沙箱、原生 MCP 连接和权限策略。查询由 MCP 提供,公开网页搜索使用原生 websearch。", "package": "tjwater-plugin", "entrypoint": "tjwater-plugin/index.ts", "implementation": "plugins/tjwater-tools.ts", "tool_groups": [ { "description": "本地交互式回答与完整最终答复;不代表后台任务完成。", "tools": [ "present_answer", "final_answer" ] }, { "description": "地图定位、缩放、图表、历史面板及 SCADA 覆盖层展示;保留各工具的前端执行回执语义。", "tools": [ "locate_features", "zoom_to_map", "show_chart", "view_history", "render_scada_analysis", "clear_scada_analysis" ] }, { "description": "调查进度、报告、任务展示、人工证据、动作提议和数据授权申请;计划仅用于解释,提议及申请不直接执行操作。", "tools": [ "publish_task_progress", "publish_task_presentation", "publish_task_report", "publish_execution_plan", "propose_task_action", "add_task_human_evidence", "request_task_data_access" ] }, { "description": "发送调查讨论消息及回复原消息;读取使用 MCP,排队不代表已处理。", "tools": [ "send_task_message", "reply_agent_message" ] }, { "description": "保留完整读写插件接口:记忆支持 add/list/replace/remove;Skill 支持目录、正文、pattern、reference 和 script 管理。", "tools": [ "memory_manager", "skill_manager" ] }, { "description": "写入当前会话待办;读取使用 mcp_tjwater_todoread,待办不调度后台调查。", "tools": [ "todowrite" ] } ], "host_rpc": [ "list", "mcp", "check_models", "read_todos" ] } ], "native_tools": { "description": "由 OpenCode 提供,不是 TJWater 插件注册项;目录可见不等于允许执行,仍受会话、审批和沙箱约束。", "tool_groups": [ { "description": "会话文件读取、检索及编辑。", "tools": [ "read", "glob", "grep", "edit", "write", "patch" ] }, { "description": "TJWater 插件替换执行器的会话 Shell,受 Landlock、seccomp 和审批限制。", "tools": [ "shell" ] }, { "description": "公开网页搜索与抓取;仓库默认搜索引擎为 Exa,部署可覆盖。", "tools": [ "websearch", "webfetch" ] }, { "description": "按需加载 Skill、向用户提问及受限子代理;子代理仅向可信调查协调会话开放。", "tools": [ "skill", "question", "subagent" ] }, { "description": "原生模型、会话与 Git worktree 管理,保留原生权限检查。", "tools": [ "opencode_models", "opencode_session_move", "opencode_session_rename", "opencode_worktree_create", "opencode_worktree_list", "opencode_worktree_remove" ] }, { "description": "原生 MCP 资源访问,遵守与 MCP 工具相同的会话策略。", "tools": [ "opencode_list_mcp_resources", "opencode_read_mcp_resource" ] } ], "disabled": [ "browser", "browser_*" ], "config_builder": "../src/runtime/opencode2-config.ts" }, "agent_messages": { "description": "查询通过本地 MCP;发送与回复通过写入桥。两者核验身份、项目、运行和线程,保留 originalMessage 来源。", "tools": [ "mcp_tjwater_list_investigation_tasks", "mcp_tjwater_get_investigation_task", "send_task_message", "mcp_tjwater_read_agent_messages", "reply_agent_message" ], "bridge": "/internal/agent-messages/send|reply", "policy": "agent-message-policy.ts" }, "skills": { "description": "部署实例的可复用流程和辅助文件,由 skill_manager 经可信内部工具桥维护。", "default_root": "skills", "root_env": "OPENCODE_SKILLS_ROOT_DIR", "entry_file": "SKILL.md", "manager_tool": "skill_manager", "store": "../src/skills/store.ts" }, "mcp": { "description": "只读查询与受控分析通过原生 MCP 发现和调用;第一方 mcp_tjwater 由宿主提供,管理员外部连接单独配置。分析不操作现场设备,工具目录不授予业务权限,不恢复旧查询插件或 HTTP 查询执行桥。", "first_party": { "server": "mcp_tjwater", "description": "6 项宿主查询加 35 项产品工具,其中产品工具含 25 项查询与 10 项受控分析,完整目录合计 41 项。各角色按白名单缩减,Server 产品目录须与 Agent 预期完全匹配才可启用。原生工具 ID 使用 mcp_tjwater_,项目凭据和上下文由宿主绑定。", "connection": "query-mcp.ts", "implementation": "../src/mcp/query-server.ts", "tool_ids": "../src/runtime/product-mcp-tools.ts", "local_catalog": "../src/mcp/local-query-tools.ts", "session_policy": "../src/runtime/query-mcp-policy.ts", "product_client": "../src/product/mcp-query-client.ts", "catalog_compatibility": { "description": "Server 与 Agent 的产品目录均为 35 项,prepare 对工具名做全等检查。查询和分析名单分别以 PRODUCT_MCP_READ_TOOLS、PRODUCT_MCP_ANALYSIS_TOOLS 为准;reader 仅使用查询名单。目录一致不代表当前用户或任务已获得全部业务权限。", "server_catalog": "../../next-tjwater-server/app/mcp/catalog.py", "analysis_contract": "../../next-tjwater-server/docs/mcp-analysis-tools.md" } }, "config_file": "../opencode.json", "config_key": "mcp.servers", "override_env": "OPENCODE_CONFIG_CONTENT", "policy": "mcp-policy.ts", "status_endpoint": "/api/v1/session/:session_id/mcp" }, "workspace": { "description": "按用户、个人或项目范围和会话保存聊天、学习进度与计算文件;chat/ 由服务管理,workspace/ 是原生计算目录,删除标记阻止旧记录恢复。", "default_root": "../data/session-workspaces", "root_env": "CONVERSATION_WORKSPACE_ROOT", "manager": "../src/runtime/conversationWorkspace.ts", "chat_store": "../src/sessions/workspace-store.ts" }, "models": { "config_file": "../agent-models.json", "override_env": "AGENT_MODEL_CONFIG_PATH" }, "http_api": { "base_path": "/api/v1", "generation_endpoint": "POST /api/v1/responses", "protocol": "Responses text input/output and streaming events, with explicit tjwater extensions", "request_contract": "../src/chat/responses-protocol.ts", "description": "Agent独立服务保留;前端通过Responses传输适配器接入,内部插件和查询MCP继续使用各自认证边界。" } }