参考
项目
项目是一件被命名的工作——一个客户、一场活动、一次实验——以及为它服务的那些环境、代理、Cookie 集、自动化流程和数据集。文件夹是某一个标签页里的抽屉;项目一次横跨所有标签页,而同一个共享代理可以同时属于好几个项目。
项目就是一件完整的工作
工作不是一次来一个环境的。一个客户需要账号、账号背后的代理、让它们保持登录的 Cookie 集、驱动它们的自动化流程,以及这些流程填满的那些表格——而这里的每一样都待在不同的标签页上。项目就是你给这一整套东西起的名字。
给它一个名字、一种颜色和一行目标,然后把为它服务的东西加进来。卡片会显示它装了什么——「3 个环境 · 2 个代理」——打开它,它的内容、规则和记忆就并排摆在你面前。
项目不是文件夹
应用里两者都有,因为谁也替代不了谁。文件夹回答的是「这个该归到哪里」:一个环境只待在一个环境文件夹里,一个代理只待在一个代理文件夹里,两份列表永远不会混在一起——正是这一点让「EU residential」不会出现在环境侧栏里。
项目回答的是「这是拿来做什么的」。它横跨所有标签页,而同一个东西可以属于不止一个项目,所以一个共享的欧洲代理可以同时服务两个客户,无需复制一份。用文件夹整理一份列表,用项目把一件工作聚在一起。
什么进去,什么出来
加入项目是建立一条链接,不是把东西搬走。把一个环境加进项目,不会把它从原来的文件夹里拿出来,不会改动它,也不会让它在别处停止工作。把它移出去,移走的也只是那条链接。
删除项目也是同样的交易:删掉的是这层分组和项目自己的笔记,而曾经在里面的每一个环境、代理、Cookie 集、自动化流程和数据集都继续存在、继续工作。如果一件工作已经结束但你还想留着它,就把它归档——归档不销毁任何东西,只是把项目从网格里收起来。
采集器是唯一一个其行不会成为项目成员的标签页。采集器是整个工作区共享的那份目录里的一张卡片——每种只有一个,它不属于某个客户——所以真正加入项目的,是它某次运行写出来的那张表,而那就是一个普通的数据集。实际操作起来是一回事:让「运行采集器」这一步指向你命名的一张表,把那张表加进项目,从那以后这次采集就在项目里了。
每个标签页都会收窄
在任何标签页上选中一个项目,这个标签页就会收窄到它的东西上:「环境」「代理」「Cookie」「自动化」和「数据」都会过滤到该项目所持有的内容,于是一个客户的工作只需一次点击就成为屏幕上唯一的东西。日程条目同样可以属于某个项目——今晚的日历因此可以被读成某一个客户的一天。
这正是项目在一个繁忙工作区里值得拥有的原因:还是你本来就在用的那份列表,只是把所有与这件事无关的东西都拿掉了。往日历上放一条条目,它同样可以属于某个项目。
会被强制执行、而不是被恳请的规则
项目可以约束助手在它内部能做什么。项目简报以一个小块开头:一行目标,助手在这里的每一轮都会看到;一个自主等级——只看、先问,或者直接做;一份在这个项目里永远不许调用的工具清单;以及一个按墙上时钟计的时段,在这个时段之外它不得改动任何东西。
这些不是提示词里的建议。禁用清单和可动手的时段是在应用自己的代码里、在工具运行之前被检查的,所以一次拒绝并不取决于模型有没有注意到这条规则、同不同意它。读取从不会被拦下——你随时都可以问一个关于项目的问题——而任何读不出来的情况都会回退成「先问一句」。
这就是系统提示词和一把锁之间的差别。助手能力足够强,强到值得给它加上约束;而一条只在模型愿意配合时才成立的约束,算不上约束。
项目的记忆
每个项目都保有一小组助手会读也会写的文档:简报、它必须遵守的规则、它学到的东西的笔记——某个挪了位置的选择器、某个账号的怪脾气——以及某个行之有效的流程的操作手册。
这份记忆存在这台电脑上,不会和同事共享,而项目本身则是共享的:工作区里的每个人看到的项目和成员都一样。它是一台机器的工作记忆;一条错误的笔记同步给整个团队,比重新敲一遍正确的那条要糟糕得多。
助手绝不会不先给你看它想保存什么、不等你点头就往那里写。它写下的东西,在之后的每一轮里它都会当真,这正是任何东西都不能未经审阅就落进去的原因。进入它提示词的只有文档标题;正文只在真正需要时才取,所以一个项目可以攒下一百条笔记,而不让每一条消息都变得更贵。
通过 API 使用项目
项目是一件有名字的工作,以及为它服务的环境、代理、Cookie 集、自动化流程和数据集,外加一份任务简介和一套保存在本机的规则。这里的每条路由都需要一把不限定文件夹的密钥:项目本就是跨文件夹的,遵守文件夹限定等于只回答半个项目。读取单个文档是唯一没有 Agent 工具的路由——它背后是一个 MCP 资源,所以只有当客户端确定需要文档正文时才会去取。
/v1/projectsargus_list_projects无范围密钥The workspace's projects, what each holds, and the index of its brain/v1/projects/{id}/contextargus_project_context无范围密钥One project's goal, brief and rules, plus the titles of its other documents/v1/projects/{id}/docs/{path}无范围密钥One document from a project's brain, by path/v1/projects/{id}/delegateargus_delegate无范围密钥Hand a goal to Argus's own orchestrator, inside a project's context/v1/projects/createargus_create_project无范围密钥Start a project/v1/projects/addargus_add_to_project无范围密钥Put records into a project/v1/projects/removeargus_remove_from_project无范围密钥Take records out of a project/v1/projects/doc/readargus_read_project_docRead one project document/v1/projects/doc/writeargus_write_project_doc无范围密钥Write a project document/v1/projects/doc/deleteargus_delete_project_doc无范围密钥Delete a project document/v1/orchestration/planargus_make_planLay out a multi-step plan/v1/orchestration/delegate-manyargus_delegate_many无范围密钥Hand several goals to subagents at once带文件夹范围的密钥会被直接拒绝,而不是拿到一个它分辨不出是不是全部的部分答案。文档路由以 argus://project/<id>/<path> 访问——它是一个资源而不是一个工具,所以只有在客户端决定要正文的时候,正文才开始消耗上下文。
委派会把一个目标交给项目内部 Argus 自己的编排器,这通常比你亲自去驱动项目里的环境更好:它已经握着简报,它在代码里执行自主等级和禁用清单,并把学到的东西写回笔记。它回答的是它启动了什么,而不是等运行结束——所以想知道结果如何,去读项目的上下文或它的笔记。