Tags: enhancement, feature-request
Quality Rating: ⭐ 9/10
🎯 Feature Request: 新创建 Agent 默认继承公司工具开关状态
问题背景
当前 Clawith 平台中,公司设置(Organization Settings)里配置的工具打开/关闭状态,在新创建 Agent 时没有被默认继承。这导致:
- 配置不一致:每个新 Agent 需要手动配置工具开关,容易遗漏或配置错误
- 管理成本高:管理员需要为每个新 Agent 重复配置相同的工具权限
- 安全隐患:新 Agent 可能默认开启了公司层面已禁用的危险工具
- 体验不一致:不同 Agent 的工具可用性不一致,用户困惑
用户场景示例
场景 1:公司禁用危险工具
- 公司在设置中关闭了 "文件删除"、"数据库直接操作" 等危险工具
- 创建新 Agent 时,期望这些工具默认也是关闭的
- 现状:新 Agent 默认开启所有工具,需要手动关闭
场景 2:团队标准化工具集
- 团队定义了标准工具集(如:GitHub、Feishu、Web Search)
- 新成员创建 Agent 时,期望自动继承这套标准配置
- 现状:每个 Agent 需要手动选择和配置工具
场景 3:多环境管理
- 生产环境公司设置禁用某些开发工具
- 在生产环境创建 Agent 时,期望自动遵守生产环境的工具限制
- 现状:需要手动检查并配置
期望行为
-
默认继承机制
- 新创建 Agent 时,自动读取公司设置中的工具开关状态
- 公司开启的工具 → Agent 默认开启
- 公司关闭的工具 → Agent 默认关闭(或不可见)
-
可覆盖配置
- Agent 创建后,创建者可以手动调整工具开关
- 但初始状态应遵循公司设置
-
权限分级
- 普通用户:只能开启公司已允许的工具
- 管理员:可以开启所有工具,包括公司默认关闭的
建议实现方案
方案 1:创建时继承(推荐)
class AgentCreator:
def create_agent(self, name: str, creator_id: str) -> Agent:
# 获取公司工具配置
org_tool_settings = get_organization_tool_settings(creator_id.org_id)
# 获取创建者权限级别
creator_permissions = get_user_permissions(creator_id)
# 初始化 Agent 工具状态
agent = Agent(name=name)
for tool in ALL_TOOLS:
# 默认继承公司设置
is_enabled = org_tool_settings.get(tool.name, False)
# 管理员可以覆盖
if creator_permissions.is_admin:
is_enabled = True # 或根据管理员选择
agent.set_tool_enabled(tool.name, is_enabled)
return agent
方案 2:模板机制
class OrganizationTemplate:
# 公司定义默认 Agent 模板
default_agent_template = {
"tools": {
"github": True,
"feishu": True,
"web_search": True,
"dangerous_tool": False, # 默认禁用
},
"permissions": {...}
}
# 创建 Agent 时应用模板
def apply_template(self, agent: Agent):
agent.tools = self.default_agent_template["tools"].copy()
方案 3:策略继承
class ToolPolicy:
# 公司级策略
org_policy = {
"default_state": "inherit_from_org", # 默认继承公司设置
"admin_override": True, # 管理员可覆盖
"required_tools": ["audit_log"], # 必选工具
"forbidden_tools": ["unsafe_exec"], # 禁用工具
}
def evaluate(self, agent: Agent, creator: User) -> ToolConfig:
config = self.org_policy.copy()
# 移除禁用工具
for tool in config["forbidden_tools"]:
config["tools"][tool] = False
# 管理员可启用额外工具
if creator.is_admin:
config["admin_override"] = True
return config
技术实现建议
1. 数据库 Schema 扩展
-- 公司工具配置表
CREATE TABLE organization_tool_settings (
org_id UUID PRIMARY KEY,
tool_configs JSONB NOT NULL, -- {"tool_name": true/false, ...}
updated_at TIMESTAMP,
updated_by UUID
);
-- Agent 工具状态表(新增 inherited_from_org 字段)
ALTER TABLE agent_tools
ADD COLUMN inherited_from_org BOOLEAN DEFAULT TRUE,
ADD COLUMN created_at TIMESTAMP DEFAULT NOW();
2. API 接口扩展
# 创建 Agent 时支持继承标志
POST /api/v1/agents
{
"name": "My Agent",
"inherit_org_tool_settings": true, // 默认继承公司设置
"tool_overrides": { // 可选:覆盖特定工具
"github": true,
"custom_tool": false
}
}
# 获取公司工具配置
GET /api/v1/organization/tool-settings
Response: {
"tools": {
"github": {"enabled": true, "required": false},
"feishu": {"enabled": true, "required": true},
"dangerous_tool": {"enabled": false, "reason": "security"}
}
}
3. 前端 UI 改进
-
创建 Agent 页面:
- 显示"继承公司工具配置"选项(默认勾选)
- 展示公司允许的工具列表
- 灰色显示公司禁用的工具(不可选)
-
公司设置页面:
- 新增"默认 Agent 工具配置"区域
- 管理员可设置哪些工具默认开启/关闭
- 可标记某些工具为"必选"或"禁用"
安全考虑
-
权限控制
- 只有管理员可以修改公司级工具配置
- 普通用户创建的 Agent 不能启用公司禁用的工具
-
审计日志
- 记录 Agent 创建时的工具配置来源
- 记录工具状态的变更历史
-
回滚机制
验收标准
优先级
P1 - 安全和管理效率相关,建议优先实现
Reporter: Clawiee (based on user feedback)
Related Issues: None found
Tags:
enhancement,feature-requestQuality Rating: ⭐ 9/10
🎯 Feature Request: 新创建 Agent 默认继承公司工具开关状态
问题背景
当前 Clawith 平台中,公司设置(Organization Settings)里配置的工具打开/关闭状态,在新创建 Agent 时没有被默认继承。这导致:
用户场景示例
期望行为
默认继承机制
可覆盖配置
权限分级
建议实现方案
方案 1:创建时继承(推荐)
方案 2:模板机制
方案 3:策略继承
技术实现建议
1. 数据库 Schema 扩展
2. API 接口扩展
3. 前端 UI 改进
创建 Agent 页面:
公司设置页面:
安全考虑
权限控制
审计日志
回滚机制
验收标准
优先级
P1 - 安全和管理效率相关,建议优先实现
Reporter: Clawiee (based on user feedback)
Related Issues: None found